標(biāo)題: 52RC單片機,dht11不顯示數(shù)據(jù) [打印本頁]

作者: 硬瀚    時間: 2023-4-20 22:25
標(biāo)題: 52RC單片機,dht11不顯示數(shù)據(jù)
52RC單片機11.0592MHZ晶振,dht11在lcd1602上不顯示數(shù)據(jù),仿真可以顯示,但是實物不行,換了別人的模塊也顯示不了,按時序圖來的不知道哪里的問題,請教大家/*********************************************************///
讀取DHT11單總線上的一個字節(jié)
/*********************************************************/
uchar DhtReadByte(void)
{   
        bit bit_i;
        uchar j;
        uchar dat=0;

        for(j=0;j<8;j++)   
        {
                while(!DHT11_P);        // 等待低電平結(jié)束        
                Delay10us();                        // 延時
                Delay10us();
                Delay10us();
                if(DHT11_P==1)                // 判斷數(shù)據(jù)線是高電平還是低電平
                {
                        bit_i=1;
                        while(DHT11_P);
                }
                else
                {
                        bit_i=0;
                }
                dat<<=1;                                   // 將該位移位保存到dat變量中
                dat|=bit_i;   
        }
        return(dat);  
}


/*********************************************************/
// 讀取DHT11的一幀數(shù)據(jù),濕高、濕低(0)、溫高、溫低(0)、校驗碼
/*********************************************************/
void ReadDhtData()
{            
        uchar HumiHig;                // 濕度高檢測值
        uchar HumiLow;                // 濕度低檢測值
        uchar TemHig;                        // 溫度高檢測值
        uchar TemLow;                        // 溫度低檢測值
        uchar check;                        // 校驗字節(jié)
        
        DHT11_P=0;                                // 主機拉低
        DelayMs(20);                        // 保持20毫秒
        DHT11_P=1;                                // DATA總線由上拉電阻拉高

        Delay10us();                         // 延時等待30us
        Delay10us();
        Delay10us();

        while(!DHT11_P);        // 等待DHT的低電平結(jié)束
        while(DHT11_P);                // 等待DHT的高電平結(jié)束

        //進(jìn)入數(shù)據(jù)接收狀態(tài)
        HumiHig = DhtReadByte();         // 濕度高8位
        HumiLow = DhtReadByte();         // 濕度低8為,總為0
        TemHig  = DhtReadByte();         // 溫度高8位
        TemLow  = DhtReadByte();         // 溫度低8為,總為0
        check   = DhtReadByte();        // 8位校驗碼,其值等于讀出的四個字節(jié)相加之和的低8位

        DHT11_P=1;                                // 拉高總線

        if(check==HumiHig + HumiLow + TemHig + TemLow)                 // 如果收到的數(shù)據(jù)無誤
        {
                temp=TemHig;                         // 將溫度的檢測結(jié)果賦值給全局變量temp
                humi=HumiHig;                        // 將濕度的檢測結(jié)果賦值給全局變量humi
        }
}

實物.jpg (68.25 KB, 下載次數(shù): 30)

實物.jpg

屏幕截圖 2023-04-01 172240.png (143.22 KB, 下載次數(shù): 34)

仿真

仿真

作者: man1234567    時間: 2023-4-21 08:18
器件損壞、接線錯誤、延時不當(dāng)......
作者: lkc8210    時間: 2023-4-21 11:24
30塊包郵的邏輯分析儀,你值得擁有




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