DHT11LCD1602温湿度检测与显示程序PDF打印版.pdfVIP

  • 7
  • 0
  • 约8.35千字
  • 约 9页
  • 2020-07-23 发布于广东
  • 举报

DHT11LCD1602温湿度检测与显示程序PDF打印版.pdf

学 海 无 涯 //DHT11.c 文件 #includereg52.h #includeTime_Delay.h //the main only needs to call get DHT11(),then the temperature and huminity was got in F16T,F16RH as float sbit bit11=P2^0; unsigned char U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; float F16T,F16RH; //用于最终读取的温湿度数据 // read 8 bits onice char COM(void) { char i,U8temp,U8comdata; for(i=0;i8;i++) { while(!bit11); //表示读取的高电位延时大于20 多us 则读取的是1 否则读取的是0 Delay_us(35); //通过U8FLAG 可判断 bit11 显示数据的脉长 U8temp=0; if(bit11)U8temp=1; while(bit11); U8comdata=1; U8comdata|=U8temp; //0 }//rof return U8comdata; } // //温湿度读取子程序 // // 以下变量均为全局变量 //温度高8 位== U8T_data_H //温度低8 位== U8T_data_L //湿度高8 位== U8RH_data_H //湿度低8 位== U8RH_data_L //校验 8 位 == U8checkdata //调用相关子程序如下 // Delay();, Delay_10us();,COM(); // void getDHT11(void) 1 学 海 无 涯 { //主机拉低18ms GO1: bit11=0; Delay_ms(20); bit11=1; //总线由上拉电阻拉高 主机延时20us Delay_us(60); //主机设为输入 判断从机响应信号 // bit11=1; //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!bit11) //T ! { while(!bit11); //wait DHT goto high while(bit11); //数据接收状态 U8RH_data_H=COM(); U8RH_data_L=COM(); U8T_data_H=COM(); U8T_data_L=COM(); U8checkdata=COM(); bit11=1; //数据校验 if((U8T_data_H+U8T_data_L+U8RH_data_H+U8RH_data_L)!=U8checkdata) //if check wrong,read again goto GO1; }//fi F16T=U8T_data_H+(float)U8T_data_

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档