基于单片机的温湿度监测系统的设计_第1页
基于单片机的温湿度监测系统的设计_第2页
基于单片机的温湿度监测系统的设计_第3页
基于单片机的温湿度监测系统的设计_第4页
基于单片机的温湿度监测系统的设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的温湿度检测系统的设计摘要:随着时代的进步,温度和湿度是监控许多对象过程中时常遇到的测量数据。本文介绍了设计温湿度计的基本方法与测量原理,其组成部件主要是单片机。本系统能通过随时随地测评温湿度并设置温湿度上下限,完成温湿度的数据采集、数据处理和数据显示。经过实验检测显示,该设计对温湿度的控制有方便实用、操作易懂的特点,提升了被控对象的各项技术指标。关键词: 单片机;温度测量;湿度测量Design of Temperature and Humidity Detection System Based on Single Chip MicrocomputerAbstract:With th

2、e progress of time, temperature and humidity measurement data monitoring process many objects often encountered. This article describes the basic design principle of the measurement method of the hygrometer, which is mainly composed of parts. The system can go and evaluation of temperature and humid

3、ity set upper and lower limits of temperature and humidity, temperature and humidity to complete the data acquisition, data processing and data display. Experimental results show the detection, convenient and practical design for the control of temperature and humidity, to understand the operation c

4、haracteristics, enhance the technical indicators controlled object.Key words: Single chip microcomputer; Temperature measurement; Humidity measurement目录1引言1.1课题背景1.2课题研究的目的和意义1.3国内外测温湿技术及单片机发展现状2系统总体方案设计2.1系统的设计指标2.2系统的实现原理2.3系统的实现方案分析3 系统硬件设计3.1 系统总体结构3.2 单片机简介3.3 DS18B20和HS1101简介3.3.1温度传感器DS18B20的

5、引脚介绍3.3.2 DS18B20内部结构与特点3.3.3 DS18B20温度测量通信协议3.4系统硬件设计3.4.1复位电路模块3.4.2报警电路模块3.4.3显示电路模块3.4.4按键电路模块3.4.5温度检测电路模块3.4.6湿度检测电路模块4系统软件设计4.1系统主程序设计4.2 DS18B20和HS1101初始化子程序4.3 DS18B20和HS1101读取温湿度子程序4.4 显示数据处理子程序4.5按键扫描子程序5 系统软硬件调试总结1引言1.1课题背景 众所周知,随着科学技术的发展和人们生活的需求,近年来单片机的应用范围越来越广阔。一般的度测量不仅设计繁杂,并且精确度极低,而使用

6、单片机让这个问题得到了很好的解决。在现代社会,温湿度是一个至关重要的数据,在农业领域,农作物的生长离不开温度和湿度,为使农作物可以达成农收目标,就必须严格控制农作物生长环境的温湿度;在工业领域,许多需要严格把控温度和湿度的设备只有在特定环境下才能正常工作,因此温湿度的测量也十分重要。而从前的测量方法科学技术太落后,显然不能满足现代产业对温湿度高精确度测量的需求。这几年来科学家们研发了几种测温测湿技术,这些测温测湿技术不仅很好的提高了测量精度,而且大大提升了产品的质量。因为单片机具有高集成度,通用性优,功能强等卓越的优点,并且体积小,重量轻,耗能少,所以在农业生产和工业生产中得到了广泛应用。本课

7、题就是以单片机作为核心部件进行设计的。1.2课题研究的目的和意义测量温湿度的基本方法是使用温湿度计直接读取温湿度,如我们大家经常使用的体温计和空气湿度计。随着工业生产的进步,人们对温湿度的测量有更高的要求。在迅速发展的科学技术中,前沿技术是传感器技术,特别是温湿度传感技术,已经渗透到我们生活的各个层面,温湿度测量在农业生产和工业生产中占有不可撼动的地位,此外在许多科学实验研究中也离不开温湿度的测量。综上所述,测量温湿度具有举足轻重的地位。单片机在各个领域的应用广阔,而把它作为数字温湿度计的核心部件只是具体应用的一个例子。日下,由于在恶劣的工作环境下对测温湿技术要求的提高,单片机的应用发展越来越

