温湿度控制系统设计.docx
《温湿度控制系统设计.docx》由会员分享,可在线阅读,更多相关《温湿度控制系统设计.docx(21页珍藏版)》请在冰豆网上搜索。
温湿度控制系统设计
目录
摘要
1引言
1.1温湿度控制系统的元器件介绍
2硬件系统设计
2.1温湿度采样与控制系统
2.2键盘显示系统
2.3报警系统
3软件系统设计
3.1系统初始化模块
3.2键盘显示模块
3.3采样转换模块
3.4温湿度控制模块
3.5报警模块
4软件调试
小结
参考文献
附录
基于单片机的温湿度控制系统设计
摘要
本文利用8051单片机设计一个温室的温湿度控制系统,对给定的温湿度进行控制并实时显示,其中温湿度信号各有四路,系统采用一定的算法对信号处理以确定采取某种控制手段,在本系统中采用温度优先模式,循环处理。
关键字:
89C518729键盘显示LCD显示ADC0809
Summary
Inthispaper,8051todesignagreenhousetemperatureandhumiditycontrolsystemforagiventemperatureandhumiditycontrolandreal-timedisplay,inwhicheachoffourtemperatureandhumiditysignal,thesystemusesacertainsignalprocessingalgorithmtodeterminethemeanstotakesomecontrol,Inthissystem,usingtemperatureprioritymode,loophandle.
Keywords:
89C518729KeyboardDisplayLCDdisplayADC0809
1、引言
1.1温湿度控制系统的元器件简介
89C51芯片
89C51是Intel公司于80年代初推出的8位嵌入式微控制器(内部数据总线为8位,外部数据总线为8位),它与MCS-96系统中的其它芯片相比,具有性能高、功能全、售价低廉、使用方便(48PINDIP)等优点。
89C51在工业应用方面有许多明显的特点,它具有灵活方便的8位总线外围支持器扩展功能,而在数据处理方面又有8位微机的快速功能。
由于大的高度集成化已把许多常驻用的输入检测输出控制通道都制作在同一块硅片上,大大地灵活了外部连线,增强了系统的稳定性并且速度快(时钟12MHz),非常适合于工业环境下安装使用。
因此本系统CPU选用89C51芯片。
89C51单片机引脚采用40双列直插式封装结构。
89C51系统CPU中的主要组件有:
高速寄存器阵列、特殊功能寄存器(SFR)、寄存器控制器和算术逻辑单元(RALU)。
它与外部通讯是通过特殊功能寄存器SFR或存储器,控制器进行的。
8051系统的CPU的主要特色是体积小,重量轻,抗干扰能力强,售价低,使用方便。
此外,通过SFR还可以直接控制I/O、A/D、PWM、串行口等部件的有效运行。
CPU内部的一个控制单元和两条总线寄存器阵列和EALU连接起来。
这两条总线是:
16位地址总线(A-BUS)和8位数据总线(D-BUS)。
数据总线仅在RALU与寄存器阵列或SFR之间传送数据,地址总线用作上述数据传送的地址总线或用作与寄存器控制器连接的多路复用地址/数据总线[7]。
CPU对片内RAM访问是直接访问和通过寄存器R0,R1间接访问的。
89C51工作时所需的时钟可通过其XTALL输入引脚由外部输入,也可采用芯片内部的振荡器。
其工作频率为6~12MHz。
在本系统中采用11.0592MHz频率。
74LS273地址锁存器
图1.1
74LS273是带有三态缓冲输出的8D锁存器74LS273;
·D7~D0:
三态门输入端。
·Q7~Q0:
三态门输出端。
·GND:
接地端。
·Vcc:
电源端。
·OE:
三态门使能端。
·G(STB):
8D锁存器控制端。
8279可编程键盘/显示器接口芯片
8279使Intel公司为8位微处理器设计的通用键盘/显示器接口芯片,其功能主要体现在二个方面:
接收来自键盘的输入数据并作预处理;数据显示的管理和数据显示器的控制。
单片机采用8279管理键盘和显示器,可减少软件程序,减轻负担,且显示稳定,程序简单。
图1.2
8279的引脚功能(采用40线双列直插式封装):
·DB0~DB7:
双向外部数据总线。
用于传送8279与CPU之间的命令、数据和状态。
·CS:
片选信号线,低电平有效。
·A0:
区分信息的特征位。
当A0位置1时,CPU写入8279的信息位命令,CPU从8279读出的信息为8279的状态;当A0为0时,I/O信息都为数据。
·RD,WR:
读和写选通信号线,均为低电平有效。
·IRQ:
中断请求输出线,高电平有效。
·RL7~RL0:
键盘回送线,平时为高电平,只有当某一键闭合时,其中一条线才变低。
·SL7~SL0:
扫描输出线,用于对键盘和显示器进行扫描。
·OUTB3~OUTB0OUTA3~OUTA0:
显示段输出线。
·BD:
显示熄灭控制线,低电平有效。
·RESET:
复位输入线,高电平有效。
·SHIFT,CNTL/STB:
控制输入线,由内部拉高电阴拉成高电平,也可由外部控制按键拉成低电平。
·CLK:
外部时钟输入线,其信号由外部振荡器提供。
·Vcc,GND:
分别为+5V电源和地。
七段LED显示器
LED是单片机应用系统中一种常见的输出设备,通常使用的是七段显示。
这种显示块有共阴极与共阳极两种。
[4]
以共阴极为例:
显示个位“4”
a送0
d,e送0
b,c,f,g则送1
gnd送0
则立刻显示4。
它由8个发光二极管(7段和一个小数点)构成,可用来显示0~9,A、B、C、D、E、F、G(小数点)。
在数码管中,若把各二极管的阴极连在一起称为共阴极数码管;若把各二极管的阴极连接在一起称为共阴极数码管;若把各二极管的阳极连接在一起,则称为共阳极数码管。
在本系统中采用共阴极数码管。
ADC0809芯片
图1.3
ADC0809是28脚双列直插式封装。
·D7~D0:
8位数字量输出引脚。
·IN0~IN7:
8路模拟量输入引脚。
·Vcc:
+5V工作电压。
·GND:
地。
LCD显示
图1.4
引脚功能:
·D0~D7双向数据总线。
LCD数据读写方式可以分为8位和4位两种,以8位数据进行读写操作则D0~D7都有效,若以4位方式进行读写操作,则只用到D4~D7
·RS:
寄存器选择控制位。
当RS=0时,并且做写入的动作时,可以写入指令寄存器,若RS=0,且做读取操作时,可以读取忙标准及地址记数器的内容。
若RS=1,责用于读取数据寄存器。
·R/W:
LCD读写控制线。
R/W=0时,LCD执行写入操作,R/W=1时,LCD执行读取操作。
·EN:
启动控制线。
高电平有效。
·VCC:
电源端。
·VO:
亮度调整电压输入控制器。
当输入0V时字符显示最亮。
·GND:
接地。
2、硬件系统设计
2.1温湿度采样系统
为了更精确的反映温室的温度和湿度,取温湿度各4路信号采样简单平均处理作为温室的温度和湿度。
在分辨率达到的前提下,温湿度的精度为1%。
首先,系统启动后,提示用户输入温度的上限与下限的温度值。
用户输入之后,系统自动求出中间值,根据实际温度的情况采取相应的方案。
如果该时刻的实际温度值低于用户给定的下限温度值时,系统立即启动报警装置,且系统处于升温状态,直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止升温。
反之,如果实际温度值高于用户设定的上限值时,系统也会立即启动报警装置,且系统处于降温状态,直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止降温。
选择中间值作为控制参数,防止升温——降温——升温的死循环,因为温度低于下限时会一直升温,可能导致温度高于上限系统又开始降温,这样系统便一直重复升温——降温——升温过程,导致设备在某一个温湿度点附近频繁的启停,使设备寿命下降,而且没有实际意义。
选择中间值的一定区间,是防止达到中间值时,采取了停止升温或者降温措施,温度还是会持续上升或下降一会儿,这时候温度可能不是正好在中间值处,系统便还是采取升温或者降温的措施,而此时的温度值可能已经是很适合植被生长的需要的温度值。
所以本方案选在中间值的正负一度区间内,认为此区间内都是适合的,不产生任何控制动作变化,这样就能解决设备频繁启停问题。
图2.1
2.2键盘显示系统
键盘显示系统采用8279芯片控制16键的键盘和8个七段数码管,以实现用户的输入与数据输出。
16个键分别是“0”到“F”,对应的键值是0到15不需要键值的转换。
七段数码管采用共阴极,系统中使用的段码如下表所示。
显示
0
1
2
3
4
5
6
7
段码
3FH
06H
5BH
4FH
66H
6DH
7DH
07H
显示
8
9
A
B
C
D
E
F
段码
7FH
6FH
77H
7CH
39H
5EH
79H
71H
8279初始化时,设定的相关命令字如下:
Z8279EQU08701H;8279状态/命令口地址
D8279EQU08700H;8279数据口地址
LEDMODEQU00H;左边输入八位字符显示
;外部译码键扫描方式,双键互锁
LEDFEQEQU38H;扫描速率
LEDCLSEQU0D1H;清除显示RAM
LEDWR0EQU80H;设定的将要写入的显示RAM地址
系统的连接图如下图2.2所示。
图2.2
AD0809与89C51连接图:
图2.3
2.3报警系统
报警系统由声音报警和警报灯报警组成。
声音报警通过P1.0口接SD口控制系统的音效模块发声,用CPU控制P1.0产生一定频率的方波就可以实现音效模块的发声。
音效模块是一个带有扬声器的放大电路。
如图2.4所示。
3、软件系统设计
3.1系统初始化模块
系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:
系统启动后,显示器上显示两行,第一行为“WELCOMETOTHESYSTEM”,
第二行显示为“STARTWORK”
等待用户输入温度及湿度值。
按“B”键表示开始输入,这时可按温度下限、上限,湿度下限、上限的顺序依次输入,如果输入的顺序错可按“B”键可重新进行输入,直到输入正确;输入完毕后按“C”键确定。
系统进入正常工作状态。
系统整体的工作方式如下框图所示
初始化程序部分的流程图如下图3.2所示。
3.2键盘显示模块
本系统中使用8279芯片完成有关键盘输入和温湿度显示工作。
温度湿度是依次输入的并且依次以下限、上限输入,并且将温湿度的中间数值存入单片机中,在将LED清零后显示(分别在0123位),并依次显示实时的温度湿度数值(显示在4567位)
实际上,在系统初始化的过程中,除了初始化键盘和显示器之外,其中还包括着调用8279键盘显示模块,8279键盘显示模块部分的基本流程如下图3.3所示。
其中显示键值的程序流程图如下:
3.3采样转换模块
过程,这也是它为什么重要的原因。
系统每次转换前ADC0809的IN0~IN7送个任意数,表示开始转换,结果是一个数字量,将其转化为#BCD码,。
送显示程序显示,并将数值返回给主函数采样转换模块是本系统中的核心模块之一,它负责完成温度和湿的测量及模拟量转换为数字量的全。
湿度也可以通过此种方法观察变化,得出相应的结论。
为了更精确的反映系统的温度和湿度,本系统对四路采样信号作简单平均处理,并将处理后的数值作为温室的温湿度,其过程如下图。
实时温湿度显示和温湿度中间数值显示便于我们实时比较和掌握系统工作状况,实时的温度湿度不在要求的区间内则进行升温降温处理。
3.4温湿度控制模块
温湿度判断控制模块也是系统的核心模块之一,所谓判断控制模块,就是对用户输入的温度和湿度与当前温室内的实际温湿度进行比较,先进行判断,然后再进行控制,控制模块是决定系统将要进行什么工作的。
如温度高于上限时需要降温,低于下限时需要升温,同时还要启动警报等等。
温度判断控制部分的程序整体思路如下如所示:
图3.7
湿度判断控制部分与温度判断控制部分的功能及流程是相同的,便不再赘述了。
3.5报警模块
报警模块具备两项功能,即为报警灯和声音报警。
报警灯模块是完成LED有规律的闪烁,以便从视觉上提醒用户。
LED是由74LS273控制4个双色LED灯组成的,其闪烁规律为:
向74LS273发送的数据0F0H,则双色LED灯发绿光。
向74LS273发送的数据0FH,则双色LED灯发红光。
向74LS273发送的数据0FFH,则双色LED灯熄灭。
向74LS273交替发送0F0H、0FFH,或0FH、0FFH,以实现LED灯红/灭交替或绿/灭交替,这时我们就看到了闪烁的效果。
在LED灯闪烁的同时,声音报警也会同时启动,可采用延时的方式来延长声音报警的声音。
警报灯由4个双色的LED灯组成,一共需要8根数据线,使用74LS273芯片控制。
要实现的功能是使4个双色LED灯有规律的闪烁,当用户输入温度的上下限值后,系统进行实时的采样,并判断出当前温度与用户输入温度之间的差异,如果当前温度低于用户输入的下限温度值,则说明当前温度过低,系统自动启动警报灯,此时警报灯发出绿光并进行有规律的闪烁,同时开始加温,直至加到所需温度值时警报灯熄灭。
反之,如果当前温度高于用户输入的上限温度值,则说明当前温度过高,系统也会自动启动警报灯,但此时警报灯会发出红光并进行有规律的闪烁,同时开始降温,直至降到所需温度值时警报灯熄灭。
4软件调试方案
按照设计图连线
T-detect接4模块的IN0口,T-CON接273的PO4。
13模块的CS273接F200H。
EOC接8032的P3.2(INT0中断),CS8279已接F238H,CS0809接F230H。
本设计电路包括加热机构和热敏电阻组成。
加热机构由三极管和散热片构成。
加热控制信号由74LS273(8位D触发器)的输出PO4控制,高电平为加热;低电平为停止加热。
通过控制PO4点的电平,可以控制加热及速度。
系统靠风扇冷却降温。
温度采集使用热敏电阻,转化成电压值送出。
该输出量经上图放大器放大后,可以经A/D转换器转换成数字量,编制程序,实现采集和控制温度。
扩展平台上测温机构输出电压经放大送至插孔T-detect(简称T孔)。
使用A/D转换器采样T的值,根据下表关系采用分段直线拟和就可以得到当前温度。
温度
T点电压V
温度
T点电压V
0
0
40
1.92
5
0.15
45
2.27
10
0.32
50
2.64
15
0.52
55
3.02
20
0.75
60
3.39
25
1.01
65
3.77
30
1.29
70
4.16
35
1.61
75
4.55
调节精密可调电位器RP5的值可以实现调零(即0摄氏度时,T点电压输出为0。
注意机器出厂前已经调零了)。
由于热敏电阻和温度测量系统的放大部分存在非线性,在测量过程中,会带来系统测量误差。
为了进一步提高测量精度,可以采用软件进行校正。
利用键盘输入设定温度值,当系统采集的温度值低于设定值时,开通加热系统,反之,当温度高于设定值时,关闭加热系统,使加热系统降温。
利用273的PO4控制加热系统。
参考文献
[1]
[2]周坚,单片机轻松入门[M].北京:
北京航空航天出版社,2002.
[3]孙育才.MCS-51系列单片微型计算机及其应用[M].南京:
东南大学出版社,2004.P231
[4]公孙茂,马宝匍,孙晨.单片机入口接口实例集[M].北京:
北京航空航天出版社,2002.P120
[5]求是科技.PIC单片机典型模块设计和实例导航[M].北京:
人民邮电出版社,2005.
[6]龙泽明,顾立志,王桂莲,陈光军.MCS-51单片机原理及工程应用[M].北京:
国防工业出版社,2005.
[7]胡辉.王晓,戴永成.单片机原理及应用设计[M].北京:
中国水利水电出版社,2005.P6,P181
[8]蔡菲娜.单片微型计算机原理和应用[M]。
杭州:
浙江大学出版社,2003
附录:
ORG000H
AJMPMAIN
MAIN:
MOVDPTR,#0F200H
MOVA,#10H
MOVX@DPTR,A
MOVDPTR,#0F230H
MOVX@DPTR,A
CON_W:
JBP3.2,CON_W
MOVXA,@DPTR
CJNEA,#0A0H,JW
AJMPCON1_W
JW:
JNCMAIN
JCCON1_W
CON1_W:
MOVDPTR,#0F200H
MOVA,#18H
MOVX@DPTR,A
MOVDPTR,#0F230H
MOVX@DPTR,A
CON2_W:
JBP3.2,CON2_W
MOVXA,@DPTR
CJNEA,#090H,SW
AJMPMAIN
SW:
JCMAIN
AJMPCON1_W
END