基于单片机的温湿度测量仪_第1页
基于单片机的温湿度测量仪_第2页
基于单片机的温湿度测量仪_第3页
基于单片机的温湿度测量仪_第4页
基于单片机的温湿度测量仪_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

页第1章绪论1.1研究的背景与意义随着科学技术的快速革新和人民生活水平的逐步提高,人们对高品质生活的要求也越来越高,这致使科学技术在人民生活之中的运用越来越多。单片机正在不断地融入我们的生活和生产,带动传统控制检测技术的变革。在实时运作和自动控制的单片机应用系统中,单片机是作为一个核心部件来使用,仅仅掌握单片机方面的知识是远远不够的,还需要学会搭配相关的硬件结构以及相对应的软件,并达成目的。现如今,社会中有越来越多的场合会涉及到温湿度的检测以及显示,因为温湿度不管是从物理量本身还是在人们日常生活中都有着密切的联系,适宜的温湿度会使人身心愉悦,提高人们的工作效率。所以,及时发现周围环境温湿度的变化,及时调控,将会极大的提升人们的工作和生活质量。1.2温湿度测量仪的研究现状1.2.1国外研究现状国外对温度控制技术研究较早,在20世纪70年代,最初的模拟式的组合仪表就出现了。80年代末,开发出了分布式控制系统,现目前正在开发计算机数据采集系统的多因子综合控制系统。很多国家已经在实现自动化的基础上,往全自动、无人化的方向发展了,但就这方面而言,我国关于温湿度测量与控制的研发较晚。1.2.2国内研究现状我国在温湿度测量方面的研发较晚,结合外国先进技术,才完成了温度室内微机控制的技术,虽然近年来,我国在湿度传感器研发领域取得了长足进步,但与发达国家相比,存在较大差距。我国温度测量控制现状还远远没有达到工厂化的程度,生产实际中仍然有许多问题困扰着我们,存在着装备配套能力差,产业化程度低,环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。目前,国内外的主要研发方向是湿敏传感器的集成化、智能化、多参数检测,为开发新一代温湿度测控系统提供有利条件,也将使湿度测量技术提高到新的水平。理想的湿敏传感器的特性要求是:精度高、寿命长、响应快、温湿度滞回差小、灵敏度高、易批量生产、具有良好的抗热抗冷性等。现在,自动化需求越来越大,各个行业都开始向智能化,自动化发展,测量行业也不例外,所以,有关于单片机在温湿度测量系统的应用的论文也在不断增多[4][5]。现在温湿度测量的应用主要是在农业,工业生产,以及医学等方面,不同产业中,由于工作环境等因素的影响,测温湿度的方法也不相同,就拿湿度的测量方法来说,现在与湿度测量相关的方法,从原理上来说就有20到30种之多,因此,最佳测量方法的选择是现如今一个十分重要的问题。1.3本文的主要研究内容及结构因为是需要研究一个便于推广的温湿度测量仪,通过AD仿真的形式,设计出了一整套系统来实现如下列的设计要求:(1)-40℃到50℃温度湿度,误差小于1℃(2)实现20%到95%的相对湿度测量,误差小于5%(3)温度与湿度的实时显示(4)人体舒适度评价提示在设计并完成该温湿度测量仪的电路与pcb之后,购买器件并焊接完样板,接下来对该样板与软件部分进行联调测试,对该测量仪的性能进行分析,分析其是否能达到如上四点的性能要求。主要需要完成单片机相关程序的设计,用以实现对温、湿度传感器的控制、对测出的数值的显示和评价、报警。本设计以STC89C52为主要控制器件,以DHT11为数字温度传感器的新型数字温湿度测量仪。本设计主要包括硬件电路的设计和系统软件的设计。本文设计以STC89C52单片机为核心,采用高性能的温湿度测量仪,可同时对温度、湿度信号进行测量控制,并通过液晶显示屏实现液晶数字显示,还可以通过按键对温湿度分别进行上、下限设置,此外,在测得温湿度的数值后,通过所设置的上下限进行比较,如果超过所设置的上下限,蜂鸣器会报警,从而实现对人体舒适度的掌控。