8、受到人们的瞩目。1.3国内外测温湿技术及单片机发展现状不可置否,与许多发达国家相比,中国测温湿技术仍旧处于一个较低水平。一般的测温湿技术只能对相对平稳的环境进行温度和湿度的测量,如果用于较恶劣的工作环境重,我国的测温湿技术还达不到规范。然而,随着我国已成为世界第二大经济体,经济实力指数上升,我国电子企业也正欣欣向荣地发展中。众所周知,单片机是集成在一块芯片上的计算机系统,它包含计算机系统的重要部件和基本功能,如 CPU、并行I/O端口、定时与中断系统、A/D与D/A转换系统等。随着科学技术的迅猛发展,现在许多单片机功能也更加完善。单片机还能与种类繁多的外围电路相连接,如定时器、复位电路、传感器

9、等等,我们应用单片机可以对各种各样的信息进行收集。如连接温度传感器DS18B20和湿度传感器HS1101等芯片,就可以对被测目标进行温度和湿度的测量与监测。2系统总体方案设计2.1系统的设计指标本课题设计的数字温湿度系统要求可以准确即时地对被测目标实行温度和湿度测量,并将其测得的温湿度值显示在LED数码管上,如果超越温湿度合理范围,则通过蜂鸣器报警,同时报警指示灯闪烁,直到温湿度回到规定的范围为止。此外,还能够通过按键自主设置温湿度范围。综上所述,系统设计的要求如下:1.开机启动,检测各元件是否正常工作。2.正负温湿度辨别(正温湿度红灯亮,负温湿度绿灯亮)。3.温湿度测量的基本范围是-3012

10、5。4.系统预设上限温湿度32,下限温湿度10。5.超越温湿度上下限即开启报警功能,报警灯闪烁,蜂鸣器震动并发声警示,并在负温湿度时蜂鸣器震动较剧烈。6.支持手动按键设置温湿度上下限。2.2系统的实现原理本系统使用温湿度传感器,并与单片机连接构成温湿度测量系统,从而完成温湿度的实时监测。温湿度传感器对温湿度的变化十分敏锐,其可以把测得的温湿度准确即时的转换成一串电路信号,这时我们可以使用显示系统将其测得的温湿度值显示出来,让人们监测和记录。其中,温度传感器DS18B20是一种集成度很高的温度测量元件,其可以根据当前温度环境的变化传输出一串数字信号。显而易见,不同的温度环境下将会有不同的数字信号

11、,通过该信号能够准确的获取当前环境的温度值,从而完成温度的测量。湿度传感器HS1101也同样是一种准确性优异的湿度测量元件,其应用电容的介电常数可伴随环境中的水分含量改变而发生变化,进而收集到环境中湿度值,实现对湿度的测量。2.3系统的实现方案分析本系统利使用温度传感器DS18B20作为收集温度信息的测量元件,DS18B20的集成度高,所以该元件需求的外围电路相对简易。并且DS18B20体积小,节省电路板。并且,DS18B20是高封装的温度传感器,可以直接和单片机连接联通。其测温范围为55+125,固有测温分辨率为0.5,具有极强的抗干扰能力。另一方面,选用HS1101传感器作为湿度传感器,其

12、工作原理是应用电容的介电常数可伴随环境中的水分含量改变而发生变化,进而收集到环境中湿度值。HS1101具有可靠性高、反馈迅速、稳定性高,适合环境广泛等特点。而单片机作为主要组成部件,但这里采用LED 7位数码管实现温度值的显示,显示温度值清晰直观,便于记录。此外,LED数码管所占空间小,在造价方面来说经济便宜。3 系统硬件设计3.1 系统总体结构本方案设计的系统模块由单片机系统、温湿度传感器模块、数码管显示模块和电源模块组成,其总体结构如图1。图1 系统结构图该系统单片机选用AT89C52单片机,并以其为核心,在运行开始时,它先向主机发送初始化指令让温湿度传感器DS18B20和HS1101启动

