基于51系列单片机的自动喷水系统_第1页
基于51系列单片机的自动喷水系统_第2页
基于51系列单片机的自动喷水系统_第3页
基于51系列单片机的自动喷水系统_第4页
基于51系列单片机的自动喷水系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于51系列单片机的自动喷水系统项目摘要摘要本系统由主要由四大部分组成:数据输入部分,数据显示部分,数据输出部分,数据处理部分。数据输入部分的功能是把要采集的数据转化成数字信号传入数据处理部分。数据显示部分的功能是把采集的数据显示出来。数据输出部分的功能是控制电磁阀来进行外部温湿度的调节。数据处理部分的功能是把采集进来的数据进行分析,输出要输出的信号控制数据的输出。本系统的功能是采集温湿度并显示,从而控制电磁阀的输出,进而控制外面的温湿度使得外面的温湿度适合植物的生长。关键词:单片机,自动灌溉,温湿度,LEDEnglishAbstractABSTRACTThissystemmainlycons

2、istsoffourparts:datainput,datadisplay,dataoutput,dataprocessing.Thedatainputportionofthefunctionistocollectdataintodigitalsignalintothedataprocessingsection.Datadisplayfunctionistocollectdatadisplay.Dataoutputportionofthefunctionistocontroltheelectromagneticvalvetoexternaltemperatureandhumidityregul

3、ator.Thedataprocessingpartofthefunctionistocollectinthedataanalysis,theoutputtooutputsignalstocontroltheoutputofthedata.Thefunctionofthissystemisthecollectionoftemperatureandhumidityanddisplay,soastocontroltheelectromagneticvalvetocontroltheoutput,theoutsidetemperatureandhumiditymakestheoutsidetempe

4、ratureandhumiditysuitableforthegrowthofplants.KEYWORDS:Microcontroller,Automaticirrigation,Temperatureandhumidity项目实现构思自动喷水系统的设计和功能介绍自动化控制喷水系统(灌溉)是利用温湿传感器来监测土壤信息、作物生长信息,并将监测数据传到控制系统,在CPU的分析下,对终端设备发出相应的指令,以实现无人自动维护作物生长环境以及土壤性质的功能。我们的自动喷水系统的工作原理和功能实现如下:通过土壤、气象、作物等类传感器及监测设备将土壤、作物、气象状况等监测数据通过数据总线传到单片机,经

5、过单片机系统内已编好的程序来汇集数值并进行分析处理来确定是否应该灌溉或停止灌水,然后将开启或关闭阀门的信号通过单片机传输到灌水模块,由阀门控制系统实施阀门的开关,从而实现农作物灌水的自动化控制。在系统的设计过程中,我们分为以下几个子系统:控制子系统,其中主要包括了电磁阀等相关电路,用来控制水的灌溉;数据采集子系统,其中包括AM2301等相关电路;分析子系统,其中包括AT89S52单片机等相关电路;显示子系统,其中包括LED数码管显示等相关电路;报警子系统,其中包括蜂鸣器等相关电路;操作子系统,其中包括按钮等相关电路。挖色创新部分1 .本次系统设计中我们加入了报警电路模块,当温度达到我们的设定值

6、时,蜂鸣器便会开始报警,而当温度降到设定值以下时,蜂鸣器将会停止报警。2 .在考虑温湿度传感器的选择时,我们决定使用同时集成了温湿度采集及数字输出的AM2301,相比温度传感器DS18B20和湿度传感器AM1001,它更加方便使用,而且采集输出精度更高。3 .在设定温湿度的值时,我们采用4个按键来控制,其中S1和S2键用作减和加,用来定时和设定温湿度的初始值,S2键进行倒计时和时间设定的切换,S4键用来切换定时喷水、根据温度喷水、根据湿度喷水这三种指定模式。能够自由设定温湿度和定时时间,显得更为人性化,更加具有实用功能。4 .保护电路,使用继电器,通过弱电控制强电,减少了电磁阀对控制系统的干扰

7、。定程度上保护了主要电路,延长了使用寿命。项目实现方案:方案的比较1 .单片机的选择单片机具有体积小,价格低廉,功能强大,稳定可靠,运算速度快,功耗低,扩展容易,抗干扰能力强,系列齐全,使用方便灵活等优点,广泛应用于工业过程控制、自动监测、智能仪器仪表、家用电器等领域。常用开发单片机有AT89S51和AT89S52,二者各有优缺点。方案一:使用AT89S51控制系统。AT89S5建一个低功耗,高性能CMOS位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写100畋的Flash只读程序存储器,器件采用ATME公司的高密度、非易失性存储技术制造,兼容标准

