溫度 濕度感測器dht11

2021-06-28 13:37:50 字數 1744 閱讀 7376

一:dht11可以用於測量溫度、濕度。不過其溫度測量範圍和精確度都劣於ds18b20;

下圖為典型電路圖:

二:dht11在上電後要等待1s以避開不穩定狀態,在此期間無需傳送任何指令;

dht11測量範圍是20-90(25攝氏度時) 

下圖為0訊號時序圖:

下圖為1訊號時序圖:

下面是程式內容:

微控制器型號:stc15l408ad;

執行程式是irc頻率:18.432mhz;

//*****************io口p5的工作模式配置暫存器*************************

sfr p5m1 = 0xc9;

sfr p5m0 = 0xca;

sbit dht11_data =p5^5; //data bit of dht11;

byte count = 2;

//讀取dht11資料;狀態為1的次數大於三次則為1,否則資料為0;

byte read_dht11_data()

}if(times > 3)

if(dht11_data)

return 1;

return 0;

}//p5^5為準雙向口   1101

void init_data_port()

void set_prot_mode_in()

//向dht11傳送開始命令;

byte dht11_start()

count = 2;

while(!read_dht11_data() && (count++));  //等待響應訊號完畢; 80us

if(count == 1)  //如果為1,則表示超時,此時會跳出迴圈;

return 1;

count = 2;

while(read_dht11_data() && (count++));  //dht11響應訊號之後會拉高,需要等待; 80us

if(count == 1)  //如果為1,則表示超時,此時會跳出迴圈;

return 1;

return 0;

}byte read_byte()

count = 2;

delayus(2);  //delay 26us - 28us 0;;  after 30us; if delay time bigger than 70us,data is '1',or is '0';

reg_data <<= 1;

if(read_dht11_data())   //判斷是否還是高電平

if(count == 1)  //如果為1,則表示超時,此時會跳出迴圈;

}return reg_data;

}word read_humidity()

memset(result,0x0,5);

for(i = 0;i < 5;i++)

dht11_data = 1; //釋放匯流排,為下次讀取做好準備

for(i = 0;i < 4;i++)

i = 0;

i =(byte)(j & 0xff);

if(i == result[4]) //校驗正確,資料準確

else

return 0;}

資料格式

:  8bit

濕度整數資料

+8bit

濕度小數資料

+8bi

溫度整數資料

+8bit

溫度小數資料

+8bit

校驗和

DHT11溫濕度感測器

原理圖 資料傳輸 使用序列介面 單線雙向 data 用於微處理器與 dht11之間的通訊和同步,採用單匯流排資料格式,一次 通訊時間4ms左右,資料分小數部分和整數部分,具體格式在下面說明,當前小數 部分用於以後擴充套件,現讀出為零.操作流程如下 一次完整的資料傳輸為40bit,高位先出。資料格式 ...

DHT11溫濕度感測器

dht11數字溫濕度感測器是一款含有已校準數碼訊號輸出的溫濕度復合感測器。它應用專用的數字模組採集技術和溫濕度感測技術,確保產品具有極高的可靠性與長期的穩定性。感測器包括乙個電阻式感溼元件和乙個ntc測溫元件,並與乙個8位微控制器相連線。因此該產品具有抗干擾能力強 價效比高等優點。dht11使用1 ...

DHT11溫濕度感測器

硬體連線 mcu通過一條資料線與dh11連線,mcu通過這條線發命令給dh11,dh11再通過這條線把資料傳送給mcu。溫濕度模組的核心就是 mcu發給dh11的命令格式和dh11返回的資料格式。首先mcu傳送乙個開始訊號s,這個開始訊號是乙個低脈衝,然後再拉高。等待dht11應答。然後,dh11拉...