標題: 為什么我的DHT11不能對單片機的信號做出回應? [打印本頁]

作者: dwx31    時間: 2023-6-7 22:56
標題: 為什么我的DHT11不能對單片機的信號做出回應?
這是我想用來驗證DHT11的反應的,理論上來說只要while(LCD_T);能出來就會熄滅led燈,但是實際情況是一直卡在while里面不出來

單片機源程序如下:
#include<reg52.h>
#include<intrins.h>


#define u8 unsigned char
#define u16 unsigned int
sbit GREEN  =P2^3;
sbit YELLOW  =P2^4;
sbit RED =P2^5;
sbit LCD_T    =P2^6;


void delay_us(u8 us) {
    while (us--);
}


void delayms(u8 t)//延時
{
                        u8 i;
                        u8 j;
                          for(i=0;i<t;i++)
                            for(j=0;j<124;j++);
}


// 發(fā)送起始信號
void DHT_Start()
        {
                LCD_T=1;
    LCD_T = 0;     // 拉低引腳電平18ms以上
                delayms(30);
    LCD_T = 1;     // 拉高電平20~40us
    delay_us(30);
                while(LCD_T);
                        GREEN=0;
                  RED=0;
}


void main()
{
        delayms(200);
        while(1)
        {
                DHT_Start();
        }
}


作者: yzwzfyz    時間: 2023-6-8 08:25
這么簡單,走單步調(diào)式一下,一看就明白了。
作者: munuc_w    時間: 2023-6-8 15:38
DHT11是單總線,仔細看看單總線協(xié)議,再寫代碼。
作者: BG6BXN    時間: 2023-6-8 17:06
前面LCD_T = 1; 后面while(LCD_T);咋還能出來

作者: RianYu    時間: 2023-6-9 00:01
請問樓主后來解決了嗎,我也遇到一樣的問題
作者: heitudi    時間: 2023-6-9 00:43
檢查數(shù)據(jù)線上的上拉電阻
作者: dwx31    時間: 2023-6-14 19:44
RianYu 發(fā)表于 2023-6-9 00:01
請問樓主后來解決了嗎,我也遇到一樣的問題

算解決了,延時的問題,那個延時和單片機的hz不統(tǒng)一,改成11.0592MHz后就行了

作者: dwx31    時間: 2023-6-14 19:45
找到了,單片機內(nèi)設改成了11.0592MHz就可以接收了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1