DHT11数字温湿度传感器实验中的两个问题

2019-10-14 23:02发布

第一个问题:
我将DHT11_Read_Bit函数中的 
      delay_us(40);//等待40us 

       if(DHT11_DQ_IN)return 1; 

       else return 0; 
这三行改为了 
retry=0; 
while(DHT11_DQ_IN&&retry<150) 

retry++; 
delay_us(1); 

if(retry<40) 

return 0; 

else 
return 1; 


第二个问题:
对于上面的40微秒的延迟,我不太认同,从上升沿开始延迟,如果这段时序是0时序,接下来仍然是0时序,那么这里的四十秒延迟后正好在下一个0时序的上升沿附近,这时再去判断电平,有可能电平值是1,从而导致返回值错误。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
空翼0
1楼-- · 2019-10-14 23:46
 精彩回答 2  元偷偷看……
三叶草
2楼-- · 2019-10-14 23:55
这个看你的IIC的时钟速率是多快的,可能他这么写没有问题
空翼0
3楼-- · 2019-10-15 02:37
各位不好意思,第一个问题没打全,我将那三行代码改了之后LCD显示屏就显示温度和湿度都为0了
空翼0
4楼-- · 2019-10-15 08:17
回复【3楼】三叶草:
---------------------------------
我就改了http://www.openedv.com/posts/list/13402.htm中DHT11_Read_Bit函数中的上述那三行代码,从频率上来说应该没问题吧。。。
正点原子
5楼-- · 2019-10-15 11:21
回复【4楼】空翼0:
---------------------------------
说明你的代码改错了....
为什么,可以去看DHT11数据手册。
空翼0
6楼-- · 2019-10-15 17:15
 精彩回答 2  元偷偷看……

一周热门 更多>