第2章温湿度测量仪的理论基础一般来说一个温湿度测量仪由三个部分组成,分别是温湿度传感器部分,单片机控制电路部分和显示或报警模块,其中温湿度传感器负责与外界进行沟通,将外界的温度和湿度在进行测量后,经过一定的算法进行处理后再传入整个系统,在系统中会将数据在单片机控制电路的部分进行处理,从而使得单片机来对显示模块进行控制,将温湿度传感器获得的外界信息通过肉眼可见的形式传递给人们进行观察。那么如何才能使得温湿度传感器能够获得较为准确的外界温湿度数据,就显得格外重要,因为只有在第一个环节获得的数据是偏差较小的,在经过单片机对信息进行处理后,才能够在人与机器交互的显示模块获得更加准确的外界温湿度信息。目前就温湿度的测量方法,从原理上就有20-30多种,因此,如何选择一个最佳的温湿度测量方法是本文的一个重要问题,传统的温湿度测量多采用模拟小信号传感器,不仅信号调制电路复杂,且温湿度值的标定过程页极其复杂,因此对于温湿度控制器的设计就有很大的现实生产意义。2.1温湿度测量方法以湿度测量为例,现代湿度测量方案最主要的有两种:干湿球温度计和电子式湿度传感器测湿法。因为本文研究需要达到测量-40℃到50℃温度,误小于1℃,20%到95%的相对湿度测量,误差小于5%的测量标准,由于干湿球温度计的准确度只有5%-7%RH,但是电子式湿度传感器的精确度可以达到2%-3%RH,因此本文会使用电子式湿度传感器来进行研究。2.1.1干湿球温度计干湿球温度计的准确度还取决于干球和湿球两只温度计的精度;干湿球温度计的准确度只有5%-7%RH。干湿球温度计示意图如下图2-1所示。图2-SEQ图2-\*ARABIC1干湿球温度计示意图如上图所示一对平行的温度计,分别用于测量温度和湿度。湿球温度计和干球温度计是具有相同规格的温度计,可同时测量温度和湿度,安装在小型百叶窗盒中。称为“干球温度计”。另一个球包裹在纱布中,纱布的底部浸入有盖的杯子中。杯子的嘴距碗口3厘米,杯子中装有蒸馏水,称为“湿球温度计”,称为湿球温度计,是根据热力学原理根据干球温度计和湿球温度计之间的温差计算得出的湿度。2.1.2电子式湿度传感器电子式湿度传感器是最近这几十年才开始迅速发展的,尤其是最近20年,发展迅速。电子是温湿度传感器的精度在2-3%,但是,在实际生活中,电子式传感器很容易受到环境因素的影响,在使用一段时间后,传感器就会发生老化,导致精度下降,所以生产部门每年或者每两年都会对产品进行重新标定。虽然电子式湿度传感器的长期稳定性和使用寿命都不如干湿球温度传感器,但为了方便携带,同时本次设计的精度要求是5%,所以我选用电子式湿度传感器。如下图2-2为电子式湿度传感器的电路示意图。图2-2电子式温湿度传感器电路示意图如下图2-3为电子式湿度传感器的成品示意图。图2-3电子式温湿度传感器成品示意图2.2电子式湿度传感器的分类在文献[6]中指出了,有关于电子式湿度传感器的分类:电阻式湿度传感器:氯化锂电阻式湿度传感器、聚苯乙烯硫酸锂湿度传感器、光硬化树脂湿度传感器、天然陶瓷电阻式湿度传感器、金属氧化物电阻式湿度传感器、碳温敏电阻式湿度传感器等。电容式湿度传感器:氯化铝电容式湿度传感器,高分子薄膜电容式湿度传感器。湿度传感器不但对湿度敏感,还对温度十分敏感,但国内很多湿度传感器对此仍缺乏考虑,使得测量误差难以确定。在如今的中国,湿度传感器的供求关系十分紧张,虽然近年来我国的湿度传感器新品种不断增多,但真正能为社会所用的并不多,主要就是可供选用的成熟产品不多,所以,湿度传感器的应用是现如今最为主要的方向。2.3温湿度传感器注意事项由于本文所研究的是一个便于推广的温湿度测量仪,主要需要完成单片机相关程序的设计,用以实现对温、湿度传感器的控制、对测出的数值的显示和评价、报警,所以本设计我以STC89C52为主要控制器件,以DHT11为数字温度传感器。在使用电子式湿度传感器时,需要有一些注意事项,以免在使用的主观过程中造成最后测量的数值不准确,导致无法达到题目所要求的测量精度。关于湿度传感器选择的注意事项如下:(1)测量范围的选择:温湿度测控一般不需要全量程(0-100%RH)测量,除部分特殊情况,如气象,科研部门。(2)测量精度的选择:测量精度是湿度传感器最重要的指标。多数情况下,对于要求精确控制恒温、恒湿的局部空间,或者需要随时跟踪记录湿度变化的场合,在选用±3%RH以上精度的传感器。如果没有精确的控温手段,或者被测空间是非密封的,±5%EH的精度就足够了。合适的才是最好的,不需要主球所谓的“高精度”,因为精度每1%的提升,对传感器来说可以算是一个档次的提升了,制造成本也会随之增加。(3)时漂和温漂:在环境因素的影响下,电子式湿度传感器会发生老化,产生漂移,年漂移量一般在±2%左右。(4)其他:避免在酸性、碱性、粉尘较大及还有有机溶剂的环境中使用。

