《DTH11串口程序.doc》由会员分享,可在线阅读,更多相关《DTH11串口程序.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateDTH11串口程序DTH11串口程序/*- DHT11数据发送到串口觉得网上流行的那个程序太乱,故编写了一个大家看的懂的,实用的! 亲测可用!管脚接P20有疑问加QQ:422457601 注:单片机 -*/ #include #define uchar unsigned char uchar Flag_D; /防死机标志 uchar XBuff5;/DHT11原始数据
2、暂存器 uchar DBuff5;/DHT11原始有效数据寄存器 sbit HQ = P20;/信号脚定义/*-微妙延时T=2*t+5 us 注意-t不能写成t-!-*/void delay2x(uchar t) while(-t);/*-毫秒延时大约1ms-*/void delayms(unsigned int t)while(t-)delay2x(245);delay2x(245); /* 10us延时误差0us*/void delay10us() uchar i; i-; i-; i-; i-; i-; i-;/*-读数区-*/uchar getData() /读取一个数据 uchar
3、i,Data=0; for(i=0;i8;i+) Flag_D = 2;while(!HQ&Flag_D+);/等待高电位delay10us();delay10us();delay10us();if(HQ) /如果HQ为1,读1 Data=1; /接收数据从高位到低位,所以要左移Data|=0x01;Flag_D = 2;while(HQ&Flag_D+);/等待电位拉低再进入下一个读数if(Flag_D = 1) break;else Data=1; /读0 return Data; /返回数据void DHT_Read() /读取数据uchar j,temp; HQ = 0;delayms
4、(20); /拉低大于18msHQ = 1;delay10us();delay10us();delay10us();delay10us();HQ = 1;if(!HQ) /从机响应 Flag_D = 2;while(!HQ&Flag_D+);Flag_D = 2;while(HQ&Flag_D+);for(j=0;j5;j+)/读取5个数据暂存入数组XBuff5 中 XBuffj = getData();HQ = 1;/*-校验数据-*/temp = XBuff0+XBuff1+XBuff2+XBuff3;if(XBuff4 = temp) /数据正确,存入DBuff5数组中 for(j=0;j5;j+) DBuffj = XBuffj;void main()uchar i;/*- 串口初始化-*/SCON = 0X50;TMOD = 0X20;/*- 晶振为11.0592MHZ,波特率为9600 -*/TH1 = 0xfd; / 设置初值TL1 = 0xfd;TR1=1;while(1) DHT_Read();for( i=0;i5;i+) SBUF = DBuffi;while(!TI);TI=0;delayms(2000); /DHT11 宜大于2秒读一次数据-