DHT11数字温湿度传感器

上传人:沈*** 文档编号:88645770 上传时间:2022-05-11 格式:DOC 页数:12 大小:65.50KB
返回 下载 相关 举报
DHT11数字温湿度传感器_第1页
第1页 / 共12页
DHT11数字温湿度传感器_第2页
第2页 / 共12页
DHT11数字温湿度传感器_第3页
第3页 / 共12页
点击查看更多>>
资源描述
-1、DHT11产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为准确的湿度校验室中进展校准。校准系数以程序的形式储存在OTP存中,传感器部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最正确选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。2、应用领域暖通空调测试及检测设备汽车数据记录器消费品自动控制气象站家电湿度调节器医疗除湿器应用领域3、接口说明建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用适宜的上拉电阻4、电源引脚 DHT11的供电电压为 35.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚VDD,GND之间可增加一个100nF 的电容,用以去耦滤波。5、串行接口 (单线双向) DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数局部和整数局部,具体格式在下面说明,当前小数局部用于以后扩展,现读出为零.操作流程如下: 一次完整的数据传输为40bit,高位先出。数据格式: 8bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据 +8bit校验和数据传送正确时校验和数据等于8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据所得结果的末8位。6、封装信息7、DHT11引脚说明8、DHT11温湿度1602液晶显示程序例如主程序:#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 U8data;sbit P2_0 = P20 ;sbit 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;i27;i+); void Delay_10us(void) U8 i; i-; i-; i-; i-; i-; i-; void (void) U8 i; for(i=0;i8;i+) U8FLAG=2; /- P2_1=0 ; /T P2_1=1 ; /T /- while(!P2_0)&U8FLAG+); Delay_10us(); Delay_10us(); / Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while(P2_0)&U8FLAG+); /- P2_1=0 ; /T P2_1=1 ; /T /- /超时则跳出for循环 if(U8FLAG=1)break; /判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 U8data=1; U8data|=U8temp; /0 /rof /-/-湿度读取子程序 -/-/-以下变量均为全局变量-/-温度高8位= U8T_data_H-/-温度低8位= U8T_data_L-/-湿度高8位= U8RH_data_H-/-湿度低8位= U8RH_data_L-/-校验 8位 = U8checkdata-/-调用相关子程序如下-/- Delay();, Delay_10us();,(); /-void RH(void) /主机拉低18ms P2_0=0; Delay(180); P2_0=1;/总线由上拉电阻拉高主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us();/主机设为输入判断从机响应信号 P2_0=1;/判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行 if(!P2_0) /T ! U8FLAG=2;/判断从机是否发出 80us 的低电平响应信号是否完毕 while(!P2_0)&U8FLAG+); U8FLAG=2;/判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while(P2_0)&U8FLAG+);/数据接收状态 (); U8RH_data_H_temp=U8data; (); U8RH_data_L_temp=U8data; (); U8T_data_H_temp=U8data; (); U8T_data_L_temp=U8data; (); U8checkdata_temp=U8data; P2_0=1;/数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; /fi /fivoid main()U8 shidu_shi,shidu_ge,wendu_shi,wendu_ge; LCD_init(); delay_nms(2); LCD_write_string(0,LINE1,str1); LCD_write_string(0,LINE2,str2); while(1) RH(); shidu_shi=0*30+U8RH_data_H/10; shidu_ge=0*30+U8RH_data_H%10; / shidu_*s=0*30+U8RH_data_L/10; wendu_shi=0*30+U8T_data_H/10; wendu_ge=0*30+U8T_data_H%10; /wendu_*s=0*30+U8T_data_L/10; LCD_write_char(6,0,shidu_shi); LCD_write_char(7,0,shidu_ge); /LCD_write_char(9,0,shidu_*s); LCD_write_char(6,1,wendu_shi); LCD_write_char(7,1,wendu_ge); /LCD_write_char(9,1,wendu_*s); H 文件ifndef lcd_H#define lcd_H#include #include /*/mon part #define HIGH 1#define LOW 0#define TRUE 1#define FALSE 0#define ZERO 0 #define MSB 0*80#define LSB 0*01/*/lcd part#define LINE1 0#define LINE2 1#define LINE1_HEAD 0*80#define LINE2_HEAD 0*C0#define DATA_MODE 0*38#define OPEN_SCREEN 0*0C#define DISPLAY_ADDRESS 0*80#define CLEARSCREEN LCD_en_(0*01)/*/change this part at different board#define LCDIO P1sbit LCD1602_RS=P24; sbit LCD1602_RW=P25; sbit LCD1602_EN=P26; /*/void LCD_Read_BF(void)unsigned char read=0; LCD1602_RS = LOW; /RS 0LCD1602_RW = HIGH; /RW 1LCD1602_EN = HIGH; /EN 1 Read BFLCDIO = 0*FF;do read = LCDIO;while(read&MSB);void LCD_en_(unsigned char mand) /写指令LCD_Read_BF(); LCD1602_RS = LOW; /RS 0 LCD1602_RW = LOW; /RW 0 LCD1602_EN = HIGH; /EN -|/_ Write mandLCDIO = mand;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_*y(unsigned char *,unsigned char y)unsigned char address;if(y = LINE1) address = LINE1_HEAD + *;else address = LINE2_HEAD + *;LCD_en_(address); void LCD_write_char( unsigned *,unsigned char y,unsigned char dat)LCD_set_*y(*,y); LCD_en_dat(dat);void LCD_write_string(unsigned char *,unsigned char y,unsigned char *s)LCD_set_*y(*,y); while(*s) LCDIO = *s; LCD_en_dat(*s); s+;void LCD_init(void) LCD_en_(DATA_MODE);/set 8 bit data transmission mode LCD_en_(OPEN_SCREEN);/open display (enable lcd display)LCD_en_(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. z.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!