第3章温湿度检测系统的设计3.1系统总体结构设计3.1.1系统总体电路组成系统主要由单片机控制模块、电源模块、温湿度传感器模块及报警模块组成。总体设计方案图如图3-1所示。温湿度传感器电路温湿度传感器电路单片机控制电路电源电路单片机控制电路电源电路报警电路报警电路图3-1系统总体结构图系统主要通过温湿度传感器电路采集温湿度信息,将测得信息传输到单片机控制电路,再通过单片机控制电路设置温湿度报警条件,当采集到的温湿度到达设置的报警条件时,驱动蜂鸣器的I/O口电频改变,蜂鸣器报警。3.2单片机控制电路设计3.2.1单片机芯片的选择本文所设计的单片机控制电路所选择的芯片为STC89C52。STC89C52单片机是一款基于8位单片机处理芯片STC89C52的系统,它采用8052核的ISP在系统可编程芯片,最高工作时钟频率80MHz,片内含4KBytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-52指令系统及80C52引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,结合pc的控制程序就可更快的将用户的程序代码下载到单片机内部,不需要再去购买通用编程器。该系列单片机是单时钟/机器周期(1T)的兼容8052内核单片机,速度快,耗能低,全新的流水线和精简指令集结构,内部集成MAX810专用复位电路。图3-2为STC89C52芯片的封装引脚图。图3-2STC89C52封装引脚图3.2.2单片机控制电路设计本文所设计的单片机控制电路按照最小系统板简易设计,外加液晶显示模块进行数据显示。其主要包括晶振电路,复位电路,下载电路,显示电路以及按键电路。其中晶振电路与XTAL1和XTAL2相连,该电路连接12M晶振,晶振两端各串联1个30pF电容,该电路作用是固定机器周期,方便写程序时计算。复位电路连接RST,当震荡器运行时,在RST引脚出现两个机器周期的高电平时单片机复位。复位后,P1.0~P1.7口均置1,引脚表现为高电平,程序计数器PC清0。复位操作不会对内部RAM有所影响。下载电路连接接口P3.0,P3.1,完成单片机与电脑的连接,使电脑上的程序能下载进单片机里。本设计还在复位电路、下载电路与供电端口之间串联一个按键,这样便可以通过按键来复位下载程序,省去了插拔下载线的麻烦。按键电路由四个四脚微动开关按键组成,它们分别负责模式选择,温湿度报警的加减设置,以及功能推出。其分别连接单片机的P2.0到P2.3口。显示电路采用LCD1602显示屏,该显示屏是一种工业字符型液晶,能够同时显示16x02即32个字符。该液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形。其与P1.0口相连。单片机控制电路原理图如图3-3所示。图3-3单片机控制电路3.3电源电路设计本文所设计的电源电路由一个电源插座,一个开关按钮,一个1K欧姆电阻和一个二极管组成。电源插座选用5V的圆孔插座,这样采用220V转5V的圆孔充电线即可给整个电路板通电。再通过开关按钮来控制电路电源的开关,使用简单方便。电源电路如图3-4所示。图3-4电源电路3.4温湿度传感器电路设计本次设计中,我选用的是DTH_11温湿度传感器。DHT11数字温湿度传感器含有已校准数字信号输出,它有专用的数字模块采集技术和温湿度传感技术,以得到较高的可靠性和长期的稳定性。传感器内部有一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。DTH_11的特点:响应快,抗干扰能力强,体积小,功耗低,能适用于很多苛刻的环境条件下,具有很高的性价比。DTH_11是4针单排引脚封装,其封装图如图3-5所示。图3-5dht11芯片封装图Dht11芯片精度为湿度+-5%RH,温度+-1摄氏度,量程湿度20-90%RH,温度0~50摄氏度。该芯片采用3.3~5V供电,本文采用5V供电,与单片机供电一致,简单方便。其第二脚与单片机I/O口相连,将采集到的信息传输到单片机。温湿度传感器电路如图3-6所示。图3-6温湿度传感器电路3.5报警电路设计本文所设计的报警电路由1个蜂鸣器,一个8550三极管,一个二极管和2个2千欧姆的电阻组成。蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,本文采用8550三级管来驱动该蜂鸣器。在三极管的B极通过一只2千欧姆的电阻到单片机I/O口,这样便可通过单片机I/O口高低电频的变化来控制蜂鸣器的驱动。另外在蜂鸣器的两端并联一只二极管和一个电阻,以保护蜂鸣器。报警电路如图3-7所示。图3-7报警电路图3.6系统PCB设计本文所设计的电路主要选用AD软件,AD软件是AltiumDesigner的缩写,其主要是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,运行在WindowsXP、Windows7操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。在本次设计中,我先将各部分原理图绘制好后,导入PCB版图,再进行排版连线,最终的PCB版图如图3-8所示。图3-8PCB原理图绘制

