打印

大佬解释下:为什么DHT11数据位读出一直为0

[复制链接]
3390|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
愤怒的小蜗牛|  楼主 | 2018-10-27 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void RH(void)
{
   
          //主机拉低18ms
          DHT_OUT;
           DHT_CLR;
           delay_ms(18);
           DHT_SET;
         //总线由上拉电阻拉高 主机延时20us
          Delay_US(10);
           Delay_US(10);
         //主机设为输入 判断从机响应信号
           DHT_SET;
         //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行          
           DHT_IN;
           if(!DHT_R)                  
           {
             U8FLAG=2;
             //判断从机是否发出 80us 的低电平响应信号是否结束         
              while((!DHT_R)&&U8FLAG++);
             U8FLAG=2;
              //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
              while((DHT_R)&&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;
             DHT_OUT;
             DHT_SET;
             //数据校验
         
           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_H、 U8RH_data_L、 U8T_data_H、 U8T_data_L数据都为0
                     U8RH_data_L=U8RH_data_L_temp;
                  U8T_data_H=U8T_data_H_temp;
                     U8T_data_L=U8T_data_L_temp;
                     U8checkdata=U8checkdata_temp;
           }
           }

}

相关帖子

沙发
dirtwillfly| | 2018-10-29 19:43 | 只看该作者
楼主有观察过时序吗?
一般这种问题都是时序问题,建议用逻辑分析仪或者示波器观察下时序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