基于DHT11的温度湿度监测系统课程设计报告.doc

上传人:爱问知识人 文档编号:5020496 上传时间:2020-01-29 格式:DOC 页数:17 大小:1.05MB
返回 下载 相关 举报
基于DHT11的温度湿度监测系统课程设计报告.doc_第1页
第1页 / 共17页
基于DHT11的温度湿度监测系统课程设计报告.doc_第2页
第2页 / 共17页
基于DHT11的温度湿度监测系统课程设计报告.doc_第3页
第3页 / 共17页
基于DHT11的温度湿度监测系统课程设计报告.doc_第4页
第4页 / 共17页
基于DHT11的温度湿度监测系统课程设计报告.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《基于DHT11的温度湿度监测系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《基于DHT11的温度湿度监测系统课程设计报告.doc(17页珍藏版)》请在三一文库上搜索。

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 0505RH214针单排直插1、传感器性能说明参数条件MinTypMax单位湿度分辨率111%RH16Bit重复性1%RH精度254%RH0505%RH互换性可完全互换量程范围03090%RH252090%RH502080%RH响应时间1/e(63%)25,1m/s 空气61015S迟滞1%RH长期稳定性典型

7、值1%RH/yr温度分辨率111161616Bit重复性1精度12量程范围050响应时间1/e(63%)630S2、 接口说明 建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻3、电源引脚DHT11的供电电压为35.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。4、串行接口 (单线双向)DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现

8、读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据 +8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进

9、行温湿度采集.采集数据后转换到低速模式。1.通讯过程如图1所示图1总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。图2总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了

10、数据位是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.21mA待机100150uA采样周期秒1次注:采样周期间隔不得低于1秒钟。(2) 硬件设计电路图如下所示:(3) ELI

11、TE-III单片机开发板五:软件设计(1)本系统的主要程序如下所示:/2010年12月2日/作者:XX/基于DHT11的温湿度监控系统(可以显示监测时间)#include /51芯片管脚定义头文件#define uchar unsigned char#define uint unsigned intsbit dht=P12;/DHT1引脚定义/74LS138译码电路引脚定义,键盘,数码管,点阵使用时都需要它sbit pa=P14;sbit pb=P15;sbit pc=P16;/74hc138a.b.c输入端,控制数码管段选sbit poe=P17;/74HC138使能端/全局变量uchar

12、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;/时间修正(DHT11测温度占用)/数码管显示值(共阳极)uchar code tab17=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82

13、,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;/选中锁存器,未打开P0=temp1;poe=1;poe=0;/打开74LS138P2=temp2;/0xfe,0xfd,0xfb,0xf7,0xef,0xdf

14、第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);display(tem3,0xfb);delay(100);display(tem4,0xf7);delay(100);display(tem5,0xef

15、);delay(100);display(tem6,0xdf);delay(100);P2=0xff;void disp()/数码管显示测试函数 t1=12;t2=34;t3=56;for(s=0;s150;s+)displayxx(tabt1/10,tabt1%10,tabt2/10,tabt2%10,tabt3/10,tabt3%10);P2=0xff;/关闭数码管位选 for(s=0;s150;s+)displayxx(tab7,tab8,tab9,tab10,tab11,tab12);P2=0xff;/关闭数码管位选 for(s=0;s150;s+)displayxx(tab13,ta

16、b14,tab15,tab16,tab0,0xff);P2=0xff;/关闭数码管位选/结束/*/*/DHT11测温度湿度模块void DHT11() EA=0;/关闭总中断 dht=0;/单总线引脚,设为P1.2,主机发出开始信号 dht_data=0;/存放一个字节的数据 for(i=0;i20;i+) delay(102);/大约1ms dht=1;/拉高并延时 while(dht);/开始信号 (等待主机发出的开始信号结束) while(!dht);/DHT11输出响应信号 while(dht);/DHT11输出响应信号延时 for(j=0;j5;j+) /五个字节(共四十位) for

