一、DHT11温湿度传感器简介


二、Proteus电路设计

三、使用Keil uVision4 编写51单片机代码
- void DHT11_start()
- {
- Data=1;
- DHT11_delay_us(2);
- Data=0;
- DHT11_delay_ms(30); //延时18ms以上
- Data=1;
- DHT11_delay_us(30);
- }
-
- uchar DHT11_rec_byte() //接收一个字节
- {
- uchar i,dat=0;
- for(i=0;i<8;i++)
- {
- while(!Data); //等待50us低电平过去
- DHT11_delay_us(8); //延时60us,如果还为高则数据为1,否则为0
- dat<<=1;
- if(Data==1)
- dat+=1;
- while(Data); //等待数据线拉低
- }
- return dat;
- }
-
- void DHT11_receive() //接收40位的数据
- {
- uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
- DHT11_start();
- if(Data==0)
- {
- while(Data==0); //等待拉高
- DHT11_delay_us(40); //拉高后延时80us
- R_H=DHT11_rec_byte(); //接收湿度高八位
- R_L=DHT11_rec_byte(); //接收湿度低八位
- T_H=DHT11_rec_byte(); //接收温度高八位
- T_L=DHT11_rec_byte(); //接收温度低八位
- revise=DHT11_rec_byte(); //接收校正位
-
- DHT11_delay_us(25);
-
- if((R_H+R_L+T_H+T_L)==revise)
- {
- RH=R_H;
- RL=R_L;
- TH=T_H;
- TL=T_L;
- }
-
-
- // 数据处理
- rec_dat[0]='0'+(RH/10);
- rec_dat[1]='0'+(RH%10);
- rec_dat[2]='R';
- rec_dat[3]='H';
- rec_dat[4]=' ';
- rec_dat[5]=' ';
- rec_dat[6]='0'+(TH/10);
- rec_dat[7]='0'+(TH%10);
- rec_dat[8]='C';
-
- shidu = RH;
- }
- }
-
-
-
- // 主函数
- void main()
- {
- // 初始化LCD1206
- LCD_init();
- LCD_send(1,0,"Temperature:",25);
-
- // 延时100ms
- DHT11_delay_ms(100);
-
-
- while(1)
- {
- DHT11_receive();
- LCD_send(2,0,rec_dat,9);
-
- // 判断当前环境湿度 环境湿度>80 雾化器停止工作;
- if (shidu > 80) {
- wuhuaqi = OFF;
- } else {
- wuhuaqi = ON;
- }
-
- }
-
- }
四、运行仿真效果

五、完整资料下载,免费分享,无解压密码
链接:https://pan.baidu.com/s/1QpThKPu8jHWD7KlRoU9_rw?pwd=i3xo
提取码:i3xo