8、MCS-5指令系统及80C5你脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S5何为许多嵌入式控制应用系统提供高性价比的解决方案。方案二:使用AT89S5桂制系统。相比51,功能基本相同,它的价格虽然略高一点,但是性能更好一点。总结:综合考虑,采用方案二,本次设计选用市场上比较普遍的单片机AT89S5来实现系统设计,其内部带有8KB勺程序存储器,256字节的数据存储器,足以满足系统要求。并且他们的引脚相同,而52单片机能发挥出更大的能效,且由于我们正在学习单片机,手上正好有52单片机,我们对它也比较熟悉,所以就决定采用52单片机来实现。2 .传

9、感器的选择对于传感器的选择,我们有两种方案,一种是温度采集使用DS18B20,而湿度采用AM1001,另一种则是采用已将温湿度采集集成在同一片传感器上,且以校准数字信号输出的复合传感器AM23010综合二者,我们选用AM2301(又名DHT21)温湿度传感器,选用它有以下几个理由:(1)考虑DS18B20采集比较麻烦,因此我们决定直接使用AM2301这块集成温湿度并且数字输出的传感器。(2)超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为温湿度测量的最佳选择。(3)因为AM2301,有已经编译好的驱动程序,只需编写将感应到的数据传送到单片机,再发送到用口显示,省去了编程的麻烦,且只

10、需要一个单片机I/O口来传送数据,节省了硬件资源。3 .显示器的选择显示器可采用LED数码管和LCD显示屏,将二者进行比较,LED结构简单,它实际上是由七个发光二极管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的2个8数码管字样了。它的原理简单,容易理解和操作,对于一些简单的显示系统是非常理想的器件。LCD虽然功能强大,但是操作复杂,并且LED在本系统中就足以发挥作用,加上成本低廉,所以在本次设计中选用LED显示数据。系统架构图在控制系统方面,通过我们学过的自动控制原理的知识,

11、我们确定本系统采用有单片机的传统的闭环控制系统,系统控制原理图如下图所示:闭环控制逻辑原理框图其中,植被温湿度是由AM2301传感器组成的数据采集子系统,数据显示是由6片LED数码管构成的显示子系统,AT89S52处理数据是由52单片机构成的主控制子系统,其中还包括了定时以及对电磁阀的控制,电磁阀开关则是实现喷水动作功能的子性统。k计与论证卜自动喷水系统共分为七个模块:主控制模块、电磁阀控制模块、报警模块、显示模k定时模块、温度采集模块、抗干扰模块1 .主输入输出控制电路。自动控制系统通过AM2301传感器对受控对象的有关参数信息数据的实时采集及数字变化,进入单片机CPU进行必要的处理,而后输

12、出以驱动执行器件或机构产生相应的动作,直接推动被控对象来调整被测参量,最终目的以使受控参量始终处于卜求值或范围内。在单片机完成控制处理后总是以数字信号通过I/O口线或数据总线输出至受控对象的。对受控设备的驱动常采用模拟量或数字量输出驱动两种方式。而在实际的单片机测控系统中,数字量输出控制已越来越广泛地被应用,尤其是其中的开关量输出驱动和控制。目前单片机I/0口线的驱动能力和与CPU直接接口的一般TTL电路或CMOS电路的驱动能力很有限的,不足以驱动那些功率开关(如继电器、电机、电磁开关等)和强电设备、大功率负载,且由于工作现场环境恶劣、输出通道接近控制对象及周围的电磁等干扰严重,所以输出控制电

13、路设计主要是解决输出隔离即干扰防治卜功率驱动问题。2 .电磁阀控制电路电磁阀控制电路主要由NPN共集-共射复合管及继电器组成,当单片机P0.7给出高电平,复合管导通,继电器接通,将开关吸合,电磁阀接通开始放水。因为单片机的带负载能力比较小,不足以驱动继电器和电磁阀,所以采用功率放大驱动电路,使得电底阀能够工作。输出通道控制图如图所示:电磁阀控制电路3 .报警电路设计报警电路设计作为一个独立的模块,采用市面上比较普遍的蜂鸣器电路,结构比较简单,使用AT89S52上的一根口线驱动蜂鸣器发声。蜂鸣器电路4 .显示模块电路显示模块可采用两种方式,一种是采用动态显示方式驱动6个数码管工作,左边四位显示温

