版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于dht11的温度湿度监测系统班级:计科xx班姓名:xx指导老师:xx完成时间:2010年12月10日一:选题背景随着电子科技的迅速发展,对仓库、工厂、博物馆等等地方温湿度监测系统的要求不断增高,从而也促进自动检测系统的迅速发展,本文详细叙述一个计算机温湿度自动检测系统的总体结构,设计原则及具体性能指标。由于系统具有较高的精度,反应速度快,在环境测量方面具有很好的应用前景。防潮、防霉、防腐、防爆是仓库、工厂等地方日常工作的重要内容,是衡量仓库、工厂等地方管理质量的重要指标。它直接影响到储备物资的使用寿命和工作可靠性。为保证日常工作的顺利进行,首要问题是加强仓库和工厂内温度与湿度的监测工作。但
2、传统的方法是用与湿度表、毛发湿度表、双金属式测量计和湿度试纸等测试器材,通过人工进行检测,对不符合温度和湿度要求的库房进行通风、去湿和降温等工作。这种人工测试方法费时费力、效率低,且测试的温度及湿度误差大,随机性大。因此我们需要一种造价低廉、使用方便且测量准确的温湿度测量仪。随着人们生活水平的提高,人们逐渐对温湿度变得敏感起来,对于温度湿度的了解,有助于人们的生活起居。有时候需要知道空气中的温度湿度,以便于出行和穿戴的选择,有时候需要知道太阳能热水器的水温,以便于洗浴。为了能实时了解空气中的温度和湿度,有必要制作一种测量温度和湿度的仪器。有些地方,如博物馆,一些文物必须保存在适合的温度湿度范围
3、内,以免文物长时间接触空气中的水分而造成文物损坏,而文物保存在适合的温度湿度范围内,其代价又太大,有时难以承受。所以,无论如何,都有必要实时监控空气中的温度湿度,必然需要一种价格低廉,使用方便的测量仪器来监控温度和湿度。二:需求分析dht11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个ntc测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个dht11传感器都在极为精确的湿度校验室中进行校准。
4、校准系数以程序的形式储存在otp内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。应用领域 暖通空调 测试及检测设备 汽车 数据记录器 消费品 自动控制 气象站 家电湿度调节器 医疗 除湿器三:总体设计方案() 设计思路本系统采用已有的elite-iii单片机开发板,以elite-iii单片机开发板为核心,只需要加入少量的外围器件dht11即可实现温湿度的监控,不必另外购买
5、器件,方面简单,可靠性高。根据dht11的说明,温度和湿度的显示至少为六位,温度和湿度的显示各三位,两位整数,一位小数,需要六个数码管。由于本实验加入了时间监控,所以增加了矩阵键盘,以控制时间的显示和温湿度的显示。(2) 应用技术分析本系统采用了以下关键技术:1、 单片机最小系统2、 数码管显示3、 矩阵键盘4、 时钟5,dht11温湿度监控(3) 设计难点本系统的设计有如下几个难点第一,本系统涉及的关键技术都比较简单,但实现起来有难度,尤其是各个程序模块连接的时候容易出现问题;第二,本系统关于dht11的程序编写有难度,dht11使用的是单总线传输,因此必须对总线有一定的了解;第三,本系统由
6、于借用elite-iii单片机开发板,开发板上的矩阵键盘和数码管使用了相同的引脚p2.0和p2.1,硬件上设置有点问题,程序编写的难度加大。四:硬件设计(1)本系统的关键在于数字温湿度传感器dht11,下面是关于dht11说明:型号测量范围测湿精度测温精度分辨力封装dht112090rh 050±5rh±214针单排直插1、传感器性能说明参数条件mintypmax单位湿度分辨率111%rh16bit重复性±1%rh精度25±4%rh050±5%rh互换性可完全互换量程范围03090%rh252090%rh502080%rh响应时间1/e(63%
7、)25,1m/s 空气61015s迟滞±1%rh长期稳定性典型值±1%rh/yr温度分辨率111161616bit重复性±1精度±1±2量程范围050响应时间1/e(63%)630s2、 接口说明 建议连接线长度短于20米时用5k上拉电阻,大于20米时根据实际情况使用合适的上拉电阻3、电源引脚dht11的供电电压为35.5v。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(vdd,gnd)之间可增加一个100nf 的电容,用以去耦滤波。4、串行接口 (单线双向)data 用于微处理器与 dht11之间的通讯和同步
8、,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据 +8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户mcu发送一次开始信号后,dht11从低功耗模式转换到高速模式,等待主机开始信号结束后,dht11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择
9、读取部分数据.从模式下,dht11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,dht11不会主动进行温湿度采集.采集数据后转换到低速模式。1.通讯过程如图1所示图1总线空闲状态为高电平,主机把总线拉低等待dht11响应,主机把总线拉低必须大于18毫秒,保证dht11能检测到起始信号。dht11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取dht11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。图2总线为低电平,说明dht11发送响应信号,
10、dht11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则dht11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,dht11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。数字0信号表示方法如图4所示 图4数字1信号表示方法.如图5所示 图55、 测量分辨率测量分辨率分别为 8bit(温度)、8bit(湿度)。6、电气特性vdd=5v,t = 25,除非特殊标注参数条件mintypmax单位供电 dc355.5v供电电流测量0.52.5ma平均0.
11、21ma待机100150ua采样周期秒1次注:采样周期间隔不得低于1秒钟。(2) 硬件设计电路图如下所示:(3) elite-iii单片机开发板五:软件设计(1)本系统的主要程序如下所示:/2010年12月2日/作者:xx/基于dht11的温湿度监控系统(可以显示监测时间)#include <reg52.h> /51芯片管脚定义头文件#define uchar unsigned char#define uint unsigned intsbit dht=p12;/dht1引脚定义/74ls138译码电路引脚定义,键盘,数码管,点阵使用时都需要它sbit pa=p14;sbit pb
12、=p15;sbit pc=p16;/74hc138a.b.c输入端,控制数码管段选sbit poe=p17;/74hc138使能端/全局变量uchar i,j;uint s;/dht11变量定义uchar bdata dht_data;/存储dht11发来的一个字节的数据uchar t1,t2,t3,t4,t5;/存放dht11发来的一个字节的数据uchar dht_tab5;/存放dht11发来的数据/矩阵键盘uchar key,key_value;/读取键码/时钟电路(计时)uchar t_count,t_hour;/计数毫秒和月uint t_time;/计数分uchar mod;/时间修
13、正(dht11测温度占用)/数码管显示值(共阳极)uchar code tab17=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00;/0至f共16个数,全亮/延时函数大约9.9us=delay(1)void delay(uint time)while(time-);/*/数码管显示模块void display(uchar temp1,uchar temp2)/temp2个数码管显示temp1/p2=0xff;/关闭数码管位选poe=0;pa=0;pb=1;pc=0;/选中锁
14、存器,未打开p0=temp1;poe=1;poe=0;/打开74ls138p2=temp2;/0xfe,0xfd,0xfb,0xf7,0xef,0xdf第1,2,3,4,5,6个数码管亮;0xfe,0xfc,0xf8,0xf0,0xe0,0xc0:1,2,3,4,5,6个数码管亮void displayxx(uchar tem1,uchar tem2,uchar tem3,uchar tem4,uchar tem5,uchar tem6)/数码管显示函数(六个数码管都显示)display(tem1,0xfe);delay(100);display(tem2,0xfd);delay(100);d
15、isplay(tem3,0xfb);delay(100);display(tem4,0xf7);delay(100);display(tem5,0xef);delay(100);display(tem6,0xdf);delay(100);p2=0xff;void disp()/数码管显示测试函数 t1=12;t2=34;t3=56;for(s=0;s<150;s+)displayxx(tabt1/10,tabt1%10,tabt2/10,tabt2%10,tabt3/10,tabt3%10);p2=0xff;/关闭数码管位选 for(s=0;s<150;s+)displayxx(t
16、ab7,tab8,tab9,tab10,tab11,tab12);p2=0xff;/关闭数码管位选 for(s=0;s<150;s+)displayxx(tab13,tab14,tab15,tab16,tab0,0xff);p2=0xff;/关闭数码管位选/结束/*/*/dht11测温度湿度模块void dht11() ea=0;/关闭总中断 dht=0;/单总线引脚,设为p1.2,主机发出开始信号 dht_data=0;/存放一个字节的数据 for(i=0;i<20;i+) delay(102);/大约1ms dht=1;/拉高并延时 while(dht);/开始信号 (等待主机
17、发出的开始信号结束) while(!dht);/dht11输出响应信号 while(dht);/dht11输出响应信号延时 for(j=0;j<5;j+) /五个字节(共四十位) for(i=0;i<8;i+) /每次八位(一个字节的数据) dht_data=dht_data<<1;/左移一位,最低位存储dht11发来的数据 while(!dht);/等待50us的低电平结束 delay(4);/延时大约40us if(dht=1) /判断总线信号(发来的是否是逻辑高) dht_data=dht_data|0x01;/存储dht11发来的一位数据 while(dht);
18、/等待低电平,等待下一位数据发送 else /总线信号为低电平(发来的是逻辑低) dht_data=dht_data|0x00;/存储dht11发来的一位数据 dht_tabj=dht_data;/存储到数组中 delay(6);/ ea=1;/ t1=dht_tab0;/湿度整数部分 t2=dht_tab1;/湿度小数部分 t3=dht_tab2;/温度整数部分 t4=dht_tab3;/温度小数部分 t5=dht_tab4;/检验位 /结束/*/*/时钟电路模块模块(使用定时器1,十六位定时器,50ms)void time_init() ea=0; p0=0xff; p1=0xff; p2
19、=0xff; p3=0xff; tmod=0x15;/选择定时计数器模式1工作方式 t0 t1工作于方式1th1=0x3c;/初值50ms tl1=0xb0;/初值tr1=1;/开t0定时器et1=1;/允许t0定时器中断 ea=0;/关闭总中断void timer0(void)interrupt 3 ea=0; th1=0x3c;/初值50ms tl1=0xb0;/初值 t_count+; if(t_count=20) /是否到一秒 t_count=0; t_time+;/加一秒 if(t_time=43200)/是否到十二小时 t_hour+;/ if(t_hour=60)t_hour=0
20、;/是否到一个月 t_time=0; ea=1;void time()/数码管显示时间 t1=t_time/3600;/时 t2=(t_time-t1*3600)/60;/分 t3=t_time%60;/ 秒 if(t_hour%2)t1=t1+12;displayxx(tabt1/10,tabt1%10&0x7f,tabt2/10,tabt2%10&0x7f,tabt3/10,tabt3%10);/结束/*/*/矩阵键盘模块void keyscan()/扫描键盘poe=0; pa=0;pb=0;pc=1;/选中缓冲器rdkey(74ls138)p0=0xff;p2=0xfe;
21、/扫描0至8号键poe=1;/打开缓冲器if(p0!=0xff)/判断1至8号键是否按下delay(10); if(p0!=0xff) key=p0; switch(key) case 0xfe:key_value=0;break; case 0xfd:key_value=1;break; case 0xfb:key_value=2;break; case 0xf7:key_value=3;break; case 0xef:key_value=4;break; case 0xdf:key_value=5;break; case 0xbf:key_value=6;break; case 0x7f
22、:key_value=7;break; default:key_value=16; break;/出错 poe=0;/关闭缓冲器rdkey(74ls138)/大ifp2=0xff;poe=0; pa=0;pb=0;pc=1;/选中缓冲器rdkey(74ls138)p0=0xff;p2=0xfd;/扫描0至8号键poe=1;/打开缓冲器if(p0!=0xff)/判断9至16号键是否按下delay(10); if(p0!=0xff) key=p0; switch(key) case 0xfe:key_value=8;break; case 0xfd:key_value=9;break; case
23、0xfb:key_value=10;break; case 0xf7:key_value=11;break; case 0xef:key_value=12;break; case 0xdf:key_value=13;break; case 0xbf:key_value=14;break; case 0x7f:key_value=15;break; default:key_value=16; break;/出错 poe=0;/关闭缓冲器rdkey(74ls138) / delay(3000); /延时50us/大ifp2=0xff;/结束/*/*/主函数/*void main() p0=0xff
24、;p1=0xff;p2=0xff;p3=0xff; key_value=16;i=0;j=0;s=0;mod=0; time_init(); disp(); ea=1; s=0; while(1) keyscan(); if(key_value<12) /按1至12个键中的任意一个,显示时间 time(); else /按13至16个键中的任意一个,显示温度 if(s>200) /大约1.2s测一次温度 s=0; dht11(); mod+;/粗略修正dht11测温度占用的时间 if(mod=50) /大约20ms t_time+; mod=0; s+; displayxx(tabt1/10,tabt1%10&0x7f,tabt2/10,tabt3/10,tabt3%10&0x7f,tabt4%10); /主程序结束/*(2) 程序流程图六:总结和展望(1) 总结通过这次系统的设计和测试,我收获颇多。首先,通过对该系统了解,收集资料,研究其可行性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业文化融入的工作计划
- 2024epc建设工程承包合同十
- 2024年固定期限员工聘用合同模板版B版
- 二零二四年度厦门房屋租赁保险合同房屋及人身安全保险3篇
- 学期工作总结与反思计划
- 库存管理系统的实施效果评估计划
- 2024年度旅游景点开发合同(2024版)
- 人力资源外包合同三篇
- 2024专项净水设备保养合同版B版
- 二零二四年环保项目工程设计代理合同2篇
- 单位员工餐厅外包服务方案
- 医院培训课件:《ECMO概述及其护理》
- 农业产业融合与发展
- 奶牛知识讲座
- 《欧洲的启蒙运动》课件
- 医院科普工作总结报告
- 《变压器原理与应用》课件
- RCA根本原因分析法在护理不良事件中的应用课件
- 配电工程施工方案高低压配电工程施工组织设计
- 《矿用传感器》课件
- 足浴店年度工作计划
评论
0/150
提交评论