您的当前位置:首页正文

基于单片机的温湿度控制系统设计39168

来源:帮我找美食网
仅供个人参考

基于单片机的温湿度控制系统

目录

摘要 ............................................. 错误!未定义书签。 1、绪论 .......................................... 错误!未定义书签。 1.1 课题背景 ..................................... 错误!未定义书签。 1.2 立题的目的和意义 ............................ 错误!未定义书签。 1.3 植被栽培技术 ................................. 错误!未定义书签。 温室环境的调节 ................................. 错误!未定义书签。 1.4 本系统主要研究内容 ........................... 错误!未定义书签。 2 、系统总体分析与设计 ........................... 错误!未定义书签。 2.1系统功能及系统的组成和工作原理 ............... 错误!未定义书签。 ............................................... 错误!未定义书签。 实施措施 ...................................... 错误!未定义书签。 ............................................... 错误!未定义书签。 主机与主要部件的选择: ......................... 错误!未定义书签。 2.2温湿度采样与控制系统 ......................... 错误!未定义书签。 ............................................... 错误!未定义书签。 ............................................... 错误!未定义书签。 2.3 键盘显示系统 ................................. 错误!未定义书签。 2.4 报警系统 ..................................... 错误!未定义书签。 2.5硬件电路设计 ................................. 错误!未定义书签。 系统硬件配置 .................................. 错误!未定义书签。 主要组件简介 .................................. 错误!未定义书签。 3 软件系统设计 .................................. 错误!未定义书签。 3.1 系统初始化模块 ............................... 错误!未定义书签。 3.2 键盘显示模块 ................................. 错误!未定义书签。 3.3 采样转换模块 ................................. 错误!未定义书签。 3.4温湿度控制模块 ............................... 错误!未定义书签。 3.5 报警模块 ..................................... 错误!未定义书签。 4 硬件调试方案 ................................... 错误!未定义书签。 4.1 硬件电路的调试 ............................... 错误!未定义书签。 4.2 功能模块的调试方案 .......................... 错误!未定义书签。 结 论 ............................................ 错误!未定义书签。 致 谢 ........................................... 错误!未定义书签。 参考文献 ......................................... 错误!未定义书签。

不得用于商业用途

仅供个人参考

附录: ........................................... 错误!未定义书签。

基于单片机的温湿度控制系统设计

摘要

本文利用8051单片机设计一个温室的温湿度控制系统,对给定的温湿度进行控制并实时显示,其中温湿度信号各有四路,系统采用一定的算法对信号处理以确定采取某种控制手段,在本系统中采用温度优先模式,循环处理。

关键字:89C51 8729键盘显示 LCD显示 ADC0809

1、绪论

1.1 课题背景

改革开放以来,人们对生活质量要求显著提高,对美丽的植被和花卉的需求量也急剧上升,这对以种植植被为生计的园林工人是一个机遇,同时也对传统的手工植被种植是一个挑战,而基于单片机的温湿度控制系统对解决这些问题有着非常重大的意义。 前种植植被一般都用温室栽培,为了充分的利用好温室栽培这一高效技术,就必需有一套科学的,先进的管理方法,用以对不同种类植被生长的各个时期所需的温度及湿度等进行实时的监控。温湿度控制对于单片机的应用具有一定的实际意义,它代表了一类自动控制的方法。而且其应用十分广泛。

1.2 立题的目的和意义

8051单片机是常用于控制的芯片,在智能仪器仪表、工业检测控制、机电一体化等方面取得了令人瞩目的成果,用其作为温湿度控制系统的实例也很多。使用8051单片机能够实现温湿度全程的自动控制,而且8051单片机易于学习、掌握,性价比高。 使用8051型单片机设计温湿度控制系统,可以及时、精确的反映室内的温度以及湿度的变化。完成诸如升温到特定温度、降温到特定温度、在温度上下限范围内保持恒温等多种控制方式,在湿度控制方面也是如此。将此系统应用到温室当中无疑为植被的生长提供了更加适宜的环境。

1.3 植被栽培技术

植被 “设施栽培”,即“保护地栽培”。它是指在某种类型的保护设施内(如阳畦、温室、大棚等),人为地创造适宜植被生长发育的最佳环境条件,在不同季节内,尤其是不利于植被生长的季节内进行植被栽培的一种措施。设施栽培是人类利用自然、改造自然的一种创造。由不得用于商业用途

[1]

仅供个人参考

于设施内的条件是可以人为控制的,使得植被调节的周年生产得以实现。玻璃温室和塑料薄膜温室出现后,植被生产出现了划时代的变化。现在人们可以根据自己的意愿,随时生产出所需要的各种植被。可以说,这是“设施栽培”的功劳。

在不利于植被生长的自然环境中,温室能够创造适宜植被生长发育的条件。 温室环境的调节主要包括日光、温度、湿度三个方面。

· 温度:根据植被生长的适宜温度进行温室温度调节,若低于下限温度则采取升温措施,通常采取电热增温和火力增温等,火力增温比较方便。若高于上限温度则采取降温措施,通常通过水管降温和风扇降温,风扇降温比较方便。

· 日光:遮荫是调节日照强度最好的办法,其具体做法是加盖遮阳网或草席,这种方法兼有降低温度的效果。

· 湿度:为满足温室植被对湿度的要求,可以在地上、台阶、盆壁洒水,还可以在空中悬挂湿布,以增加水分的蒸发,最好的办法是设置自动喷雾装置,自动调节湿度。如果湿度过大,容易导致植被病害,可以采用通风的办法来降低湿度,而且最好在室温与气温相差不大的时候进行。

本系统注重温度和湿度的调节,光照强度没有考虑其中。

[9]

1.4 本系统主要研究内容

本系统所要完成的任务是:

1.4.2 能够实时、准确的显示采样温度值与湿度值。

,准确的判断标准值与当前值之间的差异,及时的启动报警装置(包括警报灯的提示功能以及提示音等)进行报警,并采取相应的方案。

,用户可随机更改温度及湿度值,以满足用户不同的需求。

2 、系统总体分析与设计

2.1系统功能及系统的组成和工作原理

· 温度监控:对温室温度进行测量,并通过升温或降温达到植被的最佳温度。 · 湿度监控:对温室湿度进行测量,并通过喷雾或去湿达到植被的最佳湿度。 · 控制处理:当温度、湿度越限时报警,并根据报警信号提示采取一定手段控制。 · 显示:LCD就地显示输入值和相应的温湿度,数码管摆放在生产现场用于显示当前的温湿度。

实施措施

· 实际环境温度与给定界限比较,执行加热/制冷措施。 不得用于商业用途

仅供个人参考

· 实际环境湿度与给定界限比较,执行加湿/去湿措施。 · 越限报警:当温湿度越限时声光报警。

