第四章 温湿度测控系统软件设计
复位,然后将总线置高,等待DS18B20的回应,有应答就置标志位,没有应答就清空标志位。
在本程序中,总线只有一个DS18B20,所以跳过ROM,电路中采用的晶振频率12MHz,通过计算,可算出空跑的语句行数。
转换时间
在每次操作前,都需要先置位初始化,之后向DS18B20发送温度转化的指令,输出12位精度的数据,需要750ms的等待时间,在这段时间中,可通过显示子程序来做到延迟。
发送指令
使用P3.5口向DS18B20写数据。通过单总线采取取移位的方式来向DS18B20写入数据,按照8位的方式写进去。在写的过程中,需要严格按照DS18B20的产品说明书的时序进行写操作:每次将1位数据写入前,都需要对DS18B20进行写的初始化,将数据线拉低15微妙以上,完成写初始化后,将1位数据写进DS18B20,然后等待60微妙以上,写操作完成,继续初始化,写下一位,直到写完一字节。
读取数据
读取数据中,也使用移位的方式,严格按照说明书的时序,从DS18B20中读取数据,每次将1位读入前,都需要先读初始化,将数据线拉高1微秒以上,然后拉低数据线1微秒以上,是读初始化有效。完成后,将1位数据读入,然后等待15微秒以上,读操作完成,等待60微秒后,继续初始化,读下1位,直到读完一字节。
在这里要显示两位小数,需要在编程上做一技巧拼接,传感器输出两个字节数据,十位是第一个字节低4位,个位是第二字节高4位,将这两个4位数据拼成一个字节送到数码管显示。第二字节低4位是小数部分,要达到0.06℃精度,需要乘以6,再输出到数码管显示。
温度传感器程序见附录【1】。
4.4 温湿度显示子程序设计
单片机与LED数码显示器有以硬件为主和以软件为主的两种接口方法。这
- 27 -
第四章 温湿度测控系统软件设计
里采用的是以软件为主的接口方法。它是以软件查表代替硬件译码,不但省去了译码器,而且还能显示更多的字符。但是驱动器是必不可少的,因为仅靠接口提供不了较大的电流供LED显示使用。
在单片机采集到模数转换器输入的信息后,通过已经设计好了的程序,对输入数据进行数据转换,然后通过数码管显示当前温度。在对数码管的显示控制中,由于采用的是动态显示控制,所以要涉及到段码和位码的问题.因此对于这个设计的数码显示器的借口电路来说,需要有两个输出口,其中一个用于输出显示段码;另一个用输出为控制信号.这样就可以逐个循环点亮每个数码管,每位显示时间约1ms左右,使人看起来就好像在同时显示不同的字符一样。
其显示程序流程框图如图4-2所示:
开始 采集温度和湿度数据 拆分组合数据 查表动态显示并调用延时 返回
图4-2 显示程序流程框图
对于数码管的显示,本设计方案采用的是动态显示。显示数据有8位,每位数码管对应1位有效显示数据。因此数据存入缓冲区之前必须先拆开字节,以保证一个显示缓冲单元只存放1位有效显示数据。由于数码管的高位显示是显示缓冲区中的高位地址单元中的数,因此显示缓冲区中存放的次序为低位地址单元存放低位,高位地址单元存放高位。在动态扫描显示过程中,每位数码管的的显示时间约1ms,这个由调用1ms子程序D1MS来实现。对于段码的显示,本程序采用的是查表的方法。应该注意的是调用延时程序的时间不应过长,以
- 28 -
第四章 温湿度测控系统软件设计
免产生闪烁现象。在多数情况下,数码显示应和键盘扫描程序轮流执行,这样两者都能同时兼顾。
显示程序见附录【2】。
4.5 中断服务键盘设定程序设计
键盘设定程序是通过中断转入执行的,AT89C51单片机的中断结构,分为2个优先级,共有5个中断源。本设计是采用外部引脚触发中断INT1作中断信号的传递通道,采用低电平触发方式。
在设计时需要注意解决这类非编码式键盘的以下几个问题: 1:按下按键的识别。 2:如何消除按键的抖动。 3:按键的保护。
以上几个问题中最主要的是按键的识别。对于按键的识别,采用的是程序扫描法。
采用扫描法识别闭合键的方法大致如下:
首先在主程序中开中断,当设置按键按下时,执行中断服务程序,即进入按键修改程序,循环运行键扫程序。若有键闭合,则先消抖,然后再次检查有无键闭合,若无键闭合,则返回主程序;若有键闭合则执行相应功能程序。分6个功能按键,包括设置/完成键、切换上下限键、温度调高键、温度调低键、湿度调高键、湿度调低键。
在上下限温度值切换程序部分,是通过设置P1.6标志位,来判别运行上限设置程序还是下限设置程序,将P1.6的值放到C中,通过判C指令JC控制程序的走向,以判断是对上限值操作还是对下限值操作。在进入中断进行温度设置时,通过扫描调高/调低键是否按下和P1.6的值来对事先储存在RAM中的限值进行增/减操作。此时,若复位或掉电退出,不会对报警值修改,必须按保存键,才能将修改值写入单片机的RAM中。在下次启动时,报警值不丢失。每循环一次,就调用显示程序对所设数值进行显示。键盘设定程序流程图如图4-3所示。键盘设定程序见附录【4】。
- 29 -
第四章 温湿度测控系统软件设计
初始化设置设置/完成键按下否切换上下限键按下是跳出中断是改变P1.6的值否取反P1.1标志位是SETB P1.1P1.1为1否温度调高键按下否温度调低键按下否显示是调低是调高调高是湿度调高键按下否调低是湿度调低键按下否显示 图4-3 键盘设定程序的设计框图
4.6 报警子程序设计
当采样温度湿度超出所设报警范围时,要求系统能够发出报警,并能开启降温装置或加热装置以及加湿或减湿装置,使被测环境温度和湿度保持在设定范围内。被测环境温度在正常范围内时,无蜂鸣器报警,且继电器不工作。超出温度范围开启降温风扇关闭加热器,低于范围开启加热器关闭降温风扇。超出湿度范围开启降湿装置(如风扇),低于湿度范围开启增湿装置。
- 30 -
第四章 温湿度测控系统软件设计
开始温度采样高温报警是大于温度上限否开启降温装置小于温度下限是低温报警否开启升温装置湿度采样大于湿度上限是高湿报警开启降湿装置否低湿报警开启增湿装置是小于湿度下限否返回图4-4 报警控制程序的设计框图
执行该程序将会对采样温度/湿度和RAM中的最高设定的最高温度、最低温度以及最高湿度、最低湿度进行比较,然后通过判断标志位以判别测量温度/湿度是否超出规定测量范围。当温度/湿度出现超出最高规定值或者低于最小值时,分别跳转到对应的报警程序,启动蜂鸣器报警,结合原报警程序判断出是高温报警还是低温报警,低湿报警还是高湿报警,置位相对应的发光二极管。同时调用温度/湿度控制程序,开启相应装置,从而实现环境温度/湿度保持在设定范围内的控制。这时候可以通过调用键盘模块对最高温度和最低温度以及最高湿度和最低湿度进行重新设置,实现灵活多变的功能。报警控制程序流程图如图4-4所示。报警程序见附录【3】。
- 31 -