第4章系统实现4.1系统实现过程该阶段的调试过程主要将硬件部分与程序进行联调,观察结果是否如预期效果一致,并且通过上个章节的PCB板设计后,按照预期规划的各模块以及期间均进行了实物的加工处理,从而完成了温湿度测量仪的硬件部分的实现。本阶段需要将程序部分写入到硬件的单片机控制器中,而通过按键与显示屏可以实时的来调整整个系统的测量精度上下限以及报警模块是否运转进行各参数的调整。整个系统通过温湿度感应器部分在测量了系统外部所处环境中的温湿度情况而得到的数据,将该数据传递给单片机处理部分,而单片机控制模块将处理后的数据与预先设定的数据上下限信息进行对比处理,如果是超出了设定的上下限并且蜂鸣器开关是设置的打开,则会将报警信息传递给报警模块,从而达到对温湿度信号的测量控制的目的,并实现液晶数字对温湿度的实时显示,还可以通过按键对温湿度分别进行上下限的设置和显示。4.2系统程序实现硬件部分实现过后如果没有程序去驱动单片机,那么该温湿度测量仪将无法正常进行检测以及报警工作,因此需要对应的程序写入单片机控制器,驱动温湿度感应器去读取温度或是湿度,单片机去判断读取的温湿度是否符合范围,并且发送信号使得蜂鸣器发出警告,从而完成整个系统的运作。下方会举例说明部分功能代码,完整代码会粘贴到附录。湿度检测的实现代码如下所示。图4-1温湿度检测程序其中Delay()与Delay_10us()均为延时函数。如果需要用户在温度或是湿度参数设置页面来对温湿度参数以及温湿度上下限参数来进行设置,在更改后的数据进行确定之后,则会触发如下函数,以温度数据更改为例。voidwrite_eepom_wendu(){ SectorErase(0x2000); byte_write(0x2000,t_high); byte_write(0x2002,t_low); byte_write(0x2055,a_a); }在触发该函数后,即将温度、温度上限、温度下限等参数写入了单片机的储存区,方便下次再进行温度检测时进行对比,或是需要下一次进行更改参数的时候,再次在储存区读取相应的参数使用。从单片机中读取数据的函数如下所示。voidread_eepom12(){ t_high=byte_read(0x2000); t_low=byte_read(0x2002); s_high=byte_read(0x2200); s_low=byte_read(0x2202); flag_key_set_en=byte_read(0x2400); a_a=byte_read(0x2255);}如果在温湿度传感器读出了环境中的温湿度并传递给单片机之后,单片机会读取之前已经存储过的温湿度范围,如果环境中的温湿度不在温湿度范围之内,将会由单片机发送信息到蜂鸣器,从而触发蜂鸣器报警函数如下所示。图4-2报警程序图4-3报警程序4.3系统硬件部分实现在经过第三章的电路设计以及PCB版设计之后,通过打板与焊接的的方式获得了预先设计的硬件电路板,分别是单片机控制模块、电源模块、温湿度传感器模块以及报警模块,将程序部分写入了单片机模块,同时还可以通过按键和显示屏来实时调整单片机内输入的程序中的参数,包括设定温度参数、温度上下限参数、湿度参数、湿度上下限参数、蜂鸣器声音开关参数等。如果是在蜂鸣器打开的情况下,在温湿度感应器的测量结果传递给单片机控制器,单片机控制器将获得的测量结果中的温度和湿度分别与程序中的温度上下限与湿度上下限进行比较,如果温湿度超过了程序中设定的温湿度范围,单片机控制器模块将发送信号到蜂鸣器模块,让蜂鸣器发出警告,从而告知到用户目前所处的环境已经超出了设定的温湿度的范围。显示环节的温湿度主页面,在液晶数字显示屏上的展示如下图4-4。图4-4显示温湿度主页面如上图所示,DHT11为液晶数字显示器的主界面,其中第二排显示的W后为温度测量值,S为湿度测量值。在不同的湿度环境下进行测试的温湿度主页面显示如图4-5所示。图4-5显示温湿度主页面2在该图中显示,经过温湿度感应器的测量,目前所处环境的温度为30℃,而湿度为49%RH。如果需要调整温湿度参数以及温湿度上下限的参数,需要先进入温度或是湿度的参数选择页面。温湿度参数设置选择页面如图4-6所示。图4-6温湿度参数设置选择页面在经过上图中的温湿度参数设置选择页面中的选择后,例如进入到温度参数设置页面,在该页面中进行操作时通过左右这两个按键以及确认按键来进行操作的,按下左右按键均会使得光标进行菜单中的上下移动,在光标悬停在所需要进入的菜单上后,按下确认按键,即可进入该指定菜单界面。温度参数设置页面如图4-7所示。图4-7温度参数设置页面在该页面中,用户通过按键来移动光标,从而确认所选中的参数是什么类型,如图中的W参数,则是温度的中心温度,即设置的温度标准值,而H参数则是温度上限,即温度在超过温度中心值后可以超过的温度范围,而L参数则是温度下限范围,即温度在低于中心温度后在正常值内的范围,如图中的参数设置即表示,中心温度为30℃,温度上限为5℃,温度下限为10℃,即代表温度的范围需要在20℃到35℃之间才是整个系统温度测量中正常温度的范围,如果超出了该温度范围,则会由单片机控制模块发送给蜂鸣器进行警报,用以警示用户目前所处的环境温度已经超过了预定温度的范围,已经不再满足人体的环境舒适度。该页面中的参数更改时通过上下左右这四个按键来进行的调整,其中左右按键用于调整目前光标所选择的参数类型,而上下按键用于调整目前光标已经选中的参数类型的数据大小,而确认按钮则用于保存调整过后的参数。湿度参数设置页面如图4-8所示。图4-8湿度参数设置页面同温度参数设置页面,在湿度参数设置页面中,也是通过按键来移动光标来确认目前需要更改的参数种类以及光标所指的参数大小。如图中所示的S参数,即为湿度的中心RH值,指某湿空气中所含水蒸气的质量与同温度和气压下饱和空气中所含水蒸气的质量之比,通常用该RH值来恒定所处的环境中的湿度。而H参数同样的也是湿度的上限范围,即可以超过中心RH值的6%RH,L参数则时湿度RH值的下限范围,即可以低于中心RH值28%RH。如图中的参数设置即表示,湿度的中心值为49%RH,湿度上限为6%RH,湿度下限为28%RH,则该参数的设置后,需要温湿度传感器传入的湿度数据需要湿度RH值在21%RH到55%RH之间,如果温湿度传感器测量的湿度超过了该范围,那么单片机控制器模块会判断出异常,从而将信号发送给蜂鸣器模块,让蜂鸣器进行警报,告知到用户目前所处的环境湿度,已经超出了预先设定的湿度范围,不再满足人体舒适度。蜂鸣器设置界面如图4-9与图4-10.图4-9蜂鸣器关图4-10蜂鸣器开在进入按键设置菜单页面后,即可看到第二排中显示分别为off或是on,表示的为按键开关参数,分别为按键声关闭以及按键声打开的意思,当光标悬停在该参数之上的时候,如果需要调整,则可以通过上下按键来进行调整,凡是经过调整后的参数,在经过确认之后,都会将该参数实时更新到程序中,从而达到能够实时的调整各大参数的目的。