13、,再发送温湿度转化指令使数字温度传感器DS18B20和湿度传感器HS1101把测得的虚拟温湿度信号转化为数字信号供单片机演算。与此同时,显示器会显示出当前监测出的温度和湿度,当温湿度超出规定的温湿度上下限范围时,报警器就会发出警报。3.2 单片机简介单片机经过许多年的逐代升级,现在已经是自动控制理论中的不可或缺的重要部件。对于相关技术人员来说,掌握单片机原理及其应用已经成为必不可少的一项技能,是专业人员必备的能力和素养之一。单片机的应用前景十分广阔,在控制领域、食品储存等方面,都占据着一个十分重要的地位。ATMEL公司采用国际先进的技术手法生产的AT89C52单片机与一般的单片机有所差异,它不

14、仅是一种8位微控制器,具有耗能低和性能优异的特征,还拥有不易失性的Flash程序储存器。它的主要接口与引脚的特点如下。其引脚图如图2所示:P0口:P0口与其他端口不同,它的输出级无上拉电阻。作为通用输出I/O口使用时,输出级是开漏电路,故用其输出去驱动NMOS输入时外接上拉电阻,上拉电阻一般在10K左右即可。这时每一位输出可以驱动4个LS型负载。用作输入时,应先向端口锁存器写1。把P0口用作地址/数据总线时,无需外接上拉电阻。作总线输入时,不需先向端口写1。P0口作总线时,每一位输出可以驱动8个LS型TTL负载。图2 单片机AT89C52引脚图P1P3口:P1P3口接有上拉负载电阻,它们的每一

15、位输出可以驱动4个LS型TTL负载。用作输出口时,任何TTL或NMOS电路都能以正常的方式驱动89C51系列单片机的P1P3口。由于它们的输出级接有上拉电阻,因此,在使用时无需外接上拉电阻。由于单片机的端口输出电流一般为几毫安,当用作输出口去驱动一个晶体管的基极时,应在基极和端口之间串联一个电阻,以限制高电平时的输出电流。P3口用作第二功能:当使用P3口的第二功能时,8个引脚有不同的意义。当某位用作第二功能输入时,该位的锁存器输出端被内部硬件自动置1,并且W在端口不作第二功能输出时保持为1,则与非门3输出低,所以FET截止,该位引脚为高位输入。因此读引脚信号无效,三台缓冲器无效,这样,从引脚输

16、入的第二个能信号,经缓冲器后被直接送给CPU处理。当P3口的某一引脚用作第二功能时,该引脚不能用作通用I/O端口。P3口各个引脚的第二功能见下表1。端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计时器0外部输入)P3.5T1(定时/计时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)表1P3口的第二功能图RST: RST是复位信号输入端,高电平有效。当单片机正常工作时,该引脚出现两个机器周期的高电平就会使单片机复位;在上电时,因为振荡器需要一定的起振时间,

17、该引脚的高电平必须保持10ms以上才能保证有效复位。PROG:为片内程序存储器的编程脉冲输入端,低电平有效。PSEN:片外程序存储器读选通信号输出端,每个机器周期输出两个负脉冲,低电平有效。在访问片外数据存储器时,该信号不出现。l EA/VPP:EA为片外程序存储器选择输入端,该引脚低电平时,使用外部程序存储器,为高电平时,使用片内程序存储器;VPP为片内程序存储器编程电压输入端。XTAL1:该引脚接外部晶振和微调电容的一端,与单片机内振荡电路一起,产生由外部晶振决定的振荡频率。在使用外部时钟时,该引脚输入外部时钟脉冲。XTAL2:该引脚接外部晶振和微调电容的另一端,XTAL2接内部反向放大器

18、的输出端,因此在使用外部时钟时,该引脚接地。3.3 DS18B20和HS1101简介温湿度传感器是众多传感器中最常见的一种,早期采用的是模拟温湿度传感器,如冷敏电阻,伴随环境温度的改变,它的阻值也按照相应的函数关系发生线性变化,经过收集电阻两端的电压,再套入一些函数关系式就可以计算出当前环境温度。DS18B20是美国DALLAS半导体公司推出的第一个支持“一线总线”接口的温度传感器,它具有微型化、耗能低、性能高、不易被外界干扰、易配置微处理器等优点,可直接把温度转换成一串数字信号上传给处理器处理。HS1101是一款基于独特工艺设计的电容元件,这款相对湿度传感器可以大批量生产。可以应用于办公自动

