上一章,我們介紹了數字溫度傳感器 DS18B20 的使用,本章我們將介紹數字溫濕度傳感器 DHT11的使用,該傳感器不但能測溫度,還能測濕度。本章我們將向大家介紹如何使用 STM32F4 來讀取 DHT11 數字溫濕度傳感器,從而得到環境溫度和濕度等信息,并把從溫濕度值顯示在TFTLCD 模塊上。本章分為如下幾個部分:
36.1 DHT11簡介
36.2 硬件設計
36.3 軟件設計
36.4 下載驗證
36.1 DHT11 簡介
DHT11 是一款濕溫度一體化的數字傳感器。該傳感器包括一個電阻式測濕元件和一個NTC 測溫元件,并與一個高性能 8 位單片機相連接。通過單片機等微處理器簡單的電路連接就能夠實時的采集本地濕度和溫度。DHT11 與單片機之間能采用簡單的單總線進行通信,僅僅需要一個I/O 口。傳感器內部濕度和溫度數據40Bit的數據一次性傳給單片機,數據采用校驗和方式進行校驗,有效的保證數據傳輸的準確性。 DHT11 功耗很低, 5V電源電壓下,工作平均最大電流0.5mA。
DHT11的技術參數如下:
工作電壓范圍:3.3V-5.5V
工作電流 :平均 0.5mA
輸出:單總線數字信號
測量范圍:濕度 20~90%RH,溫度0~50℃
精度 :濕度±5%,溫度±2℃
分辨率 :濕度1%,溫度1℃
DHT11的管腳排列如圖 36.1.1所示:
0.png (49.57 KB, 下載次數: 84)
下載附件
2018-6-27 02:09 上傳
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "dht11.h"
-
- int main(void)
- {
- u8 t=0;
- u8 temperature;
- u8 humidity;
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化為115200
- LED_Init(); //初始化與LED連接的硬件接口
- LCD_Init(); //初始化LCD
- POINT_COLOR=RED; //設置字體為紅色
- LCD_ShowString(30,50,200,16,16,"WarShip STM32");
- LCD_ShowString(30,70,200,16,16,"DHT11 TEST");
- LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
- LCD_ShowString(30,110,200,16,16,"2015/1/16");
- while(DHT11_Init()) //DHT11初始化
- {
- LCD_ShowString(30,130,200,16,16,"DHT11 Error");
- delay_ms(200);
- LCD_Fill(30,130,239,130+16,WHITE);
- delay_ms(200);
- }
- LCD_ShowString(30,130,200,16,16,"DHT11 OK");
- POINT_COLOR=BLUE;//設置字體為藍色
- LCD_ShowString(30,150,200,16,16,"Temp: C");
- LCD_ShowString(30,170,200,16,16,"Humi: %");
- while(1)
- {
- if(t%10==0) //每100ms讀取一次
- {
- DHT11_Read_Data(&temperature,&humidity); //讀取溫濕度值
- LCD_ShowNum(30+40,150,temperature,2,16); //顯示溫度
- LCD_ShowNum(30+40,170,humidity,2,16); //顯示濕度
- }
- delay_ms(10);
- t++;
- if(t==20)
- {
- t=0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (40.89 KB, 下載次數: 90)
下載附件
2018-6-27 02:08 上傳
所有資料51hei提供下載:
DHT11溫濕度傳感器資料.rar
(2.26 MB, 下載次數: 438)
2018-6-26 20:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|