DHT11输出全为低电平

2019-10-15 23:14发布

我用mini板的PA0口作DHT11数据线,DHT11相关程序全部照抄的战舰DHT11例程,然后用PRINTF将结果输出到串口用串口调试助手查看。结果全为0,然后我用DHT11_Read_Bit()函数查看,发现接收到的每一个bit都是0,对DHT11呼气,所有的bit都为1  .修改判断0或1的delay函数,发现几乎所有Bit都在21us样子的时候变为0,请问一下这个是什么原因啊? 跪求大神帮我解答一下嘛

[mw_shl_code=c,true]#include "stm32f10x.h"
#include "delay.h"
#include "DHT11.h"
#include "led.h"
#include "usart.h"

u8 t=0;
u8 temp,humi;
int main(void)
{
        u8 i;
        //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(115200);
        delay_init();
        DHT11_Init();
        led_init();
        //temp=1;
        while(DHT11_Init())
        {
                printf("ERROR ");
        }
        while(1)
        {
               
//                DHT11_IO_OUT();
//                DHT11_DQ_OUT=1;
//                DHT11_Reset();
//                DHT11_Check();
//                //printf("on");
                //printf("%d",GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0));
                //if(t%10==0)
               
                        //DHT11_Read_Data(&temp,&humi);
                        DHT11_Reset();
                        if(DHT11_Check()==0)
                        {
                        DHT11_Read_Bit();
                                printf("R%d  ",DHT11_Read_Bit());
                        //        printf("%d ",DHT11_Read_Bit());
                        //delay_ms(20);
                        }
                        //printf("%d",DHT11_Read_Data(&temp,&humi));
                        //t=0;
               
//                delay_ms(20);
               
        }
}[/mw_shl_code]

如图 如图

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
羽落
1楼-- · 2019-10-16 00:51
你一位一位读取出来的是位的数据,%d输出的是8位数据,这里的数据本身就不匹配输出肯定也不对
oywjex
2楼-- · 2019-10-16 03:28
:'(:'(:'(:'(:'(
oywjex
3楼-- · 2019-10-16 09:17
跪求大神帮帮我嘛~~~~~~~要疯了~~~~~~~~~~~~~~~~检查了半天~~~~~~~~
羽落
4楼-- · 2019-10-16 14:27
 精彩回答 2  元偷偷看……
zhp
5楼-- · 2019-10-16 15:34
先把DATA口加上拉电阻,然后根据楼上的方法判断是否能输出高低电平状态,是否能够读取高低电平状态
oywjex
6楼-- · 2019-10-16 16:28
羽落 发表于 2016-12-22 17:15
你试一下直接把IO口置1看是不是高电平,如果可以置1那可能是你DHT11的问题,不可以就加个上拉看看

请问一下为什么要加上拉电阻呢?后面我用READ_DATA函数就直接读出正确数字了,但是我不懂的是为什么像这样输出每个bit位反而没结果呢?但是明明都正确的读数了

一周热门 更多>