19、化,车厢内空气质量控制,家电,工业控制系统等。在需要湿度补偿的场合也可以得到很大的应用。其具有全互换性、在标准环境下不需校正、长时间饱和下快速脱湿、高可靠性与长时间稳定性、快速反应时间等特点。3.3.1温度传感器DS18B20的引脚介绍温度传感器DS18B20有两种封装:三脚TO-92直插式和八脚SOIC贴片式,其中三脚TO-92直插式是使用最广泛、最普及的封装。封装引脚如图3所示。图3 DS18B20TO92封装下表2列出了温度传感器DS18B20的引脚定义:表2 DS18B20的引脚定义引脚定义GND电源负极DQ信号输入输出VDD电源正极NC空引脚功能说明:GND :接地信号DQ :数据输

20、入/输出引脚。开漏单总线接口引脚。当被用在寄生电源下,可以向器件提供电源。VDD :可选VDD引脚,电源电压范围3V5.5V。当工作于寄生电源时,此引脚必须接地。3.3.2 DS18B20内部结构与特点DS18B20的内部结构主要有:寄生电源,温度传感器,64位ROM和单总线接口,存放中间数据的高速暂存器RAM,用于储存用户设定温度上下限值的TH和TL触发器,储存与操控逻辑,8位循环冗余校验码(CRC)发生器等7部分组成。DS18B20中的温度传感器可完成对温度的监测,以12位转化为例:用16位符号扩展的二进制补码读数形式给予,以0.0625/LSB形式表达,其中S为符号位,12位转化后得到的

21、12位数据,储存在DS18B20的两个8比特的RAM中。DS18B20温度值格式如二进制表2.2所示,其中,前5位是符号位,如果测得的温度大于0,这5位为0,只要将测得的数值乘以0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于 0.0625即可得到实际温度。 图4 DS18B20温度值格式表1、配置寄存器DS18B20配置寄存器各字节意义如表3下:表3 DS18B20寄存器中各位内容BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0TMR1RO11111低五位一直都是1,其中TM是测试模式位,用于设置温度传感器DS18B20是在工作模式还是在

22、测试模式。温度传感器DS18B20默认该位被设置为0,我们不要去修改。其中,R1和R0作用主要是设置分辨率,具体设置如表4所示:(DS18B20默认设置为12位)。表4 温度分辨率设置表RR1RRO分辨率温度最大转换时间000099位93.75ms0011110位187.5ms1100111位375ms1111112位750ms2、高速暂存存储器该存储器一共有9个字节组成。当温度转化指令发出后,经温度传感器的转化所得的温度值以二进制补码形式存储在该存储器的前两个字节。单片机可通过单线接口读取所得数据。读取时低位在前,高位在后。相应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=

