摘要
本设计是基于AT89C51单片机和ADC0832的自动浇花系统。本设计的电路内部包含湿度采集和AD转换等主要功能。自动浇水系统设计的浇水部分是通过单片机程序设计浇水的上下限值与感应电路送入单片机的土壤湿度值相比较,当低于下限值时,单片机输出一个信号控制浇水,高于上限值时再由单片机输出一个信号控制停止浇水。这样可以帮助人们及时地给心爱的盆花浇水。
关键词:AT89C51;湿度的采集与显示; 自动浇花
目录
一、设计背景
现如今人们的生活质量不断提高。人们都喜欢在家里养养盆花,这样可以陶冶人们的情操,丰富人们的生活。同时盆花可以通过光合作用吸收二氧化碳,净化室内空气,在有花木的地方空气中阴离子聚集较多,所以空气也特别清新,而且许多花木还可以吸收空气中的有害气体,因此,养盆花如今被许多人喜爱。
给盆花浇水是否能做到适时及适量,是养花成败与否的关键。但是,在生活中人们总是会有没时间照顾的时候,比如工作学习太忙,旅游或者出差等。花草生长的问题大多数以上是由花儿浇灌不及时引起的;好不容易种植很长时间的花草,因为浇水不及时或者长势不好,用来美化室内环境的花草几乎成了“摆设”。因此,我想设计一种可以给盆花土壤湿度进行检测,并且自动浇水的盆花自动浇水系统。
二、系统设计概述
本设计是一种单片机控制的自动浇水系统,它可以实现室内盆花浇水的自动化系统。该系统可对土壤的湿度进行实时监控,并对盆花进行适时适量的浇水。其核心是单片机、湿度采集、显示电路以及浇水驱动电路构成的检测以及控制部分。主要研究土壤湿度与浇水量之间的关系、浇灌控制技术及设备系统的硬件、软件编程各个部分。该设计的检测部分单片机选用AT89C51单片机,软件部分选用C51语言编程。土壤湿度采集于显示电路可将检测到的土壤湿度模拟量放大转换成数字量并且通过单片机内程序控制精确的将湿度分显示在LCD显示屏上,通过单片机内的程序判断是否要给盆花浇水,如果需要浇水,则单片机系统就会发出浇水信号,带动水泵开始浇水,若不需要浇水,则进行下一次循环检测。
三、系统硬件简介
3.1 单片机的最小化系统
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集合输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ALMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价格低廉的方案。
3.1.1 AT89C51单片机的基本组成
AT89C51由一个8位的微处理器,128KB片内数据存储器RAM,21个特殊功能寄存器SFR,3KB片内程序存储器Flash ROM,64KB可寻址片内外一编址的ROM,64KB可寻址片外的RAM,4个8位并行I/O接口(P0-P3),一个全双工通用异步串行接口UART,两个16位的定时器、计数器,具有位操作功能的布尔处理机及位寻址功能的五个中断源、两个优先级的中断控制系统以及片内振荡器和时钟产生电路。其基本组成框图如图3-1所示。
图3-1 AT89C51单片机的基本组成
3.2 LCD1602简介
3.2.1 LCD1602的基本参数及引脚功能
LCD1602液晶显示器具有功耗低、体积小,超薄轻巧等优点,同时可以显示字母、数字符号以及中文字符,显示的内容十分丰富。它还分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图3-2所示。
图3-2 LCD1602结构图
3.2.1.1 LCD1602主要技术参数
容量:16×2个字符
芯片工作电压:4.5—5.5V
工作电流:2.0mA(5.0V)
模块最佳工作电压:5.0V
字符尺寸:2.95×4.35(W×H)mm
3.2.1.2 引脚功能说明
表1 引脚接口说明表
编号 | 符号 | 引脚说明 | 编号 | 符号 | 引脚说明 |
1 | VSS | 电源地 | 9 | D2 | 数据 |
2 | VDD | 电源正极 | 10 | D3 | 数据 |
3 | VL | 液晶显示偏压 | 11 | D4 | 数据 |
4 | RS | 数据/命令选择 | 12 | D5 | 数据 |
5 | R/W | 读/写选择 | 13 | D6 | 数据 |
6 | E | 使能信号 | 14 | D7 | 数据 |
7 | D0 | 数据 | 15 | BLA | 背光源正极 |
8 | D1 | 数据 | 16 | BLK | 背光源负极 |
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光源正极。
第16脚:背光源负极。
3.2.1.3 LCD1602的一般初始化(复位)过程:
- 延时15mS
- 写指令38H(不检测忙信号)
- 延时5mS
- 写指令38H(不检测忙信号)
- 延时5mS
- 写指令38H(不检测忙信号)
- 以后每次写指令、读/写数据操作均需要检测忙信号
- 写指令38H:显示模式设置
- 写指令08H:显示关闭
- 写指令01H:显示清屏
- 写指令06H:显示光标移动设置
- 写指令0CH:显示开及光标设置
3.2.2 显示接口电路
图3-3 1602液晶显示接口
3.3 ADC0832的简介
ADC0832其实就是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。
图3-4 ADC0832引脚图
3.3.1 引脚功能
ADC0832芯片有28条引脚,采用双列直插式封装。下面说明各引脚功能。
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路
ALE:地址锁存允许信号,输入,高电平有效。
START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
3.3.2 ADC0832的工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0832转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0832的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
3.3.3 ADC0832与单片机的接口电路
ADC0832模数转换器与AT89C51单片机的接口电路如图3-5所示
图3-5 ADC0832与AT89C51单片机接口电路
3.4 土壤湿度检测模块
土壤湿度传感器采用FC-28,土壤湿度传感器由不锈钢探针和防水探头构成,可长期埋设于土壤和堤坝内使用,对表层和深层土壤进行墒情的定点监测和在线测量。与数据采集器配合使用,可作为水分定点监测或移动测量的工具测量土壤容积含水量,主要用于土壤墒情检测以及农业灌溉和林业防护。J1是两个插片,插在土壤里, AC口用来采集电压压值,当土壤湿度少时,探针间电阻接近无穷大,AC值就相当于是VCC值,当土壤湿度大时,此时探针键电阻会减少到几千甚至几百欧,此时AC的电压会变化。LM393是一个比较器,通过R1设置一个标准值,当湿度大(AC值小),OUT输出低电平,相反输出高电平。OUT信号可以直接用来粗略估算湿度大小。AC数值送到数模转换模块转换成数字信号。L1用来看电路是否接通,L2湿度小(AC值大)灭,湿度大(AC值小)亮。土壤的湿度是由ADC0832进行模拟并送入单片机,通过单片机的I/O口把检测到的土壤湿度值用LCD显示出来。同时,如果系统在智能浇水设置情况下,则该值与设定的浇水上下限值相比较,若低于下限值,则单片机发出一个控制信号,水泵开始运行然后开始浇水。若高于上限值时,单片机再发出一个控制信号控制,就会停止浇水。
3.5 报警及电机驱动
四、软件设计
4.1 主程序流程图
在本设计中,整个系统采用模块化设计,这样设计可以使程序看起来清晰明了,便于阅读以及调试。土壤湿度检测及自动浇灌模块的程序结构是主程序以及按键扫描处理、土壤湿度数据采集、数据处理、显示、电机驱动等子程序组成,如图4-1所示。
图4-1 程序结构图
附录
附录1 总体原理图
附录2 元器件清单
- 9*15万用板
- 土壤湿度传感器
- STC89C51单片机
- ADC0832
- 8脚IC座
- 40脚IC座
- 1602液晶
- 16p母座
- 16p排针
- 2P排针
- 杜邦线*2
- 2.2k电阻*3
- 1k电阻*2
- 103排阻
- 10k电阻*2
- 220Ω电阻
- 9012三极管*2
- 10uf电解电容
- 470uF电解电容
- 30pf瓷片电容*2
- 12MHz晶振
- 按键*4
- 104独石电容
- 103电位器(蓝色)
- 有源蜂鸣器
- 5mmLED (红黄绿) 各一个
- 6脚继电器
- 2P接线端子
- 小水泵+电池盒
- 水管30cm
- 导线、焊锡
- DC电源接口
-
自锁开关