找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DHT11温湿度传感器测得的温湿度都是00?求解答

查看数: 4645 | 评论数: 9 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-17 20:10

正文摘要:

附代码 #include <reg52.h> #include <intrins.h> #include <absacc.h> #include <math.h> #define uchar unsigned char #define uint unsigned int //定义四个输出端口 sbit Led ...

回复

ID:948327 发表于 2022-5-20 20:56
您好,我想请问以下你这个温湿度显示都是0的问题是怎么解决的呀?我在设计的过程中也遇到了这种问题。
ID:899490 发表于 2021-4-1 14:04
帖主你好,请问问题是怎么解决的,我也在困惑一样的问题
ID:899490 发表于 2021-4-1 13:59
楼主你好,请问你是怎么解决的,方便告诉我一下吗
ID:840436 发表于 2021-3-19 21:33
aide51 发表于 2021-3-18 11:06
控制程序 1.单字节采集  void  COM(void) {         U8 i;                         for(i=0;i

感谢,已解决
ID:840436 发表于 2021-3-19 21:33
TTQ001 发表于 2021-3-18 04:49
只需编写一个简单的测试代码即可检查DHT11传感器是否正常工作。

感谢,已解决
ID:372579 发表于 2021-3-18 11:05
给你一个参考
ID:420836 发表于 2021-3-18 04:49
只需编写一个简单的测试代码即可检查DHT11传感器是否正常工作。
ID:372579 发表于 2021-3-17 20:10
控制程序 1.单字节采集  void  COM(void) {         U8 i;                         for(i=0;i<8;i++)                    {                 U8FLAG=2;                         while((!P2_0)&&U8FLAG++);                 Delay_10us();                 Delay_10us();                 Delay_10us();                 U8temp=0;                  if(P2_0)U8temp=1;                         U8FLAG=2;                  while((P2_0)&&U8FLAG++);                 //超时则跳出for循环                                    if(U8FLAG==1)break;                 //判断数据位是0还是1                                   // 如果高电平高过预定0高电平值则数据位为 1                            U8comdata<<=1;                  U8comdata|=U8temp;        //0          } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2.完整一次数据采集  void RH(void) {         //主机拉低18ms          P2_0=0;          Delay(180);          P2_0=1;          //总线由上拉电阻拉高 主机延时20us          Delay_10us();          Delay_10us();          Delay_10us();          Delay_10us();          //主机设为输入 判断从机响应信号           P2_0=1;          //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行                    if(!P2_0)                 //T !                    {                  U8FLAG=2;                  //判断从机是否发出 80us 的低电平响应信号是否结束                           while((!P2_0)&&U8FLAG++);                  U8FLAG=2;                  //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态                  while((P2_0)&&U8FLAG++);                  //数据接收状态                                   COM();                  U8RH_data_H_temp=U8comdata;                  COM();                  U8RH_data_L_temp=U8comdata;                 COM();                  U8T_data_H_temp=U8comdata;                  COM();                  U8T_data_L_temp=U8comdata;                  COM();                  U8checkdata_temp=U8comdata;                  P2_0=1;                  //数据校验                   U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);                 if(U8temp==U8checkdata_temp)                  {                         U8RH_data_H=U8RH_data_H_temp;                         U8RH_data_L=U8RH_data_L_temp;                         U8T_data_H=U8T_data_H_temp;                         U8T_data_L=U8T_data_L_temp;                         U8checkdata=U8checkdata_temp;                  }          }/ } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 3.获取DHT11数据  void GetTemp1(void) {         //------------------------          //调用温湿度读取子程序                  RH();          //串口显示程序           //--------------------------         Send_string("Humidity:");                 str[0]=U8RH_data_H/10+0x30;                 str[1]=U8RH_data_H%10+0x30;                 str[2]='.';                 str[3]=U8RH_data_L/10+0x30;                 str[4]=U8RH_data_L%10+0x30;                 str[5]='\0';                 Send_string(str);                 Send_string("%\r\n");                                  Send_string("Temperature:");                 str[0]=U8T_data_H/10+0x30;                 str[1]=U8T_data_H%10+0x30;                 str[2]='.';                 str[3]=U8T_data_L/10+0x30;                 str[4]=U8T_data_L%10+0x30;                 str[5]='\0';                 Send_string(str);                 Send_string("℃\r\n"); }  试下这个

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表