23、1时,先将补码变为原码,再计算十进制值。其中第9个字节是冗余检验字节。温度传感器DS18B20暂存寄存器分布如表5所示。表5 DS18B20暂存寄存器分布寄存器内容字节地址温度值低位(LS Byte)0温度值高位(MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值83.3.3DS18B20 温度测量通信协议由于DS18B20采用的是1Wire总线协议方式,即使用一根数据线完成数据的双向传送,而对AT89S51单片机来说,硬件方面并不支持单总线协议,因此,我们必须使用软件来模拟单总线的协议时序以完成对DS18B20芯片中的数据处理。DS18B20有严

24、谨的通信协议来确保各个数据传送的正确性。该协议定位了几种信号的时序:初始化时序、读时序、写时序。全部时序都是将主机设为主设备,单总线器件用作从属设备。而每一次指令和数据的传送都是由主机主动启动写时序开始,DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输,其工作时序包括初始化时序、写时序和读时序。它们的工作时序如图5 (a)(b)(c)所示。图5 (a)初始化时序DS18B20的初始化过程:1. 先将数据线置高电平“1”。2. 延时,尽可能短一点。3. 数据线拉到低电平“0”。4. 延时750微秒(该时间的时间范围可以从480到960微秒)。5.数据线拉到高电平“1

25、”。6. 延时等待。7. 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。8.将数据线再次拉高到高电平“1”后结束。图5 (b)写时序DS18B20的写操作过程:1. 数据线先置低电平“0”。2. 延时确定的时间为15微秒。3. 按从低位到高位的顺序发送字节,一次只发送一位。4. 延时时间为45微秒。5. 将数据线拉到高电平。6. 重复上(1)到(6)的操作直到所有的字节全部发送完为止。7. 最后将数据线拉高。图5 (c)读时序DS18B20的读操作过程:1. 将数据线拉高“1”。2. 延时2微秒。3. 将数据线拉低“

26、0”。4. 延时15微秒。5. 将数据线拉高“1”。6. 延时15微秒。7. 读数据线的状态得到1个状态位,并进行数据处理。8. 延时30微秒。3.4系统硬件设计3.4.1复位电路模块本系统采用按钮复位电路,按钮未按下时,其利用电容来完成复位,在接电的瞬时,RST引脚的电位与电源VCC相同,随着充电电流的变小,RST的电位逐渐降低。这时只要确保RST为高电平的时间长于两个机器周期,就可以正常复位;按钮按下时,电源VCC经过两个电阻分压,在RST引脚生成一个复位高电平,进而完成复位。复位电路如图6所示。图6 复位电路3.4.2报警电路模块当被测环境温度超过温度上下限时,我们需要进行报警处理,这里

27、用到的是蜂鸣器。蜂鸣器工作电流一般为10mA,而单片机的I/O口只能承受几毫安的电流,因此需要加三极管进行驱动,单片机的I/O口中的P1.4接三极管的基极,当P1.4为低电平时,三极管导通,5V的电压加载到蜂鸣器两端,于是蜂鸣器鸣叫;当P1.4高电平时,三极管截止,蜂鸣器不鸣叫。报警电路如下图所示:图 7报警电路3.4.3显示电路模块显示系统是单片机控制系统的重要组成部分,单片机应用系常采用7段LED数码管作为显示器,这种显示器具有耗能低、线路简易、价格便宜等优点。LED数码管显示器可以分为共阴极和共阳极两种结构。(1)共阴极结构:当所有的发光二极管的阴极接在一起,称为共阴极结构;(2)共阳极

28、结构:当所有的发光二极管的阳极接在一起,称为共阳极结构。七段LED显示器是由7个LED按一定的图形排列组成,如图9所示,七段LED显示器的各个二极管分别称为a、b、c、d、e、f、g段,有些七段显示器增加一个dp段表示小数点,也称为八段LED显示器。图8 典型七段LED器件将数码管的引脚和单片机的数据输出口相连,控制输出的数据可以使数码管显示不同的数字和字符,通常称控制发光二极管的8位字节数据为段选码。7段LED段选码如表6所示。表6 7段LED段选码显示字符共阴极段选码共阳极段选码显示字符共阴极段选码共阳极段选码03FHC0HC3EHC6H106HF9HD5EHAH25BHA4HE79H86

29、H34FHB0HF71H8EH56DH92HU3EHC1H67DH82HR31HCEH707HF8HY6EH91H87FH80H8.FFH00H96FH90H“灭”00HFFHA77H88HB7CH83H 本设计采用四位共阴极动态显示方式,可以直接读取温度值,显示温度可以精确到1。图9为显示电路的连接图。图9 显示电路3.4.4按键电路模块该电路采用弹性按键。按键电路的作用是手动设置温度的上下限。按下K4,进行上下限报警切换,通过K1和K2调节温度上下限,最后,按下K3确认。具体的按键电路图如下图10所示: 图10 按键电路3.4.5温度检测电路模块该电路中温度传感器采用Dallas公司生产的

30、数字温度传感器DS18B20。该芯片硬件接口简单,使用方便,且节省大量的导线,具有很好的通用性。该系统中将单片机的P1.1引脚与DS18B20的数据线连接。具体的温度检测电路图如下图11所示:图11 温度检测电路3.4.6湿度检测电路模块该电路中湿度传感器采用HS1101数字湿度传感器。该芯片硬件接口不复杂,使用便捷,并且无需过多的电路板,具有良好的连通性。该系统中具体的湿度检测采集部分原理如下图12所示:图12 湿度采集原理图4系统软件设计4.1系统主程序设计主程序是系统的监测程序,在程序运行的过程中必须先经过初始化,包括开机启动子程序,中断程序,报警函数,按键扫描子程序以及控制端口的初始化

31、工作。系统在初始化完成后就进入温湿度监测程序,实时的监测当前的温度并通过显示电路在LCD上显示。程序中以中止的方式来重新设置温度的上下限,根据硬件设计完成对温度的控制,系统软件设计的总体流程图如下图13。 图13 系统主程序框图主程序如下:voidmain() TCON=0x01; /定时器T0工作在01模式下 TMOD=0X01; TH0=0XD8; /装入初值 TL0=0XF0; EA=1; /开总中断 ET0=1; /开T0中断 TR0=1; /T0开始运行计数 EX0=1; /开外部中断0 for(n=0;n500;n+) /显示启动LOGo- - - - bell=1;warn=1;

32、logo(); Red=0; while(1) key(); ss=ReadTemperature(); Show(); alarm(); /报警函数 if(Flag=1) bell=!bell; warn=!warn; /蜂鸣器滴滴响 else bell=1; warn=1; 4.2 DS18B20和HS1101初始化子程序DS18B20的初始化相当于DS18B20数据头的作用,DS18B20检测到初始化电平,准备开始接收或发送数据。HS1101与DS18B20的相似,其中DS18B20初始化子程序流程图如下图14所示。 图14 DS18B20初始化程序流程图DS18B20初始化程序如下:I

33、nit_DS18B20(void) /传感器初始化 uchar x=0; DATA = 1; /DQ复位 delay(10); /稍做延时 DATA = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DATA = 1; /拉高总线 delay(20); x=DATA; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);4.3 DS18B20和HS1101读取温湿度子程序读出温湿度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。DSBl820可以从单总线获取电源,当信号线为高电平时,将能

