1、1、DHT11 产品概述DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个 NTC测温元件,并与一个高性能 8 位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个 DHT11 传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在 OTP 内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达 20 米以上,使其
2、成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。2、应用领域 暖通空调 测试及检测设备 汽车 数据记录器 消费品 自动控制 气象站 家电 湿度调节器 医疗 除湿器 应用领域3、接口说明 建议连接线长度短于 20 米时用 5K 上拉电阻,大于 20 米时根据实际情况使用合适的上拉电阻4、电源引脚 DHT11 的供电电压为 35.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。5、串行接口 (单线双向) DATA 用于微处理器与
3、 DHT11 之间的通讯和同步,采用单总线数据格式,一次通讯时间 4ms 左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下: 一次完整的数据传输为 40bit,高位先出。 数据格式: 8bit 湿度整数数据+8bit 湿度小数数据 +8bi 温度整数数据+8bit 温度小数数据 +8bit 校验和 数据传送正确时校验和数据等于“8bit 湿度整数数据+8bit 湿度小数数据+8bi 温度整数数据+8bit 温度小数数据”所得结果的末 8 位。6、封装信息 7、DHT11 引脚说明 8、DHT11 温湿度 1602 液晶显示程序示例主程序:#
4、include #include #include #include#includetypedef unsigned char U8; typedef unsigned int U16; U8 U8FLAG;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;sbit P2_0 = P20 ;s
5、bit P2_1 = P21 ;sbit P2_2 = P22 ;sbit P2_3 = P23 ;unsigned char str1=“ShiDu:“;unsigned char str2=“WenDu:“;void Delay(U16 j) U8 i;for(;j0;j-) for(i=0;i#include /*/common part #define HIGH 1#define LOW 0#define TRUE 1#define FALSE 0#define ZERO 0 #define MSB 0x80#define LSB 0x01/*/lcd part#define LINE
6、1 0#define LINE2 1#define LINE1_HEAD 0x80#define LINE2_HEAD 0xC0#define DATA_MODE 0x38#define OPEN_SCREEN 0x0C#define DISPLAY_ADDRESS 0x80#define CLEARSCREEN LCD_en_com(0x01)/*/change this part at different board#define LCDIO P1sbit LCD1602_RS=P24; sbit LCD1602_RW=P25; sbit LCD1602_EN=P26; /*/void L
7、CD_Read_BF(void)unsigned char read=0; LCD1602_RS = LOW; /RS 0LCD1602_RW = HIGH; /RW 1LCD1602_EN = HIGH; /EN 1 Read BFLCDIO = 0xFF;doread = LCDIO;while(readvoid LCD_en_com(unsigned char command) /写指令LCD_Read_BF(); LCD1602_RS = LOW; /RS 0 LCD1602_RW = LOW; /RW 0 LCD1602_EN = HIGH; /EN -|/_ Write comma
8、ndLCDIO = command;LCD1602_EN = LOW;void LCD_en_dat(unsigned char dat) /写数据LCD_Read_BF();LCD1602_RS = HIGH; /RS 1 LCD1602_RW = LOW; /RW 0 LCD1602_EN = HIGH; /EN -|/_ Write dataLCDIO = dat;LCD1602_EN = LOW;void LCD_set_xy(unsigned char x,unsigned char y)unsigned char address;if(y = LINE1) address = LI
9、NE1_HEAD + x;else address = LINE2_HEAD + x;LCD_en_com(address); void LCD_write_char( unsigned x,unsigned char y,unsigned char dat)LCD_set_xy(x,y); LCD_en_dat(dat);void LCD_write_string(unsigned char x,unsigned char y,unsigned char *s)LCD_set_xy(x,y); while(*s) LCDIO = *s;LCD_en_dat(*s); s+;void LCD_
10、init(void) LCD_en_com(DATA_MODE);/set 8 bit data transmission mode LCD_en_com(OPEN_SCREEN);/open display (enable lcd display)LCD_en_com(DISPLAY_ADDRESS);/set lcd first display address CLEARSCREEN;/clear screen#endif#ifndef DELAY_H#define DELAY_Hvoid delay_nms(unsigned int n) unsigned int i=0,j=0;for (i=n;i0;i-)for (j=0;j1140;j+); #endif