自动浇花系统.docx
《自动浇花系统.docx》由会员分享,可在线阅读,更多相关《自动浇花系统.docx(20页珍藏版)》请在冰豆网上搜索。
自动浇花系统
编号(学号):
本科学生毕业设计
题目:
自动浇花系统设计
学院名称:
_________________________
专业名称:
年级:
学生姓名:
学号:
指导教师:
______职称/学历:
______
教务处制
自动浇花系统设计
**
物理及电子信息学院电子信息工程专业2010级10班指导教师:
**
摘要:
此次设计采用STC89C52RC单片机外接湿度传感器、显示模块、电机驱动模块、按键模块,组成自动浇花系统。
在控制器的控制下,探测器检测土壤温湿度,将检测值传送回来,经控制器判断该值是否在正常温湿度范围内,若低于温湿度的最小值,发出浇水指令,让水泵自动出水;若高于最大值,发出终止浇水指令,让水泵停止浇水。
关键词:
STC89C52RC;湿度传感器;自动浇花
DesignofAutomaticwateringsystem
**
SchoolofPhysicsandElectronicInformation,ElectronicandInformationEngineering,Class10Grade2010.Inistructor:
**
Abstract:
ThisdesignusesSTC89C52RCmicrocontrollerandexternalhumiditysensor,displaymodule,motordrivermodule,keymodule,automaticwateringsystem.Underthecontrolofthecontroller,thesoiltemperatureandhumiditydetectiondetector,thedetectedvaluesentback,thecontrollerjudgeswhetherthevalueundernormaltemperatureandhumidityrange,iflessthantheminimumtemperatureandhumidity,awateringinstruction,lettheautomaticwaterpump;ifhigherthanthemaximumvalue,issuedastopwateringinstruction,makethepumpstopwatering.
Keywords:
STC89C52RC;Humiditysensor;Automaticwatering
1绪论
1.1课题背景及研究意义
随着城镇化、城市化的大力发展,人们的生活质量不断的提高,越来越多的家庭开始在自己的庭院、阳台等种植花卉等小型植物,花卉种植的普及当然也带来了一些小小的难题,浇水“难”其中常见且重要的一个问题。
为了应对这个难题,自动浇水系统应运而生。
随着科技的不断发展,他们无一例外都是能够起到方便我们日常生活的作用。
自动浇花系统可以理解为各种设备的一种,它能够通过编程手段完成特定任务,实现浇花自动化,方便我们的日常生活。
同时自动浇花系统的制作成本十分低廉,电路结构简单,程序调试也很方便,具有很好的移植性和趣味性,因此受到了广大同学的喜爱。
同时全国大学生电子设计竞赛每年都设有自动浇花系统类的题目,也可看出国家对生活自动化的重视。
本题目设计的是具有自动自动浇花功能的系统,其设计和日常生活中花卉种植的需求想结合。
设计采用湿度传感器检测,单片机控制。
自动浇花系统系统的设计采用了C语言编程的模式,简单易懂,设计电路结构简单,调试方便,有很大的扩展空间。
1.2课题的设计目的
1.通过此次设计,加深对大学本科所学专业知识的理解,获得初步的应用经验,为走出校门从事专业相关工作打下基础。
2.通过对课题方案的筛选、分析,以及后期的制作、调试过程,加强对专业问题的解决能力。
3.通过了此次课题设计,培养了我们对课题研究的兴趣,加深了我们科研的学习精神。
1.3课题的主要工作
通过湿度传感器得出测量值,通过AD转换器转换成数字信号,经单片机处理,进而控制继电器开关,控制水泵的出水。
课题要求如下:
1.湿度传感器输出电压连续且范围变化合理
2.AD转换器线性度好,精度高
3.当湿度大于设定值时继电器打开,否则关闭
4.通过两个按键调节阀值大小
1.4本文研究内容
本设计要求采用单片机为控制核心,利用湿度传感器实现对土壤湿度的检测,并将检测值通过AD转换传给单片机进行处理,然后由单片机根据所检测的数据判断实现对继电器的控制,并将检测湿度通过LED显示屏显示出来。
本设计就采用了STC89C52RC单片机为控制核心,TCL2543N为模数转换器,XD-3461AS为显示器,FC-28为湿度检测器,采用继电器SRD-12VDC-SL-C为电机驱动芯片,外接两个按键调节阀值大小。
2系统概述
2.1整体方案设计思想
根据题目所提要求,确定如下方案:
自己购买材料制作出,使用SRD-12VDC-SL-C模块,连接单片机使之对土壤的湿度进行控制,并以此为基础,在最小系统板上加装湿度传感器FC-28。
然后,湿度检测模块把测距数据返回给单片机,单片机发送相应的指令实现对水泵开关的控制,从而达到自动检测湿度以及自动浇水的功能。
2.2系统组成
主显示部分
传感器模块控
芯按键部分
电源部分片
电机驱动模块水泵
图2.1系统组成
2.2.1主控芯片的选择
现在市场上的控制芯片种类繁多,大多数都能够很好地满足题目中的要求,比如MCS-51系列单片机STC89C52RC,AVR单片机,还有ARM,凌阳等等[1],当然他们都有各自的优缺点,而本次设计过程中,我们选择了STC89C52RC。
相对于其他种类的控制芯片,STC89C52的一系列更加适合我们这次的题目,比如:
STC89C52RC单片机完全能够很好的完成本设计的所有功能;STC89C52RC的外围电路十分简单,控制方便;在我们的课程中关于STC89C52RC的介绍很多;最重要的一点STC89C52RC价格相对其他控制芯片而言要便宜很多,能够很好控制设计成本。
综合以上几点我在最终设计的时候选择了MCS-51系列单片机STC89C52RC来完成本设计。
2.2.2传感器模块选择
随着科学技术的不断发展,传感器领域也相应得到了很大的发展。
它在各个领域都有着非常广泛的运用。
在本次设计的传感器的选择上,我们考虑了湿度传感器和温湿传感器这两种。
温湿传感器体积小,性能稳定,精度高,可以检测土壤的温度和湿度,但价格昂贵;湿度传感器,精度和长期稳定,对湿度敏感,可用于土壤湿度检测,且价格低。
经过和老师同学的探讨,考虑到对传感器的选择上关键在于是否适合单片机处理。
最后我们选择了相对实用的湿度传感器。
2.2.3电机驱动模块
继电器(英文名称:
relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器[2]。
它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。
通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等作用继电器,充当水泵开关,控制水泵出水。
正是因为其功能,符合我们此次的设计,我们选择其作为自动浇花系统的电机驱动模块。
2.2.4显示部分
数码管是一种半导体发光器件,又称LED数码管[3],其基本单元是发光二极管。
其是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
LED数码管根据LED的接法不同分为共阴和共阳两类,共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示)。
按能显示多少个(8)可分为1位、2位、3位、4位、5位、6位、7位等数码管。
3系统硬件设计
3.1STC89C52RC单片机
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52RC使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52RC为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52RC可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
其主要工作特性是:
8K字节程序存储空间;
512字节数据存储空间;
内带2K字节EEPROM存储空间;
可直接使用串口下载;
8K字节程序存储空间;
256字节数据存储空间;
自带2KB的EEPROM存储空间;
3.1.1STC89C52RC单片机管脚图
图3.1STC89C52RC单片机管脚
部分引脚介绍[4]:
引脚9:
REST/Vpd,RESET是复位端,连续保持两个机器周期以上的高电平,单片机将完成复位。
Vpd是备用电源输入端,当电源电压下降到一定值时,备用电源通过Vpd端给内部RAM供电,直至单片机工作电压恢复正常。
引脚11:
TXD,串行口输出
引脚12:
—INT0,外部中断0输入
引脚13:
—INT1,外部中断1输入
引脚14:
T0,定时/计数器T1外部输入
引脚15:
T1,定时/计数器T1外部输入
引脚16:
—WR,外部RAM写信号
引脚17:
—RD,外部RAM读信号
引脚20:
Vss,接地端
引脚40:
Vcc,电源端。
正常工作和编程校验(8051/8751)均为+5V。
引脚31:
—EA/Vpp,片外程序存储器访问允许信号/编程电源。
—EA为低电平时,允许访问,片外程序存储器。
对ROMLess型单片机,使用时该引脚必须接地。
3.2AD转换模块
具有11个输入端的12位模数转换器TLC2543是美国德州仪器公司推出的一种性能价格比较优的12位A/D转换芯片,具有多种封装形式。
其使用开关电容逐次逼近技术完成A/D转换过程,由于是串行输入结构,能够节省51系列单片机I/O资源,且价格适中。
其特点[5]有:
(1)12位分辨率A/D转换器;
在工作温度范围内10us转换时间;
11个模拟输入通道;
3路内置自测方式;
采样率为66kbps;
线性误差+1LSB(max);
有转换结束输出;
可编程的MSB和LSB;
可编程的输出数据长度;
及带有串行外设接口(SPI)的微处理器易于接口。
3.2.1TLC2543CN引脚图
图3.2TLC2543CN引脚
TLC2543CN引脚介绍:
引脚1:
AIN0,模拟量输入端。
引脚10:
GND,接地端。
引脚11:
AIN9,模拟量输入端。
引脚12:
AIN10,模拟量输入端。
引脚13:
REF—,负基准电压端。
基准电压的低端(通常为地)被加到REF-。
引脚14:
REF+,正基准电压端。
基准电压的正端(通常为Vcc)被加到REF+,最大的输入电压范围由加于本端及REF-端的电压差决定。
引脚15:
—CS,片选端。
在—CS端由高变低时,内部计数器复位。
由低变高时,在设定时间内禁止DATAINPUT和I/OCLOCK
引脚16:
DATAOUT,A/D转换结果的三态串行输出端。
—CS为高时处于高阻抗状态,—CS为低时处于激活状态和I/OCLOCK。
引脚17:
DATAINPUT,串行数据输入端。
由4位的串行地址输入来选择模拟量输入通道。
引脚18:
I/OCLOCK,输入/输出时钟端。
I/OCLOCK接收串行输入信号并完成以下四个功能:
(1)在I/OCLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。
(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最后一个下降沿为止。
(3)将前一次转换数据的其余11位输出到DATAOUT端,在I/OCLOCK的下降沿时数据开始变化。
(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位。
引脚19:
E0C,转换结束端。
在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止。
引脚20:
Vcc,电源。
3.2.2AD转换器及单片机STC89C52RC单片机的接口电路
图3.3转换器及单片机接口电路
3.3显示模块
XD-3641AS是四位八段共阴极数码管,每个段均有0和1两种状态。
各段发光二极管的阴极连在一起,将此公共点接地,某一段发光二极管的阴极为高电平
(1)时,该段发光,数码管的a、b、c、d、e、e、f、g、h、dp分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭[2]。
如:
使其显示“0”,则要求a、b、c、d、f各个引脚为高电平,g和dp为低电平,即:
dpgfedcba(00111111)。
3.3.1XD-3641AS引脚
图3.4XD-3641AS引脚
图3.5数码管实物显示
XD-3641AS引脚介绍:
引脚1:
控制F,该引脚和STC89C52RC引脚14相连,实现数码单边亮的控制。
引脚2:
控制D,该引脚和STC89C52RC引脚13相连,实现数码管单边亮的控制。
引脚3:
控制DP,该引脚和STC89C52RC引脚相连,实现小数点亮或不亮的控制。
引脚4:
控制C,该引脚和STC89C52RC引脚12相连,实现数码管单边亮的控制。
引脚5:
控制G,该引脚和STC89C52RC引脚16相连,实现数码管单边亮的控制。
引脚7:
控制B,该引脚和STC89C52RC引脚11相连,实现数码管单边亮的控制。
引脚10:
控制F,该引脚和STC89C52RC引脚15相连,实现数码管单边亮的控制。
引脚11:
控制A,该引脚和STC89C52RC引脚17相连,实现数码管单边亮的控制。
引脚6、8、9、12:
分别控制从右往左,第一个数字“8”,第二个数字“8”,第三个数字“8”,第四个数字“8”。
引脚12和STC89C52RC引脚36相连实现第四个“8”亮或不亮的控制。
引脚9和STC89C52RC引脚37相连实现第三个“8”量或不亮的控制。
引脚8和STC89C52RC引脚38相连实现第而个“8”量或不亮的控制。
引脚6和STC89C52RC引脚39相连实现第一个“8”量或不亮的控制。
3.4湿度检测模块设计
3.4.1FC-28湿度传感器工作原理
接通电源。
利用传感器探头的导电性,检测出电平信号。
当湿度低于设定值时,输出高电平,高于设定值时,输出低电平。
这样土壤的湿度以电信号的方式输送出来。
输出的电平信号传送到AD转换器,将其转换成模拟信号。
3.4.2FC-28湿度传感器及AD转换器的接口电路
3引脚接电源;2引脚接地;1引脚接AD转换器,将模拟信号输出到AD转换器[6]。
图3.6湿度传感器及AD转换器接口引脚
3.5硬件整体设计
硬件整体设计原理图[7]如图3.8所示。
图3.7自动浇花系统的设计整体原理
4系统软件设计
4.1系统软件设计思路
自动浇花系统软件设计包括四个部分的程序设计,分别是:
AD转换模块程序设计、湿度检测模块设计、阀值调节模块、数码管显示模块设计。
AD转换模块程序设计主要实现以下功能:
将湿度传感器产生的模拟信号转换成数字信号。
湿度检测模块设计主要实现以下功能:
通过程序设计,对所测湿度值进行处理,当低于所设定阀值继电器打开,实现浇水功能;当高于或等于所设阀值继电器关闭,关闭浇水功能。
阀值调节模块主要实现以下功能:
设定两个按键实现对阀值的调节功能,其中一个按键要求是上调键,另一个是下调节,同时设定调节幅度为5。
数码管显示模块主要实现以下功能:
需要数码管实现三个值的显示,分别是:
采集的电压值、采集的当前土壤湿度值、设定的适合植物生长的土壤湿度阀值。
数值顺序显示,通过间歇加以区分显示。
4.2系统软件设计整体框图[8]
初始化开始
阀值设定
读取信号值
数据处理
显示
模拟电压湿度阀值
湿度判断
大于等于小于
jidianqi=0jidianqi=1
图4.1软件设计原理
结论
本文介绍了基于STC89C52RC单片机的自动浇花系统的设计,对整个硬件电路设计进行分析。
文中介绍了自动浇花系统的功能和作用,介绍了自动浇花系统的设计思路和设计原理,从而对MCS-51系列单片机的有了一定的学习。
制作过程中成功运用了DXP软件和电子工艺技术,加深了对大学专业本科知识的应用能力。
利用ProtelDXP强大的功能,用其进行原理图设计,它可以对当前所画的原理图进行仿真,在整个设计周期都可以查看和分析电路的性能指标,及时发现设计中所存在的一些问题并加以改正。
设计者再进行电路的工作状况分析,从而提高电路的设计工作效率、缩短开发周期、降低制做成本。
写完本篇论文,也仅仅是自动浇花系统做了一个初步研发,怎样将自动浇花系统做得更好更人性化,以及将此次设计应用发散到其它单片机设计,是此次设计完成后需要思考的问题。
参考文献
[1]余锡存,曹国华著.单片机原理及接口技术(第二版)[M].西安:
西安电子科技大学出版社,2007.
[2]孙惠康,冯增水著.电子工艺实训教程(第三版)[M].北京:
机械工业出版社,2009.
[3]黄国权,翘建安,陈宁.基于MC51湿度检测系统的实现[D].广西工学院,2002,13(3).
[4]田亚娟编.单片机原理及应用[M].大连:
大连理工大学出版社,2008,9.
[5]杨颂华,冯毛官著.数字电子技术基础(第二版)[M].西安:
西安电子科技大学出版社,2008.
[6]阎石著.数字电子技术基础(第五版)[M].北京:
高等教育出版社,2006.
[7]刘刚,彭荣群著.ProtelDXP2004SP2原理图及PCB设计(第2版)[M].北京:
电子工业出版社,2010.
[8]杨路明著.C语言程序设计教程(第2版)[M].北京:
北京邮电大学出版社,2005.
附录A
系统整体电路
附录B
全部程序清单
#include
#include
#include
#include
sbitjidianqi=P2^6;//定义继电器引脚为P2.6
sbitinc=P1^6;//定义"加"按键引脚为P1.6
sbitdec=P1^7;//定义"减"按键引脚为P1.6
sbitP20=P2^0;//定义小数点控制端口
sbitCS=P2^5;//定义数据端口
sbitoutput=P2^4;//定义AD输出端口
sbitinput=P2^3;//定义AD采集端口
sbitclock=P2^2;//定义时钟端口
sbiteoc=P2^1;//定义数据端口
unsignedlongdianya1=0;
unsignedlongdianya11;
unsignedlonga,b,c=600;//定义a,b,c初始值
unsignedcharcodeled_duan[]={0x5f,0x03,0x6d,0x67,0x33,0x76,0x7e,0x43,0x7f,0x77};//p36=a,p35=g,p34=f,p33=e,p32=d,p31=c,p30=b
unsignedcharcodeled_wei[]={0x07,0x0b,0x0d,0x0e};//s4=p00,s3=p01,s2=p02,s1=p03数码管位选,段选定义
unsignedintread2543(unsignedcharCON_WORD);//函数声明
staticvoiddelay(unsignedinttime)//延时函数
{
while(time--);
}
voidkey(unsignedlongb)//按键扫描函数
{dec=inc=1;//默认为都没按下
delay(50);//延时
if(inc==0)//检测按键是否按下
{
delay(50);//延时,防抖动
if(inc==0)//再次检测是否按下
{c=c+50;delay(50);}//C的值加50,调整阀值
}
delay(100);
if(dec==0)
{
delay(100);
if(dec==0)//再次检测是否按下
{c=c-50;//调整阀值
delay(100);
}
}
}
/******************************
函数名:
unsignedintread2543(unsignedcharCON_WORD)
功能:
读取TCL2543的AD值
参数:
无
********************************/
unsignedintread2543(unsignedcharCON_WORD)
{
unsignedintad=0;//定义局部变量
unsignedchari;
CON_WORD<<=4;
clock=0;
CS=0;eoc=1;
for(i=0;i<12;i++)
{
if(output==1)
ad=ad|0x01;
if(CON_WORD&0x80)
input=1;
else
input=0;
clock=1;
delay(10);
clock=0;
CON_WORD<<=1;
ad<<=1;
}
CS=1;
ad>>=1;eoc=0;
return(ad);
}
//延时函数
staticvoiddelay_ms(unsignedinttime_ms)
{
unsignedi