第5章系统性能分析5.1性能分析过程在将整个系统的程序部分与硬件部分进行结合之后,需要对整个系统的性能进行分析。目前已经能够做到对系统所处的环境的温湿度进行实时检测并且显示,因而需要对比检测该系统是否能满足-40℃到50℃温度湿度,误小于1℃,以及实现20%到95%的相对湿度测量,误差小于5%等温湿度检测误差标准。5.2温湿度性能分析将系统置于温度为30℃,湿度为55%RH的屋内环境中,并将系统的温度参数设置为中心温度30℃,温度上限为45℃,温度下限为5℃,湿度参数为55%RH,湿度上限范围参数与湿度下限范围参数均为5%RH。经过检测,此时温湿度测量仪的温湿度显示如图5-1所示。图5-1温湿度显示1如图所示,检测出来的温度为30℃,与环境温度一致,因此满足温度检测的误差要求。而湿度检测存在误差,误差为2%RH,也是符合了湿度的检测误差标准。将该温湿度测量仪的湿度上限设置为45%RH,放入同样的环境中,经过温湿度感应器的检测,此时的温湿度测量仪的电子液晶屏显示如图5-2。图5-2温湿度显示2如图所示,检测出来的湿度为49%RH,不符合预先设定的湿度范围值,因此该温湿度测量仪的蜂鸣器会发出警报,用此来告知用户,目前所处的环境以及超出了设定的温湿度范围,不再满足人体舒适度。经过分析,该温湿度测量仪符合检测性能的标准,并且该测量仪也能够在电子液晶屏中对目前所处的温湿度进行检测与显示,同时遇到不符合人体舒适度的环境时,该测量仪也能够正常的发出警告告知使用者该信息。

