第三章 系统硬件电路设计
程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免单片机多次处理按键的一次闭合,应采用措施消除抖动。本文在软件中采用了相应的软件程序来消除抖动。当发现有键按下时,延时10-20ms再查询是否有键按下,若没有键按下,说明上次查询结果为干扰或抖动;若仍有键按下。则说明闭合键已稳定。
报警范围键盘修改程序,是通过中断转入执行的,所以设置/完成键,连接至P3.3外中断口,本系统只使用六个按键,用于设置温度和湿度的报警范围。综合考虑各种因素的影响,决定选用非编码式独立键盘作为本设计的键盘输入。直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。电气原理图如图3-11所示:
图3-11 键盘电路图
3.6 数码管显示接口电路
LED数码显示器是1种由LED发光二极管组合显示字符的显示器。它是用8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点。单片机与LED数码显示器有以硬件为主和以软件为主的两种接口方法,这里以软件为主。单片机输出信号经排阻连接到数码管,数码管采用动态显示,对于接口电路来说,需要有两个输出口,其中一个用于输出显示段码,另一个用于输出控制信
- 22 -
第三章 系统硬件电路设计
号。这样就可以逐个循环点亮每个数码管,每位显示时间约1ms左右,使人看起来就好像在同时显示不同的字符一样。电气原理图如图3-12所示:
图3-12 LED数码显示
3.7 降温风扇器、加热器和报警蜂鸣器等接口电路
当采样温度或湿度超出所设报警范围时,单片机对相应I/O口执行清零指令。因此I/O口输出低电平。由于电路中采用PNP三极管,这时继电器会闭合,蜂鸣器电路接通,系统就能够发出报警,同样能通过继电器开启降温装置或加热装置以及加湿或减湿装置,使被测环境温度和湿度保持在设定范围内。
被测环境温度或湿度在正常范围内时,单片机对相应I/O口执行置一指令,I/O口输出高电平,因此蜂鸣器不报警,且继电器不工作。在本电路中采用PNP三极管来提高驱动能力,使继电器工作。降温风扇、加热器及蜂鸣器的电气原理图如图3-13和图3-14所示。
图3-13 降温风扇、加热器电气原理图,加热器用LED灯代替
- 23 -
第三章 系统硬件电路设计
图3-14 蜂鸣器电气原理图
- 24 -
第四章 温湿度测控系统软件设计
第四章 系统软件设计
4.1 软件结构
本系统的软件包括主程序、键盘处理子程序、显示子程序、TLC549转换程序、温度转换程序、湿度转换程序、湿度温度控制程序、异常报警程序、湿度温度报警范围设定子程序以及有关DS18B20的程序(初始化子程序、写程序和读程序)等。
4.2 主程序整体设计
在主程序的设计中,它的控制思想:首先对单片机的一些主要的端口进行定义, 同时根据需要启动中断和设置中断优先级,让单片机每次都能在初始状态下开始执行程序而不受到上次执行程序结果的干扰,这是最基本也是最重要的单片机能够顺利正确执行程序的条件。在初始化完成之后,调用各个子程序,实现传感器的初始化,读写数据,温度转换,读AD转换器,湿度转换,温度与温度显示,判断报警,键盘设定等功能,主程序循环执行各个模块。
键盘设定温度湿度范围模块,是通过中断来切换的,中断服务程序过程中不断的扫描按键,如果有键触发将会调用键盘处理程序。温度湿度测量程序暂停运行,键盘处理程序结束后,重新进入温度湿度测量主程序。主程序流程如图4-1所示。主程序如下: MAIN:
MOV IE,#84H ; 开CPU中断和外部中断1 MOV IP,#00H
MOV TCON,#00H ;令外部中断1为电平触发 MOV SP,#70H ;设栈顶指针 LCALL TEMPERATURE ;读温度子程序 LCALL TRANSFORM ;温度转换子程序 LCALL TLC549 ;调用TLC549读湿度 LCALL TRANS ;湿度值转换 SETB P3.0 ;复位湿度蜂鸣器 SETB P3.4 ;复位温度蜂鸣器
MOV P1,#0FFH ;复位温度正常指示灯p1.0,温度异常
- 25 -
第四章 温湿度测控系统软件设计
指示灯p1.7,传感器存在标志位p1.1,温度设定上下值;切换标志位p1.6
LCALL DISPLAY ;数码管显示子程序 JMP WARNING ;温度比较报警子程序
初始化开放外中断调用测温程序和温度转换程序调用测湿程序和湿度转换程序调用显示程序 否 温湿度是否超出范围 是异常报警和异常处理 图4-1 主程序流程框图
4.3 温度传感器程序设计
单片机与DS18B20进行通信时,需要按照DS18B20的通信协议进行通信协议进行通信,对于编程,DS18B20的数据读取和写入需要用移位的方式进行。
本系统将在单片机与DS18B20之间进行应答来采集温度参数,单片机先将与DS18B20的连线电平拉低500ms以上,将DS18B20复位,再进行操作。先向DS18B20发送指令,跳过ROM后发出转换温度的指令,然后初始化后读取温度,将读到的温度在数码管上显示出来。
本节介绍一下温度采集的经过,分以下几步: 初始化
在这一部分程序中,需要将DS18B20的一线总线拉低500ms以上,将DS18B20
- 26 -