1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,基于单片机的温湿度控制系统,目录,摘要,1,1,、绪论,1,1.1,课题背景,1,1.2,立题的目的和意义,1,1.3,植被栽培技术,1,温室环境的调节,1,1.4,本系统主要研究内容,2,2,、系统总体分析与设计,2,2.1,系统功能及系统的组成和工作原理,2,2.1.1.,总体方案,2,2.1.2.,实施措施,2,2.1.3.,硬件系统设计,2,主机与主要部件的选择:,3,2.2,温湿度采样与控制系统,3,2.2.1.,温湿度采样系统,3,2.2.2.,温湿度控制系统,3,2.3,键盘显示系统,4,2.
2、4,报警系统,6,2.5,硬件电路设计,6,2.5.1.,系统硬件配置,6,2.5.2.,主要组件简介,6,3,软件系统设计,8,3.1,系统初始化模块,8,3.2,键盘显示模块,10,3.3,采样转换模块,11,3.4,温湿度控制模块,11,3.5,报警模块,13,4,硬件调试方案,14,4.1,硬件电路的调试,14,4.2,功能模块的调试方案,14,结 论,15,致 谢,15,参考文献,16,附录:,18,基于单片机的温湿度控制系统设计,摘要,本文利用,8051,单片机设计一个温室的温湿度控制系统,对给定的温湿度进行控制并实时显示,其中温湿度信号各有四路,系统采用一定的算法对信号处理以确定
3、采取某种控制手段,在本系统中采用温度优先模式,循环处理。,关键字:,89C51 8729,键盘显示,LCD,显示,ADC0809,1,、绪论,1.1,课题背景,改革开放以来,人们对生活质量要求显著提高,对美丽的植被和花卉的需求量也急剧上升,这对以种植植被为生计的园林工人是一个机遇,同时也对传统的手工植被种植是一个挑战,而基于单片机的温湿度控制系统对解决这些问题有着非常重大的意义。,前种植植被一般都用温室栽培,为了充分的利用好温室栽培这一高效技术,就必需有一套科学的,先进的管理方法,用以对不同种类植被生长的各个时期所需的温度及湿度等进行实时的监控。温湿度控制对于单片机的应用具有一定的实际意义,它
4、代表了一类自动控制的方法。而且其应用十分广泛。,1.2,立题的目的和意义,8051,单片机是常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,用其作为温湿度控制系统的实例也很多。使用,8051,单片机能够实现温湿度全程的自动控制,而且,8051,单片机易于学习、掌握,性价比高。,使用,8051,型单片机设计温湿度控制系统,可以及时、精确的反映室内的温度以及湿度的变化。完成诸如升温到特定温度、降温到特定温度、在温度上下限范围内保持恒温等多种控制方式,在湿度控制方面也是如此。将此系统应用到温室当中无疑为植被的生长提供了更加适宜的环境。,1.3,植被栽培技术,植被
5、设施栽培”,即“保护地栽培”。它是指在某种类型的保护设施内(如阳畦、温室、大棚等),人为地创造适宜植被生长发育的最佳环境条件,在不同季节内,尤其是不利于植被生长的季节内进行植被栽培的一种措施,1,。设施栽培是人类利用自然、改造自然的一种创造。由于设施内的条件是可以人为控制的,使得植被调节的周年生产得以实现。玻璃温室和塑料薄膜温室出现后,植被生产出现了划时代的变化。现在人们可以根据自己的意愿,随时生产出所需要的各种植被。可以说,这是“设施栽培”的功劳。,在不利于植被生长的自然环境中,温室能够创造适宜植被生长发育的条件。,温室环境的调节主要包括日光、温度、湿度三个方面。,温度:根据植被生长的适宜
6、温度进行温室温度调节,若低于下限温度则采取升温措施,通常采取电热增温和火力增温等,火力增温比较方便。若高于上限温度则采取降温措施,通常通过水管降温和风扇降温,风扇降温比较方便。,日光:遮荫是调节日照强度最好的办法,其具体做法是加盖遮阳网或草席,这种方法兼有降低温度的效果。,湿度:为满足温室植被对湿度的要求,可以在地上、台阶、盆壁洒水,还可以在空中悬挂湿布,以增加水分的蒸发,最好的办法是设置自动喷雾装置,自动调节湿度,9,。如果湿度过大,容易导致植被病害,可以采用通风的办法来降低湿度,而且最好在室温与气温相差不大的时候进行。,本系统注重温度和湿度的调节,光照强度没有考虑其中。,1.4,本系统主要
7、研究内容,本系统所要完成的任务是:,1.4.1,人性化的设计。界限温度值及湿度值能够由用户根据不同植被的各种生长需求由键盘输入并通过显示器显示。,1.4.2,能够实时、准确的显示采样温度值与湿度值。,1.4.3,通过采集温度及湿度值,准确的判断标准值与当前值之间的差异,及时的启动报警装置(包括警报灯的提示功能以及提示音等)进行报警,并采取相应的方案。,1.4.4,能够根据植被在不同时间段内对温湿度的不同要求,用户可随机更改温度及湿度值,以满足用户不同的需求。,2,、系统总体分析与设计,2.1,系统功能及系统的组成和工作原理,2.1.1.,总体方案,温度监控:对温室温度进行测量,并通过升温或降温
8、达到植被的最佳温度。,湿度监控:对温室湿度进行测量,并通过喷雾或去湿达到植被的最佳湿度。,控制处理:当温度、湿度越限时报警,并根据报警信号提示采取一定手段控制。,显示:,LCD,就地显示输入值和相应的温湿度,数码管摆放在生产现场用于显示当前的温湿度。,2.1.2.,实施措施,实际环境温度与给定界限比较,执行加热,/,制冷措施。,实际环境湿度与给定界限比较,执行加湿,/,去湿措施。,越限报警:当温湿度越限时声光报警。,键盘显示:负责用户的输入及相关数据的显示,其中包括,LED,和,LCD,显示。,2.1.3.,硬件系统设计,经过上面的总体方案和实施措施的讨论后可以开始着手硬件系统的设计,硬件系统
9、是应用系统的基础、软件系统设计的依据,主机与主要部件的选择:,根据总体功能和性价比及其运行速度等因素的考虑,选用,MCS-51,系列的,89C51,为主机,满足上面的要求而且设计方便,,不需要再存储扩展。,数据存储片内设有,128B,,外部有,8279,的,256B,,而由于存入的数据是随时更新的且不计小数位,存入,8,个,16,进制数字,其总共需要的容量只有,16B,,已经够,用。对外部模拟量(温度、湿度)采样,选用,ADC0809,能够满足要求。,温室温湿度控制系统是以,89C51,单片机作为中央控制装置,模数转换器,ADC0809,,风扇,加热设备,加湿设备,排潮设备,键盘显示芯片等,其
10、功能和原理如下:,89C51,作为中央控制装置,负责中心运算和控制,协调系统各个模块的工作。,四路采样温度信号采样简单平均处理,温度保存为整数。,四路采样湿度信号采样简单平均处理,温度保存为整数。,模数转换器,ADC0809,:即由模拟信号转换为数字信号。它共有,8,个模数转换通道。,模数的转换共有,2,种方法。一种是利用,INT0,中断,当一次转换结束后,,ADC0809,使,INT0,产生中断,通知系统转换完毕;另一种使用延时方法,开始转换后系统延时,100,微秒等待转换完成。本方案采用延时转换的方法。,键盘显示芯片:用,8729,识别键盘,负责用户的输入及相关的数据的,LED,显示。例如
11、选择系统的工作模式,用户输入温度及湿度的界限数据,显示实时的温度及湿度值等等。,风扇:负责系统的降温工作。,加热设备:负责系统的加热工作。,喷雾设备:负责系统的加湿工作。,排潮设备:负责系统的去湿工作。,双色灯,音效模块:负责系统的报警功能。如果当前的温度超过用户设定的界限值时系统将自动报警,双色灯在,74LS273,的控制下有规律的闪烁,同时音效模块发出报警声,通知用户采取相应的措施。,2.2,温湿度采样与控制系统,2.2.1.,温湿度采样系统,为了更精确的反映温室的温度和湿度,取温湿度各,4,路信号采样简单平均处理作为温室的温度和湿度。在分辨率达到的前提下,温湿度的精度为,1%,。,2.2
12、2.,温湿度控制系统,首先,系统启动后,提示用户输入温度的上限与下限的温度值。用户输入之后,系统自动求出中间值,根据实际温度的情况采取相应的方案。如下图,2-2-1,所示。下限温度 中间温度 上限温度,28 -32 -36,图,2-2-1,如果该时刻的实际温度值低于用户给定的下限温度值时,系统立即启动报警装置,且系统处于升温状态,直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止升温。反之,如果实际温度值高于用户设定的上限值时,系统也会立即启动报警装置,且系统处于降温状态,直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止降温。,选择中间值作为控制参数,防止升温,降温,升
13、温的死循环,因为温度低于下限时会一直升温,可能导致温度高于上限系统又开始降温,这样系统便一直重复升温,降温,升温过程,导致设备在某一个温湿度点附近频繁的启停,使设备寿命下降,而且没有实际意义。,选择中间值的一定区间,是防止达到中间值时,采取了停止升温或者降温措施,温度还是会持续上升或下降一会儿,这时候温度可能不是正好在中间值处,系统便还是采取升温或者降温的措施,而此时的温度值可能已经是很适合植被生长的需要的温度值。所以本方案选在中间值的正负一度区间内,认为此区间内都是适合的,不产生任何控制动作变化,这样就能解决设备频繁启停问题。,2.3,键盘显示系统,键盘显示系统采用,8279,芯片控制,16
14、键的键盘和,8,个七段数码管,以实现用户的输入与数据输出。,16,个键分别是“,0”,到“,F”,,对应的键值是,0,到,15,不需要键值的转换。七段数码管采用共阴极,系统中使用的段码如下表,2-3-1,所示。,显示,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,表,2-3-1,8279,初始化时,设定的相关命令字如下:,Z8279 EQU 08701H ;8279,状态,/,命令口地址,D8279 EQU 08700H ;827
15、9,数据口地址,LEDMOD EQU 00H ;,左边输入 八位字符显示,;,外部译码键扫描方式,双键互锁,LEDFEQ EQU 38H ;,扫描速率,LEDCLS EQU 0D1H ;,清除显示,RAM,LEDWR0 EQU 80H ;,设定的将要写入的显示,RAM,地址,系统的连接图如下图,2-3-2,所示。,图,2-3-2,AD0809,与,89C51,连接图:,2.4,报警系统,报警系统由声音报警和警报灯报警组成。声音报警通过,P1.0,口接,SD,口控制系统的音效模块发声,用,CPU,控制,P1.0,产生一定频率的方波就可以实现音效模块的发声。音效模块是一个带有扬声器的放大电路。如图
16、2-4-1,所示。,2.5,硬件电路设计,2.5.1.,系统硬件配置,采用总线型结构的设计。由,P0,口作数据线,,P0,口和,P2,口共同作地址。,2.5.2.,主要组件简介,(,1,),89C51,芯片,89C51,是,Intel,公司于,80,年代初推出的,8,位嵌入式微控制器(内部数据总线为,8,位,外部数据总线为,8,位),它与,MCS-96,系统中的其它芯片相比,具有性能高、功能全、售价低廉、使用方便(,48PINDIP,)等优点。,89C51,在工业应用方面有许多明显的特点,它具有灵活方便的,8,位总线外围支持器扩展功能,而在数据处理方面又有,8,位微机的快速功能。由于大的高度
17、集成化已把许多常驻用的输入检测输出控制通道都制作在同一块硅片上,大大地灵活了外部连线,增强了系统的稳定性并且速度快(时钟,12MHz,),非常适合于工业环境下安装使用。因此本系统,CPU,选用,89C51,芯片。,89C51,单片机引脚采用,40,双列直插式封装结构。,89C51,系统,CPU,中的主要组件有:高速寄存器阵列、特殊功能寄存器(,SFR,)、寄存器控制器和算术逻辑单元(,RALU,)。它与外部通讯是通过特殊功能寄存器,SFR,或存储器,控制器进行的。,8051,系统的,CPU,的主要特色是体积小,重量轻,抗干扰能力强,售价低,使用方便。此外,通过,SFR,还可以直接控制,I/O,
18、A/D,、,PWM,、串行口等部件的有效运行。,CPU,内部的一个控制单元和两条总线寄存器阵列和,EALU,连接起来。这两条总线是:,16,位地址总线(,A-BUS,)和,8,位数据总线(,D-BUS,)。数据总线仅在,RALU,与寄存器阵列或,SFR,之间传送数据,地址总线用作上述数据传送的地址总线或用作与寄存器控制器连接的多路复用地址,/,数据总线,7,。,CPU,对片内,RAM,访问是直接访问和通过寄存器,R0,R1,间接访问的。,89C51,工作时所需的时钟可通过其,XTALL,输入引脚由外部输入,也可采用芯片内部的振荡器。其工作频率为,6,12MHz,。在本系统中采用,11.05
19、92MHz,频率。,(,2,),74LS273,地址锁存器,74LS273,是带有三态缓冲输出的,8D,锁存器,74LS273,;,D7,D0,:三态门输入端。,Q7,Q0,:三态门输出端。,GND,:接地端。,Vcc,:电源端。,OE,:三态门使能端。,G,(,STB,):,8D,锁存器控制端,(,3,),8279,可编程键盘,/,显示器接口芯片,8279,使,Intel,公司为,8,位微处理器设计的通用键盘,/,显示器接口芯片,其功能主要体现在二个方面:接收来自键盘的输入数据并作预处理;数据显示的管理和数据显示器的控制。单片机采用,8279,管理键盘和显示器,可减少软件程序,,减轻负担,且
20、显示稳定,程序简单。,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,:扫描输出
21、线,用于对键盘和显示器进行扫描。,OUTB3,OUTB0 OUTA3,OUTA0,:显示段输出线。,BD,:显示熄灭控制线,低电平有效。,RESET,:复位输入线,高电平有效。,SHIFT,CNTL/STB,:控制输入线,由内部拉高电阴拉成高电平,也可由外部控制按键拉成低电平。,CLK,:外部时钟输入线,其信号由外部振荡器提供。,Vcc,GND,:分别为,+5V,电源和地。,(,4,)七段,LED,显示器,LED,是单片机应用系统中一种常见的输出设备,通常使用的是七段显示。这种显示块有共阴极与共阳极两种。,4,以共阴极为例:显示个位“,4”,a,送,0,d,e,送,0,b,c,f,g,则送,1
22、gnd,送,0,则立刻显示,4,。,它由,8,个发光二极管(,7,段和一个小数点)构成,可用来显示,0,9,,,A,、,B,、,C,、,D,、,E,、,F,、,G(,小数点,),。在数码管中,若把各二极管的阴极连在一起称为共阴极数码管;若把各二极管的阴极连接在一起称为共阴极数码管;若把各二极管的阳极连接在一起,则称为共阳极数码管。在本系统中采用共阴极数码管。,(,5,),ADC0809,芯片,3,ADC0809,是,28,脚双列直插式封装。,D7,D0,:,8,位数字量输出引脚。,IN0,IN7:8,路模拟量输入引脚。,Vcc,:,+5V,工作电压。,GND,:地。,(,6,),LCD,显示
23、引脚功能,7,:,D0,D7,双向数据总线。,LCD,数据读写方式可以分为,8,位和,4,位两种,以,8,位数据进行读写操作则,D0,D7,都有效,若以,4,位方式进行读写操作,则只用到,D4,D7,RS,:寄存器选择控制位。当,RS=0,时,并且做写入的动作时,可以写入指令寄存器,若,RS=0,,且做读取操作时,可以读取忙标准及地址记数器的内容。若,RS=1,,责用于读取数据寄存器,7,。,R/W,:,LCD,读写控制线。,R/W=0,时,,LCD,执行写入操作,,R/W=1,时,,LCD,执行读取操作。,EN,:启动控制线。高电平有效。,VCC,:电源端。,VO,:亮度调整电压输入控制器
24、当输入,0V,时字符显示最亮。,GND,:接地。,3,、软件系统设计,3.1,系统初始化模块,系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:,3.1.1,系统启动后,显示器上显示两行,第一行为“,WELCOME TO THE SYSTEM”,第二行显示为“,START WORK”,3.1.2,等待用户输入温度及湿度值。按“,B”,键表示开始输入,这时可按温度下限、上限,湿度下限、上限的顺序依次输入,如果输入的顺序错可按“,B”,键可重新进行输入,直到输入正确;输入完毕后按“,C”,键确定。,3.1.3,系统进入正常工作状态。,系统整体的工作方
25、式如下框图所示,图,3-1-1,初始化程序部分的流程图如下图,3-1-2,所示。,图,3-1-2,3.2,键盘显示模块,本系统中使用,8279,芯片完成有关键盘输入和温湿度显示工作。温度湿度是依次输入的并且依次以下限、上限输入,并且将温湿度的中间数值存入单片机中,在将,LED,清零后显示(分别在,0123,位),并依次显示实时的温度湿度数值(显示在,4567,位),实际上,在系统初始化的过程中,除了初始化键盘和显示器之外,其中还包括着调用,8279,键盘显示模块,,8279,键盘显示模块部分的基本流程如下图,3-2-1,所示。,图,3-2-1,其中显示键值的程序流程图如下:,图,3-2-2,3
26、3,采样转换模块,采样转换模块是本系统中的核心模块之一,它负责完成温度和湿的测量及模拟量转换为数字量的全过程,这也是它为什么重要的原因。系统每次转换前,ADC0809,的,IN0IN7,送个任意数,表示开始转换,结果是一个数字量,将其转化为,#BCD,码,。送显示程序显示,并将数值返回给主函数。湿度也可以通过此种方法观察变化,得出相应的结论。,为了更精确的反映系统的温度和湿度,本系统对四路采样信号作简单平均处理,并将处理后的数值作为温室的温湿度,其过程如下图。,图,3-3-1,实时温湿度显示和温湿度中间数值显示便于我们实时比较和掌握系统工作状况,实时的温度湿度不在要求的区间内则进行升温降温处
27、理。,图,3-3-2,3.4,温湿度控制模块,温湿度判断控制模块也是系统的核心模块之一,所谓判断控制模块,就是对用户输入的温度和湿度与当前温室内的实际温湿度进行比较,先进行判断,然后再进行控制,控制模块是决定系统将要进行什么工作的。如温度高于上限时需要降温,低于下限时需要升温,同时还要启动警报等等。,温度判断控制部分的程序整体思路如下如所示:,图,3-4-1,上面已经讨论了采取中间值作为控制参数,采取中间值一定区间作为控制区间的原因,那么按照(,2.2,)的思想,控制程序流程图如下:,图,3-4-2,湿度判断控制部分与温度判断控制部分的功能及流程是相同的,便不再赘述了。,3.5,报警模块,报警
28、模块具备两项功能,即为报警灯和声音报警。报警灯模块是完成,LED,有规律的闪烁,以便从视觉上提醒用户。,LED,是由,74LS273,控制,4,个双色,LED,灯组成的,其闪烁规律为:,1,向,74LS273,发送的数据,0F0H,则双色,LED,灯发绿光。,2,向,74LS273,发送的数据,0FH,则双色,LED,灯发红光。,向,74LS273,发送的数据,0FFH,则双色,LED,灯熄灭。,向,74LS273,交替发送,0F0H,、,0FFH,,或,0FH,、,0FFH,,以实现,LED,灯红,/,灭交替或绿,/,灭交替,这时我们就看到了闪烁的效果。,在,LED,灯闪烁的同时,声音报警也
29、会同时启动,可采用延时的方式来延长声音报警的声音。,警报灯由,4,个双色的,LED,灯组成,一共需要,8,根数据线,使用,74LS273,芯片控制。要实现的功能是使,4,个双色,LED,灯有规律的闪烁,当用户输入温度的上下限值后,系统进行实时的采样,并判断出当前温度与用户输入温度之间的差异,如果当前温度低于用户输入的下限温度值,则说明当前温度过低,系统自动启动警报灯,此时警报灯发出绿光并进行有规律的闪烁,同时开始加温,直至加到所需温度值时警报灯熄灭。反之,如果当前温度高于用户输入的上限温度值,则说明当前温度过高,系统也会自动启动警报灯,但此时警报灯会发出红光并进行有规律的闪烁,同时开始降温,直
30、至降到所需温度值时警报灯熄灭。,图,3-5-1,4,硬件调试方案,4.1,硬件电路的调试,此部分的任务是在系统连接好后,调试各个组件能否正常工作,能否实现软件设计的预期目标。其步骤如下:,4.1.1,按照系统设计,将系统需要的各个组件连接好。,4.1.2,根据实验说明书,了解各个组件的工作原理,开始着手调试芯片。,4.1.3,调试,8279,芯片。按照说明书调用,8279,ASM,汇编程序,运行,观察现象。现象正确,说明,8279,芯片正常,可以使用。,4.1.4,调试,ADC0809,芯片。按照说明书调用,CON_W,ASM,汇编程序,运行,观察现象。现象正确,说明,ADC0809,芯片正常
31、可以使用。,4.1.5,调试直流电机,按照说明书调用直流电机相应的汇编程序,运行,观察现象。现象正确,说明直流电机正常,可以使用。,4.2,功能模块的调试方案,把各个功能模块编写成单独的源文件进行调试,调试成功以后,再将各部分联合在一起。,整个系统的编写、调试是从,8279,开始的。控制,8279,原理虽然简单,但需要细节却很多,如选择显示寄存器与送段码的顺序,,8279,的初始化等待时间等。,用户温度输入数据时上限、下限分别在七段数码管的,0,、,1,、,2,、,3,位置显示,湿度输入数据时上限、下限分别在七段数码管的,4,、,5,、,6,、,7,位置显示。读键存储的过程是循环程序。可循环
32、等待直到用户输入正确并确认为止。,采样转换模块是一个比较重要的模块,在调试的阶段遇到的问题较多,由于它是程序运行的瓶颈,如果这一部分通不过的话,那么程序就无法执行下去,本系统采用的是延时的方法。,温湿度判断控制模块也一个非常重要的模块,由于温湿度对于植被的生长起着决定性的作用,因此,如果这两个因素控制不好,这个系统就失败了,这就需要我认真的考虑这一模块的控制方式,调试阶段比较顺利。,除了以上所提到的模块之外,还有一些模块也很重要,也都需要认真的调试,如报警模块等。调试了各模块之后,接下来的工作就是将各源程序段连接起来,进行综合调试了,综合调试需要我们特别注意细节部分,这样才能尽可能的减少错误的
33、产生。,结 论,虽然这个设计做的比较简单,很多东西都考虑的不是很细,也有一些特别情况没有做,但是用了很多精力用来完成这个论文,鉴于个人水平和时间的关系所以并没有把自己当初设想的所有情况都考虑进去,这两个月的毕业论文让我学会的很多,觉得自己学的太少还有很多需要认真学习,学无止境,所以要更努力。,致 谢,此次毕业设计是在我的导师陈勉老师的精心指导及全力支持下完成的。本系统的设计成功与陈老师的帮助是密不可分的,再加上自身的努力才能圆满地完成预期的目标。陈老师对新知识,新事物都有自己独到的理解,这深深的影响了我对学习的态度,将使我终生难忘。他们一丝不茍的工作态度和认真负责的敬业精神同样给了我巨大的收益
34、和鼓舞。这些都将使我受益匪浅,同时也要感谢我的父母,不是你们我就不可能在大学校园里,也就不可能有这个毕业设计!,最后,我要以最真挚的感情来感谢指导本次毕业设计中的导师,是您们用辛勤的劳动、无私的奉献和渊博的知识换来了我的毕业设计。同时感谢各位同学对我的帮助,只有我们不断的努力学习,明天才会更加美好,因为机会永远属于那些有准备的人。,参考文献,1,P231,4,公孙茂,马宝匍,孙晨单片机入口接口实例集,M.,北京:北京航空航天出版社,,2002.P120,5,求是科技,.PIC,单片机典型模块设计和实例导航,M.,北京:人民邮电出版社,2005.,6,龙泽明,顾立志,王桂莲,陈光军,.MCS,5
35、1,单片机原理及工程应用,M.,北京:国防工业出版社,,2005.,7,胡辉,.,王晓,戴永成,.,单片机原理及应用设计,M.,北京:中国水利水电出版社,2005.P6,,,P181,8,蔡菲娜,.,单片微型计算机原理和应用,M,。杭州:浙江大学出版社,,2003,9,,on monolithic integrated circuit temperature And humidity control system design,Abstract,:,This article uses 8051 monolithic integrated circuits to design a greenho
36、use the temperature and humidity control system,to temperature and humidity control and real time display which assigns,temperature humidity signal has four groups respectively,the system uses the certain algorithm to the signal processing by to determine uses some control method,uses the temperatur
37、e first pattern in this system,circulation processing.,Key words,:The 89C51 8729 keyboards LCD ADC0809,附录:,IN0 EQU 7FF8H,IN1 EQU 7FF9H,IN2 EQU 7FFAH,IN3 EQU 7FFBH,IN4 EQU 7FFCH,IN5 EQU 7FFDH,IN6 EQU 7FFEH,IN7 EQU 7FFFH,SET_WLEQU50H,SET_WHEQU51H,SET_W EQU 52H,CURTM_W EQU53H,SET_SLEQU54H,SET_SHEQU55H,
38、SET_S EQU 56H,CURTM_S EQU57H,Z8279 EQU 08701H ;8279,状态,/,命令口地址,D8279 EQU 08700H ;8279,数据口地址,LEDMOD EQU 00H ;,左边输入 八位字符显示,;,外部译码键扫描方式,双键互锁,LEDFEQ EQU 38H ;,扫描速率,LEDCLS EQU 0D1H ;,清除显示,RAM,READKB EQU 40H ;,读,FIFO RAM,地址,0,的命令字,ORG 0000H,LJMP START,ORG 0040H,START:,MOV SP,#60H,LCALL INIT,MOV R0,#00H,MO
39、V R1,#00H,MOV R2,#00H,MOV R3,#00H,MOV R4,#00H,MOV R5,#00H,MOV R6,#00H,MOV R7,#00H,MOV 40H,#00H,LCALL DISPLAY_1,液晶显示程序:,DISPLAY_ST:,RS EQU P0.0 ;LCD RC,引脚定义,EN EQU P0.1 ;LCD EN,引脚定义,WLED EQU P1.0 ;,工作指示灯引脚定义,CLR EN,;,LCD,被禁用,LCALL LED_BL,;,LCD,闪烁,LCALL SET_LCD ;LCD,做显示测试,MOV A,#1,;设置所要显示的字符,MOV B,#15
40、设置所要显示的位置,LCALL LCDP1,;在,LCD,第一行显示字符,MOV A,#2,;设置所要显示的字符,MOV B,#15,;设置所要显示的位置,LCALL LCDP2,;在,LCD,第二行显示字符,JMP$,;循环,SET_LCD:,;,LCD,初试化并做测试,CLR EN,;,LCD,被禁用,LCALL INIT_LCD,;,LCD,初试化,LCALL DELAY,;延时,MOV DPTR,#LMESS1,;指针指到消息第一行,MOV A,#1,;显示在第一行,LCALL LCD_PRINT,;显示执行消息于,LCD,第一行,MOV DPTR,#LMESS2,;指针指到消息第
41、二行,MOV A,#2,;显示在第二行,LCALL LCD_PRINT,;显示执行消息于,LCD,第二行,RET,INIT_LCD1:,;,4,位,I/O,初试化,MOV A,#28H,LCALL WCOM,;双列显示字符使用,57,点阵,MOV A,#0EH,LCALL WCOM,;光标出现不闪烁,MOV A,#06H,LCALL WCOM,;每次向右移动一位,显示屏不动,MOV A,#01H,LCALL WCOM,;清除,LCD,显示屏,RET,CLR_LINE1:,MOV A,80H,;清除,LCD,的第一行,设置第一行字符,LCALL WCOM,MOV R0,#24,;设置记数值,CL
42、MOV A,#,;载入空格到,LCD,LCALL WDATA ;,输出字符到,LCD,DJNZ R0,CL,;记数结束,RET,LCD_PRINT:,CJNE A,#1,LINE2,;在,LCD,第一行或第二行显示字符,LINE1:,;设置第一行地址,MOV A,#80H,LCALL WCOM,LCALL CLR_LINE,MOV A,80H,LCALL WCOM,JMP FILL,LINE2:,;设置第一行地址,MOV A,#0C0H,LCALL WCOM,LCALL CLR_LINE,MOV A,0C0H,LCALL WCOM,FILL:,CLR A,MOVC A,A+DPTR,CJN
43、E A,#0,L1,RET,L1:LCALL WDATA,INC DOTR,JMP FILL,RET,CLR_LINE:MOV R0,#24,;清除,LCD,该行字符,C1:MOV A,#,;载入空格符到,LCD,LCALL WDATA,;输出字符到,LCD,DJNZ R0,C1,;记数结束,RET,DE:,;短暂延时,MOV R7,#5,DJNZ R7,$,RET,EN1:,SET EN,LCALL DE,CLR EN,LCALL DE,RET,INIT_LCD:,MOV P0,#30H ;LCD,四位接口指令重置,LCALL EN1,;,RS=0,R/W=0,D4D7=0011,MOV P
44、0,#30H,LCALL EN1,MOV P0,#30H,LCALL EN1,MOV P0,#20H ;,启动四位接口指令,LCALL EN1,;,RS=0,R/W=0,D4D7=0010,LCALL INIT_LCD1,;,LCD,指令设置初试化,RET,WCOM:,MOV P0,A,;先写入高四位命令,CLR RS,;,RS=0,写入命令,LCALL EN1,;产生高电平起用脉冲,RLC A,;向左移四位,RLC A,RLC A,RLC A,MOV P0,A,;先写入低四位命令,CLR RS ;RS=0,写入命令,LCALL EN1,;产生高电平起用脉冲,RET,WDATA:,MOV P0
45、A,;先写入高四位命令,SETB RS,;,RS=1,写入数据,LCALL EN1,;产生高电平起用脉冲,RLC A,;向左移四位,RLC A,RLC A,RLC A,MOV P0,A,;写入低四位命令,SETB RS,;,RS=1,写入数据,LCALL EN1,;产生高电平起用脉冲,RET,LED_BL:,MOV R4,#4,;,LCD,闪动控制程序,LE1:,CPL WLED,MOV R5,#10,LCALL DELAY,DJNZ R4,LE1,RET,LEMSS:DB “WELCOME TO LCD SYSTEM”,;需要显示的字符消息,DB “START WORK”,LCDP1:,P
46、USH ACC,;在,LCD,第一行特定位置显示字符,MOV A,B,;,A=ACC,DATA,所要显示的字符,ADD A,#80H,;设置第一行地址,LACLL WCOM,POP ACC,;由堆栈取出,A,寄存器值,LCALL WDATA,;写入所要显示的字符,RET,LCDP2:,PUSH ACC,;在,LCD,第一行特定位置显示字符,MOV A,B,;,A=ACC,DATA,所要显示的字符,ADD A,#0C0H,;设置第一行地址,LACLL WCOM,POP ACC,LCALL WDATA,RET,END,;,键识别,SET_T:,LCALL GETKEY,;调用,GETKEY,CJN
47、E A,#0FFH,SET_T,;判断是否有键入,无则再读,MOV A,B,CJNE A,#3CH,TT,;判断键入是否,3CH,CJNE R0,#00H,SET_1,;判断是否有键入并键入完成,SJMP SET_T,SET_1:,LCALL DISPLAY_NOR,MOV DPTR,#Z8279,MOV A,#LEDMOD ;,置,8279,工作方式,MOVX DPTR,A,MOV A,#LEDFEQ ;,置键盘扫描速率,MOVX DPTR,A,MOV A,#LEDCLS ;,清除,LED,显示,MOVX DPTR,A,LCALL L1,TT:CJNE A,#3BH,KS,;判断是否键入,B
48、INC R0,;作为标志位,判断是否数据输入确定,MOV R4,#0,LCALL GETWORD,MOV A,B,MOV SET_WL,A,MOV R4,#2,LCALL GETWORD,MOV A,B,MOV SET_WH,A,MOV A,SET_WL,ADD A,SET_WH,MOV B,#02H,DIV AB,MOV SET_W,A,MOV R4,#4,LCALL GETWORD,MOV A,B,MOV SET_SL,A,MOV R4,#6,LCALL GETWORD,MOV A,B,MOV SET_SH,A,MOV A,SET_SL,ADD A,SET_SH,MOV B,#02H,D
49、IV AB,MOV SET_S,A,KS:SJMP SET_T,SET_T1:,MOV R1,#0AH,SET_T2:LCALL GETKEY,CJNE A,#0FFH,RING,;判断输入是否正确,MOV A,B,CJNE A,#3BH,RING,;若正确则无需再读,LJMP SET_T,;若错误则调用,SET_T,再键入数据,RING:DJNZ R1,SET_T2,RET,GETKEY:PUSH DPH ;,保存现场,PUSH DPL,PUSH PSW,MOV DPTR,#Z8279,MOVX A,DPTR ;,读,8279,状态,ANL A,#07H ;,屏蔽,D7-D3,JNZ GET
50、VAL ;,判断是否有键输入,MOV A,#0H ;,置标志,(,无键输入,),SJMP NKBHIT,GETVAL:MOV A,#READKB ;,读,FIFO RAM,命令,MOVX DPTR,A,MOV DPTR,#D8279,MOVX A,DPTR ;,读键,ANL A,#3FH ;,屏蔽,SHIFT,和,CTRL,键,MOV DPTR,#KEYCODE ;,键码表起始地址,MOVC A,A+DPTR ;,查表,MOV B,A ;,置返回键值,MOV A,#0FFH ;,置标志,(,有键输入,),NKBHIT:POP PSW,POP DPL,POP DPH,RET,GETWORD:;,