34、量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。图15为读取数据流程图。 图15 DS18B20读取温度子程序流程图读取温湿度子程序如下:int ReadTemperature(void) /读取温湿度 uchar a=0; uchar b=0; int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温湿度转换 Init_DS18B

35、20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温湿度寄存器等(共可读9个寄存器) 前两个就是温湿度 a=ReadOneChar(); /低位 b=ReadOneChar(); /高位 t=b; t=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; return(t);4.4 显示数据处理子程序收集温湿度数据后,LOW的高四位和HIGH的低四位为温湿度的整数部分,LOW的低四位为温湿度的小数部分,HIGH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,划分为三个部分:小数部分、整数

36、部分和符号部分。小数部分实行四舍五入处理。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。并且因为DS18B20最低温度只能为-55,所以可以将整数部分的最高位换成一个“-”,表示为负数。图16为温湿度数据处理程序的流程图: 图16 显示数据处理子程序以下是显示正值子函数的程序:voiddisplay() buf1=temp/1000; /显示百位 buf2=temp/100%10; /显示十位 buf3=temp%100/10; /显示个位 buf0=temp%10; /小数位 for(j=0;j3;j+) P2=0xff; / 初始灯为灭的 P0=0x00; P2=0x

37、fd; /显示小数点 P0=0x80; /显示小数点 delay(300); P2=0xff; / 初始灯为灭的 P0=0x00; P2=0xf7; /片选LCD1 P0=tablebuf1; delay(300); P2=0xff; P0=0x00; P2=0xfb; /片选LCD2 P0=tablebuf2; delay(300); P2=0xff; P0=0x00; P2=0Xfd; /片选LCD3 P0=tablebuf3; delay(300); P2=0xff; P0=0x00; P2=0Xfe; P0=tablebuf0; /片选LCD4 delay(300); P2=0xff;

