关于单片机命令格式以及发送给单片机的指令

数据传送格式
编 码: NRZ 波特率: 9600 双 工: 半双工
数据位: 8位 较验位: 无 停止位: 1位
命令帧格式: STX □ □ ETX BCC
STX : 02(HEX),命令帧开始
□ □ : 操作命令,为两字节ASCII码
ETX : 03(HEX),命令帧结束
BCC: @□@□@ ,命令块异或校验码(@为异或运算符)
查询命令代码:0x02,0x52,0x46,0x03,0x15
这条查询命令我应该发给单片机什么呢,求大神指点,在线等!

3个回答

查询命令代码是指操作命令吧?应当根据需要实现的功能选择对应的命令,从协议看应该是两字节的。然后加上STX,ETX以及BCC,这些构成了发送命令的完整格式。

你应该按照这个“0x02,0x52,0x46,0x03,0x15”数据顺序一一发过去,就可以查询了。应该叫做一帧。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
esp8266模块执行不了stc8单片机发送的at指令

stc8单片机串口2与esp8266连接 我给模块发at指令的字符串 模块闪了蓝灯,应该是发送到了 但是模块并没有执行想要的at指令,求救 ``` #include "stc8.h" #include "intrins.h" #define FOSC 11059200UL #define BRT (65536 - FOSC / 115200 / 4) sbit LED1=P5^5; bit busy; char wptr; char rptr; char buffer[16]; void Uart2Isr() interrupt 8 using 1 { if (S2CON & 0x02) { S2CON &= ~0x02; busy = 0; } if (S2CON & 0x01) { S2CON &= ~0x01; buffer[wptr++] = S2BUF; wptr &= 0x0f; } } void Uart2Init() { S2CON = 0x50; T2L = BRT; T2H = BRT >> 8; AUXR = 0x14; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart2Send(char dat) { while (busy); busy = 1; S2BUF = dat; } void Uart2SendStr(char *p) { while (*p) { Uart2Send(*p++); } } void delay(unsigned int m) //???? { int a=0,b=0; for(a=0;a<500;a++) for(b=0;b<m;b++); } void main() { Uart2Init(); IE2 = 0x01; EA = 1; delay(2000); Uart2SendStr("AT+CWMODE=2"); Uart2Send('\r'); Uart2Send('\n'); LED1=0; delay(5000); Uart2SendStr("AT+CWSAP=\"521\",\"123465789\",1,4"); Uart2Send('\r'); Uart2Send('\n'); delay(5000); Uart2SendStr("AT+RST"); Uart2Send('\r'); Uart2Send('\n'); while (1) { LED1=1; } } ```

上位机给单片机发送数据。

比如上位机面板输入的是5ms,但是可能是15ns或者25s,那么我该怎么样处理数据发送给下面的单片机呢?我现在用的是MFC里面的mscoom控件,我能直接发送字符串下去么?不然的话,每个数据都要有单独的命令,那不是写不完。

编程 关于发给单片机16进制命令

所以我下面这句话其实发出去的是一个F5 09 00 00 00 00 09 F5的字符串,虽然我发的形式是16进制,但要把他变成字符数组,它才是真正的16进制,那下面怎么改呢。他说text跟qstring都是定义的字符串。void TMainForm::sendButtonClicked() { QString text( m_sendEdit->text("F5 09 00 00 00 00 09 F5") ); if (text.isEmpty()) { return ; } ::write(m_fd, text.latin1(), text.length()); m_sendEdit->setText(""); }

上位机向单片机发送字符串