14、湿度值,精确到小数点后一位,右边两位为温湿度的单位显示。其中通过S4键切换温湿度,数码管通过位段扫描实现显示功能。5 .定时模块定时模块其中分为定时部分和调时部分,同样通过S1和S冽来控制时间的减和加,S31来确定定时和切换设置时间。温湿度程序代码与定时类似,下面仅列出定时程序代码。定时程序代码:voidtime_display(inta,intb,intc)/调试部分、P2J位选,P0为段选,显示格式为时-分-秒uchars,g;s=a/10;g=a%10;clk=0;P2=wei5;P0=duans;clk=1;delay2(1);clk=0;P2=0;clk=1;delay2(1);cl

15、k=0;P2=wei4;P0=duang0x80;clk=1;delay2(1);clk=0;P2=0;clk=1;delay2(1);10s=b/10;g=b%10;clk=0;P2=wei3;P0=duans;clk=1;delay2(1);clk=0;P2=0;clk=1;delay2(1);clk=0;P2=wei2;P0=duang0x80;clk=1;delay2(1);clk=0;P2=0;clk=1;delay2(1);s=c/10;g=c%10;clk=0;P2=wei1;P0=duans;clk=1;delay2(1);clk=0;P2=0;11clk=1;delay2(1

16、);clk=0;P2=wei0;P0=duang;clk=1;delay2(1);clk=0;P2=0;clk=1;delay2(1);6 .温湿度采集电路设计AM2301是一块集成了温湿度采集及数字输出的传感器,因此,我们只需要将AM2301的VCC端接5V电压,将SDA端接52单片机I/O进行数据的输入输出,同时将GND端接地,便可实现温湿度的采集。12VCCT5温湿度采集电路设计7 .硬件的抗干扰设计在自动浇灌控制系统中,系统可靠性的保证是非常重要的,单片机硬件系统的可靠性决定了整个系统的可靠性。硬件抗干扰技术主要体现在过程通道抗干扰设计、供电系统抗干扰设计和印刷电路板抗干扰设计三个方面

17、。单片机硬件系统的抗干扰能力与元器件质量、装配质量等因素都有关系,但主要取决于设计的可制造性(DEM),本系统采取如下相应的抗干扰措施。1 .采用抗干扰稳压电源采用具有抗干扰能力的稳压电源,绝大部分干扰都可以克服。提高稳压电源抗干扰能力,通常采用的措施:采用电源滤波;通过低通滤波器接入电网。2 .采用良好的接地系统。3 .强电与弱电之间采用继电器隔离。四.关键模块的分析1 .地表温湿度传感器首先是对AM2301的介绍。AM2301湿敏电容数字温湿度模块是一款含有己校准13数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传

18、感器包括一个电容式感湿元件和一个高精度测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质。越、超快响应、抗干扰能力强、性价比极高等优点。每个传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在单片机中,传感器内部在检测信号的处理过程中要调用这些校准系数。标准单总线接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选择。产品为3引线(单总线接口)连接方便。特殊封装形卜可根据用户需求而提供。|VDPSOA仁£|川匚AM2301引脚图及其分配弓胭1颜P色名称描述1红色VDD电源(3.5-5

19、.5v)2黄色SDA串行数据,双向3里八、色GND地144NC空脚AM2301弓I脚分配AM2301的数据总线SDA输出40位数据后,继续输出低电平50微秒后转为输入状态,由于上拉电阻随之变为高电平。同时AM2301内部重测环境温湿数据,并记录数据,测试记录结束,单片机自动进入休眠状态。单片机只有收到主机的起始信号后,才重新唤醒传感器,进入工作状态。AM2301传感器读L总线的流程图如图所示15传感情上电初始化读取设备发送起始信号AM2301传感器读单总线的流程图温湿度检测程序代码:#include<reg52.h>#include<intrins.h>/*define

20、dforunsigned8-bitsintegervariabletypedefunsignedcharU8;typedefunsignedintU16;无符号8位整型变量*/*definedforunsigned16-bitsintegervariable16无符号16位整型变量*/#defineucharunsignedchar#defineuintunsignedint/-/-IO口定义区/-/sbitbeep=P3A2;sbits0=P3A3;sbits1=P3A4;sbits2=P3A5;sbits3=P3A6;sbitHR=P3A7;sbitclk=P2A7;/-/-定义区/-/U

21、8U8FLAG,q,w,e;U8U8temp;U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8datatab6,tabs6;U8U8comdata;U8outdata6;/定义发送的字节数U8count;U8str6;U16U16temp1,U16temp2;ucharshi,fen,miao,nam;17ucharcodewei=0x01,0x02,

