3V -39.6 -39.3
2.5V -39.4 -38.9
d2 (°C) d2(T)
14bit 0.01 0.018
12bit 0.04 0.072
3. 软件设计
3.1 软件设计的整体思想
对于控制系统而言,要完成各项功能,首先必须要有较完善的硬件作保证,同时还必须得到相应设计合理的软件支持。软件是指完成各种功能的计算机程序的总和,软件是控制系统的神经中枢,整个系统的动作都是在软件的指挥下践行协调工作的。并且许多由硬件完成的工作,都可通过软件编程来代替,甚至有些用很复杂的硬件电路才能完成的工作,用软件编程的时候,往往会变得很简单。
本设计是以AT89C51单片机为核心,采用C语言编程。用模块化设计,由主程序、读出温湿度子程序、按键处理子程序、LCD1602显示子程序以及有关的程序模块组成。3.2 系统主程序设计
本系统设计的工作流程是,开始并初始化后,先从键盘上输入要设定的温度和湿度的上下限值;然后调用温湿度采集程序进行数据采集,读取成功后,线性拟合数据,经过数据转换程序,将十优尔进制转换成十进制,将十进制数据输出到LCD1602显示模块进行显示,如果温湿度过限,则启动控制设备并报警;如果数据在温湿度上下限范围内,则温湿度显示;最后,进行新一轮的温湿度采集,系统主程序流程图如图12所示:
图12 系统主程序设计流程图
系统启动后,显示器上显示两行,第一行为“WELCOME TO THE SYSTEM”,第二行显示为“START WORK”等待用户输入温度及湿度值。按“#”键表示开始输入,这时可按温度下限、上限,湿度下限、上限的顺序依次输入,如果输入的顺序错可按“#”键可重新进行输入,直到输入正确;输入完毕后按“*”键确定。系统初始化模块的主要功能是完成系统的初始化以及系统的工作状态,系统初始化包括:初始化单片机,T0、T1初始化,设置中断,定义变量,然后初始化LCD1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示,延时等待等。
3.3 按键子程序设计
在控制系统中,一般采用中断或查询的方式实现其键盘接口,本文采用查询方式实现,其键值通过堆栈查询方式取得,键值显示的程序流程图如图13所示:
图13 按键子程序流程图
为了防止CPU对一次按键动作确认两次,必须排除抖动的影响,可以从硬件和软件两个方面着手解决。本文采用软件的方法进行防抖。当第一次检测有键按下时,先用软件延时,而后再确认该键电平是否仍文持闭合状态。若保持闭合状态电平,则确认此键确已按下,从而消除按键抖动的影响。
按键扫描的工作过程如下:
(1) 第一步先判断键盘中是否有键按下;
(2)第二步进行列扫描,判断是哪一个键按下,若有键按下,则调用延时子程序去抖动;
(3)第三步读取按键的位置码;
(4)将按键的位置码转换为键值。
3.4 外部按键查询子程序设计
为方便用户对当前温湿度设定值进行查询,并根据植物生长属性及时更改预设值,更有利于植物生长。本文采用外部中断方式查询,外部中断子程序流程图如图14所示:
图14 外部中断子程序流程图
3.5 调控子程序设计
温湿度判断控制模块是系统的核心模块之一,所谓判断控制模块,就是对用户输入的温度和湿度与当前温室内的实际温湿度进行比较,先进行判断,然后再进行控制,控制模块是决定系统将要进行什么工作的。如温度高于上限时需要降温,低于下限时需要升温,同时还要启动警报等,其程序流程图如图15所示: AT89C51单片机大棚温湿度控制系统设计+电路图+流程图(7):http://www.youerw.com/zidonghua/lunwen_1835.html