最近太忙了,导师催着做项目,今天终于有空更新下学习笔记。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传
感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
程序首先判断DHT11是否存在,然后再读取温湿度数据,由于是单总线的形式都是时间要求严格,下面是主要代码:
const char word1[] = {"\r\n**DHT11 TEST**\r\n"};
const char word2[] = {"\r\n**DHT11 CHECK**\r\n"};
const char word3[] = {"\r\n**DHT11 NOT EXIST**\r\n"};
void display(void);
int main( void )
{
WDTCTL=WDTPW+WDTHOLD; //关看门狗
Usart_Init();
P1DIR |=BIT0;//点亮LED0 RED
P1OUT &=~BIT0;
P1DIR |=BIT1;//点亮LED1 GREEN
TXString((char*)word1, sizeof word1);
delay_ms(1000);
delay_ms(1000);
while(1)
{
if(start_DHT11()) //如果应答成功
{
P1OUT |=BIT0;
TXString((char*)word2, sizeof word2);
read_DHT11(); //读温湿度
display(); //则显示温湿度数值
}
else
{
P1OUT &=~BIT0;
TXString((char*)word3, sizeof word3);
}
P1OUT |=BIT1;
delay_ms(1000);
P1OUT &=~BIT1;
delay_ms(1000);
}
}
程序:
5.25-dht11.zip
(74.34 KB, 下载次数: 207)
DHT11文档:
DHT11.pdf
(677.52 KB, 下载次数: 124)
效果图: