1、安 徽 农 业 大 学毕 业 论 文(设计)论文题目 基于51单片机的农田自动灌溉系统 姓 名 田秦 学 号 11103932 院 系 信息与计算机学院 专 业 电子信息工程 指导教师 魏雅鹛 职 称 讲师 中国合肥二o一五 年 六 月安徽农业大学学士学位论文(设计)开题报告课题名称单片机智能自动浇花系统的设计课题来源导师指定学生姓名田秦专业信息与计算机学院学号11103932指导教师姓名魏雅鹛职称讲师研究内容1.开关量输入:按键开关。2.开关量输出:控制外部设备。3.模拟量输入:用湿度传感器检测外部模拟量。4.串行通信:上、下行通信。研究计划3月中3月底 调研、查资料。4月初4月中 确定系统
2、架构、分析并划分各功能模块的接口。4月底5月中 各功能模块软、硬件的设计与开发。5月下5月底 各功能模块及整个系统的调试与运行。6月初 撰写毕业设计论文。特色与创新利用湿度传感器来检测土壤的含水量并将检测到的信号传给控制器51单片机,通过土壤湿度传感器检测到的土壤数据反馈到单片机,单片机经过比较处理。如果需要浇水则驱动水泵电机浇水。如果不需要单片机停止浇水实时显示当前湿度。系统可可以设定上限和下限。指导教师意见教研室意见学院意见目 录1 引言42 系统设计52.1 方案论证52.1.1总体方案设计52.1.2 芯片的选择62.1.3 系统结构62.2 系统硬件设置72.2.1 AT89S51主
3、要性能参数72.2.2 时钟电路82.2.3 AT89C51的复位电路92.2.4 YL-69土壤湿度传感器102.2.5 ADC0832功能特点及引脚112.2.6 ADC0832 的控制原理132.2.7继电器132.2.8 蜂鸣器及按键152.3 系统软件设计172.3.1 系统流程图172.3.2 LCD1602显示程序182.3.3按键程序183 仿真设计与硬件调试203.1 仿真设计213.2 硬件测试与调试224 结论23参考文献24致谢25英文摘要.26附录2732基于51单片机的农田自动灌溉系统设计学生:田秦 指导老师:魏雅鹛(安徽农业大学 信息与计算机学院 合肥)摘要:科技
4、在发展时代在进步,自动控制技术在农业方面的运用越来越广泛,这次农田自动灌溉系统是使用AT89C51单片机作为系统的控制中心,我们通过YL-96模块来检测土壤水分,然后把YL=96所得到的具体情况在LDC1602上表示出来,系统中包括一个蜂鸣器,是用来模拟其通知模块的,系统中会通过四个按键组成的按键系统来对数据的上下限进行设定,超过限制则报警,有上述几个模块则自动灌溉得以实现,灌溉的同一时间蜂鸣器则会发出bb的提示声音。这项技术给我国的农业发展带来巨大的便利,本篇文章则是简单的模拟这项技术的实现。关键词:YL-69;AT89C51;单片机; LCD1602;土壤湿度1 引言试想人类如果还在那个不
5、能保证温饱的时代,我们该如何去改善这一切,努力发展农业生产力则是一切之重。那么如何获取更高的水稻产量成为当今我国农业研究项目中的大问题。扯得有点远,但是为了实现这一目标,方便的自动化的农田设施当然是必不可少的,而灌溉又是一个重中之重的问题,所以农田的自动灌溉系统也就成为了设计农田设施之中的一部分。由于农作物的种类不同,其对水分的要求也就不同,就如水稻种在水田而小麦种在旱地的道理一样,不同的农作物需要与其相适应的湿度环境,所以合理地土壤湿度会决定作物是否能够优良的成长,而且也能避免不必要的水资源浪费,因此,要设计一个高效的灌溉系统首先要看它是否能根据植物的需求进行适当适量的供水。首先是测量,得到
6、土壤中湿度的数据,根据土壤湿度以及其中所含的物质的数据结合作物对水的需求特性来确定控制灌溉的 力度。这对过去的灌溉经验有着巨大冲击,在科学的基础上对作物的灌溉作出决策。其次是控制,利用土壤的研究数据以及作物的需水特性合理的决策灌溉策略,就是否定自古以来的全屏经验人工的控制方式取而代之进行适时适当的灌溉控制。采用植物的特性和土壤数据结合的方式通过灌溉装置控制给水的量,使水资源合理的被利用,也达到了节约人力物力智能控制作物灌溉的目的。2 系统设计2.1 方案论证2.1.1总体方案设计通过虹吸原理给水的农作物自动灌溉系统在当今农业界运用普遍,也就是我们所说的利用渗透的原理的灌溉方式,这是一种不间断持
7、续的灌溉手段。这种农业灌溉方式只可以确保作物的不缺水,使作物不会死于干旱枯水,可它对作物是否处于最有利生长的湿度环境并不能做出很好的保证,而其对水的浪费量也是前所未有的。为了解决虹吸原理的灌溉装置造成的问题,现有本人设计了一种作物自动灌溉系统,不同于其他本装置将自动化的控制作物生长环境中的湿度水分,也就是选择性的对植物进行适度的灌溉,通过硬件的控制根据作物的需水特性结合土壤的湿度数据作出合理的灌溉控制。先不提过程,我们在单片机程序的指导下,采集土壤中水分的数据,然后决定控制数据的上下限,在51单片机的分析与计算下选取合适的灌溉量,其中包括判断土壤中水分的数据,如若传感器收集的数据没有达到设定的
8、下限数据,蜂鸣器发出刺耳的蜂鸣声作为报警,然而如果数据并没有突破上限则单片机控制装置中断灌溉行为,如此一来对农作物的自动灌溉的设想能有实现的可能。设计需要达到以下若干功效:1.在单片机的指导下通过YL-69模块得到土壤中水分的数据;2.在LDC1620上显示出YL-69所得到的土壤的含水量的数据;3.收集各种作物最佳生长所需土壤湿度设置灌溉的控制点;4.收集的土壤湿度数据和作物需水特性的数据通过单片机的分析和计算,让灌溉系统决定是否进行灌溉。本作物自动灌溉系统分为软件和硬件两个模块构成,首先由单片机主控模块、然后是显示模块、土壤水分数据采集部分,输入部分,灌溉部分,蜂鸣器系统部分六个子系统组成
9、了硬件系统。其中AT89C51是主控模块上的部分,是次系统的中心部分。而传感器模块则由YL-69为核心。利用按钮部分来实现控制点的设定。显示模块则是更明确的显示各项数据,实现人性化,当然报警模块也是如此。水泵则是实现执行作用。软件部分与硬件部分大同小异但目的相同,即实现模块的清晰的条理性,与硬件相互配合来实现的设想。因为要实现与硬件的适配,其部分必然与硬件差不了太多,但是软件系统方便,灵活,具有较强的交互性,而软硬件的结合的思路让这个作物自动灌溉系统更加的优化。相比较市场上主流的系统具有误差小,稳定可靠的优点。2.1.2 芯片的选择芯片的选择:AT89C51 A/D转换:ADC0832继电器选
10、择:松乐SRS-05VDC-SL。显示器的选择:LCD1602 2.1.3 系统结构本系统有电源接口电路、显示电路、土壤检测电路、继电器控制潜水泵电路、蜂鸣器电路、按键设置六大部分组成。系统原理图如图1所示。AT89C51单片机电源电路土壤检测LCD1602显示蜂鸣器水泵电路按键图2.1-1 系统原理图2.2 系统硬件设置2.2.1 AT89S51的介绍 图2.2-1 AT89C51引脚图一个完整的计算机必须要包括一下若干个成分:CPU,存储器,I/O接口与时钟系统。在现在的计算机上这些部分全部都被复杂化并分散在不同的芯片上面,可以实现非常复杂的功能,但是这些都太过复杂不利于研究,于是就诞生了
11、一种简单的被集成在同一个主板或者线路板上的我们称之为单片机。而AT89S51正是其中的一种。它具有功耗低易于学习价格低廉等优点,因为它具有输入输出控制端口以及内外部的存储空间能实现A/D,D/A转换以及通过外接传感器对信息的采集,而且可以轻易的实现人机互动显示数据在显示屏上,并且能通过I/O端口实现对外部设施的控制,具有一系列的优秀功能。AT89S51系列单片机语言的编写流程较为基础,其语法结构类似于C语言但是又比普通的C更为容易学习,所以具有C编程基础的人通过一系列的学习很容易上手。同时这款芯片价格也足够低廉,可以满足大多数需求。有上述优点AT89S51迅速占领市场,成为人们生活中必不可少的
12、一部分。AT89C51在焊接的过程中比较容易,应为其引脚与电路图是相互对应的,所以焊接起来并不复杂,直接按照图上来的焊接就可以了,但是此原件一般是最先焊接的而且是整个系统的中心部分所以为了方便引出线路所以有必要放在线路板的中央部分,虽然简单也要求细心。2.2.2 时钟电路图2中X1,X2部分为单片机中的高增益方向的发达器的输入和输出引脚,可以在XI、X2之间接上石英晶体,然后就可以产生内部时钟,这就是所谓的内部时钟电路,这样做可以达到将输出立刻送到单片机内部电路的目的。有必要提一下其实单片机还有个外部时钟,这两种方式是有一定区别的。具体的看下图部分。图2.2-2 单片机AT89C51的时钟电路
13、既然上面说到内部时钟和外部时钟两种时钟方式,那么接下来就让我们谈谈这两种方式首先是内部时钟方式,内部时钟是单片机自带的,是单片机自己产生的,是一种普遍的基本的时钟。单片机的运行需要接入时钟产生脉冲信号,不管是哪种,但是若单片机的时钟电路停止工作那么单片机也无法运行,如何采用单片机自带的时钟呢?这就是需要我们在X2和XI之间接入一个晶振,就是上面图上的石英晶体,然后在再两边都分别接入相同的电容器,电容器的另一端同时接地,电容的容量一般在几十皮法左右方可产生所需时钟信号。需要注意的是晶振必须放置在离单片机较近的地方以免影响其稳定性,否则会有寄生电容从而影响时钟信号的可靠性,如图3左边所示。另外我们
14、再说一说与上面的由单片机内部提供信号的不同的方式,正如图3右边所示,这就是我们所说的外部提供脉冲信号的方式,它直接接一来自外部的信号,其信号直接与XTAL1相连,而XTL2则不连。 至于时钟电路的焊接,其实时钟电路最好焊接在离AT95C51最近的部分,至于原因上述的很明确了。2.2.3 AT89C51的复位电路AT89C51的引脚上可以看到一个用作复位作用的端口,电路图上用RAT/Vpd来表示,其中Vpd表示备用电源。如今我们只谈谈其RST即复位功能。通过单片机原理图也能看到,RST引脚作为其上唯一的具有复位功能的引脚,该引脚为其提供上电复位和掉电保护。当AT89C51的内部时钟工作时,就会有
15、两个连续的机器周期的上升沿信号出现,接着就可以实现复位的操作,其将会回到初始的工作状态。但是考虑到单片机内部的振荡器有着一定的开始震荡的延迟时间,所以此复位引脚就由必要保持10ms左右的连续高电平才可以保证复位的有效性。在单片机中所有的启动程序运行程序都要有复位的存在,复位就是让单片机内部的系统处于一种初始化的阶段,然后单片机将从这个阶段开始正常的工作。除了上述所阐述的上电位复位以外还有一种复位方式我们称之为复位按钮重置,如果单片机执行程序出现错误或者出现了死循环时,就有必要使用复位按钮重置图2.2-3 复位重置部分如上图所示的复位系统便是本作物灌溉系统所采用的复位系统,这是一个按钮式的复位系
16、统与图上电解电容的负极相连的引脚的就是单片机上的复位部分的引脚。RST还分别与10k电阻的R1,复位按钮S1相连,S1的与C3的正极相连并且同时接5v电压电源Vcc。R1的下端接地。如此便构成了此复位系统。按下按钮此时系统瞬间通电则在系统通电的时候,电解电容具有通电的同时不会瞬间改变两端电压大小的特点,这是一种延迟,因此电流直接通过S1进入单片机复位引脚,这种延迟会慢慢消失,RST端电压会慢慢地下降到3.6V。然后慢慢地充电将逐渐完成,如果这时候用万用表测量会发现基本上复位引脚的电压消失。如图5所示为RST引脚的电压变化。然而单片机只中的机械周期是与之前所说的 晶振电路的频率相挂钩的,所以R1
17、的电阻必须要大一点的所以我们采用了10k欧的电阻。图中S2,S3,S4分别与单片级的10号,11号,,1号引脚相连分别控制系统的湿度控制点的设置,下面会详细提到,在此我们浅浅一提一笔带过。此部分的焊接要求原件的分布不混乱就可以了,按钮最好可以焊成一排。方便以后对系统的操作,如果是走线的话此部分焊接并没有难度,但本人是走锡的,路线较为复杂需要耐心。图 2.2-4 晶振部分2.2.4 YL-69土壤湿度传感器传感器在我们的生活中应用较为广泛,不管是温度传感器还是湿度传感器,都是可以根据外界环境的变化来改变自身的一些特性如电阻电容什么的。而人们则根据其改变逆推出环境的变化,并总结出一定的规律转化为一
18、定的电信号并输出。传感器多种多样,市场上的传感器种类繁多,我们需要选用一款合适的湿度传感器。一般的湿度传感器是一种变换电阻值大小的传感器,当环境湿度过小时传感器的电阻值最大,大概有10k欧左右,但一旦环境湿度上升,传感器的电阻将立刻想下降,变化的速度很快,最低只有0.1欧姆左右。随着电阻的变化电压也会变化于是单片机就通过一系列的复杂演算得出当前环境的湿度大小,由于需要较为灵敏反映又快的传感器所以我们本次的设计选择采用土壤湿度传感器YL_69来实现功能。这是一种并不复杂的测量一个物体中水分含量数据大小的传感器,这中间的主要部分是湿敏电容,如若物体中水分含量的数值发生增加或者减少等一系列的变化时,
19、则传感器中的湿敏电容就会随湿度的变化而产生很明显的电容大小变化,当物体中水分增加则电容增加,当水分值下降则电容数值大小下降。这种湿敏电容非常灵敏、电容的变化也非常块,对外界环境变化有着相当快的响应,而且没有多少滞后问题,因此我们将其集成在一个很小的探头上。在本设计中此传感器起到采集和简册土壤中水分含量信息的功能,其原理图和实物图如下图2.2-5传感器部分2.2.5 ADC0832功能特点及引脚ADC0832是由一个国外的公司发明生产的A/D转换芯片,其具有八路的模拟量输入通道,这款A/D转换芯片与AT89C51相连的的接口有三条通道,具有转换启停控制功能,可接一般通用的电源,有着性价比高低能耗
20、等优点,尤其适合应用于小的智能化的自控设备之中,八路模拟输入通道使其具有很高的分辨率,可以适用于目前我们想要模拟的绝大多数的数据。ADC0832为了减少数据上的误差采用了双数据输出来保证数据校对的准确性与稳定性,而且应为其可以独立输入,因此单片机可以通过它控制较多数量的模块而且非常稳定速度也很快。所以总结一下此其包括以下几个可取之处:1. 具有8位的分辨率,而且基准电压在5V左右,比较容易实现;2. 功耗只有15mW,非常的低。3. 通过外接5V的电源来实现供电,比较普遍;4. 输入电平以及输出部分和CMOS与TTL相互兼容,不会出现冲突;5. 有着5v范围内的输入信号;6. 有两种可以供给选
21、择的模拟输入通道;ADC0832有DIP和SOIC两类,DIP的ADC0832引脚排列如图9所示。各引脚说明如下:1. CS片选端。2. CH0,CH1模拟输入信号1与0。3. DI信号的输入通道。4. DO信号的输出通道。5. CLK串行时钟输入端。6. Vcc/REF电源的输入和参考电压输入。7. GND接地。顺便一提,电路图的焊接时候对ADC0832的焊接要特别小心,应为对比电路图上的引脚与实物所对应的引脚其位置差别比较大,焊接起来要特别小心别弄错。而且如果单纯走锡的话电路比较绕所以特别需要小心。图2.2-6 ADC0832引脚图2.2.6 ADC0832 的控制原理ADC0832在一般
22、状态中包含4个与AT89C51相对应的端口,而这些端口的名称分别为电路图上标出的CLK、DI、CS、D0。但是一般来说单片机无法同时使用D0与DI引脚,而DO、DI引脚与单片机是利用双向通信来实现数据交换的,所以也就没必要同时接入DO,DI两个端口了。如果ADC0832处在停止状态,则CS电平呈现为高,此时就禁止芯片的运行,对DO、DI、CLK的电平高低不做要求。如若CS为低电平则芯片处在运行状态,此状态下芯片可以完美的进行A/D转换,此时单片机会向CLK引脚输入时钟信号,DI将会对单片机输送的数据作出甄选,在第1个时钟脉冲信号发送前,DI引脚显示为高电平,这就可以说明ADC0832正在运行。
23、在第2和第3个时钟脉冲发送之前,DI端口应该输入2位数据用于选择通道功能,其功能项如表1所示。表1 ADC0832的配置位输入形式 配置位选择通道CH0CH1CHOCH1差分输入00+-01-+单端输入10+11+之后ADC0832的电平变化状况都在表中表示出来了,我在此就不多重复了。2.2.7继电器继电器是一种电控制器件,就是通过它里面的电磁铁来实现电路的断开与连通,即电磁铁是被一个电路控制,而它的衔铁则控制另一个电路,这就是所谓的通过一个量来控制另一个量。这种输入回路与输出回路存在着一定的联系的器件频繁的被用在自动化电路的控制系统之中。它本质上就是一种自动开关元件而已。继电器的用处很多,基
24、本上电器中都有它的身影。继电器的类型多种多样,我们本次设计的作物自动灌溉系统则是采用了电磁集线器作为驱动水泵的一部分。当电流从VCC留个三极管Q2经过继电器线圈时,大家都知道这个线圈会产生磁力于是将吸引衔铁而导致回路的闭合,然后水泵就会开始抽水。当电流由于单片机的控制在三极管Q2处发生截止时,那么电流将不会通过线圈,则衔铁在弹簧的物理作用下保持回路的断开,此时水泵就不会工作了。图2.2-7继电器控制水泵(本次使用的继电器)当单片机控制的三极管不再断开,电流则会通过线圈,此时电磁铁吸引衔铁,K1被吸引到右边,整个电路都将通电,发光二极管接通,并且水泵进行抽水灌溉的动作。此部分的焊接较为复杂,应为
25、需要搞明白继电器的六个引脚在电路图上对应的地方,走锡的话细心就可以了。2.2.8 蜂鸣器及按键蜂鸣器是本系统中报警系统的一部分,电路图如下所示,并不复杂,其中FMQ便是蜂鸣器,当三极管Q1导通时,VCC的电流便会流经蜂鸣器,蜂鸣器报警。 图2.2-8蜂鸣器报警按键部分如下图。其中S1为位复位键,是用来重置系统的,具体实现在介绍复位电路时已经说得很详细了。按钮S2是用来设置湿度值的,当按下S2之后便可通过S3、S4来上下调整湿度的控制的上下限了。S3增加、S4减少。图2.2-9按键电路2.3 系统软件设计2.3.1 系统流程图系统软件设计也就是通过设计的程序来驱动硬件的各个部分,相应的也分为于硬
26、件相同的几个子系统来编写。主程序流程如图3所示。开始初始化及显示启动界面设置湿度上下限检测土壤湿度数据处理启动报警开启水泵判断灌溉是否结束?关闭水泵是否是否判断是否灌溉?图2.3-1 程序流程图2.3.2 LCD1602显示程序液晶显示的的特性是由于其物理性质而决定的,可以通过电压来控制液晶的显示。通电的瞬间,液晶显示器就能根据其电压的控制有规律的生成图像。在科技发达的当今液晶显示这种较为简单的原理,已经被用在生活中的各处,而人们的生活中也不乏出现它们的身影,下面是LDC1602液晶显示的控制程序 2.3.3按键程序单片机对程序的处理具有很快的速度,但是当人们按下按键时,并不能保证按钮发生良好
27、的接触,会发生数十次接触不良,这是在一瞬间发生的,人眼也许无法捕捉,但是单片机可以,当你按了按钮并放开的一瞬间,单片机可能读取的是你按了二三十多次按键,为了避免这种事人们在编写单片机程序的时候对单片机设置了延时,具体的流程如下。开始键按下?延时30ms键还按下?读取键值等待释放图2.3-2 按键流程图2.3-3 ADC0832芯片接口程序应为采用了ADC0832的A/D转换芯片,所以就需要一种ADC0832接口程序,这种程序因为需要加快信息传递速度和有效稳定性,所以我们采用C来编辑此芯片的接口程序,使用此A/D转换后数据流通的效率会变的很迅速,大概只需要32us左右。其转换的流程图如下图。开始
28、产生时钟信号能使芯片输入通道控制字读取2字节数据字节数据矫正将值送入指定寄存器结束图2.3-4 ADC0832读取数据流程图3 仿真设计与硬件调试3.1 仿真设计我们通过仿真来测试硬件是否能实现其应有的功能,如下图可以通过控制按键模块来设定控制的上下限,并显示数据于这个虚拟的液晶显示器上,控制湿度传感器模块的输入数据,当湿度过低则开始灌溉,当湿度过高时则停止水泵的灌溉,具体实现是通过继电器中的电磁铁和衔铁来实现的。图3.1-1仿真图3.2 硬件调试通过之前设计仿真得到的原理图,我们开始着手焊接实物。然后通过开发板和相应的计算机软件将程序烧入AT89C51。烧录过程如下1. 对应本次AT89C5
29、1下载与之相对应的烧制软件,我选择的是ISP。2. 进入软件界面,选工程,然后建立新工程,再cpu的选项中选择对应的单片机,即AT89C51。3. 从左边的工程栏选择你创建的,然后右键选择将文件添加到源组1组选项4. 弹出对话框,选择全部文件。右击工程栏的文件,选择第一项,选择debug,点上use,并选择keil moniter-51 driver。再点output选项,在creat hex file打勾,最后点击ok。5. 将单片机固定在开发板上接入电脑,进行烧录,选择相应的CPU选项。就可以等待烧制结束了在室外采集部分泥土,在室内准备一个小型的水槽,然后根据步骤测试是否功能可以完整的实现
30、。焊接过程睁大双眼,小心的应对,用时间与耐心来完成这次的焊接。如若出现短路或者线路不通的问题则耐心的用万用表进行检查。如果是原件的问题则需要更换元件,最好在购买的时候多准备些备用的元件。经过测试,本系统的功能可以很好的实现,系统工作正常可以运用到将此设想现实之中。4 结论作为本人大学期间完成的最后的一个设计课题,此次为了这项设计本人操碎了心,所幸的是,过程虽然比较艰辛但是结果是好的。这个农作物的自动灌溉系统是可以运行的。不多说了,以下便是我的总结部分。此次的农作物自动灌溉系统,通过YL-69传感器模块通过湿度传感器探头采集土壤中的湿度数据,然后通过A/D转换模块传输数据给单片机,经单片机对数据
31、的处理显示数据于LCD1602的液晶显示屏上显示出来。结合按键系统对湿度上下限的控制来判定是否发动水泵进行抽水,是否通过蜂鸣器进行报警,若是传感器采集的湿度数据小于我们设定的下限时,水泵开始灌溉。当采集的湿度数据大于我们设定的上限值时,水泵断开,停止浇灌。至于具体实现是通过继电器来控制的。当土、土壤湿度再出下降则继续浇灌,如此循环使环境的水分控制在设定的上下限之间,以此达到控制作物生长最佳环境。参考文献1 张兆明.基于AT89C52的家庭智能浇花器的设计J.电子设计工程,2011.032 程捷、何晨.基于单片机的温湿度检查系统设计与实现J.仪表技术,2011.06 3 赵丽、张春林.基于单片机
32、的智能浇花系统设计与实现J.长春大学学报,2012.094 袁腾、王帅、梅明、姜天华.基于单片机原里的可定时自动浇花器J.高科技产品研发,2012.075 刘明真、陈鸿.基于单片机智能节水灌溉系统的设计J.学术问题研究,2011.016 甘龙辉.基于单片机自动灌溉系统的设计J7 郭天祥.51单片机C语言教程M8 AT89S51 单片机的硬件结构 5da7148.html 2012.11.24 9 Nilesh R. Patel Rahul B. Lanjewar Microcontroller Based Drip Irrigation System Using Smart Sensor J,
33、2013.8.13致谢在我学年论文即将完成之际,标志我的大学生活还有半年就将结束。回想起这三年半的大学生涯,我的心情久久不能平静,我的求学生涯在家人、师长、同学朋友的大力支持和帮助下,走的艰辛却也收获丰盛。尽管我崇尚伟人、名人,可是今天的我需要将我的敬意和赞美献给一位平凡的人,我的导师魏雅鹛老师。您治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式。从论文的选题至论文的写作到最后的修改,您都给予我中肯的建议和悉心的指导。感谢我的爸爸妈妈,焉得谖草,言树
34、之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意!最后再一次感谢所有在我写论文中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。Monolithic integrated circuits smart to irrigation system designAnhui Agriculture University,NUIST,Hefei ,ChinaAbstract: In the development of science
35、and technology and in the era of progress. Automatic control technology are widely used in the part of agriculture. The design of automatic watering potted system. AT89C51 microcontroller for the control system is based on the chip, the use of YL-69 chip as temperature and humidity sensor module, LC
36、D1602 display module as the buzzer as the alarm module, the keyboard is used to set the alarm value ,The automatic irrigation is not a dream when you start to irrigation ,the buzzer is alarm. The technology is convenience the agricultural development in our country. the article is a simulation about
37、 the technology.Key words:YL-69; AT89C51 microcontroller; humidity; pumps; LCD1602附录 一.实物图二主要程序#include #include intrins.h#define uint unsigned int#define uchar unsigned char#define ulong unsigned long#define LCDIO P0 /液晶屏数据口/ADC0832的引脚sbit ADCLK =P11; /ADC0832 clock signalsbit ADDIO =P13; /ADC0832
38、k insbit ADCS =P14; /ADC0832 chip seclectsbit rs=P10; /定义1602 RSsbit lcden=P12; /定义1602 ENsbit key1=P30; /设定sbit key2=P31; /加sbit key3=P32; /减sbit motor=P37; /继电器接口sbit speak=P15;/蜂鸣器接口uchar key; /设定指针uint RH=400,RL=200;/水位上下限float temp_f;ulong temp;uchar v;uchar count,s1num;uchar code table= moistu
39、re: ;uchar code table1=RH: % ;uchar getdata; /获取ADC转换回来的值/*/void delay(uint z) /延时uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*/void write_com(uchar com)rs=0;/rd=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;/*/void write_date(uchar date)rs=1;/rd=0;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0
40、;/*/void init()uchar num;lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80); for(num=0;num15;num+) write_date(tablenum); delay(5); write_com(0x80+0x40); for(num=0;num15;num+) write_date(table1num); delay(5); /*/*读ADC0832函数*/采集并返回/*函数功能:AD转换子程序入口参数:CH(如果读取CH0,chan
41、nel的值为0x01,如果读取CH1则channel的值为0x03)出口参数:adval*/uchar Adc0832() /AD转换,返回结果 uchar i; uchar dat=0; ADCLK=0; ADDIO=1; ADCS=0; /拉低CS端 ADCLK=1; ADCLK=0; /拉低CLK端,形成下降沿1 ADDIO=1;/指定转换通道是CH1还是CH2,指定值位与0x1,取最后一位的值 ADCLK=1; ADCLK=0; /拉低CLK端,形成下降沿2 ADDIO=0;/指定值右移一位,再取最后一位的值 ADCLK=1; ADCLK=0; /拉低CLK端,形成下降沿3 ADDIO
42、=1; for(i=0;ii; /收数据 ADCS=1; /拉低CS端 ADCLK=1; ADDIO=1; /拉高数据端,回到初始状态 return(dat); /return dat/*/*/void displayRH()/下限显示 write_com(0xc0+3); write_date(RH/100%10+0x30);/上限百位 write_date(RH/10%10+0x30);/上限十位 /write_date(.); /write_date(RH%10+0x30); void displayRL() /下限显示 write_com(0xca); write_date(R); write_date(L); write_date(:); write_date(RL/100%10+