17、(i=0;i8;i+) /每次八位(一个字节的数据) dht_data=dht_data1;/左移一位,最低位存储DHT11发来的数据 while(!dht);/等待50us的低电平结束 delay(4);/延时大约40us if(dht=1) /判断总线信号(发来的是否是逻辑高) dht_data=dht_data|0x01;/存储DHT11发来的一位数据 while(dht);/等待低电平,等待下一位数据发送 else /总线信号为低电平(发来的是逻辑低) dht_data=dht_data|0x00;/存储DHT11发来的一位数据 dht_tabj=dht_data;/存储到数组中 de

18、lay(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=0xff; P3=0xff; TMOD=0x15;/选择定时计数器模式1工作方式 T0 T1工作于方式1TH1=0x3c;/初值50ms TL1=0xb0;/初值TR1=1;/开T0定时器ET1=1;/允许T0定时

19、器中断 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;/是否到一个月 t_time=0; EA=1;void TIME()/数码管显示时间 t1=t_time/3600;/时 t2=(t_time-t1*3600)/60;/分 t3=t_time%60;/ 秒 if(

20、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;/扫描0至8号键poe=1;/打开缓冲器if(P0!=0xff)/判断1至8号键是否按下delay(10); if(P0!=0xff) key=P0; switch(key) case 0xfe:key_value=0;break;

21、 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:key_value=7;break; default:key_value=16; break;/出错 poe=0;/关闭缓冲器RDKey(74LS138)/大ifP2=0xff;poe=0; pa=0;pb=0;pc=1;/选中缓

22、冲器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 0xfb:key_value=10;break; case 0xf7:key_value=11;break; case 0xef:key_value=12;break; case 0xdf:key_value=13;break; c

23、ase 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;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

24、_value200) /大约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) 总结通过这次系统的设计和测试,我收获颇多。首先,通过对该系统了解,收集资料,研究其可行性,前期做了很多准备工作,查看了很多资料,但这都是值得的,为后面程序的编写和调试打下了基础,不仅学到了编

25、程,还加深了对电路的了解。其次,由于时间紧迫,次系统还有许多改进的地方,由于是使用已有的ELITE-III单片机开发板,硬件电路上改动不大,只能从软件设计上修改。此系统最大的亮点有两个,一是把以前所学的知识全部综合在一起,比如说数码管,矩阵键盘,定时器,中断等等,虽然都是一些已经学习过的知识,但结合起来还是有一定的难度;二是本系统既可以测温度和湿度,也可以显示监测时间,稍微改进一下,就可以变成一个时钟。最后,对于该系统,改进地方可以从以下几点出发,一是重新设计硬件电路,去掉矩阵键盘,使用外部中断,这样可以可以减少对硬件的投入;二是把时间显示改成一个时钟,这样使用的时候监测温度和湿度,不用的时候

26、显示时间,并且还可以修改时间。另外,此系统也有很大的缺陷,第一是硬件电路固定,矩阵键盘不灵敏,有些按键不起作用。二是时间显示不是很精确,因为温度的监测需要关闭定时器中断,占用了一部分时间,虽然已经修改过,将这部分时间加了进去,但还是有缺陷,长时间监测比如说一天,这样时间显示就会慢上几秒,此系统监测时间最长可达一个月,但由于只有六个数码管显示上有点问题,可以稍作修改,即可显示天数。三是该程序编写有一定的难度,虽然都是些简单的程序,但不是简单的叠加就可以的,调试和测试都没有问题,已经在ELITE-III单片机开发板上测试过没有问题,但不代表实际上没有问题,还需要长时间的监测才行。(2) 展望虽然此系统已经完成了,但能不能投入到实际生产中还有很多问题要解决,但这毕竟是自己做的一点小作品,心底还是有一点小小的成就感。如果从节能,简便,使用的方便上考虑,可以只做其中的一个功能,就是监测温度和湿度,至于时间的检测即可去掉,这样问题就很简单了,软件的设计就相当简单了。不过还是希望有一天能把这个小作品完美的完成,投入到实际生产中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1