第6章总结与展望6.1总结根据程序与硬件部分的联调,该系统基本能够做到如下四个要求。(1)-40℃到50℃温度湿度,误小于1℃(2)实现20%到95%的相对湿度测量,误差小于5%(3)温度与湿度的实时显示(4)人体舒适度评价提示目前缺少在零下和高温环境中进行实验的条件,无法在该边界条件的环境下进行性能分析确认,因此只能在日常环境中进行性能检测,经过性能测试,该温湿度测量仪基本能够满足如上四个功能要求。(1)本温湿度测量仪主要具有以下优点:(2)体积小,便于携带。(3)检测精度较高,误差小。(4)有电子液晶显示屏能够实时的对周围环境进行温湿度检测,当处在不符合要求的环境中时,还能对使用者发出警报用于提示。(5)可以随时更改参数,方便使用者在不同的环境和需求中更改温湿度测量仪的使用范围。6.2展望对于温湿度测量仪的湿度部分的测量精度可以进行再进一步的优化,因为目前该测量仪还是一个板子的外形,需要后期再对该测量仪进行外部包装和各部件的固定,以免在使用过程中出现携带过程种各部件掉落导致的测量仪无法正常进行工作等情况。对于温湿度的各种边界情况,在后续找到能够实现的条件时需要对该类情况均进行测试以及实验,观察是否在各种情况下均能够满足测量精度的条件。最后希望该测量仪能够在各模块进行优化后,使得能够更加贴近使用者的使用习惯,能够真正的融入到使用者的生活中去。

参考文献ADDINEN.REFLIST[1]常春茂,“C51基础与应用实例[M],电子工业出版社”.[2]天工在线,“AltiumDesigner17电路设计与仿真从入门到精通(实战案例版)[M],中国水利水电出版社".[3]郭天祥,“新概念51单片机C语言教程--入门、提高、开发、拓展全攻略(第2版)[M],点至工业出版社”.[4]朱滨峰、徐桂云、李俊敏,"单片机在温湿度测量系统中的应用[J],中国矿业大学机电工程学院".[5]王庆春、何晓燕,"基于FPGA的温湿度测量系统设计,安康学院电子与信息工程学院,第39卷12期,113-117页".[6]梁锡沛",我国电子式湿度传感器的发展现状和问题,中国建筑科学研究院空调所,1987年2期,建筑科学".

