关于dht11的程序问题

2019-03-23 18:27发布

//等待DHT11的回应
//返回1:未检测到DHT11的存在
//返回0:存在
u8 DHT11_Check(void)           
{   
        u8 retry=0;
        DHT11_IO_IN();//SET INPUT         
    while (DHT11_DQ_IN&&retry<120)//DHT11会拉低80us
        {
                retry++;
                delay_us(1);
        };         
        if(retry>=120)return 1;
        else retry=0;
       
    while (!DHT11_DQ_IN&&retry<120)//DHT11拉低后会再次拉高80us
        {
                retry++;
                delay_us(1);
        };
        if(retry>=120)return 1;            
        return 0;
}

总感觉这两句while (DHT11_DQ_IN&&retry<100)与while (!DHT11_DQ_IN&&retry<100) 要换一下,哪位高手给解释一下,谢谢

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
zhaojun_xf
1楼-- · 2019-03-23 23:14
 精彩回答 2  元偷偷看……
academic
2楼-- · 2019-03-24 02:09
本帖最后由 academic 于 2015-9-29 13:03 编辑

怎么靠感觉呢?看具体的时序是怎样,就是怎样的。
ienglgge
3楼-- · 2019-03-24 06:16
这个需要看器件的数据手册,根据时序,看看是应该先检测哪种电平信号。
sun1238898
4楼-- · 2019-03-24 06:29
 精彩回答 2  元偷偷看……
liutogo
5楼-- · 2019-03-24 08:31
这个还是要看时序,应该不用换。在做DHT11一致的时候注意将IO口的工作模式 要使用开漏pull up的,还有就是看看delayus(1)软件延时准不准了。 Image 1.png
乱世流年
6楼-- · 2019-03-24 13:30
不错

一周热门 更多>