第一个问题:
我将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,从而导致返回值错误。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
调试了好几遍了,还是出不来结果。。。。也可能是我调试的方法不对吧,这里原子哥是延时四十微秒后判断电平高低,我改的思路是等待该位时序结束,判断高电平持续时间,因为‘1’时序的高电平持续时间是116-118us,‘0’时序的高电平持续时间是26-28us,所以我以40为界,高电平持续时间大于40为1,否则为0,能不能请大神看看我这个思路对不对?谢谢
一周热门 更多>