基于单片机的温湿度监测系统设计.docx
《基于单片机的温湿度监测系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的温湿度监测系统设计.docx(11页珍藏版)》请在冰豆网上搜索。
![基于单片机的温湿度监测系统设计.docx](https://file1.bdocx.com/fileroot1/2023-3/30/649b308b-e795-4488-a74b-d7415a56c62a/649b308b-e795-4488-a74b-d7415a56c62a1.gif)
基于单片机的温湿度监测系统设计
基于单片机的温湿度监测系统设计
***
1设计目的
随着科学技术的日新月异,在居家生活、工农业生产、气象、环保、国防、科研、航天等部门,经常需要对环境中的湿度和温度进行测量及控制。
但目前我国的温湿度测量和设备的操作大多还是由人工来完成,当温度极端时不利于测量的实施。
本设计是以单片机控制为核心,用温湿度传感器来进行实时测量的智能型温湿度监测系统,该设计将大大降低工人的劳动强度,且本设计课题做成的温湿度监测系统结构简单、价格便宜、量程宽、带报警功能,具有较高的可靠性、安全性及使用前景。
2设计的主要内容和要求
本基于单片机的温湿度监测系统设计,主要用来完成对所测环境的温湿度测量,显示,以及在超出设定环境值时能执行报警功能。
主要设计内容:
①设计一个温湿度采集电路。
②设计一个温湿度液晶显示电路。
③设计一个矩阵键盘输入电路。
④设计一个报警器电路。
主要功能要求:
能准确实时的显示温湿度,能通过键盘预置温湿度的上限值和下限值,并在所测环境值超出此范围时发出警报。
3整体设计方案
本设计的基本设计方案:
首先单片机从温湿度传感器采集温湿度信息,然后将采集来的数据转换成液晶显示所需的实际数据,再通过液晶将温湿度以及露点显示出来。
并可预先设置一个温湿度范围值,当环境超过该值时发出报警提醒。
总体设计方框图如图3.1所示。
主要说明:
这里的温度为摄氏温度,湿度为日常生活中的相对湿度,而露点是指水蒸气凝结开始出现时的温度。
图3.1总体设计框图
4硬件电路的设计
4.1 主控制器
本设计采用ATMEGA16单片机作为系统控制芯片,这是一款高性能、低功耗的8位AVR微处理器,其最小系统电路原理图如图4.1所示。
AVR单片机大多数指令执行时间为单个时钟周期,其数据吞吐率高达1MIPS/MHz,相比51系列的单片机的处理速率要提高一倍,而他们价格相仿,所以AVR单片机成为更加合理的选择。
图4.1主控制器电路原理图
4.2 温湿度传感器
市场上有各种温度传感器和湿度传感器,这里采用温湿度可同时测量的SHT75传感器。
SHT75是瑞士SENSIRION生产的一种高度集成的温、湿度传感器,具有14位的温度和12位的湿度全量程标定数字输出。
传感器包含1个电容性聚合体相对湿度传感器和1个隙(bandgap)温度传感器,14位A/D转换器以及1个2-Wires式串行接口电路。
湿度在0-100%RH范围内能达到±1.8%的高精度,温度能再25℃时把误差控制在±0.3℃的范围内。
SHT75工作电压为2.4-5.5V,体积小、功耗低,使用电池供电可以长期稳定运行,防浸泡特性使其在高湿环境下也能长期正常工作,它是各类温湿度测量系统使用设计的首选传感器。
SHT75和单片机连接的电路原理图如图4.2所示,通过单片机控制来完成温湿度数据的采集。
图4.2SHT75电路原理图
4.3 键盘输入模块
键盘输入模块主要用来输入温湿度的上限以及下限值。
其电路原理图如图4.3所示。
图4.3键盘输入模块电路原理图
4.4 液晶显示电路
液晶用来显示单片机采集和处理后的温湿度数值,是本系统的显示界面。
这里采用广泛使用的LGM12864液晶做显示屏。
其电路连接图如图4.4所示。
图4.4液晶显示电路
4.5 报警电路
当温湿度超出所设定的范围时系统产生报警提醒,这里采用蜂鸣器来实现。
蜂鸣器的一端接地,一端和单片机的PD7口相接,其电路图如图4.5所示。
图4.5报警电路
5软件设计
本设计软件部分均采用C语言编写,并采用模块化设计来完成整个系统功能的设计。
首先采集温湿度数据,再由液晶显示温湿度,如果需要设置报警温湿度范围,则由键盘进行输入设置,在温湿度超出设定值时控制报警。
总的设计框图如图5.0所示。
图5.0程序设计框图
5.1 温湿度采集程序设计
温湿度采集程序主要完成:
单片机从SHT75采集温湿值,并通过换算公式计算出实际温湿度值,再通过温湿度值计算出露点值。
流程图如图5.1所示。
图5.1温湿度采集程序图
5.2 键盘输入程序设计
本设计通过按键扫描来判断是否进行温湿度报警值设置,当按下KeyD时为温湿度的上限值设置,当按下KeyE时为温湿度的下限值设置,KeyF为设置完成键。
在未进入设置状态时,除KeyD、KeyE以外其余键为无效键;在进入设置状态后将等待温湿度值的设置,由Key0-Key9来完成温湿度值设定。
当输入完设定的温湿度值后液晶可自动跳到温湿度的显示界面。
键盘输入程序流程图如图5.2所示。
图5.2键盘输入程序设计
5.3 液晶显示程序设计
本设计采用LGM12864来做显示界面,可显示4行,每行8个汉字或16个字符。
开启监控后液晶将实时显示温湿度以及露点。
当按下设置键后,液晶将进入设置界面并反白显示此时所设置的对象,如设置温湿度上限值时,上限二字将反白显示,并将设置的值也反白显示出来,设置完成后跳到温湿度的显示界面。
显示流程图如图5.3所示:
图5.3液晶显示程序设计框图
5.4 报警程序设计
本设计采用蜂鸣器作为报警装置。
每采集完一次温湿度值后进行一次设定值和所测值的比较,当环境的温湿度超过设置的环境值时系统控制蜂鸣器进行报警。
报警程序设计的流程图如图5.4所示。
图5.4报警程序设计框图
6系统仿真
在Proteus的ISIS7.1sp2软件环境下画出电路原理图,接下来就是将设计的程序在AVRStudio4开发集成环境上编译成机器语言,然后进入Proteus的ISIS,在Proteus中双击单片机,将Studio4下编程生成的*..HEX文件导入到Atmega16中,便可在Proteus中单击全速仿真运行按钮
,进行现象的查看,能清楚地观察到芯片上每一个引脚的电平变化,红色代表高电平,蓝色代表低电平;如果现象不正确,则需分析修改程序,并检验原理图的正确性,直到仿真成功。
6.1 仿真图设计
本设计的全局仿真图如图6.1所示,包括主控制器Atmega16,4×4矩阵键盘,LGM12864液晶显示,SHT75温湿度传感器和蜂鸣器等五个主要部分。
图6.1温湿度监测系统仿真图
6.2 仿真验证
向Atmega16导入编程生成的HEX文件后,首先按下开始按钮
让系统开始工作,此后12864液晶将立刻显示出所测的温湿度值。
如图6.21所示为环境温度,如图6.22所示为系统所测温度和显示界面。
图6.21环境温度
图6.22温湿度的显示界面
调节图6.21中的上下箭头可改变当下的环境温度或湿度,通过多次调试得到一组监测数据如表6.23所示。
组号
实际湿度
监测湿度
实际温度
监测温度
露点
第一组
40.0%
43.2%
20.0
19.8
6.9
第二组
45.0%
48.9%
28.0
27.7
16.0
第三组
51.0%
55.6%
33.0
32.6
22.6
第四组
51.0%
56.6%
40.0
39.5
29.2
第五组
71.0%
77.0%
40.0
39.5
34.6
表6.23仿真监测数据
分析比较表中的数据可知SHT75具有良好的稳定性,其中湿度监测的误差小于±10%,温度监测的误差小于±1℃。
本系统的温湿度报警上限和下限值采用键盘输入,当按下KeyD或KeyE时将相应进入上限值和下限值的设置界面,界面将反白显示此时的设置状态,如图6.24为按下KeyD后进入温湿度上限值的设置界面图,此时设置了上限湿度为56%,上限温度为41℃。
图6.24温湿度报警值设置界面图
设置完温湿度报警值后,系统将实时比较环境值和所测值的大小,一旦温湿度超出设定范围,单片机PD7口将控制蜂鸣器报警,如图6.24所示。
图6.24单片机控制蜂鸣器报警图
7使用说明
本系统设计简单,具有很好的使用性和高稳定性,具体的使用说明如下:
(1)系统接通电源并载入程序后将工作在温湿度的实时监测显示状态下。
(2)当按下KeyD或KeyE键,系统分别将进入温湿度的报警上限值或下限值设定状态,在此状态下输入Key0-Key9键为数值0-9有效键,首先输入的两位数值为湿度设置,后面输入的两位数值为温度设置,当输入完4个有效数值后系统将自动返回到温湿度的显示状态。
在设定状态下如果按下KeyF键将直接返回到温湿度的显示状态。
(3)系统每进行一次温湿度数据采集后都会进行一次报警设定值和监测环境值的比较,如果环境值超出设定的上下限范围,则有蜂鸣器产生报警提醒。
其中系统默认的温湿度下限值均为0,上限值均为99。
8设计总结
本次课程设计可以说是一个模块的综合设计。
首先是新知识的学习,要实现SHT75的驱动即温湿度数据采集,然后结合专业课本所学的键盘模块以及显示模块来完成该系统的主体设计。
它是一次对运用知识、学习知识以及将各知识点结合能力的实践考验,很大的提高了本人的专业爱好以及设计经验。
参考文献
[1]彭伟.单片机C语言程序设计实训100例[M].北京:
北京航空航天大学出版社,2010:
299-309.
[2]马潮.高档8位单片机ATmega128原理和使用指南[M].北京:
北京航空航天大学出版社,2004:
86-92.
[3]佟长福.AVR单片机的GCC程序设计[M].北京:
北京航空航天大学出版社,2006:
128-135.
[4]周兴华.AVR单片机C语言高级程序设计[M].北京:
中国电力出版社,2008:
58-76.
[5]沈建良.ATmega128单片机入门和提高[M].北京:
北京航空航天大学出版社,2009:
169-178.
[6]胡汉才.高档AVR单片机原理及使用[M].北京:
清华大学出版社,2008:
79-86.
[7]杨恢先等.单片机原理及使用[M].北京:
人民邮电出版社,2006:
112-135.
[8]王幸之.AT89系列单片机原理和接口技术[M].北京:
北京航空航天大学出版社,2004:
221-232.
[9]张友德.单片微型机原理、使用和实验[M].上海:
复旦大学出版社,2000:
98~201.
[10]张军.AVR单片机C语言程序设计实例精粹[M].北京:
电子工业出版社,2009:
229-327.