欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: DHT22和DHT11在溫濕度顯示程序方面有什么不同?只是延時不同嗎? [打印本頁]

作者: Lagods    時間: 2020-4-13 10:42
標題: DHT22和DHT11在溫濕度顯示程序方面有什么不同?只是延時不同嗎?
程序只是延時不同嗎?需要修改什么地方?

/*************************************************************
                      DHT11頭文件

實現功能:DHT11的控制

補充說明:
***************************************************************/
#ifndef _DHT11_H_
#define _DHT11_H_
#include <reg52.h>

#define uchar unsigned char
#define uint unsigned int

/*****************DHT11引腳定義*******************/
sbit DHT11_DB=P3^4;

/*****************DHT11變量定義*********************/
uchar Temp_H,Temp_L,Humi_H,Humi_L,Check_data;//溫度整數位,小數位,濕度整數位,小數位,數據校驗位
uchar U8FLAG;
/*****************DHT11函數定義*********************/
void Delay_ms(uint n);                 //ms延時函數
void Delay_us(uchar n);                //us延時函數
uchar DHT11_receive(void);        //DHT11接收數據函數
void DHT11_read(void);                //DHT11讀取溫濕度函數
bit  DHT11_Check(void);     //DHT11校驗函數,返回1:校驗成功、返回0:校驗失敗

/********************************************************
函數名稱:void Delay_ms(uint n)
函數作用:ms延時函數
參數說明:
********************************************************/
void Delay_ms(uint n)
{
        unsigned char j;
        while(n--)
        {
                for(j=0;j<125;j++);
        }
}

/********************************************************
函數名稱:void Delay_us(uchar n)
函數作用:us延時函數
參數說明:
********************************************************/
void Delay_us(uchar n)
{
        n=n/2;
        while(--n);
}
/********************************************************
函數名稱:uchar DHT11_receive(void)
函數作用:接收DHT11傳回來的數據
參數說明:返回接收到的八位數據
********************************************************/
uchar DHT11_receive(void)
{
        uchar i,Data;
        for(i=0;i<8;i++)
        {
                 U8FLAG=2;
                 while(!DHT11_DB&&U8FLAG++);   
                 Delay_us(35);                 
                 Data<<=1;                                                 // 如果高電平高過預定0高電平值則數據位為 1
                 if(DHT11_DB)
                         Data|=1;                                       
                U8FLAG=2;
                 while(DHT11_DB&&U8FLAG++);                //超時則跳出for循環     
         }
        return Data;
}
/********************************************************
函數名稱:void DHT11_read(void)
函數作用:讀取DHT11溫濕度
參數說明:
********************************************************/
void DHT11_read(void)
{
        DHT11_DB=0;                                                  
        Delay_ms(20);                                          
        DHT11_DB=1;                                                  
        Delay_us(60);
        if(!DHT11_DB)                    
        {
                U8FLAG=2;
                while(!DHT11_DB&&U8FLAG++);   
                U8FLAG=2;                                         
                while(DHT11_DB&&U8FLAG++);   
                Humi_H=DHT11_receive();                  
                Humi_L=DHT11_receive();
                Temp_H=DHT11_receive();
                Temp_L=DHT11_receive();
                Check_data=DHT11_receive();         
                DHT11_DB=1;      
        }
}
/********************************************************
函數名稱:bit DHT11_Check(void)
函數作用:DHT11校驗函數
參數說明:返回=1:校驗成功;返回=0:校驗失敗
********************************************************/
bit DHT11_Check(void)
{
        if((Temp_H+Temp_L+Humi_H+Humi_L)==Check_data)  //判斷校驗和是否正確
                return 1;
        else
                return 0;
}
#endif


作者: chu358177    時間: 2020-5-22 11:16
22啟動時間應該是比11短,具體對比一下 時序圖 就好辦了。
作者: adject    時間: 2020-5-22 23:20
void DHT11_read(void)
{
        DHT11_DB=0;                                                  
        Delay_ms(20);     //DTH22起始時間     Delay_us(800);                                   
        DHT11_DB=1;                                                  
        Delay_us(60);
        if(!DHT11_DB)                    
        {
                U8FLAG=2;
                while(!DHT11_DB&&U8FLAG++);   
                U8FLAG=2;                                         
                while(DHT11_DB&&U8FLAG++);   
                Humi_H=DHT11_receive();                  
                Humi_L=DHT11_receive();
                Temp_H=DHT11_receive();
                Temp_L=DHT11_receive();
                Check_data=DHT11_receive();         
                DHT11_DB=1;      
        }
}

還有溫濕度換算 dth11 只有整數部分,dth22 讀出來的數除以10 dth22精度更高
作者: 蔡春雷    時間: 2022-1-4 18:00
啟動延時和換算  建議看看手冊




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