上位机向单片机发送一串字符串,存入一个数组缓冲区RX1_Buffer[COM_RX1_Lenth]中,接下来单片机提取数组缓冲区中的一部分字符串,将该字符串转化为整形数据,接着将整形数据转化为十六进制数通过串口发送给上位机,单片机连续向上位机发送数据,上位机第一次能正确的接收到上位机发送给单片机的数据,过后上位机收到的数据就是错误的,不知道是什么原因,附部分程序代码如下: void UART1_int (void) interrupt UART1_VECTOR { if(RI) { RI = 0; if(COM1.B_RX_OK == 0) { if(COM1.RX_Cnt >= COM_RX1_Lenth) COM1.RX_Cnt = 0; RX1_Buffer[COM1.RX_Cnt++] = SBUF; COM1.RX_TimeOut = TimeOutSet1; } } if(TI) { TI = 0; if(COM1.TX_read != COM1.TX_write) { SBUF = TX1_Buffer[COM1.TX_read]; if(++COM1.TX_read >= COM_TX1_Lenth) COM1.TX_read = 0; } else COM1.B_TX_busy = 0; } } void TX1_write2buff(u8 dat) //写入发送缓冲,指针+1 { TX1_Buffer[COM1.TX_write] = dat; //装发送缓冲 if(++COM1.TX_write >= COM_TX1_Lenth) COM1.TX_write = 0; if(COM1.B_TX_busy == 0) //空闲 { COM1.B_TX_busy = 1; //标志忙 TI = 1; //触发发送中断 } } void deal_uart(void) { if(RX1_Buffer[0]== 'R') { for(i=3;i<5;i++) Y_arr[i-3] = RX1_Buffer[i]; t_year = strtod(Y_arr,NULL); TAB_T[5] = DecToHex(t_year); for(i=6;i<8;i++) M_arr[i-6] = RX1_Buffer[i]; t_month = strtod(M_arr,NULL); TAB_T[4] = DecToHex(t_month); for(i=9;i<11;i++) D_arr[i-9] = RX1_Buffer[i]; t_day = strtod(D_arr,NULL); TAB_T[3] = DecToHex(t_day); for(i=12;i<14;i++) S_arr[i-12] = RX1_Buffer[i]; t_hour = strtod(S_arr,NULL); TAB_T[2] = DecToHex(t_hour); COM1.RX_Cnt = 0; } } void main(void) { while (1) { deal_uart(); for(i=0;i<) TX1_write2buff(TAB_T[i]); } } 求原因?

51单片机的接收上位机指令,并控制步进电机

跪求大神看一下程序解答一下。我的程序是单片机接收上位机发来的数字,后对应不同的数字指令通过两个电机做出上下左右的模拟转动。程序语法都没问题,没有错误和警告,也能正常接收上位机的数据,但是就是不执行命令。能看到上位机发送命令后单片机接收灯闪烁一下,但是单片机接的步进电机不动。程序单独拿出去无限循环都能执行。 ``` #include<reg52.h> #define uchar unsigned char #define uint unsigned int #define Motor1Data P0 //步进电机控制接口定义 #define Motor2Data P2 //步进电机控制接口定义 void init(void); //串口初始化 unsigned char a; uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D //串口初始化,设定传输波特率为9600 void init(void) { TMOD = 0x20; //定时器1,模式2工作模式 SCON = 0x50; //串口工作模式1 TH1 = 0xfa; //9600 TL1 = 0xfa; ES = 1; EA = 1; TR1 = 1; } //jie shou void rece(void) { q1: if(RI==0) goto q1; a=SBUF; RI=0; return; } //ms延时函数 void Delay_xms(uint x) { uint i,j; for(i=0;i<x;i++) for(j=0;j<112;j++); } //X顺时针转动 void Motor1CW(void) { uchar i; for(i=0;i<4;i++) { Motor1Data=phasecw[i]; Delay_xms(15);//转速调节 } } //X逆时针转动 void Motor1CCW(void) { uchar i; for(i=0;i<4;i++) { Motor1Data=phaseccw[i]; Delay_xms(15);//转速调节 } } //Y顺时针转动 void Motor2CW(void) { uchar i; for(i=0;i<4;i++) { Motor2Data=phasecw[i]; Delay_xms(15);//转速调节 } } //Y逆时针转动 void Motor2CCW(void) { uchar i; for(i=0;i<4;i++) { Motor2Data=phaseccw[i]; Delay_xms(15);//转速调节 } } //停止转动 void MotorStop(void) { Motor1Data=0x00; Motor2Data=0x00; } //主函数 void main(void) { uint i; init(); q2: rece(); Delay_xms(50);//等待系统稳定 switch(a) { case 1: for(i=0;i<100;i++) { Motor2CW(); //Y顺时针转动 } MotorStop(); //停止转动 Delay_xms(500); case 2: for(i=0;i<100;i++) { Motor2CCW();//Y逆时针转动 } MotorStop(); //停止转动 Delay_xms(500); case 3: for(i=0;i<100;i++) { Motor1CCW();//X逆时针转动 } MotorStop(); //停止转动 Delay_xms(500); case 4: for(i=0;i<100;i++) { Motor1CW();//X顺时针转动 } MotorStop(); //停止转动 Delay_xms(500); }goto q2; } ```