38、 4.5按键扫描子程序该系统支持手动设置温湿度上下限,而按键扫描的主要功能就是手动设置温湿度的上下限。系统默认的温湿度上下限是1032。当被测温湿度值处于0125时,若被测温湿度没有超过上下限,则报警器不鸣叫,否则报警器鸣叫;当被测温湿度值处于0以下时,报警器鸣叫较急促。为了防止抖动,按键电路中都要设立消抖的措施,本设计中使用的是软件消抖的方法,在单片机检测到某个键按下后,延时10ms再监测,如果仍然按下,才确定按下了该键。按键K4、K1、K2、K3分别与单片机的P2.4-P2.7引脚连接。默认状态设置温湿度上限,若按下按键K4,也就是使P2.4为低电平时,进入温湿度下限的设置,再按一次进入温

39、湿度上限的设置;在每个温湿度上下限设置里面,按下K1一次增加1温湿度值,按下按键K一次减小1温湿度值,最后按K3确定。按键扫描子程序的流程图如下图17所示: 图17 按键扫描子程序按键扫描子程序如下:void key() /按键扫描子程序 if(k1!=1) delay(20); if(k1!=1) while(k1!=1) key_to1(); for(n=0;n8;n+) Show(); if(k2!=1) delay(20); if(k2!=1) while(k2!=1) key_to2(); for(n=0;n8;n+) Show(); if(k3!=1) TR0=1; /复位,开定时

40、 temp=ReadTemperature(); if(k4!=1) delay(20); if(k4!=1) while(k4!=1); set=!set; if(set=0) Red=0;Green=1; else Green=0;Red=1; 5 系统软硬件调试本次设计采用Keil uVision2来编写C语言程序,通过它的编译器进行编译、连接,最后将生成的机器码下载到单片机上。Keil C51编译器是目前最流行的开发MCS-51系列单片机的软件,它具有C编辑器、宏汇编、链接器、库管理和一个功能强大的仿真调试等在内的功能,并通过一个集成开发环境将这些部份组合在一起。打开Proteus I

41、SIS,在Proteus ISIS编辑窗口中单击元件列表之上的“P”按钮 ,添加元件及放置元件。本文仅提供温度监测系统的调试,湿度监测系统与温度相似,不在赘述。按照正确的方法,合理地布局将各个元器件连线,得到如下界面,如图18所示:图 18 整体电路图 把刚才生成的可执行hex文件传输到单片机中,点击运行按钮,电路瞬时接通,程序最先进入Logo函数进行开机检查。这时单片机给正负温度指示灯和报警指示灯传输一个高电平,给温度上限指示灯传输一个低电平,让它们可以正常发光,再给共阴极数码管传输对应的位高电平,让其动态显示温度为85。因为85不在默认温度上下限值1032范围之内,所以这时正温度指示灯亮,

42、报警指示灯闪烁,报警器也开始低鸣。约莫200ms后,开机检查结束,温度回到当前环境温度5,由于默认的温度上下限是1032,因此负温度指示灯亮,报警指示灯闪烁,报警器低鸣。生成结果如图19所示。图19 数字温度系统仿真图这时我们再度改变环境温度,让环境温度处于15,因为此时温度处在温度上下限1032之间,所以单片机给正温度指示灯高电平,给报警指示灯低电平,所以正温度指示灯亮,报警指示灯熄灭,报警器也就不会鸣叫。实验结果如图20所示。图20 数字温度系统仿真图再度调改变温度,使温度在-10,此时温度不在温度上下限值之间,此时单片机给负温度指示灯高电平,报警指示灯高电平,所以负温度指示灯亮,报警指示灯闪烁,并且蜂鸣器鸣叫较为急促。结果如图21所示。图21数字温度系统仿真图在默认情况下按键自动设置温度上限,若按下K4进入温度下限设置。通过按键K1和K2增加或减少温度值,最后按下K3确认。比如设置温度上下限为1540,当环境温度处于35时,而35在设置的温度上下限1540之间,因此报警电路不工作。电路如图22所示。图22 数字温度系统仿真图当环境温度处于12时,当温度在温度上下限1540之间时,报警电路开始工作,报警指示灯闪烁,蜂鸣器鸣叫。电路如图23所示。图23 数字温度系统仿真图结果分析:本文介绍并设计的数字温度系统的基本测量范围是-30125,此外含有自动报警功能和默认温度上下限

温馨提示

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

评论

0/150

提交评论