土壤湿度控制系统文档格式.docx
《土壤湿度控制系统文档格式.docx》由会员分享,可在线阅读,更多相关《土壤湿度控制系统文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
4.1模数转换器ADC08327
4.2LCD1602液晶显示模块9
4.2.1LCD1602的特性及使用说明9
4.3STC89C52单片机的简介12
4.3.1STC89C52单片机主要特性13
5、硬件实现及单元电路设计16
5.1主控制模块16
5.2显示模块电路17
5.3报警模块的设计18
5.4继电器控制电路18
5.5湿度AD采集电路19
5.6按键模块的设计19
5.7电源部分的设计20
6、系统软件设计20
6.1程序结构分析20
6.2系统程序流图21
7、系统的安装与调试23
7.1安装步骤23
7.2电路的调试23
结论23
致谢24
参考文献24
附录1整体电路原理图25
附录2元器件清单25
附录3部分源程序26
1、绪论
1.1课题的背景
湿度是可以表示大气里水汽含量的物理量。
也就是说,在一定温度下固定体积内的空气中含有的水气越少,空气越干燥;
水气越多,空气就越湿润。
人们对湿度测量的技术已经探索了二百余年了,先辈们很早就发现人的头发可以根据空气湿度的变化而拉长或缩短,毛发湿度计就是由此产生的。
然而,人们对湿度传感器中湿度传感器的理解始于1938年由F.W.Dunnore成功开发浸涂氯化锂湿度传感器。
土壤湿度代表了土壤在一定深度中的干燥和湿润的程度。
土壤湿度也叫做土壤含水量。
农田水分平衡的各个组成部分控制这了土壤的含水量。
土壤的湿度控制着对植物的供水情况。
如果土壤水分太少,土壤会十分干燥,植物就不能很好的进行光合作用,作物的产量和质量就会下降,太厉害的缺水甚至会使植物干渴而死。
如果土壤的水分太多,土壤通气能力会降低化,也会不利于植物土地下的根的生命活动,进一步影响到植物地上部分的健康生长,导致各种疾病和状况的发生。
土壤湿度也会对农田的耕作方式和种植的质量产生影响,还会影响土壤的温度情况。
农业生产在中国经济发展中发挥着重要作用。
为农业生产提供及时可靠的技术服务是对气象部门的必须的要求。
我国的各级政府部门越来越重视农业的生产,不少科研机构也进行了许多农业服务和增加农民收入方面的探索。
普遍的研究了农业生产过程中存在的种种困难。
调查显示,园艺栽培、温室花卉、温室蔬菜等一些有贵重的品种对土壤水分的要求极高,如果土壤水分不正常,这种植物不仅不能健康的生产,严重的时候会直接死亡,给种植者带来极大的损失。
就算是为了这个,在进行这种农业生产的人们也特别想要一种价格低、占据空间小而且安全准确的土壤水分检测仪,确保农业生产的浇灌进程顺利进行。
1.2土壤湿度检测的原理
1.2.1土壤湿度基本设计原理
因为土壤里有着不少的矿物离子,通常土壤里的水中就有着不少这种离子。
假如把两个电极插入土壤中,则电极可以通过这些离子导电。
对土壤水分含量的测量可以用测量两个电极之间的电阻来进行。
因为两级之间的电阻与电压成正比例,因此可以通过计算两级电压来计算土壤中的水分含量。
在测量电压之前,传感器可以获得模拟电压信号,而且这些信号只有转换成数字的信号,才能用单片机进行处理。
1.2.2电路设计
本系统使用NPN型S9014三极管放大器电路。
我们知道,把两个电极插入土壤中,两极可以通过这些离子来进行通电。
土壤水分的含量就是通过测量两个电极之间的电阻来测量的,因为两级之间的电阻与电压成正比。
三极管的基本电流的变化会随着湿度的变化而改变。
由三极管放大的电压的电阻电压被发送到MCU,用于通过A/D转换处理显示和控制。
图2-1土壤湿度检测电路图
2、总体的方案设计
本项目设计的土壤水分控制系统是由STC89C52单片机最小系统,土壤水分传感器,ADC模数转换器模块,LCD1602液晶模块,电源模块,蜂鸣器报警模块,土壤湿度控制模块和按钮模块构建的。
土壤湿度传感器是一种电阻式传感器,它的电阻可以随着土壤湿度的变化而变化,可以把电压放大并发送到模数转换器的通道上,并且土壤湿度传感器信号的放大电压由ADC0832收集。
如果测量的真正的湿度小于我们设定的湿度,蜂鸣器和LED会发出声音和光照报警。
并且这时候控制继电器会对土壤进行浇灌。
按下按钮可以设定湿度报警值。
系统总体框图如图3-1所示:
电源部分
按键模块
AD模块
单片机
STC89C52
液晶显示
报警模块
控制模块
土壤湿度传感器
3-1总体结构框图
3、系统方案的选择
3.1主控制器模块选择
方案1:
使用可编程逻辑器件CPLD当控制器。
CPLD能够进行各很多庞杂的逻辑功能,它的规模通常比较大、密度一般会很高、并且尺寸小、高稳定性、丰富的IO资源已经容易进行扩展的功能非常核算。
使用并行输入输出方法使系统的处理速度大大增加,做规模控制系统的控制核心的话是不错的。
然而繁杂的逻辑功能对该系统来说不是必要的,对数据的处理速度需求也不大。
所以我从实用和价格的方面抛弃了这个选项。
方案2:
STC89C52单片机可以当做整个系统的关键部位,可以进行对水温的测量和控制系统的控制,来达到我们本来想要的功能标准。
全面分析本项目要设计的系统,重点是进行对水温的自动控制,在这种时候,单片机的优点就十分明显了,它的控制简单、方便而且快捷。
这样做的话,MCU就能够极大的利用它充足的资源,相对强大的控制功能和代码位寻址操作功能,并且更重要的是它的价格不高。
STC89C52MCU具有强大的位操作指令,I/O端口可以进行位寻址,程序空间高是足够的。
更有价值的是它非常便宜。
3.2按键的选择
方案—:
使用矩阵键盘,进行矩阵扫描。
好处是如果存在更多按钮时,可以减少占用单个芯片的I/O端口的数量。
不足之处是这种电路的设计十分繁杂并且很难编写。
方案二:
使用单独的按钮电路,所有的按钮分别使用着不同的I/O接口线,不同的I/O端口的工作状态是不相通的。
进行直接扫描,不足之处是当按钮不止一个时,单片机的I/O端口数量很大,好处是是电路的构造容易,编写系统是比较容易的。
从整体研究这两个方案和主题的需求,我选择第二种方案。
3.3显示模块的选择
方案一:
使用静态的显示方式,但是静态显示模块的硬件设计构建起来更庞杂并且消耗大量的电力,并且还要使用很多的移位寄存器,但是端口未被使用,用两条串行线输出就可以了。
使用动态的显示方式,动态显示模块的硬件设计构建容易,分段扫描和位扫描分别使用一个端口,一共只要使用单片机的14个端口。
并且这种方式消耗的电力小,硬件成本低,占据空间小。
方案三:
该方式的硬件设计构建十分方便容易,与单片机能够直接连接,显示的容量多,消耗电力少,价格低,能够显示32个字符,但是亮度有点不足。
对上述三种方法进行对比:
方案1的硬件庞杂,消耗电力太多;
方案2的硬件构造容易,消耗电力低;
方案3硬件构建容易,能够显示的内容比较大,消耗的电力低,成本低。
该系统的设计需要小消耗的电力,小尺寸,低成本,多显示信息等,所以我使用方案3。
4、芯片资料简介
4.1模数转换器ADC0832
ADC0832是8位分辨率双通道A/D转换器芯片,是美国国家半导体公司的商品。
因为其占用空间,兼容性高,价格便宜性能好,因此受到MCU爱好者的推荐和各种企业的欢迎,在世界各地都可以看到它的使用。
学习和使用ADC0832能够让我们能够理解A/D转换器的理论,并且能够提高我们的微控制器技术能力。
ADC0832具有以下特点:
·
有着高达8位的分辨率
具有双通道的A/D模拟转换
输入输出电平与TTL/CMOS可以兼容
5V电源供电的时候,输入电压一般保持在0到5V
工作频率为250KHZ,转换时间为32μS
一般消耗的电力仅为15mW
商用的芯片温度为0°
C~+70°
C,工业的芯片温度为-40°
C~+85°
C
芯片的顶视图是:
图1
芯片接口说明:
CS_片选使能,低电平芯片使能。
CH0模拟输入通道0,或者可以当做IN+/-使用。
CH1模拟输入通道1,或者可以当做IN+/-使用。
GND芯片参考0电位(地)。
DI数据信号输入,选择通道控制。
DO数据信号输出,转换数据输出。
CLK芯片时钟输入。
Vcc/REF电源输入及参考电压的输入。
ADC0832与单片机的接口电路:
ADC0832是一款8位分辨率A/D转换器芯片,最高分辨率为256级,能够满足通常的模拟转换的需求。
内部电源输入和参考电压的复用,让芯片的模拟电压输入在0到5V之间。
芯片转换时间只需要32μS。
根据双数据输出,可以当做数据检查的依据,减少数据产生的错误,转换的速度快,稳定性很强。
独立的芯片使能输入使多器件安装和处理器控制更加方便。
通过DI数据输入可以轻松实现通道功能选择。
图3
可以当做单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。
如果可以当做由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。
但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。
4.2LCD1602液晶显示模块
4.2.1LCD1602的特性及使用说明
HJ1602A是一款工业字符LCD,可以在同一时间显示32个字符。
在我们的一般经历中,可以经常看到液晶显示器。
液晶显示模块常常被当作许多电子产品的通过装置,如电视机和不少的家用电子产品,在这种液晶显示屏上面,出现的通常是数字、图像以及一些专业的字符。
在单片机的人机通信接口中,可以在发光管,LED数码管,液晶显示器上显示。
我们经常使用的是发光管和LED数码管,因为他们的软件和硬件很容易做出来。
单片机系统的液晶显示器优点有很多:
因为液晶显示器的每个位在接收到信号后颜色和亮度并不会改变,因此它会不断的发光,这与阴极射线管显示器(CRT)不同,后者需要不断刷新新的亮点。
所以,液晶显示器具有高图像质量并且不会闪闪的。
液晶显示器均为数字显示,与单芯片系统的接口更简单,更可靠,操作相对便捷。
液晶显示器可以用电极来控制液晶分子的状态来显示我们想要的东西,并且它的重量传统的显示器要轻太多了。
和其他对比来说,液晶显示器的消耗的电力主要泳装在它内部的电极和驱动IC上,因此功耗远小于其他显示器。
字符型的液晶显示模块是特质的用来显示字母、数字、符号等的显示器。
我们用1602字符型液晶显示器来说,介绍一些它的大体功能。
通常的1602字符型液晶显示器实物下:
图3-10液晶屏正面
图3-11液晶屏背面
(1)引脚说明:
第1脚:
VCC为供电电源。
第2脚:
VDD接5V正电源。
第3脚:
VO是LCD的对比度调节端,当它连接正电源时,对比度是最差的。
当接地的时候,对比度最高。
但是当对比度太高的话,就会发生“鬼影”的现象。
我们在使用的时候,可以采用10K的电位器调节显示器此时过高的对比度。
第4脚:
RS指的是是寄存器的选择,当高电平会选择数据寄存器时,低电平会选择指令寄存器。
第5脚:
R/W指的是读写信号线,其执行高电平的读操作和低电平的写操作。
当RS和R/W一起为低电平时,可以写入命令或显示地址。
当RS为低电平R/W为高电平的时候,我们能够读取信号。
当RS为高电平R/W为低电平的时候,我们可以输入信号。
第6脚:
E终端是启用终端。
当E端从高电平变为低电平时,液晶模块会开始执行输入的命令。
第7~14脚:
D0至D7是8位双向数据线。
第15脚:
A端背光源正极。
第16脚:
K端背光源负极。
(2)1602LCDRAM地址映射和标准字体表
LCD1602液晶模块内的字符生成存储器存储了160种不同的点阵字符图案,这些字符图有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,所以的不同的字符都有自己固定的代码,利润大写的英文字母“A”的代码是01000001B(41H),当显示模块时,显示地址41H中的点阵字符图形,我们就可以看到这个字母了。
该液晶显示屏的读写、显示和鼠标的操作都是用指令编程来达成的(注释一下:
1是高的电平,0是低的电平)。
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标回到原来的位置,返回到00H的地方。
指令3:
光标和显示的模式设置I/D:
光标移动方向,高电平右移,低电平左移。
S:
屏幕上全部文字能不能进行左移或者右移。
高电平表示它处于活动状态,低电平表示它无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示。
C:
进行光标打开和关闭的控制,高电平表示有光标,低电平表示没有光标。
B:
控制光标能不能闪亮,高电平的时候会闪,低电平的时候并不会闪。
指令5:
光标或显示移位S/C:
当显示的文本为高电平时移动显示的文本,并在光标为低电平时移动光标
指令6:
功能设置命令DL:
注意到高电平的4位总线和低电平的8位总线。
N:
低电平的时候单线的显示,高电平的时候双线的显示。
F:
低电平的时候显示5X7的点阵字符,高电平的时候显示5x10的点阵字符(有的模块是DL:
高电平的时候通常是8位总线,低电平的时候通常是4位总线)。
指令7:
字符发生器的RAM位置的建立。
指令8:
DDRAM地址设置。
指令9:
读取忙碌的信息和光标所在的位置。
BF是忙标志,高电平的时候表示忙。
在这个时候,模块无法接收命令和各种数据。
如果电平很低的话就是不忙,则表示模块可以接收这些命令和数值。
指令10:
写数据。
指令11:
读数据。
液晶显示模块是慢速显示设备,因此在执行每条指令之前一定要保证看到模块的忙标志是低电平的时候,这就表面它没有在忙,不然的话指令是没有效果的。
要显示出想要的字符,第一个要输入的就是要显示的字符的地址,就是要告诉模块我们要显示字符的位置。
1602内部显示地址:
图3-121602内部显示地址
4.3STC89C52单片机的简介
51系列微控制器最初由英特尔公司开发,但后来英特尔把系统的核心设计卖给了几家主要的电子设计制造商,如SST,Philip和Atmel。
因此,市场上出现了各种各样的51芯单片机。
这些主要电子制造商推出的微控制器兼容51指令,基于51扩展了一些功能,内部结构与51大体上是一样的。
STC89C52具有40个引脚,4个8位并行I/O端口和1个全双工异步串行端口。
它还包含五个中断源,两个优先级和两个16位定时器/计数器。
4K的程序存储器(掩膜ROM)和128B的数据存储器(RAM)组成了STC89C52的存储器系统。
STC89C52单片机的基本组成框图:
图3-1STC89C52单片机结构图
4.3.1STC89C52单片机主要特性
1.一个8位的微处理器(CPU)。
2.片上的数据存储器RAM(128B)用于存储可以读/写的数据,例如操作的中间结果,最终结果和要显示的数据。
SST89系列MCU提供高达1K的RAM。
3.片上程序存储器ROM(4KB),用于存储程序,许多原始的数据和图表。
然而,有些微控制器内部没有ROM/EPROM,就像8031,8032,80C31这些。
当前社会中,单片机就是不断的在向把RAM和ROM合成到单片机内部方向而努力进步,这种结果可以极大的方便用户进行设计,并且有效的改善了系统的抗干扰能力。
SST企业设计的的89系列MCU分别集成了16K,32K和64K闪存,我们可以按照自己的需求选择使用。
4.存在着四个8位并行I/O接口,p0,p1,p2,p3,每个接口可用作输入或输出。
5.存在着两个定时器/计数器,所有的定时器/计数器都能够调整成用于计数外部事件的计数模式,还能够调整为定时的模式,并且可以基于计数或定时的结果实现对计算机的各种控制。
为了让我们串行通信的设计更加容易,现在的所有的52系列微控制器都有着三个16位定时器/计数器。
6.存在着五个中断源的中断控制系统。
并且当前的新的微控制器基本上有超过5个的中断源系统。
例如,SST89E58RD有9个中断源。
7.全双工UART(通用异步接收发送器)的串行I/O端口,可以进行微控制器之间或单个单元与微型计算机之间的串行的交流。
8.存在这片内的振荡器和时钟发生电路,但是石英晶体和微调电容是要进行外部连接的。
最大允许振荡的频率是12MHz。
SST89V58RD的最大允许振荡频率为40MHz,所以这种方式使得指令执行速度极大的加快了。
图3-2STC89C52单片机管脚图
部分引脚说明:
1.时钟电路引脚XTAL1和XTAL2:
XTAL2(18脚):
连接着外部的晶体和微调电容器的一个角落;
在芯片上,它是振荡器电路的反相放大器的输出的端口,振荡器电路的频率指的是晶体本身确定的频率。
当要用到外部的时钟电路的时候,这个引脚会进行外部时钟脉冲的输入。
应该要插眼振荡器电路能不能进行平时的工作,请使用示波器检查XTAL2端子上能不能输出脉冲的信息。
XTAL1(19脚):
连接外部的晶体和微调电容的另一个接口;
在芯片上,它是振荡器电路的反相放大器的输入节点。
使用外部时钟时,这个引脚一定要连接地面。
2.控制信号引脚RST,ALE,PSEN和EA:
RST/VPD(9脚):
RST只打算是返回原位置的信号的输入端,在高电平的时候是有用的。
在这个输入节点保持备用电源的输入。
在主电源Vcc发生问题不能运行的时候,我们可以把它减小到低电平的固定的数值,这时候,把+5V电源自动两个机器周期(24个时钟振荡周期)的高电平时,我们现在就能够成功的做到返回原来的地址了。
RST引脚的第二个用途是是VPD,它连接到RST的端口,给RAM准备备用的电源,来确保存入在RAM中的信息不会被丢失,进而可以在返回原来的位置后继续进行工作。
ALE/PROG(30脚):
地址锁存器允许信号端子。
在8051连上电运行的时候,ALE引脚连续输出正脉冲的信号,该信号是振荡器频率fOSC的六分之一。
在CPU访问片外存储器的时候,ALE输出信号可用作控制信号以锁存低8位的地址。
当片外存储器未被正常访问时,ALE端子还以固定频率六分之一的振荡频率输出正脉冲,所以ALE信号可当成用来对外部输出时钟或定时的信号。
譬如要知道8051/8031芯片的质量,我们可以使用示波器检查ALE端子是不是有脉冲信号输出,要是有脉冲信号输出的话,8051/8031应该就是没坏了。
ALE端口的负载驱动能力是8个LS型的TTL(低消耗的电力甚高速TTL)的负载。
这个引脚还有一个用处是,当使用片上4KBEPROM编程8751(固化程序)时,PROG可用作编程脉冲的输入端口。
3.输入/输出端口P0/P1/P2/P3:
P0口(P0.0~P0.7,39~32脚):
P0端口作为开漏8位准双向I/O的端口,能够用作漏极开路输出端口,每个端口都能够驱动8个LS型TTL进行负载操作。
在P0端口能够用作输入端口的时侯,它应首先将1写入所有的端口锁存器(地址80H)。
在这个时候,P0端口的所有引脚都是浮动的,能够把它视为高阻抗输入。
在使用输入端口时,必须先写1,这就是准双向端口的要求。
当CPU访问片外存储器时,P0端口分频并为多路复用总线提供低8位地址和8位数据。
此时,端口P0的内部上拉电阻是有效