单片机向串口发送键盘指令,串口助手在同一个指令上一直不停的跑 代码如下 哪位大神帮帮忙

#include<reg51.h> #include<stdio.h> #define uchar unsigned char #define uint unsigned int uchar key_scan(); uchar key; void SendOneByte(unsigned char c) { SBUF = c; while(TI==0); TI = 0; } void delay(uint k) //延时程序 { uint i,j; for(i=k;i>0;i--) for(j=110;j>0;j--); } void main() //主程序 { uchar b; TMOD = 0x20; //定时器T1的工作方式2,8位数据自动重装 SCON = 0x50; //串行口的方式1,8位异步收发,波特率可变。 TH1 = 0xfd; // 装定时器1初值. TL1 = 0xfd; PCON = 0x00; EA = 1; //开总中断 ES = 1; //串行口中断源允许 TR1 = 1; //开定时器1 while(1) //循环开始 { b=key_scan(); switch(b) { case 1: SendOneByte('1'); break; case 2: SendOneByte('2'); break; case 3: SendOneByte('3'); break; case 4: SendOneByte('4'); break; case 5: SendOneByte('5'); break; case 6: SendOneByte('6'); break; case 7: SendOneByte('7'); break; case 8: SendOneByte('8'); break; case 9: SendOneByte('9'); break; case 0: SendOneByte('0'); break; case 11:SendOneByte('U'); break; case 12:SendOneByte('Y'); break; case 13:SendOneByte('N'); break; case 14:SendOneByte('L'); break; case 15:SendOneByte('D'); break; case 16:SendOneByte('R'); break; default :break; } } } uchar key_scan() { uchar cord_h,cord_l,x;//行列值 P1=0xf0; //行线输出全为0 cord_h=P1&0xf0; //读入列线值 if(cord_h!=0xf0) //先检测有无按键按下 { delay(80); //去抖 if(cord_h!=0xf0) { cord_h=P1&0xf0; //读入列线值 P1=cord_h|0x0f; //输出当前列线值 cord_l=P1&0x0f; //读入行线值 x=cord_h+cord_l;//键盘最后组合码值 switch ( x ) { case 0xee: key=1; break; case 0xde: key=2; break; case 0xbe: key=3; break; case 0x7e: key=4; break; case 0xed: key=5; break; case 0xdd: key=6; break; case 0xbd: key=7; break; case 0x7d: key=8; break; case 0xeb: key=9; break; case 0xdb: key=0; break; case 0xbb: key=11; break; case 0x7b: key=12; break; case 0xe7: key=13; break; case 0xd7: key=14; break; case 0xb7: key=15; break; case 0x77: key=16; break; } } } return key; }

关于串口接收单片机返回的数据

现在在做串口接收单片机返回的反馈码,串口定义的委托,有一个接收数据的事件,参数为(object sender,SerialDataReceivedEvenyArge e),在调用这个函数时候应该传什么参数呢?或者应该怎样改写这个函数?求大神指点一下!

如何用51单片机串口输出指令对BY8001-16p音乐芯片进行控制

