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条回答
jermy_z
1楼-- · 2019-10-15 19:17
你觉得你是对的 那就按照你的来写
空翼0
2楼-- · 2019-10-15 19:47
回复【8楼】jermy_z:
---------------------------------
调试了好几遍了,还是出不来结果。。。。也可能是我调试的方法不对吧,这里原子哥是延时四十微秒后判断电平高低,我改的思路是等待该位时序结束,判断高电平持续时间,因为‘1’时序的高电平持续时间是116-118us,‘0’时序的高电平持续时间是26-28us,所以我以40为界,高电平持续时间大于40为1,否则为0,能不能请大神看看我这个思路对不对?谢谢
正点原子
3楼-- · 2019-10-15 20:35
回复【9楼】空翼0:
---------------------------------
实践是检验真理的唯一标准.
love001cool
4楼-- · 2019-10-16 00:30
正点原子 发表于 2015-10-20 23:09
回复【9楼】空翼0:
---------------------------------
实践是检验真理的唯一标准.

原子哥,我最近也在研究这个。
也是不太明白一些!
看了程序,有的地方的时序,时间跟别处的不一样,导致理解程序花了很多冤枉路。
还有就是这个
delay_us(40);
"0"的响应高电平不是26-28us吗???延时40us,这样能判断高低,但岂不是影响了下一个数据的读取????
求解答!
love001cool
5楼-- · 2019-10-16 06:26
 精彩回答 2  元偷偷看……
wangzx
6楼-- · 2019-10-16 12:03
你第二个应该组合在一起   因为循环的话 时序会有乱的时候

一周热门 更多>