第一章 绪 论
课题背景及意义
在我国农业还处于传统阶段因此生产效率低、品质低且需人们付出的体力劳动量
大,要想提高劳动生产率,提高农业产品的质量和产量,把人民从繁重的体力劳动中
解放出来,就需要将传统的农业生产与现代的科学技术相结合,这就需要环境控制。
环境控制工程能够大大的缩减农作物的生长周期,提高农作物的质量和产量,减少所
需的人力,提高劳动生产率。
农业大棚中农作物的生长受诸多因素的影响,比如空气温度、空气湿度、光照强
度、土壤的湿度、空气中二氧化碳的浓度等等,目前我国农业大棚的管理主要是凭借
人工经验,这样就使农业生产的效率得不到提高,严重的阻碍了农业生产的发展。因
此,这就需要我们将传统的农业生产技术与先进的科技技术相结合,科学的恰当的控
制影响农作物生产的各种环境因素,借用计算机来控制仪器对农业大棚内的环境进行
控制,从而使大棚内的环境达到农作物生长所需的最佳条件,提高农作物的质量和产
量。
在我国对农业大棚的智能控制技术的研究还处发展阶段,特别是在将传统农业与
现代的自动控制技术相结合这一方面的研究成果较少,因此研究一种成本低、操作简
单、持久耐用的大棚环境智能控制系统对现在和将来都具有十分重要的意义。
实现对大棚内环境的自动控制有以下社会和经济意义:
(1)实现了农业生产管理的准确化。借用环境控制器对大棚内的环境进行实时
检测,这与传统的简单的测量技术相比准确度高、可靠性高,工作人员借用这些实时
准确的了解大棚内环境的状况,并且对相关的设备做适当的调节,这样就避免了由传
统的检测技术所带来的检测误差、检测滞后等问题。
(2)实现了农业大棚土壤灌溉的自动化。利用湿度控制器,通过固态继电器对
土壤喷灌电磁阀进行控制,这样就避免了由传统的灌溉技术所带来的水资源浪费、所
需劳动力大等问题,实现了对土壤灌溉的自动化。
(3)实现了对农业生产管理的科学化。可以组建一个管理操作站,对几十个甚
至上百个农业大棚进行集中管理,这样就可以对农业生产进行科学的管理和指导。从
而提高农作物的质量和产量。
(4)使人们从传统的繁重的体力劳动中解放出来,人们有更多的时间和精力从
事其他的劳动,提高了劳动生产率。控制系统具有自动控制的功能,与传统的农业生
产相比大大减轻了劳动强度。
大棚环境控制技术的三个发展阶段
从国内外发展状况来看,可分为:
(1)传统的手动阶段。可是最初阶段,大棚内的劳动者既是大棚内环境的传感
器又是控制器,劳动者通过对农作物生长状况的观察,对室内环境的观察,凭借以往
的经验做出相应的判断,对大棚内的环境进行人工调节。采用这种生产方式,农业生
产率低且农作物的质量得不到提高。
(2)现代自动控制阶段。计算机的普遍使用使大棚内环境的自动控制成为可能,
计算机技术与现代控制理论相结合,自动调节和控制大棚内影响农作物生长的各种环
境因素,达到作物生长所需的最佳值。
(3)现代智能化控制阶段。智能化控制技术是自动控制技术与农业专家系统相
结合,通过传感器对大棚内的影响作物生长的各种环境因素进行采集,结合农业专家
系统的数据,做出相应的处理,进行自动的调节,实现农业生产的智能化控制。
本设计研究的主要内容
本设计主要是对农业大棚内空气的温度、土壤的湿度进行采集、显示,与此同时
给出越线报警,同时与 PC 机相连,控制执行机构做出相应的动作,实现对温湿度的
自动控制。
第二章 系统总体设计
系统功能设计
设计思想
(1)单片机核心处理。
(2)设置温湿度的上下限,为了尽量减少所用的 I/O 端口采用独立式按键设置的方
式。
(3)测量温度使用 DS18B20,直接输出数字信号,测量湿度时使用电阻式湿度传感
器,输出的是模拟信号。
(4)显示温湿度时,考虑到成本问题,采用数码管。
(5)温度高时,步进电机正转开窗通风,达到要求时步进电机反转,关闭天窗。
(6)温度低时,固态继电器导通,加热丝开始加热,达到要求时固态继电器截至,
加热丝停止加热。
(7)土壤湿度低时,步进电机正传,打开阀门进行喷灌,达到要求时步进电机反转,
关闭阀门。
(8)温湿度超限时,蜂鸣器报警。
本设计要实现的功能
(1)实现对大棚内空气温度、土壤湿度进行实时采集,且测量空间内多点的温湿度,
利用 LED 数码管显示。
(2)当大棚内的温湿度超限时,实现及时报警。
(3)与上位机相连,控制执行机构针对大棚内当前的情况及时采取措施,使其达到
作物生长的最佳环境。
本设计要达到的技术指标
(1)测温范围:0℃~50℃
(2)测温精度: ±℃
(3)测湿范围:0~100%RH
(4)测湿精度:±%RH
系统结构设计
本设计选用了最常见的硬件和软件,实现了设计的合理性和经济性,能够简单的
完成硬件的连接和生产。本设计以单片机 AT89S52 为核心,以 DS18B20 数字温度传
感器、电阻式湿度传感器作为测量元件进行数据采集,LED 数码管显示设定数值和
测量数值,当采集数据超出预设值时,有蜂鸣器实时报警,同时单片机控制执行机构
做出相应的处理。温度传感器 DS18B20 输出的是数字信号,可直与单片机相连,电
阻式湿度传感器输出的是模拟信号,经 ADC0809 转换为数字信号后送单片机。同时
单片机与上位机通过接口芯片 MAX232 相连,实现通信。
本系统由温度与湿度的采集电路、实时显示电路、报警电路、功能键盘、数据通
讯电路组成,选用的主要器件有:温度传感器 DS18B20、电阻式湿度传感器、AT89S52
单片机、A/D 转换器 ADC0809、8255、数码管显示模块、ULN2003、固态继电器、
MAX232 电平转换芯片等。图 2-1 为该部分的结构。
图 2-1 系统硬件框图
第三章 硬件设计
AT89S52 单片机
本设计采用 AT89S52 单片机,AT89S52 是一种 8 位微处理器,它的内存非常大,
上位 PC 机
A/D
转换器
湿度传感器 1
湿度传感器 2
湿度传感器 3
接 口 芯 片
MAX232
单片机
报警电路
温湿度显示
键盘
温度传感器 2
温度传感器 2
温度传感器 2
执行机构
为 8K,且具有低功耗、高性能等优点,同时与 MCS-51 在指令和引脚方面兼容,不
仅支持传统的编程方法,还支持 ISP 在系统编程技术,AT89S52 芯片的内部还集成了
看门狗定时器,使用时更加方便,因此在各个方面得到了广泛的应用。
图 3-1 AT89S52 单片机的内部结构方框图
AT89S52 主要工作特性:
℃字长为 8 位,与 51 系列产品在指令和引脚方面兼容。
℃可实现多达 10 万次的擦写次数,因为其内部具有内存为 2KB 的 EEPROM 程序
存储器。
℃具有片内数据存储器 RAM,内存为 256 字节。
℃可编程的 I/O 口线有 32 个。
℃具有全双工串行通信口,并且可以编程。
℃具有两种工作模式,分别为低功耗“空闲”和“掉电”。
℃工作电压为 ~。
AT89S52 的内部结构
该芯片的结构:
(1) 中央处理器
(2) 存储器
(3) I/O 端口
(4) 定时器
(5) 计数器
(6) 中断系统
(7) 时钟电路
中央处理器是单片机的核心,主要由运算器、控制器和布尔处理器组成,以
字节为单位对数据进行处理。存储器有片内存储器和片外存储器之分,同时片内
和片外存储器又有 ROM 和 RAM 之分。AT89S52 有 P0~P3 四个端口,可并行
的输入输出数据,这四个端口都具有双向数据传输的功能,且 P1 口和 P3 口具有
第二功能,P0 口可以传送数据的低 8 位地址,传送地址的高 8 位时可用高 8 位,
图 3-1 为该芯片内部结构。
AT89S52 的引脚
AT89S52 采用双列直插式封装,有 4 个 I/O 端口,共 32 根,6 条控制线,2 根电
源线,P0P3 作为准双向口使用,输入数据时,需先向输出锁存器写入高电平。当接
片外存储器时,P0 口可作为低 8 位地址线,P2 口可作为高 8 位地址线。AT89S52 的
40 根引脚如图 3-2 所示。
图 3-2 AT89S52 引脚图
(1)P0 口:8 位双向数据通信口,当访问外部存储器时可以用来存储低 8 位地
址。作为通用 I/O 口用时,要外接上拉电阻;访问外部存储器时,P0 口具有内部上
拉电阻,因此不必再接上拉电阻。
(2)P1 口:8 位双向数据通信口,具有内部上拉电阻,作为通用的 I/O 口使用
时无需接上拉电阻,当进行写操作输入高电平时端口内部的上拉电阻把端口拉高,且
具有第二功能如表 3-1 所示。
表3-1 P1口具有的第二功能
(3)P2 口:8 位双向数据通信口,具有内部上拉电阻,作为通用的 I/O 口使用
时无需接上拉电阻,当进行写操作输入高电平时端口内部的上拉电阻把端口拉高,当
访问外部存储器时可以用来存储高 8 位地址。
(4)P3 口:8 位双向数据通信口,具有内部上拉电阻,作为通用的 I/O 口使用
时无需接上拉电阻,当进行写操作输入高电平时端口内部的上拉电阻把端口拉高,且
具有第二功能如表 3-2 所示。
表3-2 P3口具有的第二功能
(5)VCC:接+5V 电源。
(6)GND:接地。
(7)RST:复位端,使用单片机时,首先要复位,此引脚高电平时工作,使其工
作的前提是保持 2 个机器周期以上的高电平。
(8)ALE:地址锁存允许线,此引脚在高电平时工作,其下降沿用于把片外存储
器的低 8 位和高 8 位锁存。
(9)PSEN:片外 ROM 选通线,要使用时使其为低电平,通常是当用到指令
MOVC 时使用。
(10)EA/VPP:允许访问片外存储器,低电平时有效,此时允许访问片外 ROM,
高电平时,只允许访问片内 ROM。
(11)XTAL1、XTAL2:外接晶振,XTAL1 作为为输入端使用,XTAL2 作为为
输出端使用。
AT89S52 的时钟电路
AT89S52 工作是靠脉冲,要想产生脉冲可以采用两种方式,一种是单片机自己产
生,脉冲源来自其内部的振荡电路,它可以产生时钟信号,当然前提是借用晶振;另
一种是借用外部产生的脉冲来工作,此时的时钟信号由外部来引入。本设计采用内部
方式,图 3-3 为该部分的电路,XTAL1 作为输入端使用,XTAL2 作为输出端使用。
图 3-3 时钟电路 图 3-4 复位电路
利用了来自单片机芯片内部的振荡器,它可产生自激震荡,并连同两边两个电容
一起工作,震荡后产生脉冲,为单片机提供用来工作的时钟脉冲。外接晶振时,C1、
C2 的值通常选择为 30pF 左右,C1、C2 对时钟频率有微调作用,晶振的频率为 12MHZ。
AT89S52 的复位电路
本设计采用上电复位与手动复位电路,图 3-4 为 AT89S52 的复位电路。要想复位
可靠,必须使 RST 引脚保持一定时间以上的高电平,此时机按机器周期来算就可以。
AT24C02 存储单元
I2C 总线
图 3-5 为该部分的电路,采用 AT24C02 的目的是当电源掉电时储存已设置测量
的数据,避免由重复设置和测量所带来的困扰,从而间接的缩短了耕作周期,提高了
工作效率。
图 3-5 总线的组成
图 3-6 为该部分电路采用 AT24C02 的目的是当电源掉电时储存已设置测量的数
据,避免由重复设置和测量所带来的困扰,从而间接的缩短了耕作周期,提高了工作
效率。,
图 3-6 总线的时序
AT24C02 芯片介绍
图 3-7 为该部分电路,采用 AT24C02 的目的是当电源掉电时储存已设置测量的数
据,避免由重复设置和测量所带来的困扰,从而间接的缩短了耕作周期,提高了工作
效率。AT24C02 是利用串行通信的方式和单片机进行通信, 该芯片总共有 8 个引脚。
(1)1A、1B、1Y 均为地址引脚
图 3-7 AT24C02 芯片引脚
(2)SDA:串行数据地址引脚。
(3)SCL:串行时钟引脚。
(4)WP :与+5V 电源相连。
(5)Vcc:与+5V 电源相连。
(6)GND:与地相连。
图 3-7 为该部分电路,SCL、 SDA 与分别与 AT89S52 的两个通用的 I/O 口相接。
图中两上拉电阻的作用是减少 AT24C02 的静态损耗,AT24C02 采用串行通信的方式
传送数据,地址线和数据线是共用的。
图 3-8 AT24C02 和 AT89S51 接口电路
电阻式温度传感器的设计
本设计采用 DS18B20 温度传感器进行数据采集,其优点是所测量的数据为数字
信号,可以直接传送给单片机。且数据的传送是双向的,只需一根 AT89S52 的 I/O
口线便可与多个 DS18B20 进行通信,因为每个 DS18B20 内部有一个 64 位的 ROM,
其中存有各个器件自身的序列号,作为器件独有的 ID 号码。
DS18B20 的性能特点如下:
℃测温范围广,精度高,测量范围为-55℃~+125℃,测量精度为±℃。
℃转换精度:通过可编程确定转换精度的位数,一般情况下为 9~12 位二进制数,本
设计采用 9 位。
℃测温分辨率:9 位精度为 ℃,10 位精度为 ℃,11 位精度为 ℃,12 位精
度为 ℃。
℃仅需单片机的一个 I/O 端口与其通信。
℃数据线和电源线可共用,电压范围为 ~。
℃供电方式有两种,寄生电源供电和外部电源供电。
DS18B20 的内部结构
图 3-9 为该部分电路。
图3-9 DS18B20D内部结构框图
DS18B20 测温原理
测温原理如图 3-10 所示,图中低温振荡器的振荡频率受温度的影响很小,高温
振荡器的振荡频率受温度的影响大。低温振荡器产生一个固定的时钟脉冲信号 1,高
温振荡器产生一个随温度变化的时钟脉冲信号 2,信号 1 在信号 2 的门周期内计数,
若信号 1 在信号 2 的周期内完成计数,则温度高于预设值,此时温度寄存器加 1,再
重复该过程,直到信号 2 门周期截止。
图 3-10 测温原理图
本设计采用转换的位数为 9,精度为 ℃,温度和数字量的关系如表 。
表 3-3 空气的温度和二进制数的关系
变量 二进制码 十六进制码
+125℃ 0000 0000 1111 1010 00FAH
+85℃ 0000 0101 0101 0000 0550H
+25℃ 0000 0000 0011 0010 0032H
+1/2℃ 0000 0000 0000 0001 0001H
0℃ 0000 0000 0000 0000 0000H
-1/2℃ 1111 1111 1111 1111 FFFFH
-25℃ 1111 1111 1100 1110 FFCEH
-55℃ 1111 1111 1001 0010 FF92H
DS18B20 的引脚
DS18B20 的引脚如图 3-11 所示
本设
图 3-11 DS18B20 实物图
(1)GND:接地。
(2)VDD:本设计接电源。
(3)DQ:数据输入输出端口,采用寄生电源供电时为设备提供电源。
DS18B20 与 AT89S52 的连接
图 3-12 外部电源供电
图 3-2 为该部分电路,可以看出本设计采用了外部电源,因为寄生供电不能提
供所需的能量,当采用寄生电源供电时 VDD 引脚必须接地,当连接多个 DS18B20 时,
一个上拉电阻不能提供足够的能量,因此本设计采用外部电源供电的方式。
土壤湿度传感器的设计
常用的湿度传感器有两种,一种是电容式,一种是电阻式。本设计选用电阻式,
其工作原理是当湿感材料吸水后阻抗发生变化,从而制成湿感元件。
土壤是由固体、液体和气体三部分组成的,物理学中的电压、电流定律同样也适
用于土壤,可以把土壤中的气体和固体充当介质,而水不纯净可以导电。两电极直接
与土壤接触,可以及时直接测出要测量的值,本设计选用电阻式,其工作原理是当湿
感材料吸水后阻抗发生变化,从而制成湿感元件。
图 3-13 土壤湿度传感器的结构
经过调查得知土壤含水量与电压的关系如表 3-4 所示
表 3-4 土壤含湿度与模拟量的关系
实验号 平均含水量 电压
1
2
3
4
5
6
7
8
9
10
11
12
13
14
土壤湿度传感器结构的设计
主要由两根探针组成,探针分为两种,一种是圆柱状,一种是板片状。相对于圆
柱状板片状的表面积较大,因此当插入土壤中时容易变形,因此本设计采用圆柱状探
针结构。经调查本设计将探针的参数设置为:5mm 的直径,15mm 的探针间距,150mm
的间距。如图 3-13 所示。1.上外壳 2.下外壳 3.防水层 4.探针
土壤湿度传感器材料的选择
制作探针的材料有不锈钢、铜合金、石墨等,不锈钢易腐蚀,铜合金的耐腐蚀性
优于不锈钢,石墨的耐腐蚀性较好,但是强度差且导电性无法与金属媲美,因此本设
计采用铜合金作为探针的电极材料。
变送器的设计
ADC0809 对输入信号有严格的限制,因此当输入的信号太小时需进行放大;模拟
量在输入的过程中需保持不变,因此需加采样保持环节;各个通道之间的信号可能会
相互干扰,因此需加滤波电路。变送器的电路原理图如图 3-14 所示。
图 3-14 土壤湿度传感器变送器电路
A/D 转换电路
湿度传感器输出的是模拟信号,而单片机接受的是数字量,因此必须转换成数字
量后才能传送。主要由两根探针组成,探针分为两种,一种是圆柱状,一种是板片状。
相对于圆柱状板片状的表面积较大,因此当插入土壤中时容易变形,因此本设计采用
圆柱状探针结构。即把采集到的湿度信息转换为 AT89S52 可识别的数字信息,A/D
转换种类很多,最为常用的是逐次逼近式 A/D 转换器,本设计采用 ADC0809,测得
的模拟信号输入 ADC0809 的模拟信号输入端,经转换后输入单片机,其时钟频率由
单片机提供。
ADC0809 主要特性
(1)该芯片的分辨率较高,为 8 位。
(2)可以用单片机来直接控制该芯片,因为该芯片具有控制端
(3)转换时间快,为 100us 左右
(4)接+5V 电源
(5)模拟输入电压是单极性的,可在 0~+5V 范围内连续变化
(6)可以在-40~+85℃范围内进行测量
ADC0809 内部结构
该芯片的结构:
(1) 模拟开关(8 路)
(2) 地址锁存与译码器
(3) 比较器
(4) 256 电阻阶梯
(5) 树状开关
(6) 逐次逼近式寄存器 SAR
(7) 控制电路
(8) 三态输出锁存器
如图 3-15 所示。
℃当输入模拟信号时,模拟信号输入口,本设计仅用了 3 个口。
℃用到此芯片时令 ALE 线为高电平,此引脚锁存地址信息,该芯片能够自己确定到
具体的地址。
℃256 电阻阶梯和树状开关用来分压
℃逐次逼近寄存器 SAR 用来存放转换过程中的暂态数字量的转换后的数字量
图 3-15 ADC0809 内部结构
ADC0809 引脚功能
ADC080
图 3-16 ADC0809 的引脚
(1) IN0~IN7:输入端。
(2) ALE:地址锁存允许线。
(3) ADDA、ADDB 和 ADDC 为地址输入端,表 3-5 显示了该端口的功能。
(4) START:启动。
(5) EOC:转换结束。
(6) CLOCK:时钟信号。
(7) OE:允许输出线。
(8) VCC:接+5V 电源
(9) GND:接地线
(10) VREF(+):接 VCC
(11) VREF(-):接地或负电源
ADC0809 使用时的注意事项
(1)输入的信号必须是单极性的,且对电压有一定的要求必须为 0~+5V;模拟
量在输入的过程中需保持不变,否则的话需加采样保持环节;各个通道之间的信号可
能会相互干扰,需加滤波电路。
表 3-5 确定具体路数关系表
被选模拟电压路数 ADDC ADDB ADDA
IN0 0 0 0
IN1 0 0 1
IN2 0 1 0
IN3 0 1 1
IN4 1 0 0
IN5 1 0 1
IN6 1 1 0
IN7 1 1 1
( 2 ) ADC0809 内 部 没 有 时 钟 电 路 , 因 此 必 须 由 外 界 来 提 供 , 频 率 为
500kHZ~640kHZ 的时钟信号。一般有两种方式,分别为借助外部晶振和借助单片机
的时钟信号。一般情况下选择第二种方式,当单片机的 ALE 引脚不访问片外存储器
时,可为 ADC0809 提供时钟信号,但是 AT89S52 的 ALE 引脚输出的时钟信号为
2MHZ,因此需接一个 74LS74,经 74LS74 的 2 个 D 触发器进行四分频之后才能获得
所需的时钟信号。
74LS74 芯片介绍
D 触发器是广泛应用的一种时序电路,它是构成多种移位寄存器的基本单元电路,
74LS74 是最常用的双 D 触发器,引脚如图 3-17 所示。
图 3-17 74LS74 引脚
CP——时钟输入端。
D——数据输入端。
Q、Q——数据输出端。
RD——直接复位端。
SD——直接置位端。
74LS74 是双 D 触发器,D 触发器的基本功能之一是构成分频电路,本设计正是
利用此功能为 ADC0809 提供时钟信号。
8255A 芯片
芯片的组成
8255A由数据端口、组控制电路、数据缓冲器、读写控制逻辑四部分电路组成。
(1)数据端口:A、B和C。
(2)控制电路:用来决定8255A的工作方式。
(3)数据总线缓冲器:不仅可以传送数据字,还可以传送状态字,更可以传送控
制字。
(4)读写和控制逻辑:控制8255A的读写
表3-6 控制表
CS A1A0 RD WR 端口地址 端口 功能
0 00 0 1 C0H A口 读A口
0 00 1 0 C0H A口 写A口
0 01 0 1 C1H B口 读B口
0 01 1 0 C1H B口 写B口
0 10 0 1 C2H C口 读C口
0 10 1 0 C2H C口 写C口
0 11 1 0 C3H 控制口 写控制字
1 ×× × × × × 总线高阻
控制信号功能
(1)RESET:复位线。
(2)CS:片选线。
(3)WR: 写信号。
(4)RD 读信号。
表3-6显示了对该芯片控制的详细的信息。
图 3-18 8255A 的方式控制字
8255A 的控制字和状态字
8255A的控制字有两种,方式控制字和C口单一置复位控制字,本设计采用方
式控制字,其格式如图3-18所示,。
键盘接口
独立式按键是指直接用 I/O 口线构成的单个按键电路。每个独立式按键单独占用
一根 I/O 口线,每根 I/O 口线的工作状态不会影响其他 I/O 口线的工作状态,这是一
种简单的键盘结构。
图 3-19 键盘的结构
独立式按键键盘结构
图 3-19 为该部分的电路,本设计采用了独立式按键,当有键按下时,端口为 0,
无键按下时为 1。
键盘的方案选择
本设计设置了 5 个按键,其功能分别为:K1 为功能键,K2 为温湿度上调键,K3
为温湿度下调键,K4 为静音键。K1 键的具体功能如下
0- 显示第一个位置的温湿度;
1- 显示第二个位置的温湿度;
2- 显示第三个位置的温湿度;
3- 对第一个位置的温度进行调节;
4- 对第二个位置的温度进行调节;
5- 对第三个位置的温度进行调节;
6- 对第一个位置的湿度进行调节;
7- 对第二个位置的湿度进行调节;
8- 对第三个位置的湿度进行调节。
注意事项
在按键电路的设计中关键部分是按键的去抖问题,一般用两种方式用来去抖,一
种是硬件去抖,一种是软件去抖,本设计采用软件去抖。其方法是执行一个 10ms 左
右的延时子程序。
显示器接口
在单片机应用系统中,常用的显示器主要有 LED 数码管显示器和 LCD 模块。两
者相比,LED 数码管价格低廉,结构简单,且 LED 显示更加清晰,因此,本设计选
择 LED 数码管。
LED 显示原理
LED 显示器是由发光二极管组成,用来显示特定字段的显示器。LED 导通时一般
有 2V 的正向电压,10mA 电流,而电源为 5V,故需串联 300 欧的限流电阻 R,待显
示的数字是非压缩的 BCD 码,必须先经过译码,转换成字型码才能显示,转换的方
式有软件译码和硬件译码两种,单片机中常用软件译码,这种方法硬件电路少,灵活
性好。
LED 的每条线段可以是一个或几个发光二极管,其结构图如图 3-20 所示。LED
数码管根据其内部 LED 的连接方法不同,有共阴极和共阳极两种接法,本设计选用
共阳极如图 3-21 所示。在共阴极接法中,当某一段发光二极管输入为高电平时,该
发光二极管亮,反之则熄灭。而在共阳极接法中,刚好与共阴极接法相反。
图 3-20 外形图 图 3-21 共阴极
LED 显示器驱动方式
LED 显示器显示接口按驱动方式可分为静态显示和动态显示两种显示方式,静态
显示驱动就是数码管每段字符连续通电,每段字符连续发光,动态显示驱动则是利用
矩阵扫描方式间断向所需显示的字符笔段轮流施加电压。静态显示驱动只需考虑段选
码的问题,而动态驱动除此之外还要考虑位选码的问题。
静态驱动最大的优点是 CPU 响应的速度快,除此之外静态驱动的管理也非常简
单,LED 显示的亮度高,且工作稳定;其缺点每个 LED 都需加段码驱动,因此相比
动态显示驱动而言需占用更多的硬件电路。
动态显示驱动方式最大的优点是所需硬件电路少,因此硬件成本相对较低;其缺
点是在显示的过程中需要不断刷新,若采用软件扫描的方式则需占用较多 CPU 的时
间,若采用硬件扫描的方式,则会增加硬件成本,而且当 LED 显示数位较多时,显
示亮度会降低。
数据输入接口方式
LED 显示器显示接口按 CPU 向显示器接口传送数据的方式则可分为并行传送和
串行传送两种传送方式。
并行传送接口中传送显示数据时以并行方式进行,它的传送速度快,但占用 I/O
口接口多。
串行传送在传送显示数据时以串行方式进行,优点是占用 I/O 口接口少,接线简
单,缺点是传送速度慢。
图 3-22 LED 数码管静态显示接口电路
LED 方案的选择
整个设计单元有位置(1)位、温度(2 位)、湿度(2)位显示输出,共需要 5 个
数码管。为了节省单片机的端口数,同时考虑到 CPU 响应速度的问题,本设计选用
74LS164 驱动数码管采用串行传送的方式,静态显示。
本设计采用的是共阳极接法,5 个数码管的公共端接+5V 电源,可以用 74LS164
驱动 LED 数码管。要显示某字段,首先要把这个字符转换为相应的字形码,然后再
通过串行口发送到 164,则相应的移位寄存器输出低电平,驱动 LED 数码管显示。图
3-22 为该部分电路。
执行机构电路
当温湿度超限时,执行机构采取相应的措施,调整温湿度,使其在预定范围内。
温度低时,加热丝开始加热,使温度升高;温度高时,打开天窗,使温度降低;湿
度低时,实施喷灌,增加土壤湿度。
ULN2003 芯片
ULN2003 芯片的输出电流为 200mA,可以用来直接驱动步进电机、固态继电器
和低压灯泡。
继电器输出接口技术
固态继电器主要有两种分别为交流型、直流型,交流型以双向晶体管做开关元
件,直流型以功率晶体管做开关元件。
固态继电器 SSR 是一种无触点的通断电子开关,它是利用开关三极管、双向可
控硅等半导体器件的开关特性来工作的,工作时无触点、无火花地接通和断开电路。
单向 SSR 为四端有源器件,两个端子为输入控制端,另外两个为输出受控端,当有
信号输入时主回路导通,无信号输入时主回路断开。它既有隔离的作用,又有放大
驱动的作用,可以用来驱动大功率开关式执行机构。固态继电器的主要性能如下:
(1)驱动电流: 10mA;
(2)工作时无触点;
(3)交流型电网电压为 110~380V,直流型负载电压为 3~50V
(4)输入与输出端可以承受 以上的高压
本设计采用交流型继电器来驱动执行机构,本设计选用 HS316Z 型,其参数如下:
(1)工作电压:DC4~8
(2)输入电流:>10mA
(3)输出电流:16A
(4)负载电压:AC 160~430V
上位机
串行口 UART 的结构与控制
AT89S52 中的串行通信口可用作通用异步收发器接口、同步移位寄存器接口和多
机串行通信接口。
串行口的控制
AT89S52 使用时,首先要初始化。
串行口的工作方式
表 3-7 串行口工作方式
SM0 SM1 工作方式 功能描述
0 0 方式 0 8-bit 同步移位寄存器
0 1 方式 1 10-bitUART
1 0 方式 2 11-bitUART
1 1 方式 3 11-bitUART
SM0、SM1 决定工作方式,如表 3-7 所示,可以看出共有 4 种方式。因为通常
情况下选择 1、2、3 方式,但方式 1 更普遍,本设计采用方式 1。
表 3-8 DB-9 型连接器的信号和引脚分配表
DB-9 引脚 信号 功能说明
1 DCD 数据载波检测
2 RXD 接收数据
3 TXD 发送数据
4 DTR 数据终端准备
5 GND 信号地
6 DSR 数据设备准备好
7 RTS 请求发送
8 CTS 清除发送
9 RI 振铃提示
RS-232C 总线
RS-232C 总线标准规定电压范围为-3~-15V 时,控制线上的信号无效,数据线输
出“1”;电压范围为+3~+15 V 时,控制线上的信号有效,数据线输出“0”。RS-232C
与 TTL 之间电平的转换要通过专用集成电路芯片 MAX232 来完成,因为 TTL 是以
高低电平表示逻辑状态的。
RS-232C 未定义连接器的物理特性,因此各种类型的连接器都可用,但 DB-9 型
连接器最为广泛,因为很多设备只用了很少的引脚,为了节省资源和空间而选择
DB-9 型连接器。
DB-9 型连接器不支持 20mA 电流环接口,且只提供异步通信 9 个信号。
DB-9 型连接器的信号和引脚分配如表 3-8 所示
MAX232 引脚图及引脚说明
MAX232 的引脚图如图 3-23。
MAX232 内部结构;
(1) 电荷泵电路
(2) 数据转换通道
(3) 供电。
图 3-23 MAX232 引脚图
(1)电荷泵电路由 1、2、3、4、5、6 脚和四只电容构成。该部分可以产生计
算机所需的电平。因为计算机电平与单片机电平不匹配,其中计算机的为负逻辑电
平,高电平为-12V,低电平为+12V。
(2)数据转换通道由 7、8、9、10、11、12、13、14 脚构成两个数据通道。
其中 13 脚(R1 IN)、12 脚(R1 OUT)、11 脚(T1 IN)、14 脚(T1 OUT)为第
一通道。
8 脚(R2 IN)、9 脚(R2 OUT)、10 脚(T2 IN)、7 脚(T2 OUT)为第二数据
通道。
TTL/CMOS 数据从 T1 IN、T2 IN 输入数据转换成 RS-232 数据从 T1 OUT、T2
OUT 送到电脑 DB 插头;DB9 插头的 RS-232 数据从 R1 IN、R2 IN 输入转换成
TTL/CMOS 数据后从 R1 OUT、R2 OUT 输出。
第三部分是供电。15 脚 GND 接地,16 脚 VCC 接+5V 电源。
单片机扩展 RS-232C 总线接口
该部分电路如图 3-24 所示,图中 4 个 1μF 电容的作用是与 MAX232 内部的电压
变换电路一起产生±10V 左右的工作电源,单片机 AT89S52 的 RXD、TXD 直接与
MAX232 收发器 1 的 R1OUT、T1IN 相连,R1IN、T1OUT 即为 RS-232C 总线的数据
接收和数据发送信号。收发器 2 可用于控制信号或其它单片机 UART 的信号转换。
图 3-24 MAX232 与上位机的连接电路
报警电路
当测量的温湿度不在所设范围内时,启动蜂鸣器报警,同时单片机控制继电器触
电动作,以此来打开相应的执行机构。
图 3-25 报警电路
蜂鸣器主要有两种,分别为压电式、电磁式,工作电压均为 ~15V 的直流电。
压电式蜂鸣器的组成部分:
(1)为多懈振荡器
(2)压电蜂鸣片
(3)阻抗匹配
(4)共鸣箱
(5)外壳。
有的还在外壳上装有发光二极管,工作方式为:接通电源后多谐振荡器起振,输
出频率为 ~ 的音频信号,与此同时阻抗匹配器推动压电蜂鸣片发声。
电磁式蜂鸣器的组成部分为外壳、振荡器、振动膜片、磁铁和电磁线圈。其工作
方式为:接通电源后振荡器起振输出音频信号,其电流通过电磁线圈,且电流是变化
的因此电磁线圈周围产生磁场,振动膜片在电磁线圈和磁铁的相互作用下周期性的振
动发出声音
本设计采用电磁式蜂鸣器,由于蜂鸣器的工作电流较大,采用三极管进行驱动。
该部分如图 3-25 所示。
3. 13 电源设计
该部分电路由降压、整流、滤波、稳压四部分组成,如图 3-26 所示。首先采用
变压器将 220V 交流电降压,然后采用单相整流桥实现整流。
稳压部分由一个三端稳压集成块 7805、7812、二极管、电容组成,并具有独立
的电压过载保护的功能。
】
图
3-26 电源电路
第四章 软件系统设计
系统程序共分七个模块,即主程序模块、测温度模块、测湿度模块、键盘扫描程
序模块、数据显示程序模块、报警模块、看门狗复位模块。每个模块都有一定的功能,
其中的模块还含有一些子模块,既相互独立又相互联系,低级模块可以被高级模块调
用。
主程序
开始
系统初始化
调用测温、测湿程序
显示
测量湿度值与设定的
上下限值比较,超限?
报警程序
Y
N
图 4-1 主程序流程图
本系统的智能化核心是 AT89S52,其监控程序和应用软件全部固化在 E2PROM 内。
它的工作过程是:
(1) 系统上电后;
(2) 单片机进入监控状态,同时完成对各端口的初始化工作;
(3) 当有键按下时,产生申请中断,进入响应的中断程序,完成键盘处理工作;
(4) 当没有外部控制信息输入的情况下,系统自动采集温湿度数据;
(5) 当采集到的温湿度在设定的范围之内时用数码管显示;
(6) 若超过了设定的上下限时进行语言报警。
图 4-1 为该部分流程图。
键盘扫描
键值处理
有键按下?
控制执行机构
获取温度
Y
N
初 始 化
DS18B20
ROM 匹配
启动温度转换
初 始 化
DS18B20
转换结束?
ROM 匹配
结束返回
Y
N
图 4-2 DS18B20 操作流程图
系统各程序模块
本系统的程序模块主要有:
(1) DS18B20 的测温的程序;
(2) 湿度的测量的程序;
(3) 键盘部分的处理程序;
(4) 显示程序;
(5) 报警程序;
(6) 控制程序。
DS18B20 测温程序流程图
温度测量的主程序要完成的内容
(1)温度中断
(2)温度计算
(3)显示
图 4-3,为该部分的流程图。
开始
湿度传感器初始化
四次数据采集完毕?
去掉最小值和最大值
N
Y
图 4-3 湿度测量采集子程序流程图
湿度部分
图 4-5,为该部分的流程图。
完成方法:
(1) 集中采集;
(2) 分别处理。
程序功能:
(1) 模拟转化;
(2) 存储数据;
(3) 取中间值;
(4) 测量四次。
比较中间两数
两数之差〉10?
取两数平均数
返回
N
Y
(5) 取平均值
图 4-4 显示程序流程图
显示部分
本系统用 5 个 LED 数码管对所测得的温湿度进行显示,分配为:
(1) 器件位置;
(2) 温度值;
(3) 湿度值;
显示方式
(1) 静态
取要显示的数值
求显示数据的显示码
送段选码到 A 口
送段选码到 B 口
延时 1ms
显示完了?
指向下一位待显示数据
修改显示缓冲区地址
返回循环扫描
初始化 8255A
N
Y
(2) 共阳极
(3) 串行传送
(4) 图 4-4,为该部分的流程图。
键盘部分
图 4-5,为该部分的流程图。
图 4-5
本设计设置了 5 个按键,其功能分别为:K1 为功能键,K2 为温湿度上调键,K3
为温湿度下调键,K4 为静音键。K1 键的具体功能如下
0-对第一个位置的温度进行显示;
1-对第二个位置的温度进行显示;
2-对第三个位置的温度进行显示;
3-对第一个位置的温度进行调节;
4-对第二个位置的温度进行调节;
5-对第三个位置的温度进行调节;
6-对第一个位置的湿度进行调节;
7-对第二个位置的湿度进行调节;
8-对第三个位置的湿度进行调节。
开始
读 PC 口的值
调键盘处理子程序
有中断请求?
返回
N
Y
报警部分
开始
调用温度检测子程序
数据转换
超限? 报警
Y
图 4-6
该程序模块的功能是:
(1)采集数据。
(2)显示。
(3)报警。
图 4-5,为该部分的流程图。
第五章 结论
本设计选用了最常见的硬件和软件,实现了设计的合理性和经济性,能够简单的
完成硬件的连接和生产。基本上实现了测试的精确性,和测量的多样性普遍性。
由于资料的有限性和能力有限,所以设计中不管是选择元件,电路的设计及其程
序的编辑都有很多的不足甚至错误。但通过此次设计,让我得到了很大的提高,对自
调用湿度检测子程序
数据转换
超限?
返回
Y
N
N
己有了一个很好的认识,认识到自己很多的不足特别是在编程方面。以后会在这些方
面提高自己。
致谢
首先我要感谢我的指导老师,由于资料的有限性和能力有限,所以设计中不管是
选择元件,电路的设计及其程序的编辑都有很多的不足甚至错误。经老师指导通过此
次设计,让我得到了很大的提高,对自己有了一个很好的认识,认识到自己很多的不
足特别是在编程方面。以后会在这些方面提高自己。
其次我要感谢我校的各位领导和老师,感谢所有支持我、帮助我的同学和朋友,
是大家的鼓励和帮助给了我学习的动力,使我能够顺利完成学业。
参考文献
[1] 何利民,单片机应用技术选编[M],北京:北京航空航天大学出版社,2002:21-25
[2] 李军,51 系列单片机高级实例开发指南[M],北京:北京航空航天大学出版社,
2001:98-100
[3] 高伟,AT89 单片机原理及应用,北京:国防工业出版社,
附录
ORG 0000H
LJMP START
ORG 0030H
START:LCALL INIT8255
LCALL R24C02
MLOOP: LCALL KBINPUT
LCALL READT
LCALL READH
LCALL DISPLAY
LCALL TControl
LCALL HControl
LCALL SComm
AJMP MLOOP
INIT8255:
MOV DPTR,#7F00H
MOV A,#81H
MOVX @DPTR,A
RET
KBINPUT:
MOV DPTR,#7E00H
L1: MOVX A,@DPTR
CJNE A,#0FFH, L3
SJMP L1
L3: LCALL DELAY
MOV A, P1
CJNE A, #0FFH, L2
SJMP L1
L2: JNB , TAB0
JNB , TAB1
JNB , TAB2
JNB , TAB3
JNB , TAB4
SJMP L1
TAB0: SJMP OPR0
TAB1: SJMP OPR1
TAB2: SJMP OPR2
TAB3: SJMP OPR3
TAB3: SJMP OPR4
OPR0: CJNE A,#0FFH
SJMP KBINPUT
OPR1: CJNE A,#0FFH
SJMP KBINPUT
OPR2: CJNE A,#0FFH
SJMP KBINPUT
OPR3: CJNE A,#0FFH
SJMP KBINPUT
OPR4: CJNE A,#0FFH
RET
LOW_TEMPER EQU 20H
HIGH_TEMPER EQU 21H
TEMPER_NUM EQU 23H
FLAG BIT 40H
DQ BIT
RST_18B20: SETB
NOP
CLR
MOV R1,#3
RST1:MOV R0,#110
DJNZ R0,$
DJNZ R1,RST1
SETB
NOP
NOP
NOP
MOV R0,#25H
RST2:JNB ,RST3
DJNZ R0,RST2
LJMP RST4
RST3:SETB FLAG
LJMP RST5
RST4:CLR FLAG
LJMP RST7
RST5:MOV R0,#115
RST6:DJNZ R0,$
RST7:SETB
RET
WRITE_ DS18B20:MOV R2,#8
CLR C
WR1:CLR
MOV R3,#6
DJNZ R3,$
RRC A
MOV ,C
MOV R3,#25
DJNZ R3,$
SETB P1,4
NOP
DJNZ R2,WR1
RETB
RET
READ_ DS18B20:MOV R4,#2
MOV R1,#20H
READ1:MOV R2,#8
READ2:CLR C
SETB
NOP
NOP
CLR
NOP
NOP
NOP
SETB
MOV R3,#9
READ3:DJNZ R3,READ3
MOV C,
MOV R3,#23
READ4:DJNZ R3,READ4
RRC A
DJNZ R2,READ2
MOV @R1,A
INC R1
DJNZ R4,READ1
RET
TEMPER_COV:MOV A,#0F0H
ANL A,LOW_TEPER
SWAP A
MOV TEMPER_NUM,A
MOV A,LOW_TEMPER
JNB ,TEMPER_COV1
INC TEMPER_NUM
TEMPER_COV1:MOV A,HIGH_TEMPER
ANL A,#07H
SWAP A
ORL A,TEMPER_NUM
MOV TEMPER_NUM,A
LCALL BIN_BCB
RET
BIN_BCD:MOV DPTR,#TEMP_TAB
MOV A,TEMPER_NUM
MOVX A,@A+DPTR
MOV TEMPER_NUM,A
RET
TEMP_TAB:DB 00H,01H,02H,03H,04H,05H,06H,07H
DB 08H,09H,10H,11H,12H,13H,14H,15H
DB 16H,17H,18H,19H,20H,21H,22H,23H
DB 24H,25H,26H,27H,28H,29H,30H,31H
DB 32H,33H,34H,35H,36H,37H,38H,39H
DB 40H,41H,42H,43H,44H,45H,46H,47H
DB 48H,49H,50H,51H,52H,53H,54H,55H
DB 56H,57H,58H,59H,60H,61H,62H,63H
DB 64H,65H,66H,67H,68H,69H,70H
; ADPORT EQU 0BF00H
EOC EQU
AD0809: MOV DPTR, #ADPORT
MOV A, #00H
MOVX @DPTR, A
MOV A, #00H
MOVX @DPTR, A
MOV A, #00H
MOVX @DPTR, A
ADLP1: JNB EOC, ADLP1
ADLP2: JB EOC, ADLP2
MOVX A, @DPTR
RET
MOV DPTR,#7C00H
MOVX @DPTR,A
MOV DPTR,#7D00H
MOVX @DPTR,A
VRXD BIT
VTXD BIT
MTD EQU 40H
ORG 0000H
AJMP START
ORG 0080H
START:MOV SP,#6FH
MOV 6FH,#0FH
MOV 6EH,#0EH
MOV 6DH,#0DH
MOV 6CH,#0CH
MOV 6BH,#0BH
MOV 6AH,#0AH
MOV 69H,#9
MOV 68H,#8
MOV 67H,#7
MOV 66H,#6
MOV 65H,#5
MOV 64H,#4
MOV 63H,#3
MOV 62H,#2
MOV 61H,#1
MOV 60H,#0
GHANGE:MOV R1,#05H
MOV R0,#6FH
MOV R2,#40H
MOV DPTR,#TABEL
MOVC A,@A+DPTR
LCALL REVERS
LOOP: MOV A,@R0
MOV A,@A+DPTR
MOV R2,A
DEC R0
INC R2
DJNZ R1,LOOP
DISP: PUSH PSW
MOV PSW,#10H
MOV R0,#DISBUF
MOV A,#05H
MOV R2,A
VUARTNO: MOV R0,#MTD
TCONTU: MOV R3,#8
MOV A,@R0
TSTA: JNB ,ST0
ST1: SETB VRXD
CLR VTXD
SETB VTXD
SJMP TCON
ST0: CLR VRXD
CLR VTXD
SETB VTD
TCONT: RRA
DJNZ R3,TSTA
INC R0
DJNZ R2,TCONCU
JMP $
TABEL:
DB COH,F9H,A4H,BOH,99H,92H,82H,F8H,80H,90H;0 1 2 3 4 5 6 7 8 9
DB 88H,83H,C6H,A1H,86H,8EH,FFH,0CH,89H,7FH;AbCdEF 空格 PH·
END
REVERS CLR C
RRC A
MOV 07H,C
RRC A
MOV 06H,C
RRC A
MOV 05H,C
RRC A
MOV 04H,C
RRC A
MOV 03H,C
RRC A
MOV 02H,C
RRC A
MOV 01H,C
RRC A
MOV 00H,C
MOV A,20H
RET
DIV: MOV R2,#08H
DIV1: MOV R3,#0FAH
DIV2: CPL
LCALL DIV1
DJNZ R3,DLV2
DJNZ R2,DIV1
MOV R2,#10H
DIV3: MOV R3,#0FAH
DI4: CPL
LCALL D25ms
DJNZ R3,DIV4
DJNZ R2,DIV3
SIMP DIV
D5MS:MOV R7,#0FFH
LOOP:NOP
NOP
DJNZ R7,LOOP
RET
D25MS:MOV R6,#0FFH
LIN:DJNZ R6,LIN
RET
ORG 0000H
AJMP MAIN
PRG 0013H
AJMP REV
ORG 0030H
MAIN: MOV IE,#0FFH
CLR IT1;IT1=0
F0R: MOV P2,#0FFH
MOV R3,#08H
MOV RO,#00H
FOR1: MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
CALL DELAY
DJNZ R3,FOR2
AJMP FOR
FOR2: INC R0
AJMP FOR1