22、0x04,0x08,0x10,0x20;/八位位选码表ucharcodeduan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数码管显示编码(1-F)voidSendData(U8*a)outdata0=a0;outdata1=a1;outdata2=a2;outdata3=a3;outdata4=a4;outdata5=a5;count=1;SBUF=outdata0;voiddelay1(U16t)U16i,j;for(i=t;i>0;i-)for(j=25;j>0;j-);voiddelay2(U8z)uinti,j;

23、for(i=z;i>0;i-)for(j=110;j>0;j-);voidDelay(U16j)U8i;for(;j>0;j-)for(i=0;i<27;i+);18voidDelay_10us(void)U8i;i-;i-;i-;i-;i-;i-;voidCOM(void)U8i;for(i=0;i<8;i+)U8FLAG=2;while(!HR)&&U8FLAG+);Delay_10us();Delay_10us();Delay_10us();U8temp=0;if(HR)U8temp=1;U8FLAG=2;while(HR)&&

24、;U8FLAG+);超时则跳出for循环if(U8FLAG=1)break;判断数据位是0还是1/如果高电平高过预定0高电平值则数据位为1U8comdata<<=1;U8comdata|=U8temp;/0/rof19/-/-湿度读取子程序/-/以下变量均为全局变量/-温度高8位=U8T_data_H/-温度低8位=U8T_data_L/-湿度高8位=U8RH_data_H-/-湿度低8位=U8RH_data_L-/-校验8位=U8checkdata/-调用相关子程序如下/-Delay();,Delay_10us();,COM();/-voidRH(void)/主机拉低18msHR

25、=0;Delay(180);HR=1;总线由上拉电阻拉高主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();主机设为输入判断从机响应信号HR=1;判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!HR)/T!U8FLAG=2;判断从机是否发出80us的低电平响应信号是否结束while(!HR)&&U8FLAG+);20U8FLAG=2;判断从机是否发出80us的高电平,如发出则进入数据接收状态while(HR)&&U8FLAG+);数据接收状态COM();U8RH_data_H_

26、temp=U8comdata;COM();U8RH_data_L_temp=U8comdata;COM();U8T_data_H_temp=U8comdata;COM();U8T_data_L_temp=U8comdata;COM();U8checkdata_temp=U8comdata;HR=1;数据校验U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp=U8checkdata_temp)U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8R

27、H_data_L_temp;U16temp1=U8RH_data_H;U16temp1<<=8;U16temp1|=U8RH_data_L;/获得完整的湿度tab0=U16temp1/100;湿度百位tab1=U16temp1%100/10;/湿度十位tab2=U16temp1%10;/湿度个位U8T_data_H=U8T_data_H_temp;U8TdataL=U8TdataLtemp;21U16temp2=U8T_data_H;U16temp2<<=8;U16temp2|=U8T_data_L;/获得完整的温度tab3=U16temp2/100;/温度百位tab4

28、=U16temp2%100/10;/温度十位tab5=U16temp2%10;/温度个位U8checkdata=U8checkdata_temp;/校验位2 .主控制器模块系统中我们选择主控制器芯片的时候需要考虑整个系统的功耗要低,并且有非易失性的程序和数据存储器方便数据的掉电存储,要集成内部基准电压源并采用at89s51单片机。AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写100畋的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51

29、弓唧结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S52在众多嵌入式控制应用系统中得到广泛应用。主机和传感器之间可通过三个步骤完成数据读取步骤一:AM2301上电后(AM2301上电后要等待2s以越过不稳定状态,在此期间读取设备不能发送任何指令),测试环境温湿度数据,并记录数据,此后传感器自动转入休眠状态。AM2301的SDA数据线由上拉电阻拉高一直保持高电平,此时AM2301的SDA引脚处于输入状态,时刻检测外部信号。步骤二:微处理器的I/O设置为输出,同时输出低电平,且低电平保持时间不能小于800us,典型值是拉低1MS,然后微处理器的I/O设置为输入状态,释放总线,由于上拉电阻,微处理器的I/O即AM2301的SDA数据线也随之变高,等主机释放总线后,AM2301发送响应信号,即输出80微秒的低电平作为应答信号,紧接着输出80微22秒的高电平通知外设准备接收数据。步骤三:AM2301发送完响应后,随后由数据总线SDA连续串行输出40位数据,微处理器根据I/O电平的变化接收40位数据。位数据“0”的格式为:50微秒的低电平加26-28微秒的高电平;位数据“1”的格式为:50微秒的低电平加70微秒的高电平。主程序程序代码:voidmain()init();SendData(str);发送到串口Delay(1);/延时100US(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论