· 键盘显示:负责用户的输入及相关数据的显示,其中包括LED和LCD显示。

经过上面的总体方案和实施措施的讨论后可以开始着手硬件系统的设计,硬件系统是应用系统的基础、软件系统设计的依据 主机与主要部件的选择:

根据总体功能和性价比及其运行速度等因素的考虑,选用MCS-51系列的89C51为主机,满足上面的要求而且设计方便,不需要再存储扩展。

数据存储片内设有128B,外部有8279的256B,而由于存入的数据是随时更新的且不计小数位,存入 8个16进制数字,其总共需要的容量只有16B,已经够用。对外部模拟量(温度、湿度)采样,选用ADC0809能够满足要求。

·温室温湿度控制系统是以89C51单片机作为中央控制装置,模数转换器ADC0809,风扇,加热设备,加湿设备,排潮设备,键盘显示芯片等,其功能和原理如下:

· 89C51作为中央控制装置,负责中心运算和控制,协调系统各个模块的工作。 · 四路采样温度信号采样简单平均处理,温度保存为整数。 · 四路采样湿度信号采样简单平均处理,温度保存为整数。

· 模数转换器ADC0809:即由模拟信号转换为数字信号。它共有8个模数转换通道。

模数的转换共有2种方法。一种是利用INT0中断,当一次转换结束后,ADC0809使INT0产生中断,通知系统转换完毕;另一种使用延时方法,开始转换后系统延时100微秒等待转换完成。本方案采用延时转换的方法。

· 键盘显示芯片:用8729识别键盘,负责用户的输入及相关的数据的LED显示。例如

选择系统的工作模式,用户输入温度及湿度的界限数据,显示实时的温度及湿度值等等。

· 风扇:负责系统的降温工作。 · 加热设备:负责系统的加热工作。 · 喷雾设备:负责系统的加湿工作。 · 排潮设备:负责系统的去湿工作。

· 双色灯,音效模块:负责系统的报警功能。如果当前的温度超过用户设定的界限值时系统将自动报警,双色灯在74LS273的控制下有规律的闪烁,同时音效模块发出报警声,通知用户采取相应的措施。

2.2温湿度采样与控制系统

不得用于商业用途

仅供个人参考

为了更精确的反映温室的温度和湿度,取温湿度各4路信号采样简单平均处理作为温室的温度和湿度。在分辨率达到的前提下,温湿度的精度为1%。

首先,系统启动后,提示用户输入温度的上限与下限的温度值。用户输入之后,系统自动求出中间值,根据实际温度的情况采取相应的方案。如下图2-2-1所示。 下限温度 中间温度 上限温度

28 ---- 32 ---- 36

图2-2-1

如果该时刻的实际温度值低于用户给定的下限温度值时,系统立即启动报警装置,且系统处于升温状态,直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止升温。反之,如果实际温度值高于用户设定的上限值时,系统也会立即启动报警装置,且系统处于降温状态,直到实际温度达到用户输入的上下限温度的中间值一定区间内时停止降温。

选择中间值作为控制参数,防止升温——降温——升温的死循环,因为温度低于下限时会一直升温,可能导致温度高于上限系统又开始降温,这样系统便一直重复升温——降温——升温过程,导致设备在某一个温湿度点附近频繁的启停,使设备寿命下降,而且没有实际意义。

选择中间值的一定区间,是防止达到中间值时,采取了停止升温或者降温措施,温度还是会持续上升或下降一会儿,这时候温度可能不是正好在中间值处,系统便还是采取升温或者降温的措施,而此时的温度值可能已经是很适合植被生长的需要的温度值。所以本方案选在中间值的正负一度区间内,认为此区间内都是适合的,不产生任何控制动作变化,这样就能解决设备频繁启停问题。

2.3 键盘显示系统

键盘显示系统采用8279芯片控制16键的键盘和8个七段数码管,以实现用户的输入

与数据输出。16个键分别是“0”到“F”,对应的键值是0到15不需要键值的转换。七段数码管采用共阴极,系统中使用的段码如下表2-3-1所示。

显示 段码 显示 段码 0 3FH 8 7FH 1 06H 9 6FH 2 5BH A 77H 3 4FH B 7CH 4 66H C 39H 5 6DH D 5EH 6 7DH E 79H 7 07H F 71H 表2-3-1

8279初始化时,设定的相关命令字如下:

Z8279 EQU 08701H ;8279 状态/命令口地址 不得用于商业用途

仅供个人参考

D8279 EQU 08700H ;8279 数据口地址 LEDMOD EQU 00H ;左边输入 八位字符显示 ;外部译码键扫描方式,双键互锁 LEDFEQ EQU 38H ;扫描速率 LEDCLS EQU 0D1H ;清除显示 RAM

LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址 系统的连接图如下图2-3-2所示。

图2-3-2

AD0809与89C51连接图:

2-3-2

2.4 报警系统

不得用于商业用途

仅供个人参考

报警系统由声音报警和警报灯报警组成。声音报警通过P1.0口接SD口控制系统的音效模块发声,用CPU控制P1.0产生一定频率的方波就可以实现音效模块的发声。音效模块是一个带有扬声器的放大电路。如图2-4-1所示。

图2-4-1

2.5硬件电路设计 系统硬件配置

采用总线型结构的设计。由P0口作数据线,P0口和P2口共同作地址。

主要组件简介

