《工程设计家用温湿度测量报警系统的设计.doc》由会员分享,可在线阅读,更多相关《工程设计家用温湿度测量报警系统的设计.doc(42页珍藏版)》请在三一办公上搜索。
1、工程设计论文 题 目 家用温湿度测量报警系统的设计 学 院 电子工程学院 专 业 电子信息工程 学生姓名 薄涛(02101192) 陈刚(02101193) 刘月(02101260) 导师姓名 郭万有 目录概要.1Abstract.11.绪论.21.1课题背景、目的和意义.21.2课题主要任务及要求.22.设计思路.32.1系统分析.32.2器件介绍.32.2.1温湿度传感器.32.2.2 单片机.82.2.3 LCD.103.系统设计.143.1硬件系统.143.1.1总电路与原理图.143.1.2主要模块的电路.153.2 软件系统.174.结论.185.致谢.19参考文献.19附录. 2
2、0 摘要本次设计是采用STC系列单片机中的89C52和DHT11的低成本的温湿度的检测系统。本设计主要包括硬件电路的设计和系统软件的设计。硬件电路主要包括单片机、温湿度传感器、显示模块、报警模块以及键盘等5部分,由DHT11温湿度传感器及1602字符型液晶模块构成系统显示模块,该系统电路简单、工作稳定、集成度高,调试方便,测试精度高,具有一定的实用价值。其中测温湿度控制电路由温湿度传感器和预设温度值比较报警电路组成,可根据需要预先输入预设值,当实际测量的温湿度大于预设的温湿度数值时,发出报警信号。软件部分包括了主程序、显示子程序、测温湿度子程序。 本次设计采用的DHT11温湿度传感器是一款含有
3、已校准数字输出的温湿度复合传感器,传感器包括一个电阻式感湿原件和一个NTC测温元件,并与一个高性能的8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。【关键词】 温度测量 湿度测量 STC89C52 DHT11ABSTRACTThis design is the use of STC Series MCU 89C52 and DHT11 in the low-cost temperature and humidity detection system. This design includes the design of hardware and system
4、 software design. Hardware circuit includes a microcontroller, temperature and humidity sensors, display module, the alarm and the keyboard 5, the DHT11 temperature and humidity sensor and 1602 constitute a system of character LCD module display module, the system circuit is simple, stable, high int
5、egration, commissioning Convenient, high precision, has some practical value. Temperature and humidity control circuit in which the temperature and humidity sensors and compare the value of the preset temperature alarm circuit, the user input required pre-default value, when the actual temperature a
6、nd humidity measurements of temperature and humidity is greater than the preset value, an alarm signal (bee Buzzer beep). Software part includes the main program, display routines, subroutines side temperature and humidityThe design uses the DHT11 temperature and humidity sensors is a digital output
7、 with a calibrated temperature and humidity combined sensor, the sensor includes a resistance and a sense of the original wet NTC temperature measurement devices, and with a high-performance 8-bit microcontroller connected. Therefore, the product has excellent quality, fast response, anti-interferen
8、ce ability, high cost and other advantages. 【Key words】Temperature measurement Humidity measurement STC89C52 DHT111.绪论1.1课题背景、目的和意义温度和湿度与人们的生活息息相关,在工农业生产,气象,环保,国防,科研等部门,经常需要对环境温度及湿度进行测量,准确测量温湿度在生物制药,食品加工,造纸等行业更是至关重要的,传统的温度计是用水银显示的,虽然结构简单,价格便宜,但是精度不高,而且不易计数,但是采用单片机进行控制,不仅具有控制方便,简单灵活等优点,而且可以大幅度提高温度控制的
9、技术指标,用LCD显示起来会更加的直观方便。采用DHT11数字温湿度传感器作为检测元件,能够同时检测温度和湿度,它不仅仅易于焊接,而且只有四个管角,减少了外围电路的设计。DHT11传感器包括一个电容式聚合体测湿原件和一个能隙式测温元件。DHT11能够直接独处被测温湿度值,同时单片机可以把测量的数据通过串口传到计算机,来完成控制。带来了极大的方便,用单片机控制的温湿度不仅硬件电路相对简单,而且测量精度高。随着人们生活水平的提高,对生活环境的要求也越来越高。目前家用智能温湿度测量显示与报警系统的需求日益增高,因此设计一款实惠又实用的家庭温湿度测量报警器具有很好的实际意义。1.2课题主要任务及要求任
10、务:(1) 了解家用温湿度测量报警系统的原理。 (2) 根据家用温湿度测量报警系统的原理,设计家用温湿度测量报警系统的硬件结构电路。要求:(1)设计出家用温湿度测量报警系统的硬件结构电路。 (2) 对设计的电路进行分析。(3) 显示测量结果并且可以实现报警设置与显示。2.设计思路2.1系统分析分析系统可知,根据需要设计的功能模块包括数据采集、控制、键盘输入、液晶显示、数据存储等.在设计本系统时,主要有以下电路模块:l 系统单片机采用STC89C52单片机;l 温湿度采集选用DHT11数字式温湿度传感器;l 按键电路模块;l 数码管显示电路模块。2.2器件介绍2.2.1温湿度传感器DHT11数字
11、温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的温湿度传感和数字模块采集技术,具有很高的稳定性和可靠性,DHT11传感器内含一个NTC测温和一个电阻式感湿元件,并与一个8位的高性能单片机相连接,在精确的湿度校验室中DHT11传感器进行过校准,以程序的形式校准系数储存在0TP内存中,检测信号的时候,在处理过程中传感器内部要调用这些校准系数,采用单线制的串行接口,使系统集成可以有较低的功耗,而且更加简单快速,信号传输距离超过20米,作为一个数字温湿度传感器DHT11具有响应快速、抗干扰强、性价比高等优点,它的性能指标如下:湿度测量范围为2090RH;湿度测量精度为5RH;温
12、度测量范围为050 ,温度测量精度为2,工作电压3055 V,相应时间5S,DHT1l采用4针单排引脚封装, 传感器通电后,需要等待1s,这是因为要越过不稳定的状态,在此期间不需发送指令,电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。典型的应用电路如图2.1:图2.1典型的应用电路 DHT11实物图如下图2.2:图2.2 DHT11实物图v 串行接口(单线双向)采用单总线数据格式,DATA 用于微处理器与DHT11之间的通讯和同步,一次通讯时间4ms左右,数据分小数部分和整数部分。通讯过程如图2.3所示图2.3 通讯过程总线空闲状态为高电平的时候主机把总线拉低等待D
13、HT11响应, DHT11能检测到起始信号,主机必须把总线拉低,至少大于18ms。DHT11一旦接收到主机的开始信号,接着就等待开始信号的结束,然后发送80us的低电平响应信号,要读取DHT11的响应信号,必须等待开始信号的结束,并延时等待20-40us后才能够接受,主机发送开始信号后,这时候就可输出高电平或切换到输入模式,接着总线由上拉电阻拉高。DHT11发送响应信号的时候总线为低电平 ,DHT11把总线拉高80us之前,必须等到响应信号发送,准备发送数据时,每一bit数据都以50us低电平时隙开始,数据位是0或1是由高电平的长或短来决定。假如响应信号的读取为高电平,但是DHT11无响应响应
14、,这时候说明路线可能连接不正常,当最后一bit数据传送结束后,DHT11把总线拉低50us,接着总线由上拉电阻拉高进入空闲状态。数字0信号表示方法如图2.4所示图2.4 数字0信号表示方法数字1信号表示方法.如图2.5所示:图2.5 信号1 表示方法v 电气特性VDD=5V,T = 25,除非特殊标注,其中主要的电气特征如表2.1所示:表2.1电气特征参数条件mintypmax单位供电DC355.5V供电电流测量0.52.5Ma平均0.21Ma待机100150Ua采样周期秒1次 注:采样周期间隔不得低于1秒钟v 性能说明 如表2.2所示:表2.2 性能说明参数条件MinTypMax单位分辨率8
15、Bit111%RH精度254%RH重复性1%RH温度0-505%RH温度量程范围03090%RH502080%RH252090%RH长期稳定性典型值1%RH/yr迟滞1互换性可完全互换分辨率888Bit111重复性1响应时间1/e(63%)630S量程范围050精度12v DHT11引脚说明 如表2.3所示:表2.3 DHT11引脚说明pin名称注释1VDD供电35.5V2DATA串行数据,单总线3NC空脚,悬空4GND接地,电源负极v 应用信息电阻式湿度传感器暴露在化学物质中会受到干扰,导致灵敏度下降,当处于极限状态时,传感器可以通过程序处理,回复到初试的校准状态,在不符合规范的范围内使用传
16、感器,不仅会导致几乎3%的临时漂移信号,而且会加速产品的老化,转为正常的使用范围后,会渐渐恢复校准状态;温度是影响气体相对湿度的关键,因此测量时最好让湿度传感器工作温度相同。v 封装信息 如图2.6: 图2.6 DHT11的封装信息2.2.2 单片机v STC89C52 单片机概述STC89C52系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍,内部集成MAX810专用复位电路。v STC89C52 单片机特点l 增强型 8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8
17、051;l 工作电压: 5.5V - 3.5V(5V单片机);l 工作频率范围:040MHz,相当于普通8051的 080MHz;l 用户应用程序空间 4K/8K/16k/32K/64K字节;l 片上集成1280字节 RAM;l 通用I/O口(32/36个),复位后为准双向口/弱上拉(普通8051传统I/O口);l ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器/仿真器。l 每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA;l 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;l 有EEPROM功能;l 看门狗;l 内部集成MAX810专
18、用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);l 时钟源:外部高精度晶体/时钟,内部R/C振荡器;l 用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体/ 时钟;l 常温下内部R/C 振荡器频率为:5.0V 单片机为: 11MHz 17MHz;l 共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;l 外部中断I/O口4路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,Power Down模式可由外部中断唤
19、醒;l 通用全双工异步串行口(UART) ;l 工作温度范围:-40 +85(工业级) / 0 75(商业级) ;l 封装:PDIP-40, PLCC-44。v STC89C52 单片机管脚及封装 STC89C52 单片机有多种封装形式,本设计中选用40DIP封装,其管脚定义如图2.7所示。其最小应用系统如图2.8所示。图2.7 STC89C52 管脚图 图2.8 单片机最小系统2.2.3 LCDv 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块v LCD1602主要技术参数 如图表2.4所示表2.4 1602的主要
20、技术参数工作电压:4.55.5V容量162个字符最佳工作电压 5.0V工作电流2.0mA字符尺寸2.954.35(WH)mmv 引脚功能说明 如下图表2.5所示:表2.5引脚接口说明表1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表 编号符号引脚说明1VDD正极2VSS地3VL液晶显示偏压4RS数据/命令选择5R/W读/写选择6E使能信号7D0数据8D1数据9D2数据10D3数据11D4数据12D5数据13D6数据 续表2.51602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表 编号符号引脚说明14D7数据15BLA背光源正极16
21、BLK背光源负极1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。v 管脚图 如图2.9所示:图2.9 LCD1602的管脚图其中实物图如图2.10所示 图2.10 1602字符型液晶显示器实物图LCD1602主要有两种,主要区别在于是否背光,它的控制器主要为HD44780,带背光的比不带背光的厚,在应用中是否带背光并不影响使用,两者尺寸差别如下图2.11所示:图2.11 1602LCD尺寸图1602LCD的RAM地址映射及标准字库表液晶显示模块是一个比较慢的显示器件,因此在执行指令之前要首先确认模块的忙标志处于低电平,表示空闲,不然此指令失效,输入显示字符地址后会显示字符
22、,图2.12是1602的内部显示地址。图2.12 1602LCD内部显示地址3.系统设计3.1硬件系统3.1.1总电路与原理图单片机是整个系统的控制中枢,它指挥外围器件协调工作,从而完成特定的功能,硬件实现上采用模块化设计,每一模块只实现一个特定功能,最后再将各个模块搭接在一起,这种设计方法可以降低系统设计的复杂性,本系统主要硬件设计包括电源电路、报警电路、晶振电路,LCD显示电路以及温湿度传感器电路。本设计的温湿度控制器框图如图3.1所示。图3.1 温湿度控制器方框图 具体的原理图如图3.2:图3.2 系统电路原理图3.1.2主要模块的电路v 温湿度采集电路图3.3 温湿度采集电路v 单片机
23、电路由STC89C52组成的温湿度控制器单片机系统原理图如图3.4所示。图中DATA引脚为温湿度传感器单总线引脚,单片机通过该引脚和传感器通信,读取温湿度数据。K1、K2、K3、K4为四只调节按键,分别为设置键、上调键、下调键和保存键,用以调整温湿度上下限值并保存数据。L2、L3、L4、L5为四只报警灯,其中L2为低温报警,L3为高温报警,L4为低湿报警,L5为高湿报警。 图3.4单片机系统原理v 显示电路 显示部分采用SMC 1602液晶屏进行数据显示,与单片机接口电路如图3.5所示。图3.5 LCD与单片机接口电路v 温湿度上限存储温湿度阈值存储在EEPROM芯片AT24C04中,并可以通
24、过K1K4按键调节并保存,其中K1、K2、K3、K4分别为设置键、上调键、下调键和保存键。AT24C04是IIC芯片,其电路如图3.6所示。图3.6 EEPROM存储电路v 继电器驱动电路当温湿度数据超过正常范围时,单片机发出继电器动作信号。该低电平信号通过三极管方法,驱动继电器线圈得电,继电器结点动作。该结点可以控制空调、加热器、抽风机等电器,以控制温湿度范围。具体电路如图3.7所示。图3.7 继电器电路3.2 软件系统本系统的功能决定了系统软件设计思路。设计思路如下:(1) 实现模块中的具体子模块;(2) 设计模块间的借口,从而构成整个系统软件。 本设计软件主程序流程图如图3.8所示。图3
25、.8 主程序流程图4.结论本文介绍了一种基于单片机的家用温湿度测量报警系统的原理和设计。给出了硬件和软件的设计方案,并且做出了实物。可以实现以下功能:1、 实时测量当前温度值和湿度值,在液晶屏动态显示。2、 可以显示当前允许温度范围,在液晶屏显示,如“20-45”表示允许温度范围为20摄氏度至45摄氏度。3、 可以显示当前允许湿度范围,在液晶屏显示,如“15-60”表示允许湿度范围为15%至60%。4、 当温度低于温度下限时,低温报警灯亮,控制继电器动作。5、 当温度高于温度上限时,高温报警灯亮,控制继电器动作。6、 当湿度低于湿度下限时,低湿报警灯亮,控制继电器动作。7、 当湿度高于湿度上限
26、时,高湿报警灯亮,控制继电器动作。8、 可以通过键盘调整温度上下限和湿度上下限,具体方法是连续按设置键直至温度下限、温度上限、湿度下限、湿度上限相应的位置闪烁,再通过Up键和Down键调整数值,调整完毕继续按设置键进入正常状态。9、 可以保存设置参数至EEPROM中,具体方法是按保存键,此时当前设置参数存盘,重新上电显示新的设置值。如果不按保存键,所调整的设置参数只在此次运行有效,关电后恢复原先设定值。但由于经验不足与时间仓促,电路软件、硬件部分都存在不够完善的地方,在今后的学习中会进一步改进。总体来说,最重要的是在本次工程设计中我们学到了很多知识,了解了家用温湿度测量报警系统原理,掌握了单片
27、机的开发过程和利用单片机设计电路的方法,同时也熟悉了Keil,等软件的使用,这些对我们以后的学习和工作都将会有很大的帮助。5 .致谢工程设计是对我们知识运用能力的一次全面的考核,也是对我们进行科学研究基本功的训练,培养我们综合运用所学知识独立的分析问题和解决问题的能力,为以后撰写专业学术论文和工作打下良好的基础。本次工程设计能够顺利完成,首先要感谢我们的指导老师给我们提供的辅导以及帮助,在老师的指导下,我们顺利完成了任务。同时,此次任务的顺利完成,也与各个组员之间的齐心协力密不可分,在此过程中,也增强了我们的团队合作精神。参考文献151单片机入门与视频演练电子工业出版社251单片机基础与实例进
28、阶清华大学出版社351单片机实例实讲于永、戴佳等附录程序清单【main.c】#include #include 1602.h#include dht.h#include 2402.h /定义三个LED灯sbit L2=P13;sbit L3=P14;sbit L4=P15;sbit L5=P16;sbit Key_SET = P32;/设置键sbit Key_UP= P33;/加 键sbit Key_DOWN = P34;/减 键sbit Key_SAVE = P35;/保存键sbit Relay = P20;/定义标识volatile bit FlagStartRH = 0; /开始温湿度转
29、换标志volatile bit FlagKeyPress = 0; /有键按下/定义温湿度传感器用外部变量extern U8 U8FLAG,k;extern U8 U8count,U8temp;extern U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;extern U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;extern U8 U8comdata;extern U8 count, count
30、_r;U16 temp;S16 temperature, humidity;S16 idata TH, TL, HH, HL; /温度上限和湿度上限char * pSave;U8 keyvalue, keySET, keySAVE, keyUP, keyDOWN;/定义变量U16 RHCounter;U8 FlagSet,hide;/数据初始化void Data_Init() RHCounter=0; L2=1; L3=1; L4=1; TH=40; TL=20; HH=70; HL=20; keyvalue=0; keySET=1; keySAVE=1; keyUP=1; keyDOWN=1
31、; FlagSet=0; hide=0;/定时器0初始化void Timer0_Init()ET0=1; /允许定时器0中断TMOD=1; /定时器工作方式选择TL0=0x06; TH0=0xf8; /定时器赋予初值TR0=1; /启动定时器/定时器0中断void Timer0_ISR (void) interrupt 1 using 0TL0=0x06;TH0=0xf8; /定时器赋予初值 RHCounter+;/设闪烁标志if (RHCounter400) hide=0;else hide=1;/每2秒钟启动一次温湿度转换 if (RHCounter=800) FlagStartRH=1;
32、 RHCounter=0; /存入设定值、void Save_Setting() pSave=(char *)&TL; /地址低位对应低8位,高位对应高8位 wrteeprom(0,*pSave); /存温度上限值TH低8位 DELAY(500); pSave+; wrteeprom(1,*pSave); /存温度上限值TH高8位 DELAY(500); pSave=(char *)&TH; wrteeprom(2,*pSave); /存温度下限值TL低8位 DELAY(500); pSave+; wrteeprom(3,*pSave); /存温度下限值TL高8位 DELAY(500); pS
33、ave=(char *)&HL; /地址低位对应低8位,高位对应高8位 wrteeprom(4,*pSave); /存湿度上限值HL低8位 DELAY(500); pSave+; wrteeprom(5,*pSave); /存湿度上限值HL高8位 DELAY(500); pSave=(char *)&HH; wrteeprom(6,*pSave); /存湿度下限值HH低8位 DELAY(500); pSave+; wrteeprom(7,*pSave); /存湿度下限值HH高8位 DELAY(500);/载入设定值、void Load_Setting() pSave=(char *)&TL;
34、*pSave+=rdeeprom(0); *pSave=rdeeprom(1); pSave=(char *)&TH; *pSave+=rdeeprom(2); *pSave=rdeeprom(3); pSave=(char *)&HL; *pSave+=rdeeprom(4); *pSave=rdeeprom(5); pSave=(char *)&HH; *pSave+=rdeeprom(6); *pSave=rdeeprom(7); if (TL99)|(TL99)|(TH99)|(HL99)|(HH4) FlagSet = 0; L1602_char(1, 12, TL/10+48);
35、L1602_char(1, 13, TL%10+48); L1602_char(1, 15, TH/10+48); L1602_char(1, 16, TH%10+48); L1602_char(2, 12, HL/10+48); L1602_char(2, 13, HL%10+48); L1602_char(2, 15, HH/10+48); L1602_char(2, 16, HH%10+48); break; case 2:/加键按下 if (FlagSet=1) /设TL if (TL100) TL+; L1602_char(1, 12, TL/10+48); L1602_char(1
36、, 13, TL%10+48); if (FlagSet=2) /设TH if (TH100) TH+; L1602_char(1, 15, TH/10+48); L1602_char(1, 16, TH%10+48); if (FlagSet=3) /设HL if (HL100) HL+; L1602_char(2, 12, HL/10+48); L1602_char(2, 13, HL%10+48); if (FlagSet=4) /设HH if (HH0) TL-; L1602_char(1, 12, TL/10+48); L1602_char(1, 13, TL%10+48); if (FlagSet=2) /设TH if (TH0) TH-; L1602_char(1, 15, TH/10+48); L1602_char(1, 16, TH%10+48); if (FlagSet=3) /设HL if (HL0) HL-; L1602_char(2, 12, HL/10+48); L1602_char(2, 13, HL%10+48); if (FlagSet=4) /设HH if (HH0) HH-; L1602_char(2, 15, HH/10+48); L1602_char(2, 16, HH%10+4