致谢回想这一路走来的许多日子,离不开父母的疼爱关心,以及老师的悉心教诲,同学们的互帮互助以及朋友的相互扶持。在本次论文的撰写过程中,我得到了老师的很多帮助,本次论文的选题后,老师给我确定了设计内容,帮助我理清论文撰写的思路、文字的组织、结构的安排、资料的收集和整理。之后,在论文修改时,尹老师治学严谨,倾注了大量的心血,不厌其烦的帮助我解决了很多错误,才得以让我顺利完成了本文的写作。在本次论文题目的完成中,我接触并学习到了很多以往没有学习过的知识,如单片机程序的改写,PCB板的设计、原理图的绘制。在此由衷感谢在这些方面给我提供过帮助的老师以及平时跟我一起探讨知识的各位同学、朋友。本次毕业设计是在指导老师的指导下完成的,老师渊博的知识、负责的态度、广阔的视野给我留下了很深的印象,通过本次毕业设计,我不仅巩固了以前所学的知识,树立了正确的学习态度,还学会了基本的思考方式,掌握了基本的叙述方法,学会了怎样去解决课堂外的困难,这些收获无疑是我步入社会的重要支柱。最后,感谢各位评审老师对我论文的审阅,由于本人的水平有限,在本次设计和论文撰写中难免有纰漏,恳请老师和同学指正。