(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之间传送数据,地址总线用作上述数据传送的地址总线或用作与寄存器控制器连接的多路复用地址/数据总线。CPU对片内RAM访问是直接访问和通过寄存器R0,R1间接访不得用于商业用途

[7]

仅供个人参考

问的。

89C51工作时所需的时钟可通过其XTALL输入引脚由外部输入,也可采用芯片内部的振荡器。其工作频率为6~12MHz。在本系统中采用11.0592MHz频率。

(2)74LS273地址锁存器

74LS273是带有三态缓冲输出的8D锁存器74LS273; ·D7~D0:三态门输入端。 ·Q7~Q0:三态门输出端。 ·GND:接地端。 ·Vcc:电源端。 ·OE:三态门使能端。 ·G(STB):8D锁存器控制端。

(3)8279可编程键盘/显示器接口芯片

8279使Intel公司为8位微处理器设计的通用键盘/显示器接口芯片,其功能主要体现在二个方面:接收来自键盘的输入数据并作预处理;数据显示的管理和数据显示器的控制。单片机采用8279管理键盘和显示器,可减少软件程序,减轻负担,且显示稳定,程序简单。

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~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 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显示

引脚功能[7]:

·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:接地。

[7]

3、软件系统设计

不得用于商业用途

仅供个人参考

3.1 系统初始化模块

系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:

3.1.1 系统启动后,显示器上显示两行,第一行为“WELCOME TO THE SYSTEM”,

第二行显示为“START WORK”

3.1.2 等待用户输入温度及湿度值。按“B”键表示开始输入,这时可按温度下限、

上限,湿度下限、上限的顺序依次输入,如果输入的顺序错可按“B”键可重新进行输入,直到输入正确;输入完毕后按“C”键确定。

3.1.3 系统进入正常工作状态。 系统整体的工作方式如下框图所示

图3-1-1

初始化程序部分的流程图如下图3-1-2所示。

图3-1-2

3.2 键盘显示模块

不得用于商业用途

仅供个人参考

本系统中使用8279芯片完成有关键盘输入和温湿度显示工作。温度湿度是依次输入的并且依次以下限、上限输入,并且将温湿度的中间数值存入单片机中,在将LED清零后显示(分别在0123位),并依次显示实时的温度湿度数值(显示在4567位)

实际上,在系统初始化的过程中,除了初始化键盘和显示器之外,其中还包括着调用8279键盘显示模块,8279键盘显示模块部分的基本流程如下图3-2-1所示。

其中显示键值的程序流程图如下:

图3-2-1

3.3 采样转换

图3-2-1

模块

采样转换模块是本系统中的核心模块之一,它负责完成温度和湿的测量及模拟量转换为数字量的全过程,这也是它为什么重要的原因。系统每次转换前ADC0809的IN0~IN7送个任意数,表示开始转换,结果是一个数字量,将其转化为#BCD码,。送显示程序显示,并将数值返回给主函数。湿度也可以通过此种方法观察变化,得出相应的结论。

为了更精确的反映系统的温度和湿度,本系统对四路采样信号作简单平均处理,并将处理后的数值作为温室的温湿度,其过程如下图。

不得用于商业用途

仅供个人参考

图3-3-1

实时温湿度显示和温湿度中间数值显示便于我们实时比较和掌握系统工作状况,实时的温度湿度不在要求的区间内则进行升温降温处理。

图3-3-2

3.4控制

温湿度模块

温湿度判断控制模块也是系统的核心模块之一,所谓判断控制模块,就是对用户输

入的温度和湿度与当前温室内的实际温湿度进行比较,先进行判断,然后再进行控制,控制模块是决定系统将要进行什么工作的。如温度高于上限时需要降温,低于下限时需要升温,同时还要启动警报等等。

温度判断控制部分的程序整体思路如下如所示:

不得用于商业用途

仅供个人参考

图3-4-1

上面已经讨论了采取中间值作为控制参数,采取中间值一定区间作为控制区间的原因,那么按照(2.2)的思想,控制程序流程图如下:

图3-4-2

湿度判断控制部分与温度判断控制部分的功能及流程是相同的,便不再赘述了。

3.5 报警模块

报警模块具备两项功能,即为报警灯和声音报警。报警灯模块是完成LED有规律的闪烁,以便从视觉上提醒用户。LED是由74LS273控制4个双色LED灯组成的,其闪烁规律为:

1 向74LS273发送的数据0F0H,则双色LED灯发绿光。

不得用于商业用途

仅供个人参考

2 向74LS273发送的数据0FH,则双色LED灯发红光。 3 向74LS273发送的数据0FFH,则双色LED灯熄灭。

向74LS273交替发送0F0H、0FFH,或0FH、0FFH,以实现LED灯红/灭交替或绿/灭交替,这时我们就看到了闪烁的效果。

在LED灯闪烁的同时,声音报警也会同时启动,可采用延时的方式来延长声音报警的声音。

警报灯由4个双色的LED灯组成,一共需要8根数据线,使用74LS273芯片控制。要实现的功能是使4个双色LED灯有规律的闪烁,当用户输入温度的上下限值后,系统进行实时的采样,并判断出当前温度与用户输入温度之间的差异,如果当前温度低于用户输入的下限温度值,则说明当前温度过低,系统自动启动警报灯,此时警报灯发出绿光并进行有规律的闪烁,同时开始加温,直至加到所需温度值时警报灯熄灭。反之,如果当前温度高于用户输入的上限温度值,则说明当前温度过高,系统也会自动启动警报灯,但此时警报灯会发出红光并进行有规律的闪烁,同时开始降温,直至降到所需温度值时警报灯熄灭。

图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芯片正常,可以使用。

4.1.5 调试直流电机,按照说明书调用直流电机相应的汇编程序,运行,观察现象。现象正确,说明直流电机正常,可以使用。

4.2 功能模块的调试方案

把各个功能模块编写成单独的源文件进行调试,调试成功以后,再将各部分联合在一起。

整个系统的编写、调试是从8279开始的。控制8279原理虽然简单,但需要细节却很多,如选择显示寄存器与送段码的顺序,8279的初始化等待时间等。

用户温度输入数据时上限、下限分别在七段数码管的0、1、2、3位置显示,湿度输入数据时上限、下限分别在七段数码管的4、5、6、7位置显示。读键存储的过程是循环程序。可循环等待直到用户输入正确并确认为止。

采样转换模块是一个比较重要的模块,在调试的阶段遇到的问题较多,由于它是程序运行的瓶颈,如果这一部分通不过的话,那么程序就无法执行下去,本系统采用的是延时的方法。

温湿度判断控制模块也一个非常重要的模块,由于温湿度对于植被的生长起着决定性的作用,因此,如果这两个因素控制不好,这个系统就失败了,这就需要我认真的考虑这一模块的控制方式,调试阶段比较顺利。

除了以上所提到的模块之外,还有一些模块也很重要,也都需要认真的调试,如报警模块等。调试了各模块之后,接下来的工作就是将各源程序段连接起来,进行综合调试了,综合调试需要我们特别注意细节部分,这样才能尽可能的减少错误的产生。

结 论

虽然这个设计做的比较简单,很多东西都考虑的不是很细,也有一些特别情况没有做,但是用了很多精力用来完成这个论文,鉴于个人水平和时间的关系所以并没有把自己当初设想的所有情况都考虑进去,这两个月的毕业论文让我学会的很多,觉得自己学不得用于商业用途

仅供个人参考

的太少还有很多需要认真学习,学无止境,所以要更努力。

致 谢

此次毕业设计是在我的导师陈勉老师的精心指导及全力支持下完成的。本系统的设计成功与陈老师的帮助是密不可分的,再加上自身的努力才能圆满地完成预期的目标。陈老师对新知识,新事物都有自己独到的理解,这深深的影响了我对学习的态度,将使我终生难忘。他们一丝不茍的工作态度和认真负责的敬业精神同样给了我巨大的收益和鼓舞。这些都将使我受益匪浅,同时也要感谢我的父母,不是你们我就不可能在大学校园里,也就不可能有这个毕业设计!

最后,我要以最真挚的感情来感谢指导本次毕业设计中的导师,是您们用辛勤的劳动、无私的奉献和渊博的知识换来了我的毕业设计。同时感谢各位同学对我的帮助,只有我们不断的努力学习,明天才会更加美好,因为机会永远属于那些有准备的人。

参考文献

[1] /9160/9160128.shtml[Z].

[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 [9] /ShowArticle.asp?ArticleID=113[Z].

Based on monolithic integrated circuit temperature 不得用于商业用途

And

仅供个人参考

humidity control system design

Abstract:

This article uses 8051 monolithic integrated circuits to design a greenhouse 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 temperature 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_WL SET_WH

EQU 50H EQU 51H

53H

SET_W EQU 52H CURTM_W EQU SET_SL SET_SH

EQU 54H EQU 55H

57H

SET_S EQU 56H CURTM_S EQU

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 MOV 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 ;设置所要显示的位置 LCALL LCDP1 ;在LCD第一行显示字符 MOV A, #’2’ ;设置所要显示的字符 MOV B, #15 ;设置所要显示的位置 LCALL LCDP2 ;在LCD第二行显示字符 JMP $ SET_LCD: CLR EN LCALL INIT_LCD LCALL DELAY MOV DPTR,#LMESS1 MOV A,#1 LCALL LCD_PRINT MOV DPTR,#LMESS2 MOV A,#2 LCALL LCD_PRINT RET

INIT_LCD1: MOV A,#28H

LCALL WCOM MOV A,#0EH

LCALL WCOM MOV A,#06H

LCALL WCOM MOV A,#01H

LCALL WCOM RET CLR_LINE1:

MOV A,80H LCALL WCOM

MOV R0,#24 CL:

MOV A,#’’ LCALL WDATA ; DJNZ R0,CL RET LCD_PRINT:

CJNE A,#1,LINE2 LINE1: MOV A,#80H

不得用于商业用途

;循环

;LCD初试化并做测试 ;LCD被禁用 ;LCD初试化 ;延时

;指针指到消息第一行 ;显示在第一行

;显示执行消息于LCD第一行 ;指针指到消息第二行 ;显示在第二行

;显示执行消息于LCD第二行 ;4位I/O初试化 ;双列显示字符使用5×7点阵 ;光标出现不闪烁 ;每次向右移动一位,显示屏不动;清除LCD显示屏 ;清除LCD的第一行,设置第一行字符 ;设置记数值 LCD 输出字符到LCD ;记数结束 ;在LCD第一行或第二行显示字符 ;设置第一行地址 ;载入空格到仅供个人参考

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 CJNE A, #0,L1 RET

L1:LCALL WDATA INC DOTR JMP FILL RET

CLR_LINE:MOV R0,#24 C1:MOV A,#’’ LCALL WDATA 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 ;LCDLCALL EN1 MOV P0,#30H LCALL EN1 MOV P0,#30H LCALL EN1

MOV P0,#20H ;LCALL EN1 不得用于商业用途

LCD该行字符 LCD LCD 四位接口指令重置 RS=0,R/W=0,D4~D7=0011 启动四位接口指令 RS=0,R/W=0,D4~D7=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=0LCALL EN1 RET WDATA:

MOV P0, A SETB RS LCALL EN1 RLC A RLC A RLC A RLC A

MOV P0,A SETB RS LCALL EN1 RET

LED_BL:

MOV R4,#4 LE1: CPL WLED MOV R5,#10

LCALL DELAY DJNZ R4, LE1 RET

LEMSS: DB DB LCDP1:

PUSH ACC

MOV A, B ADD A, #80H LACLL WCOM

POP ACC LCALL WDATA 不得用于商业用途

;先写入低四位命令 写入命令 ;产生高电平起用脉冲 ;先写入高四位命令 ;;RS=1写入数据 ;产生高电平起用脉冲 ;向左移四位 ;写入低四位命令 ;RS=1写入数据 ;产生高电平起用脉冲 ;LCD闪动控制程序 “ WELCOME TO LCD SYSTEM”;需要显示的字符消息“ START WORK” ;在LCD第一行特定位置显示字符 ;A=ACC,DATA所要显示的字符 ;设置第一行地址 ;由堆栈取出A寄存器值 ;写入所要显示的字符

仅供个人参考

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 CJNE A,#0FFH,SET_T MOV A,B

CJNE A,#3CH,TT CJNE R0,#00H,SET_1 SJMP SET_T SET_1:

LCALL DISPLAY_NOR MOV DPTR ,#Z8279

MOV A,#LEDMOD ; MOVX @DPTR,A

MOV A,#LEDFEQ ; MOVX @DPTR,A

MOV A,#LEDCLS ; MOVX @DPTR,A LCALL L1

TT: CJNE A,#3BH,KS 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

不得用于商业用途

键识别 ;调用GETKEY

;判断是否有键入,无则再读 ;判断键入是否3CH ;判断是否有键入并键入完成 置8279工作方式 置键盘扫描速率 清除 LED 显示 ;判断是否键入B

;作为标志位,判断是否数据输入确定

仅供个人参考

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 DIV 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 RING:DJNZ R1,SET_T2 RET

GETKEY: PUSH DPH ; PUSH DPL PUSH PSW MOV DPTR,#Z8279

MOVX A,@DPTR ; ANL A,#07H ; JNZ GETVAL ; MOV A,#0H ; SJMP NKBHIT

GETVAL: MOV A,#READKB ; MOVX @DPTR,A MOV DPTR,#D8279

MOVX A,@DPTR ; ANL A,#3FH ; MOV DPTR,#KEYCODE ; MOVC A,@A+DPTR ; MOV B,A ; MOV A,#0FFH ;不得用于商业用途

; 判断输入是否正确 ;若正确则无需再读

;若错误则调用SET_T再键入数据保存现场 读8279状态 屏蔽D7-D3 判断是否有键输入 置标志(无键输入) 读 FIFO RAM 命令 读键

屏蔽 SHIFT 和 CTRL 键 键码表起始地址 查表 置返回键值 置标志(有键输入)

仅供个人参考

NKBHIT: POP PSW POP DPL POP DPH RET

GETWORD: ;读数子程序 WKEY1: LCALL GETKEY ;读键盘

CJNE A,#0FFH,WKEY1 ;无键输入,则再读 MOV A,B ADD A,#0C6H

JC ERROR1 ;判断输入是否大于9 MOV A,B SUBB A,#30H

JC ERROR1 ;判断输入是否小于0 MOV R5,A

LCALL DISLED ;显示输入的字符 MOV B,#10 MUL AB

PUSH ACC ;保存输入的值 WKEY2: LCALL GETKEY ;读键盘

CJNE A,#0FFH,WKEY2 ;无键输入则再读 MOV A,B

ADD A,#016H ;判断输入是否大于9 JC ERROR2 MOV A,B

SUBB A,#30H ;判断输入是否小于0 JC ERROR2 INC R4 MOV R5,A

LCALL DISLED ;显示输入的字符 MOV B,A POP ACC ADD A,B

MOV B,A ;把得到的值存在B MOV A,#0FFH ;置合法输入标志 AJMP KEYOK ERROR2:SJMP WKEY2

ERROR1:SIMP WKEY1 ;置非法输入标志 KEYOK: RET INIT_TRF:

MOV DPTR,#8100H MOV A,#0FFH MOVX @DPTR,A RET

不得用于商业用途

仅供个人参考

INIT8279:

;8279初始化子程序 PUSH DPH ;保存现场 PUSH DPL PUSH ACC

LCALL DELAY ;延时 MOV DPTR ,#Z8279

MOV A,#LEDMOD ;置8279工作方式 MOVX @DPTR,A

MOV A,#LEDFEQ ; MOVX @DPTR,A

MOV A,#LEDCLS ; MOVX @DPTR,A

LCALL DELAY ;DISLED: PUSH DPH ; PUSH DPL PUSH ACC

MOV A,#LEDWR0 ; ADD A,R4 ; MOV DPTR,#Z8279

MOVX @DPTR,A ; MOV DPTR,#LEDSEG ; MOV A,R5

MOVC A,@A+DPTR ; MOV DPTR,#D8279

MOVX @DPTR,A ; POP ACC ; POP DPL POP DPH RET

DELAY: ; PUSH 0 ; PUSH 1 MOV 0,#0H DELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1

POP 1 ; POP 0 RET L1: LCALL SET_T1 LCALL A_D_W

不得用于商业用途

置键盘扫描速率 清除 LED 显示 延时 保存现场 置显示起始地址 加位置偏移量 设定显示位置 置显示常数表起始位置 查表 显示数据 恢复现场 延时子程序 保存现场 恢复现场 仅供个人参考

LCALL A_D_S LCALL CON_W LCALL A_D_W LCALL A_D_S LCALL CON_S SJMP L1 温度控制: CON_W:

MOV A,SET_WL CJNE A,CURTM_W,CON0_W LJMP END_CON_W CON0_W:

JNC RISE_W JC CON1_W CON1_W:

MOV A,SET_WH CJNE A,CURTM_W,CON2_W LJMP END_CON_W CON2_W:

JNC END_CON_W JC DOWN_W END_CON_W:RET

降温处理:

DOWN_W:

SETB P1.1

LCALL DIS_WS LCALL RED

LCALL TEST1_W CLR P1.1 MOV DPTR,#8100H MOV A,#0FFH MOVX @DPTR,A LJMP END_CON_W 升温处理: RISE_W:

CLR P1.2

LCALL DIS_WS LCALL GREEN LCALL TEST2_W

不得用于商业用途

将键入下限于实时值比较 若实时值在下限以下,则调用升温若在下限以上则再判断 实时值与上限比较 若在上限下限以内则返回 否则调用降温 实时温湿度显示 ;中间 实时温湿度显示 ;中间仅供个人参考

SETB P1.2 MOV DPTR,#8100H MOV A,#0FFH MOVX @DPTR,A TEST1_W:

LCALL A_D_W 测试降湿 CLR C

MOV A, CURTM_W MOV A,SET_W

ADDC A,#01H

CJNE A,CURTM_S,TEST1_W 判断是否降温到中间值+1,无则继续降湿 RET TEST2_W:

LCALL A_D_W 测试升湿 CLR C

MOV A, CURTM_W MOV A,SET_W SUBB A,#01H

CJNE A,CURTM_W,TEST_W 判断是否降温到中间值-1,无则继续升湿

四路温度平均: A_D_W: MOV A,R1 RL A RL A MOV R0,A MOV R1,A MOV A ,@R0 INC R0 MOV R5,00H MOV R6,04H START:

CJNE R1,00H,AD04 MOV DPTR,#IN0 SJMP TRAN

AD04: CJNE R3,01H, AD05 MOV DPTR,#IN1 SJMP TRAN

AD05: CJNE R3,02H, AD06 MOV DPTR,#IN2 SJMP TRAN AD06: MOV DPTR,#IN3 TRAN:

MOVX @DPTR,A ;启动 A_D

不得用于商业用途

仅供个人参考

NOP NOP

JB P3.3,$ MOVX A,@DPTR LCALL DELAY MOVX A,@DPTR ADD A,R5 MOV R5,A DJNZ R6,TRAN MOV A,R5

ADDC A, #0F2H ;四舍五入 AND A,#0F6H CLR C RRC A CLR C RRC A

MOV CURTM_S,A ;初始采样0809一次 MOVX @DPTR,A POP DPL POP DPH POP ACC POP PSW RET 湿度控制: CON_S:

MOV A,SET_SL 将键入下限于实时值比较 CJNE A,CURTM_S,CON0_S LJMP END_CON_S CON0_S:

JNC RISE_S ;若实时值在下限以下,则调用升温 JC CON1_S ; 若在下限以上则再判断 CON1_S:

MOV A,SET_SH ; 实时值与上限比较 CJNE A,CURTM_S,CON2_S LJMP END_CON_S CON2_S:

JNC END_CON_S ;若在上限下限以内则返回 JC DOWN_S ;否则调用降温 END_CON_S: LCALL DISPLAY_END 去湿处理: DOWN_S:

SETB P1.1

不得用于商业用途

仅供个人参考

LCALL DIS_WS ;中间 实时温湿度显示

LCALL RED LCALL TEST1_S CLR P1.1 MOV DPTR,#8100H MOV A,#0FFH MOVX @DPTR,A LJMP END_CON_S 喷雾处理: RISE_S:

CLR P1.2

LCALL DIS_WS LCALL GREEN LCALL TEST SETB P1.2 MOV DPTR,#8100H MOV A,#0FFH MOVX @DPTR,A TEST1_S:

LCALL A_D_S CLR C

MOV A, CURTM_S MOV A,SET_S

ADDC A,#01H

CJNE A,CURTM_S,TEST1_S RET TEST2_S:

LCALL A_D_S CLR C

MOV A, CURTM_S MOV A,SET_S SUBB A,#01H

CJNE A,CURTM_S,TEST_S 四路湿度输入平均: A_D_S: MOV A,R1 RL A RL A MOV R0,A MOV R1,A MOV A ,@R0 INC R0 MOV R5,00H MOV R6,04H START:

不得用于商业用途

;中间 实时温湿度显示

; 测试降湿 ;判断是否降温到中间值+1,无则继续降湿; 测试升湿 ;判断是否降温到中间值-1,无则继续升湿 仅供个人参考

CJNE R1,00H,AD01 MOV DPTR,#IN4 SJMP TRAN AD01: CJNE R3,01H, AD02 MOV DPTR,#IN5 SJMP TRAN AD02: CJNE R3,02H, AD03 MOV DPTR,#IN6 SJMP TRAN AD03: MOV DPTR,#IN7 TRAN:

MOVX @DPTR,A ;启动 A_D NOP NOP

JB P3.3,$ MOVX A,@DPTR LCALL DELAY MOVX A,@DPTR ADD A,R5 MOV R5,A DJNZ R6,TRAN MOV A,R5

ADDC A, #0F2H ;四舍五入 AND A,#0F6H CLR C RRC A CLR C RRC A

MOV CURTM_W,A ;初始采样0809一次 MOVX @DPTR,A POP DPL POP DPH POP ACC POP PSW RET

中间数值的显示和适时数值显示: DIS_WS:

LCALL LED-CLR MOV A,CURTM_W MOV B,#0AH DIV AB MOV R5,A MOV R4,#0

不得用于商业用途

仅供个人参考

LCALL DIS_LED MOV R5,B MOV R4,#1 LCALL DIS_LED MOV A,CURTM_S MOV B,#0AH DIV AB MOV R5,A MOV R4,#2 LCALL DIS_LED MOV R5,B MOV R4,#3 LCALL DIS_LED MOV A,SET_S MOV B,#0AH DIV AB MOV R5,A MOV R4,#4 LCALL DIS_LED MOV R5,B MOV R4,#5 LCALL DIS_LED MOV A,SET_W MOV B,#0AH DIV AB MOV R5,A MOV R4,#6 LCALL DIS_LED MOV R5,B MOV R4,#7 LCALL DIS_LED LED_CLR:

MOV A,#0D1H

MOV @DPTR,A

RET

液晶显示程序如下: DISPLAY_NOR:

RS EQU P0.0 ;LCD RCEN EQU P0.1 ;LCD EN WLED EQU P1.0 ;CLR EN LCALL LED_BL LCALL SET_LCD ; LCD不得用于商业用途

引脚定义 引脚定义 工作指示灯引脚定义;LCD被禁用 ;LCD闪烁 做显示测试

仅供个人参考

MOV A, #’1’ ;设置所要显示的字符 MOV B, #15 ;设置所要显示的位置 LCALL LCDP1 ;在LCD第一行显示字符 MOV A, #’2’ ;设置所要显示的字符 MOV B, #15 ;设置所要显示的位置 LCALL LCDP2 ;在LCD第二行显示字符 JMP $ ;循环

SET_LCD: ;LCD初试化并做测试 CLR EN ;LCD被禁用 LCALL INIT_LCD LCALL DELAY MOV DPTR,#LMESS1 MOV A,#1 LCALL LCD_PRINT MOV DPTR,#LMESS2 MOV A,#2

LCALL LCD_PRINT RET

INIT_LCD1: MOV A,#28H

LCALL WCOM MOV A,#0EH

LCALL WCOM MOV A,#06H

LCALL WCOM MOV A,#01H

LCALL WCOM RET CLR_LINE1:

MOV A,80H LCALL WCOM

MOV R0,#24 CL:

MOV A,#’’ LCALL WDATA ; DJNZ R0,CL RET LCD_PRINT:

CJNE A,#1,LINE2 LINE1: MOV A,#80H LCALL WCOM LCALL CLR_LINE

不得用于商业用途

;LCD初试化 ;延时

;指针指到消息第一行 ;显示在第一行

;显示执行消息于LCD第一行 ;指针指到消息第二行 ;显示在第二行 ;显示执行消息于LCD第二行 ;4位I/O初试化 ;双列显示字符使用5×7点阵 ;光标出现不闪烁 ;每次向右移动一位,显示屏不动 ;清除LCD显示屏 LCD的第一行,设置第一行字符;设置记数值 LCD 输出字符到LCD ;记数结束 LCD第一行或第二行显示字符 ;清除 ;载入空格到;在;设置第一行地址仅供个人参考

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 CJNE A, #0,L1 RET

L1:LCALL WDATA INC DOTR JMP FILL RET

CLR_LINE:MOV R0,#24 C1:MOV A,#’’ LCALL WDATA 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 ;LCDLCALL EN1 MOV P0,#30H LCALL EN1 MOV P0,#30H LCALL EN1

MOV P0,#20H ;LCALL EN1 LCALL INIT_LCD1 RET

不得用于商业用途

LCD该行字符 LCD LCD 四位接口指令重置 RS=0,R/W=0,D4~D7=0011 启动四位接口指令 RS=0,R/W=0,D4~D7=0010 ;LCD指令设置初试化 ;清除;载入空格符到;输出字符到;记数结束;短暂延时;;仅供个人参考

WCOM:

MOV P0,A ;先写入高四位命令 CLR RS ;RS=0写入命令 LCALL EN1 ;产生高电平起用脉冲 RLC A ;向左移四位 RLC A RLC A RLC A

MOV P0,A ;先写入低四位命令 CLR RS ;RS=0LCALL EN1 RET WDATA:

MOV P0, A SETB RS LCALL EN1 RLC A RLC A RLC A RLC A

MOV P0,A SETB RS LCALL EN1 RET

LED_BL:

MOV R4,#4 LE1: CPL WLED MOV R5,#10

LCALL DELAY DJNZ R4, LE1 RET

LEMSS: DB DB LCDP1:

MOV A, B ADD A, #80H LACLL WCOM

POP ACC LCALL WDATA RET

LCDP2:

PUSH ACC MOV A,B 不得用于商业用途

写入命令

;产生高电平起用脉冲 ;先写入高四位命令 ;RS=1写入数据 ;产生高电平起用脉冲 ;向左移四位 ;写入低四位命令 ;RS=1写入数据 ;产生高电平起用脉冲 ;LCD闪动控制程序 THE SYSTEM WORK”;需要显示的字符消息 “NOFMALLY” ;A=ACC,DATA所要显示的字符

;设置第一行地址 ;由堆栈取出A寄存器值;写入所要显示的字符 ;在LCD第一行特定位置显示字符 ;A=ACC,DATA所要显示的字符

“ 仅供个人参考

ADD A, #0C0H ;设置第一行地址 LACLL WCOM POP ACC LCALL WDATA RET END

DISPLAY_END:

RS EQU P0.0 ;LCD RC引脚定义 EN EQU P0.1 ;LCD EN WLED EQU P1.0 ;CLR EN LCALL LED_BL LCALL SET_LCD ; LCDMOV A, #’1’ MOV B, #15 LCALL LCDP1 MOV A, #’2’ MOV B, #15 LCALL LCDP2 JMP $ SET_LCD: CLR EN LCALL INIT_LCD LCALL DELAY MOV DPTR,#LMESS1 MOV A,#1 LCALL LCD_PRINT MOV DPTR,#LMESS2 MOV A,#2

LCALL LCD_PRINT RET

INIT_LCD1: MOV A,#28H

LCALL WCOM MOV A,#0EH

LCALL WCOM MOV A,#06H

LCALL WCOM MOV A,#01H

LCALL WCOM RET CLR_LINE1:

不得用于商业用途

引脚定义 工作指示灯引脚定义 ;LCD被禁用 ;LCD闪烁 做显示测试 ;设置所要显示的字符 ;设置所要显示的位置 ;在LCD第一行显示字符 ;设置所要显示的字符 ;设置所要显示的位置 ;在LCD第二行显示字符 ;循环

;LCD初试化并做测试 ;LCD被禁用 ;LCD初试化 ;延时

;指针指到消息第一行 ;显示在第一行

;显示执行消息于LCD第一行 ;指针指到消息第二行 ;显示在第二行 ;显示执行消息于LCD第二行 ;4位I/O初试化 ;双列显示字符使用5×7点阵 ;光标出现不闪烁 ;每次向右移动一位,显示屏不动;清除LCD显示屏 仅供个人参考

MOV A,80H ;清除LCD的第一行,设置第一行字符 LCALL WCOM

MOV R0,#24 ;设置记数值 CL:

MOV A,#’’ ;载入空格到LCD LCALL WDATA ; 输出字符到LCD DJNZ R0,CL ;记数结束 RET LCD_PRINT:

CJNE A,#1,LINE2 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 CJNE A, #0,L1 RET

L1:LCALL WDATA INC DOTR JMP FILL RET

CLR_LINE:MOV R0,#24 C1:MOV A,#’’ LCALL WDATA DJNZ R0,C1 RET

DE: MOV R7,#5 DJNZ R7,$ RET EN1: SET EN LCALL DE

不得用于商业用途

;在LCD第一行或第二行显示字符 ;设置第一行地址 ;设置第一行地址 ;清除LCD该行字符 ;载入空格符到LCD ;输出字符到LCD ;记数结束 ;短暂延时 仅供个人参考

CLR EN LCALL DE RET

INIT_LCD:

MOV P0,#30H ;LCD四位接口指令重置 LCALL EN1 ;RS=0,R/W=0,D4~D7=0011 MOV P0,#30H LCALL EN1 MOV P0,#30H LCALL EN1

MOV P0,#20H ;LCALL EN1 LCALL INIT_LCD1 RET

WCOM:

MOV P0,A CLR RS LCALL EN1 RLC A RLC A RLC A RLC A

MOV P0,A CLR RS ;RS=0LCALL EN1 RET WDATA:

MOV P0, A SETB RS LCALL EN1 RLC A RLC A RLC A RLC A

MOV P0,A SETB RS LCALL EN1 RET

LED_BL:

MOV R4,#4 LE1: CPL WLED MOV R5,#10

LCALL DELAY

不得用于商业用途

启动四位接口指令 ;RS=0,R/W=0,D4~D7=0010 ;LCD指令设置初试化 ;先写入高四位命令 ;RS=0写入命令 ;产生高电平起用脉冲 ;向左移四位 ;先写入低四位命令 写入命令

;产生高电平起用脉冲 ;先写入高四位命令 ;RS=1写入数据 ;产生高电平起用脉冲 ;向左移四位 ;写入低四位命令 ;RS=1写入数据 ;产生高电平起用脉冲;LCD闪动控制程序 仅供个人参考

DJNZ R4, LE1 RET

LEMSS: DB “ IT IS OK”;需要显示的字符消息 DB “ DO YOU WANT GO ON” LCDP1:

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 INIT:

LCALL INIT8279 LCALL A_D_W LCALL A_D_S

;LED显示常数表

LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7' DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F' ;键盘键码表

KEYCODE:DB 30H,31H,32H,33H,34H,35H,36H,37H ;'0,1,2,3,4,5,6,7' DB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FH ;'8,9,A,B,C,D,E,F'

SNG: SET P1.0 LCALL DELAY CLR P1.0 LCALL DELAY RET GREEN:

MOV R3,#10H

AS: MOV DPTR,#8100H MOV A,#0F0H

不得用于商业用途

仅供个人参考

MOVX @DPTR,A MOV R2,#10H LCALL SNG LCALL DELAY MOV DPTR,#8100H MOV A,#0FFH MOVX @DPTR,A MOV R2,#10H LCALL SNG LCALL DELAY LCALL CON_S LCALL CON_W DJNZ R3,AS MOV DPTR,#8100H MOV A,#0F0H MOVX @DPTR,A NOP RET RED:

MOV R3,#10H

ASS: MOV DPTR,#8100H MOV A,#0FH MOVX @DPTR,A MOV R2,#10H LCALL SNG LCALL DELAY MOV DPTR,#8100H MOV A,#0FFH MOVX @DPTR,A MOV R2,#10H LCALL SNG LCALL DELAY LCALL CON_S LCALL CON_W DJNZ R3,ASS MOV DPTR,#8100H MOV A,#0FH MOVX @DPTR,A NOP RET END

不得用于商业用途

仅供个人参考

中南民族大学本科毕业论文专家评阅书 学 院 学生姓名 论文题目 计算机科学学院 李相启 年 级 学 号 2002 02071318 专 业 指导教师 计算机科学与技术 陈勉 基于单片机的温湿度控制系统 请评价论文选题、创新性、该生所具有的科研能力、写作能力及论文不足之处等,并指出是否达到答辩要求和论文评定等级。 温湿度测控是一个应用范围非常广的选题,李相启同学以花卉种植温室的温湿度作测控 对象,介绍了其设计的测控方案。从原理看是可行的,但从论文介绍的控制方法和功能看, 系统作用偏简单,没有充分利用计算机的计算和判断功能,反映出该同学做了一定的工作。 但深入了解被测控对象的特性和工艺的前期准备工作不足,也反映出用计算机来完成测控任 务的技术尚未很好掌握。 论文的结构较合理,层次也基本清晰,文字表达能力尚可,但如何组织科技论文的用词 用句还有待进一步学习。 论文符合计算机科学与技术专业本科学生水平要求。 论文成绩评定:中等。 评阅专家签名: 冯枚 ,工作单位: 湖北省自动化研究所 , 专家职称: 高级工程师 2006年 6 月 8 日 不得用于商业用途

仅供个人参考

中南民族大学本科毕业论文(设计)量化评分标准

学生姓名: 李相启 指导教师: 陈勉 年级和专业:2002级计算机科学与技术

指标 最高分 评分要素 选题来自生产实践第一线或学科前沿, 选题 10 有重要的理论意义和实用价值,富有创 6 新性 有较完善的文献综述,能全面地反映该 文献综述 论文体现的技术水平与实际能力 论文体现作者研究成果与专业知识 写作与总结提炼能力 20 对研究的问题能较深刻分析或者有独到 见解,成果突出,反映出作者很好地掌 14 握了有关基础理论与专业知识 论文结构严谨,逻辑严密,论述层次清 30 晰,语言流畅,表达准确,重点突出, 24 论文完全符合规范化要求,书写工整或用计算机打印成文 答辩情况 10 能简明扼要地阐述论文的主要内容,能 6 准确流利地回答各种问题 总 分 评分 10 学科及相关领域的发展状况,归纳总结 7 正确 设计合理,理论分析与计算正确,实验 20 数据正确,有较强的实际动手能力 15 72 注:

① 本评分标准适用于自然科学类各专业;

② 总分满分为100分,成绩参考标准为:优秀(100>X≥90);良好(90>X≥80);中等(80>X≥70);及格(70>X≥60);不及格(X<60);

不得用于商业用途

仅供个人参考

中南民族大学本科毕业论文答辩情况记载表

论文题目: 基于单片机的温湿度控制系统 学院、专业: 计算机科学学院计算机科学与技术 学生姓名: 李相启 指导教师: 陈勉 答辩时间: 2006.6.2 记录: 倪金辉、颜乐鸣

姓名 答 辩 小 组 成 员 陈勉 苗祖英 唐玉玲 杨振常 1、 陈问:选题的意义? 答:可以用于温室的植被花卉栽培和大棚的蔬菜种植,采用本系统可以大大减小资源。科学控制也可以减小在操作中的失误。 评:基本正确 专业技术职务或职称 副教授 副教授 讲师 高级工程师 签字 答 辩 问 题 和 评 语 2 、苗问:选温度中间值的意义? 答:选中间值作为控制参数,可以防止设备的频繁启停的问题,如现在实时温度低于下限温度,则需要升高温度,由于没有控制参数的限制,所以会一直处于升温状态直到高于上限温度的时候便开始降温,如此以来就导致设备的频繁启停,导致设备的使用寿命降低,而且也没有实际意义。 评:基本正确 2、 唐问:为什么要选择温度的一定区间? 答:防止不能正好到中间值的温度,这样一样会以中间数值问标准导致频繁启停,所以就选择一定的区间,这样可以很好的保护芯片。 评:基本正确 指 导 教 师 意 见 及 成 绩 李相启同学答辩表现较好,能较清楚的介绍所做毕业设计内容,但较不够突出,回答问题基本正确,略显紧张而使反应便慢。 答辩成绩: 中等 指导教师签名: 陈勉 2006年6 月 8 日 不得用于商业用途

仅供个人参考

中南民族大学学生毕业论文评定表

学 院 学生姓名 论文题目 计算机科学学院 李相启 年 级 学 号 2002 02071318 专 业 指导教师 计算机科学与技术 陈勉 基于单片机的温湿度控制系统 当前部分地区园林花卉、大棚蔬菜种植停留在手工操作阶段,工作效率低下,很难适应当前种植业的发展。针对这些问题,设计了基于单片机的温湿度控制系统。 整个系统通过键盘8279给定温湿度的上下限并LED显示,系统自动存入温湿度上下限的中间值并LED和LCD显示,ADC0809对实时温度度采样并LED 和LCD显示,将中间值作为控制参数,采样信号与温湿度上下限比较以确定采取何种控制手段。该论文主要包括 键识别、采样、 控制、显示、报警这几个重要的模快。 论 文 内 容 提 要 每个模块的功能如下: 1 键识别模快:对8279键盘输入数据识别并设置键以用来修正错误。 2 采样模块:在保证分辨率的前提下,控制温湿度的精度达到1%。 3 控制模块:将实时的温湿度与给定的温湿度的上下限比较以确定采取何种控制手段。 4 显示模块:LED先显示给定的上下限温湿度,后显示实时的温湿度和给定的中间温湿度, LCD液晶用于操作提示,并且也显示实时的温湿度和给定的中间温湿度。 5报警模块:越限声光报警并且双色二极管提示目前系统处于什么状态。

不得用于商业用途

仅供个人参考 李相启同学所做温室的温湿度测控项目,从原理上实现了基本功能,尤其是主要的程 序均已经过离线调试,此项工作量是较大的。说明该同学有一定的单片机开发能力。但 由于前期调研工作不够,对被测控对象没有做深入研究,控制方案较简单,实用价值也 因此而打折扣,系统也未硬件实现。 论文结构较合理,资料整理能力也较强,格式较规范。 论文符合计算机科学与技术专业本科学生水平要求。 指导教师签名: 陈勉 2006年6 月8 日 李相启同学答辩过程较为顺利,叙述较为清楚,但略显紧张,回答问题基本正确,反应一般。 组长签名: 苗祖英 2006年6 月8 日 中等 学院公章 指 导 教 师 评 语 答 辩 小 组 评 价 意 见 评 分 学 院 审 定 意 见 不得用于商业用途

仅供个人参考

中南民族大学毕业论文(设计)过程检查情况记录 检查项目: 方案确立 完成情况:完成 第 1 次 指导答疑内容: 软硬件支持,芯片选择。 指导教师(签名):陈勉 学生签名:李相启 2006 年 3 月 20 日 检查项目:硬件 完成情况:完成 第 2 次 指导答疑内容: 芯片的功能及其使用的方法。 指导教师(签名):陈勉 学生签名:李相启 2006 年 3月29 日 检查项目:软件调试 完成情况:完成 第 3 次 指导答疑内容: 熟悉软件的工作环境和使用方法。 指导教师(签名):陈勉 学生签名:李相启 2006 年 4月10 日 检查项目:论文初稿 完成情况:完成 第 指导答疑内容: 4 论文的格式规范,内容调整。 次 指导教师(签名):陈勉 学生签名:李相启 2006 年 4 月30 日 检查项目: 论文 完成情况:完成 第 5 次 指导答疑内容: 论文的语言规范及其条理性。 指导教师(签名):陈勉 学生签名:李相启 2006 年 5月 15 日

不得用于商业用途

仅供个人参考

封底

不得用于商业用途

仅供个人参考

仅供个人用于学习、研究;不得用于商业用途。

For personal use only in study and research; not for commercial use.

Nur für den persönlichen für Studien, Forschung, zu kommerziellen Zwecken verwendet werden. Pour l 'étude et la recherche uniquement à des fins personnelles; pas à des fins commerciales. т

о

л

ь

к

о

для людей, которые используются для

обучения, исследований и не должны использоваться в коммерческих целях.

以下无正文

不得用于商业用途

因篇幅问题不能全部显示,请点此查看更多更全内容

Top