上一章,我们介绍了数字温度传感器 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所示:
单片机源程序如下:
- #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黑下载附件…………
复制代码
所有资料51hei提供下载:
DHT11温湿度传感器资料.rar
(2.26 MB, 下载次数: 438)
|