附录主程序:#include<reg52.h> //调用单片机头文件#defineucharunsignedchar//无符号字符型宏定义 变量范围0~255#defineuintunsignedint //无符号整型宏定义 变量范围0~65535#include<intrins.h>#include"dht11.h"#include"eepom52.h"sbitbeep=P2^5;//蜂鸣器IO口定义uchara_a;bitflag_300ms;bitflag_50ms;//按键的IO变量的定义ucharkey_can; //按键值的变量ucharzd_break_en,zd_break_value;//自动退出设置界面ucharmenu_shudu=20;//用来控制连加的速度ucharmenu_1;//菜单设计的变量uintt_high,t_low; //温度报警参数uints_high,s_low; //湿度报警参数ucharflag_w_bj_en,flag_s_bj_en;bitflag_lj_en; //按键连加使能bitflag_lj_3_en; //按键连3次连加后使能加的数就越大了ucharkey_time,flag_value;//用做连加的中间变量bitkey_500ms;ucharflag_clock; //温度报警变量ucharflag_fuzi;//用做菜单内的初始化的bitflag_key_b_en,flag_key_set_en;//按键蜂鸣器使能uchartable_dht11[5]={1,2,3,4,5};#include"lcd1602.h"#include"menu.h"/*************定时器0初始化程序***************/voidtime_init() { EA=1; //开总中断 TMOD=0X01; //定时器0、定时器1工作方式1 ET0=1; //开定时器0中断 TR0=1; //允许定时器0定时}voiddst11(){ RH();//读出温湿度 table_dht11[2]=U8T_data_H; table_dht11[0]=U8RH_data_H;}/****************报警函数***************/voidclock_h_l(){ staticucharvalue,value1,value2; if((table_dht11[0]<=50)||(table_dht11[0]>=65)) { value1++; //消除湿度在边界时的干扰 if(value1>10) flag_s_bj_en=1; //湿度报警标志位 } elseif((table_dht11[0]>(50+1))||(table_dht11[0]<(65-1))) { value1++; //消除湿度在边界时的干扰 if(value1>10) flag_s_bj_en=0; //温度取消报警时回差1% } else value1=0; if((table_dht11[2]<=22)||(table_dht11[2]>=28)) { value2++; //消除温度在边界时的干扰 if(value2>10) { flag_w_bj_en=1; //温度报警标志位 } } elseif((table_dht11[2]>(22+1))||(table_dht11[2]>(28-1))) { value2++; //消除温度在边界时的干扰 if(value2>10) { flag_w_bj_en=0; //温度取消报警时回差1度 } }else value2=0; if(menu_1==0) { value++; //用做报警的 if(value>5) value=0; if((flag_s_bj_en==1)&&(flag_w_bj_en==1)) { if(value<3) write_string(1,0,"wenshiduarlam"); else write_string(1,0,""); }elseif(flag_w_bj_en==1) { if(value<3) write_string(1,0,"wenduarlam"); else write_string(1,0,""); }elseif(flag_s_bj_en==1) { if(value<3) write_string(1,0,"shiduarlam"); else write_string(1,0,""); }else write_string(1,0,"DHT11System"); } if((flag_s_bj_en==1)||(flag_w_bj_en==1)) beep=~beep; //蜂鸣器报警 else beep=1; }/******************主程序**********************/ voidmain(){ init_eepom(); //读eepom数据 time_init(); //定时器初始化 init_menu();//菜单变量初始化 init_1602(); //lcd1602初始化 init_1602_dis_csf();//lcd1602初始化显示 dst11(); //先读出温湿度的值 while(1) { if(flag_300ms==1) { flag_300ms=0; clock_h_l();//报警函数 menu_dis(); //对应菜单内的处理函数 if(zd_break_en==1) //自动退出设置界面程序 { zd_break_value++;//每300ms加一次 if(zd_break_value>100)//30秒后自动退出设置界面 { menu_1_break(); //第一级菜单退出函数 zd_break_en=0; zd_break_value=0; } } }// key();// if(key_can<10)// {// key_with(); //设置报警温度 // }// key_beep(); //按键声函数 }}/*************定时器0中断服务程序***************/voidtime0_int()interrupt1{ staticucharvalue; TH0=0x3c; TL0=0xb0;//50ms flag_50ms=1; value++; if(value%6==0) { flag_300ms=1; //300ms value=0; } if(flag_lj_en==1) //按下按键使能 { key_time++; if(key_time>=menu_shudu)//500ms { key_time=0; key_500ms=1;//500ms flag_value++; if(flag_value>=3) { flag_value=10; flag_lj_3_en=1;//3次后1.5秒后连加大些 } } }}LED显示程序:#ifndef_LCD1602_H_#define_LCD1602_H_#defineucharunsignedchar#defineuintunsignedint#definedata_1602P0ucharcodetable_num[]="0123456789abcdefg";sbitrs=P1^2; //寄存器选择信号H:数据寄存器 L:指令寄存器sbitrw=P1^1; //寄存器选择信号H:数据寄存器 L:指令寄存器sbite=P1^0; //片选信号下降沿触发/***********************延时函数************************/voiddelay_uint(uintq){ while(q--);}/***********************lcd1602写命令函数************************/voidwrite_com(ucharcom){ rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(10); e=0;}/***********************lcd1602写数据函数************************/voidwrite_data(uchardat){ rs=1; rw=0; P0=dat; delay_uint(3); e=1; delay_uint(10); e=0; }/***********************lcd1602初始化设置************************/voidinit_1602(){ write_com(0x38); //1602液晶5x7点阵 write_com(0x0c); //开显示,不显示光标 write_com(0x06); //地址加1,光标右移}/***********************lcd1602上显示特定的字符****0XDF度********************/voidwrite_zifu(ucharhang,ucharadd,uchardate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(date); }/***********************lcd1602上显示两位十进制数************************/voidwrite_sfm2(ucharhang,ucharadd,uchardate){ ucharshi,ge; if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); shi=date%100/10; ge=date%10; write_data(0x30+shi); write_data(0x30+ge); }/***********************lcd1602上显示两位十进制数************************/voidwrite_sfm3_18B20(ucharhang,ucharadd,uintdate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date/10%10); write_data(0x30+date%10); }/***********************lcd1602上显示这字符函数************************/voidwrite_string(ucharhang,ucharadd,uchar*p){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p=='\0')break; write_data(*p); p++; } }/***********************lcd1602清除显示************************/voidclear_1602(){ write_string(1,0,""); write_string(2,0,"");}/****************开机液晶显示函数初始化液晶的内容********************************/voidinit_1602_dis_csf(){ write_string(1,0,"DHT21System"); write_string(2,0,"W:S:%RH"); write_zifu(2,6,0xdf); }#endif温湿度检测程序:#include<reg52.h>#include<intrins.h>//typedefunsignedcharU8;/*definedforunsigned8-bitsintegervariable 无符号8位整型变量*/typedefsignedcharS8;/*definedforsigned8-bitsintegervariable 有符号8位整型变量*/typedefunsignedintU16;/*definedforunsigned16-bitsintegervariable 无符号16位整型变量*/typedefsignedintS16;/*definedforsigned16-bitsintegervariable 有符号16位整型变量*/typedefunsignedlongU32;/*definedforunsigned32-bitsintegervariable 无符号32位整型变量*/typedefsignedlongS32;/*definedforsigned32-bitsintegervariable 有符号32位整型变量*/typedeffloatF32;/*singleprecisionfloatingpointvariable(32bits)单精度浮点数(32位长度)*/typedefdoubleF64;/*

温馨提示

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

评论

0/150

提交评论