DHT11温湿度计设计与制作_第1页
DHT11温湿度计设计与制作_第2页
DHT11温湿度计设计与制作_第3页
DHT11温湿度计设计与制作_第4页
DHT11温湿度计设计与制作_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DHT11温湿度计本制作采用stc89c52做为微处理器,采用DHT11温湿度传感器采集温湿度数据,该制作可以对空间内的温度、湿度数据进行采集并在1602液晶上显示,该制作硬件电路简单,在一定程度上节省了硬件资源。设计方案一、 处理器选择stc89c52单片机Stc89c52单片机价格便宜,并且可以满足一般电子产品的需求 ,所以本制作选用stc89c52单片机作为该制作的处理器。二 温湿度传感器的选择 1传统的温度传感器、湿度传感器,一般为模拟传感器。Stc89c52单片机只能处理数字信号,所以使用该类型的传感器必须加上适当的转换电路(信号调理电路、A/D转换电路)这样是硬件电路设计起来复杂,

2、而且这种类型的传感器测量误差比较大。 2数字温湿度传感器DHT11相对湿度和温度测量全部校准,数字输出卓越的长期稳定性无需额外部件超长的信号传输距离超低能耗4引脚安装完全互换DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信

3、号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。 根据以上描述本制作采用DHT11温湿度传感器用做实时温度、湿度采集系统方框图DHT11温湿度传感器Stc89c52单片机1602液晶显示制作原理图(图中液晶部分省去数据接口为P0口)制作实物图 源程序#include#define uint unsigned int#define uchar unsigned charuchar DHT115,RTfl

4、ag=0;uchar FLAG; /超时标志位uchar a;sbit dat=P10;sbit RS=P20;sbit RW=P21;sbit EN=P22; uchar table5;uint wd,sd;void Delay_t(uint j) uchar i; for(;j0;j-) for(i=0;i0;x-) for(y=110;y0;y-);void lcd_write_com(uchar com) /1602写指令 RS=0; RW=0; EN=1; P0=com; delay(1); EN=0;void lcd_init()/1602初始化 lcd_write_com(0x3

5、8); delay(1); lcd_write_com(0x08); delay(1); lcd_write_com(0x01);/1602清屏指令 delay(1); lcd_write_com(0x06); delay(1); lcd_write_com(0x0C); delay(1);void lcd_write_data(uchar date)/1602写数据 RS=1; RW=0; EN=1; P0=date; delay(1); EN=0;void write_str(uchar x,uchar y,uchar *s)/在任意地址写符号字母或数字 if(y=0) lcd_write

6、_com(0x80+x); else lcd_write_com(0xc0+x); while(*s) lcd_write_data(*s); s+;void write_shu(uchar x,uchar y,uchar num)/数据显示函数 uchar s,g; if(y=0) lcd_write_com(0x80+x); else lcd_write_com(0xc0+x); s=num/10;/ 数据分离显示 lcd_write_data(0x30+s); g=num%10;/数据分离显示 lcd_write_data(0x30+g);uchar write_byte1() /读一个

7、字节 uchar i,comdata,temp1; for(i=0;i8;i+) FLAG=2; while(!dat)&FLAG+);/判断数据位是0还是1Delay_10us(); Delay_10us();Delay_10us(); temp1=0; if(dat)temp1=1;/ 如果高电平高过预定0高电平值则数据位为 1 FLAG=2; while(dat)&FLAG+);/flag先与后加1 如果dat一直为1 uchar型变量 flag 溢出变为0 再自加1 if(FLAG=1)break;/超时则跳出for循环 comdata=1;/左移一位 高位在前 低位在后 comdat

8、a|=temp1; return (comdata); void DHT11_5() /读5个字节数据 两个字节为温度数据 两个字节为湿度数据 最后一个字节为校验 uchar i,temp; /主机拉低18ms dat=0; Delay_t(180); dat=1; /总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); /主机设为输入 判断从机响应信号 dat=1; /判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!dat) /T ! FLAG=2; /超时标志位 while

9、(!dat)&FLAG+);/判断从机是否发出 80us 的低电平响应信号是否结束FLAG=2;while(dat)&FLAG+); /判断从机拉高80us是否结束for(i=0;i5;i+)/数据接收状态DHT11i=write_byte1(); dat=1;/释放数据总线 为下一次读取做好准备 temp=(DHT110+DHT111+DHT112+DHT113);if(temp=DHT114)/数据校验 RTflag=1; if(RTflag=1) /如果RTflag=1 说明读取到得数据正确 RTflag=0;/tm0=DATARHT0/10;/tm1=DATARHT0%10;/tm2=DATARHT1/10; /湿度 /tm3=DATARHT2/10;/tm4=DATARHT2%10;/tm5=DATARHT3/10; /温度 write_str(0,0,measurement );/第一行显示湿度write_shu(12,0,DHT110);write_str(14,0,RH);write_str(0,1,Temperature );/第二行为显示温度 write_shu(12,1,DHT112); write_str(14,1,C); void main() lcd_init(); /1602初始化 delay

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论