dht11实验问题

2019-10-14 21:11发布

u8 DHT11_Check(void)           
{   
        u8 retry=0;
        DHT11_IO_IN();//SET INPUT         
    while (DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us
        {
                retry++;
                delay_us(1);
        };         
        if(retry>=100)return 1;
        else retry=0;
    while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后会再次拉高40~80us
        {
                retry++;
                delay_us(1);
        };
        if(retry>=100)return 1;            
        return 0;
}


想问一下这里的 while (DHT11_DQ_IN&&retry<100)只是用于检测有没有低电平的到来吧,应该没有办法来计算这里的低电平的延时时间在40—-80us之间吧?
同时  while (!DHT11_DQ_IN&&retry<100)这里如果有低电平进入这个循环,可是挡高电平时间如果比40us小的话有该肿么办呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
heqicheng
1楼-- · 2019-10-15 12:10
wangzx 发表于 2017-3-3 16:33
其实你说错了    因为有上拉电阻  输出口的电平会随之升高  其实有低电平信号  才是正常的应答信号

那是不是就不用判断低电平过后的高电平时间范围了吗?可以这样理解吧?
wangzx
2楼-- · 2019-10-15 13:27
应该是    但是逻辑还是必须得有  你可以看看示波器

一周热门 更多>