![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267192_98495.jpg) ![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267213_53130.png) 线连接为单片机P3.0与BY8001的TX相连,P3.1与BY8001的RX相连,BY8001部分引脚含义如下: ![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267305_121779.png) 单片机软件串口及中断设置如下: ![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267397_680067.png) 在外总中断函数中发送指令: ![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267478_464864.png) 指令数据为BY8001提供,含义为播放音乐 ![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267559_584375.png) 这样,当我按下按键引起外部中断时,利用串口助手能正确收到单片机发送的数据指令: ![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267631_92105.png) 但BY8001却未播放音乐(无法知道是否收到数据指令,但不播放音乐不是芯片的问题,我用BY8001的I/O口触发,可以正常播放音乐)。 BY8001串口控制数据要求如下,我的问题到底出现在哪里呢? ![图片说明](https://img-ask.csdn.net/upload/201903/22/1553267825_874720.png)

Android与单片机通过串口通信,收不到返回数据

Android通过串口向单片机发送一条16进制的指令,单片机收到以后会返回一条相同格式的命令。Android与PC上的串口助手调试,可以正确收发数据;单片机与串口助手调试,也可以正确收发数据。但是Android直接与单片机连接就收不到返回的数据。(发送数据的线程之后已经进行了延时)

单片机采集到的模拟量和开关量是如何打包通过串口发送到上位机的内存中的?

单片机采集到的模拟量和开关量是如何打包通过串口发送到上位机的内存中的?发送数据的格式顺序怎么通过上位机解析?

串口调试助手可以发送十六进制和字符串,如果发送的命令是ascii怎么办呢,

字符串和ascii是不一样的把,怎么可以让单片机和一个支持串口通信的设备通信,哪个设备只能接收ascii,我用单片机发送给他的时候,应该是什么格式呢,ascii码一位即可,命令是2,3...9就这样的,单个数字

DNS服务器会向客户端发送什么指令?哪位大神知道向C端发送**指令是什么意思

如题,域名服务器除了向客户端发送解析结果数据还会发送什么指令么?

小白学习写51单片机串口通信控制led闪烁频率,死循环了怎么破?

额,想用while写小灯循环,可是发现这样写直接进死循环了,没有返回值,也就改变不了频率了。求助求助 ```#include<reg52.h> #include<intrins.h> typedef unsigned char u8; typedef unsigned int u16; u8 i; sbit led=P0^0; void delay(u16 a) { while(a--); } void UsartInit() { SCON=0X50; TMOD=0X20; PCON=0X80; TH1=0XF3; TL1=0XF3; ES=1; EA=1; TR1=1; } void Uart() interrupt 4 { u8 receiveData; i=SBUF; switch(i) { case'0':led=0;break; case'1':led=1;break; case'2': { while(1) { led=0; delay(45000); led=1; delay(45000); } break; } case'3': { while(1) { led=0; delay(25000); led=1; delay(25000); } break;} case'4': { while(1) { led=0; delay(15000); led=1; delay(15000); } break; } } receiveData=SBUF; RI=0; SBUF=receiveData; while(!TI); TI=0; } void main() { UsartInit(); while(1); } ```

socket和硬件通讯之间的问题

硬件启动 发送指令给服务器告诉服务器硬件已启动,服务器接收到指令,会执行相应的存储代码,并循环发送一条指令0给硬件,如果硬件接收到指令1,则停止循环发送的指令0,如果没接收到指令1则继续发送指令0,小弟用的tomcat,但是不知道为什么循环10次,不管等多久,他都会把循环10次的接收指令1一起返回,不知道为什么,能提供下相应代码吗

用串口接收字符为命令来控制LED灯,该怎么写程序?(LPC1768)

用串口助手发送特定字符来控制LED的亮灭?? 或者给个思路吧!核心的代码写一点也好啊! 有没有大神帮忙把控制部分的程序写下,谢谢啦!刚开始学,请教啊!

Arduino接收串口命令的函数,在PC端分别发送字符”A”,”B”,”C”能够控制LED显示三种不同亮度?

在运行的时候,串口输入a,b,c,led灯一直亮,没有变化 ``` #define LED_PIN 1 void setup() { Serial.begin(9600); pinMode(1, OUTPUT); } void loop() { while (Serial.available()) { char abc = Serial.read(); if(abc == 'a'){ Serial.println("ledLevel=10"); analogWrite(1, 10); delay(2000); } if(abc == 'b'){ Serial.println("ledLevel=100"); analogWrite(1, 100); delay(2000); } if(abc == 'c'){ Serial.println("ledLevel=200"); analogWrite(1, 200); delay(2000); } } } ``` ![图片说明](https://img-ask.csdn.net/upload/201905/02/1556761935_700463.png)

Qt modbus tcp 下位机发送的是16进制,上位机读取操作命令返回值是乱码,怎么解决?

void My_socket::on_ReadBackText() { qint64 DataNum = tcpSocket.bytesAvailable();//获得TCP需要read的字节数 char data[35] = {0}; qint64 num = tcpSocket.read(data, DataNum); qDebug("返回的数据包有%d位,值为%s",DataNum,data); if (num <= 0) { ui.ReceiveWid->appendPlainText(QString::fromLocal8Bit("获取继电器状态失败.....")); } else { int DataLen = strlen(data); const QString string = QString(QLatin1String(data)); ui.ReceiveWid->appendPlainText(string); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201908/29/1567070306_881663.jpg) ���ص����ݰ���16λ��ֵΪ�( 非十六进制发送的串接收正常 tcpSocket.bytesAvailable()获取的字符数量正确, ���ص����ݰ���29λ��ֵΪY31X30B3azv1cDA 懂得帮忙给看看,万分感谢!!!!! ```

stm32WiFi模块接受发送

我现在弄的WiFi模块,为什么我利用电脑串口向单片机发送命令的时候,必须得吧WiFi模块的引脚从单片机拔出来

求各位大神帮忙看一下我用51单片机做的万年历程序有没有问题

AT89S52+12864+DS18B20+DS1302 ,液晶只有背光亮,不显示内容 ``` ```#include<reg52.h> #include<intrins.h> #define ds1302_sec_add 0x80 //设置秒的地址 #define ds1302_min_add 0x82 //设置分的地址 #define ds1302_hr_add 0x84 //设置时的地址 #define ds1302_date_add 0x86 //设置天的地址 #define ds1302_month_add 0x88 //设置月的地址 #define ds1302_year_add 0x8c //设置年的地址 #define ds1302_control_add 0x8e #define ds1302_charger_add 0x90 #define ds1302_clkburst_add 0xbe #define uchar unsigned char #define uint unsigned int sbit E = P2^0; //使能 sbit RW = P2^1; //读写 sbit RS = P2^2; //数据/命令 sbit busy=P0^7; //检测忙 sbit DQ= P2^5; //DS18B02单总线 sbit RST= P1^1; sbit SCK=P1^2; sbit IO = P1^3; sbit PSB= P2^6; uchar code dig[]={"0123456789"}; uchar lcdday [8]; uchar lcddisbuf[8]; uchar tempbuf[3]; uchar timebuf[6] = {23,59,59,18,11,2}; //时间,日期 uchar readbuf[6]; uchar disbuf[7]; uchar writebuf[6]; /*******************************延时子程序**********************************/ void delay100(int n) { unsigned char i; while(n--) for(i=0;i<100;i++); } /*******************************LCD 忙标志查询******************************/ void lcd_busy(void) { uchar busy; P0=0xff; RS=0; RW=1; do{ E=1; busy=P0; E=0; } while(busy>0x7f); } /*****************************写指令或数据**********************************/ void write(uchar x,uchar Data) { lcd_busy(); //忙查询 if(x==0) { RS=0; RW=0; //写单字节命令字 } else if(x==1) { RS=1; RW=0; //写单字节数据 } E=1; P0=Data; E=0; P0=0xff; } /*******************************初始化LCD **********************************/ void Init_lcd(void) { delay100(20); //启动等待,等LCM讲入工作状态 PSB=1; //并口驱动模式 RST=0; delay100(4); RST=1; // 复位LCD write(0,0x30); //8 位介面,基本指令集 write(0,0x0c); //显示打开,光标关,反白关 write(0,0x01); //清屏,将DDRAM的地址计数器归零 } /*******汉字和字符显示,参数入口:Show(地址,显示宽度,汉字数组)************/ void Show(uchar address,uchar L,uchar STR1[]) { uchar i; write(0,address); for(i=0;i<L;i++) write(1,STR1[i]); } /************纯阿拉伯数字显示,参数入口:Show_dig(地址,数字)**************/ void Show_dig1(uchar address,uint number) { uchar shi,ge,fen; shi=number/10; ge=number%10; fen=number*10%10; write(0,address); delay100(20); write(1,dig[shi]); delay100(20); write(1,dig[ge]); delay100(20); write(1,dig[fen]); } void Show_dig(uchar address,uint number) { uchar shi,ge; shi=number/10; ge=number%10; write(0,address); delay100(20); write(1,dig[shi]); delay100(20); write(1,dig[ge]); } /***************** DS18B20温度传感器 *****************/ /* 软件延时函数,延时时间(t*10)us */ void delay_us(uchar n) //延时约16微妙 { for(;n>0;n--) { _nop_(); } } void DS18B20_init() { uchar i; DQ=1; delay_us(1); //稍作延时 DQ=0; delay_us(80); //延时480到960us DQ=1; i = 0; while(DQ){} //等待DS18B20拉低总线 while(!DQ){} } void write_byte(uchar dat) //写一个字节 { uchar i; for(i=0;i<8;i++) { DQ=0; //每写入一位数据之前先把总线拉低1us _nop_(); DQ=dat&0x01; //取最低位写入 delay_us(7); //延时68us,持续时间最少60us DQ=1; //然后释放总线 dat=dat>>1; //从低位开始写 } delay_us(10); } uchar read_byte() //读一个字节 { uchar i,dat=0; for(i=0;i<8;i++) { DQ=0; //先将总线拉低1us _nop_(); DQ=1; //然后释放总线 _nop_();_nop_(); _nop_();_nop_(); if(DQ) dat=dat|0x80; //每次读一位 dat=dat>>1; //从最低位开始读 delay_us(4); //读取完之后等待48us再接着读取下一个数 } return dat; } uint read_temper () { uchar a,b; uint t=0; DS18B20_init(); delay_us(15); write_byte(0xcc); //跳过ROM操作命令 write_byte(0x44); //发送启动温度转换命令 DS18B20_init(); delay_us(15); write_byte(0xcc); //跳过ROM操作命令 write_byte(0xbe); //发送读温度寄存器命令 a=read_byte(); //先读低八位 b=read_byte(); //再读高八位 t=b; t<<=8; //左移八位 t=t|a; //t为16位的数,使高八位为b的值,低八位为a的值 return t; //返回温度值 } uint temper_change() { uint temper; float tp; temper=read_temper(); if(temper<0) //考虑负温度的情况 { temper=temper-1; temper=~temper; tp=temper*0.0625; //16位温度转换成10进制的温度 temper=tp*100+0.5; //留两个小数点,并四舍五入 } else { tp=temper*0.0625; //16位温度转换成10进制的温度 temper=tp*100+0.5; //留两个小数点,并四舍五入 } return temper; } /************* DS1302时钟模块 *************/ void ds1302_write_byte(unsigned char addr, unsigned char byte) { unsigned char i; addr = addr & 0xfe; SCK = 0; RST = 0; RST = 1; /****一个个2进制数依此输进DS1302 *****/ for(i = 0; i < 8; i++) { IO = addr & 0x01; SCK = 0; SCK = 1; addr >>= 1; } for(i = 0; i < 8; i++) { IO = byte & 0x01; SCK = 0; SCK = 1; byte >>= 1; } SCK = 0; RST = 0; } unsigned char ds1302_read_byte(unsigned char addr) { unsigned char i; unsigned char temp; addr = addr & 0xfe; // 改为读操作 SCK = 0; RST = 0; RST = 1; addr = addr + 1; //改为读操作 for(i = 0; i < 8; i++) { IO = addr & 0x01; SCK = 0; SCK = 1; addr >>= 1; } for(i = 0; i < 8; i++) { SCK = 1; SCK = 0; temp >>= 1; if(IO) { temp += 0x80; } } //SCK = 0; RST = 0; return temp; // temp:输出的时间或日期 } void ds1302_write_time() { unsigned char i; unsigned char temp; unsigned char temp1; for(i = 0; i < 6; i++) { temp = timebuf[i] / 10; //十位 temp1 = timebuf[i] % 10; //个位 writebuf[i] = (temp << 4) | temp1;//writebuf[i] = ((timebuf[i] / 10) << 4) + (timebuf[i] % 10); } //十进制转化为二进制 ds1302_write_byte(ds1302_control_add,0x00); ds1302_write_byte(ds1302_hr_add,writebuf[0]); /***** 时 *****/ ds1302_write_byte(ds1302_min_add,writebuf[1]);/***** 分 *****/ ds1302_write_byte(ds1302_sec_add,writebuf[2]); /***** 秒 *****/ ds1302_write_byte(ds1302_year_add,writebuf[3]); /***** 年 *****/ ds1302_write_byte(ds1302_month_add,writebuf[4]);/***** 月 *****/ ds1302_write_byte(ds1302_date_add,writebuf[5]); /***** 日 *****/ ds1302_write_byte(ds1302_control_add,0x80); } void ds1302_read_time() { unsigned char i; readbuf[0] = ds1302_read_byte(ds1302_hr_add); readbuf[1] = ds1302_read_byte(ds1302_min_add); readbuf[2] = ds1302_read_byte(ds1302_sec_add); readbuf[3] = ds1302_read_byte(ds1302_year_add); readbuf[4] = ds1302_read_byte(ds1302_month_add); readbuf[5] = ds1302_read_byte(ds1302_date_add); for(i = 0; i < 6; i++) { disbuf[i] = ((readbuf[i] >> 4) * 10) + (readbuf[i] & 0x0f); //想转化为10进制 } } void welcome(int a) { Show(0x80,6,"日历:"); //写数组里的内容 delay100(30); Show(0x88,6,"温度:"); //写数组里的内容 delay100(30); Show_dig1(0x98,a); Show(0x82,2,"年"); //写数组里的内容 delay100(30); Show(0x84,2,"月"); //写数组里的内容 delay100(30); Show(0x86,2,"日"); //写数组里的内容 delay100(30); Show(0x92,2,"时"); //写数组里的内容 delay100(30); Show(0x94,2,"分"); //写数组里的内容 delay100(30); Show(0x96,2,"秒"); //写数组里的内容 delay100(30); Show_dig(0x83,disbuf[3]); delay100(30); Show_dig(0x85,disbuf[4]); delay100(30); Show_dig(0x87,disbuf[5]); delay100(30); Show_dig(0x93,disbuf[0]); delay100(30); Show_dig(0x95,disbuf[1]); delay100(30); Show_dig(0x97,disbuf[2]); delay100(30); } void main() { uchar temp; DS18B20_init(); temp = temper_change(); ds1302_read_time(); ds1302_write_time(); Init_lcd(); delay100(10); welcome(temp); delay100(10); }

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

广工操作系统课程设计(文档+代码+可执行文件)

实现作业调度(先来先服务)、进程调度功能(时间片轮转) 实现内存管理功能(连续分配)。 实现文件系统功能(选作) 这些功能要有机地连接起来

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

apache-jmeter-5.1.1(Requires Java 8+).zip

。Apache JMeter 5.1.1 (Requires Java 8+),需要jdk8以上的版本。

数通HCNP中文理论全套教材.rar

内涵HCNP-IENP中文理论书-内文,

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

DDR5_Draft_Spec_Rev05c.pdf

DDR5 spec

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

前言: 说在前面, 面试题是根据一些朋友去面试提供的,再就是从网上整理了一些。 先更新50道,下一波吧后面的也更出来。 求赞求关注!! 废话也不多说,现在就来看看有哪些面试题 1、面向对象的特点有哪些? 抽象、继承、封装、多态。 2、接口和抽象类有什么联系和区别? 3、重载和重写有什么区别? 4、java有哪些基本数据类型? 5、数组有没有length()方法?String有没有length()方法? 数组没有length()方法,它有length属性。 String有length()方法。 集合求长度用

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问