基于单片机的智能抽水灌溉系统设计_第1页
基于单片机的智能抽水灌溉系统设计_第2页
基于单片机的智能抽水灌溉系统设计_第3页
基于单片机的智能抽水灌溉系统设计_第4页
基于单片机的智能抽水灌溉系统设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计(论文)课题名称基于单片机的智能抽水灌溉系统设计学生姓名XX学号0000000000系、年级专业XXXXXXXXXXXXXXXXXXXXXXXXX指导教师SDWDSDSDDDSD职称WDS2023年5月18日摘要当今世界日新月异,在我们学过的历史中,有第一次工业革命,第二次工业革命,每次的革命都意味着技术的提升,解放人们的双手,纵观历史,我们会发现,科技是推动一切开展的根源,人们的欲望又推动着科技的开展,现在人们吃喝住行,愈来愈智能化,意味着生活一切的智能,现在人们已经开始追求智能的生活了,智能最多的是表达在了城市中,在农村很少有智能的东西,因此束缚了农民的劳动力,农村也需要智能也需要改革。以前农民种植都是需要农民自己浇灌,很费时间和资源,农民也不能经常外出打工,因为农业智能化低,需要很多的劳动力,所以在这种矛盾中我们开始了智能抽水灌溉系统,目的就是解放农民的双手,让他们有更多的时间可以外出务工,增加家庭收入。智能抽水灌溉系统是用51单片机为核心控制的,YL-69是一个传感器就是把土壤湿度信息传给单片机的,LCD1602是把数据读出来让人们可以直观的看到,蜂鸣器是一个喇叭有发出声音的作用。使用YL-69把湿度信息传给单片机,单片机来处理传输来的信息,判断怎么执行,然后将执行的信号发给各个控制器,这就完成了一个系统的功能了。关键词:浇灌;YL-69;湿度;AT89C51单片机;水泵;LCD1602ABSTRACTIntoday'srapidlychangingworld,inwelearnedaboutthehistory,thefirstindustrialrevolution,thesecondindustrialrevolution,everyrevolutionmeansthepromotionoftechnology,liberatingthepeople'shands,throughouthistory,wewillfindthat,scienceandtechnologyisthesourceofpromotingthedevelopmentofall,thedesireofthepeopleandpromotethedevelopmentofscienceandtechnology,peoplenoweattolive,becomemoreandmoreintelligentmeansofalllife'sintelligent,nowpeoplehavebegantopursuethesmartliving,smartmostisreflectedinthecities,inruralareasisrarelyasmartthingsandsoshackledthelaboroffarmers,ruralareasneedasmartalsoneedsreform.Beforefarmersarefarmersandpouryourself,itcoststimeandresources,farmerscan'toftengoouttowork,becauseofthelowintelligentagriculture,requiresalotoflaborforce,sointhiscontradictionwebeganintelligentpumpingirrigationsystem,purposeistoliberatetheirhands,letthemhavemoretimetomigrantworkers,increasetheincomeofthefamily.Intelligentpumpingirrigationsystemiswith51single-chipmicrocomputerasthecorecontrol,YL-69isasensoristhesoilmoistureinformationtosinglechip,LCD1602istoreadoutthedatasothatpeoplecanseeintuitively,thebuzzerisahornsoundeffect.UseYL-69tothehumidityinformationtothemicrocontroller,themicrocontrollertoprocessthetransmissionofinformation,tojudgehowtoperform,andthenthesignaltoeachcontroller,whichcompletesthefunctionofasystem.Keywords:YL-69;humidity;AT89C51MCU;waterpump;LCD16目录TOC\o"1-2"\h\z\u摘要IABSTRACTII第一章绪论21.1课题介绍及开展趋势21.2课题设计要求3第2章方案设计与论证42.1系统设计思路42.2系统方案论证4第3章系统硬件设计以及电路图63.1核心器件模块及主要引脚说明73.2液晶显示模块73.3AT89C51复位电路模块93.4YL-69土壤湿度传感器113.5ADC0832功能特点及引脚113.6继电器123.7蜂鸣器及按键13第4章系统软件设计154.1主界面控制流程154.2液晶显示程序164.3时钟芯片程序194.4按键程序22第5章仿真与调试255.1软件调试255.2仿真结果26结论28参考文献29附录30致谢31第一章绪论1.1课题介绍及开展趋势伴随着现代科技的开展,及电子行业科学的飞速崛起,单片机系统在自动控制领域中的应用已经是常见了,人们对于单片机的使用都非常的熟悉的了,但却鲜有人知它内部的结构及工作的原理。因为单片机系统是智能抽水灌溉的系统的核心处理器,可以通过它检测温度和湿度进而来做出判断是否抽水灌溉,到达智能的效果。另外外界的温度和土壤的湿度可由LCD1602读出来。而且可以键盘实现土壤水分的最大值和最小值的更改,最后蜂鸣器用作对外的报警信号。种植业是从古至今一直延续的最古老的,是生存的根底,。种植业的改革长远来看重中之重,首先是用水,其次是技术。从古老农业向科技农业的转变,由散点种植向集群种植的转变,前提是一定要科技的支持科技在种植业的巨大变革,再来一次技术革命。种植灌水体系科技水平较低是阻止我们国家效率种植业的开展的最根本原因。古老的大水灌溉模式科技度低,总体上就是以人工操作为主,人们的控制能力不行,更好的提高灌水效率,减少劳动的时间和节省水资源,一定要大力的提高智能抽水系统的开展。当代智能控制器是一种有效的方法和技术对于智能灌溉系统田间管理,可以提高对水灌溉的高精度,有助于灌水过程中的科学化种植。一方面能最大限度的节省人们的劳动,最主要是由于它能精准、时空、给定量的、效率地给农作物智能补充水分,为了提高农作物的产值、重量,节约水、环保。当代灌溉技术的研究使用在我国种植业、林业不多,与世界兴旺国家比拟,有非常大的差距,都处于人工操作上,束缚劳动力[1]。更重要的是农作物的需求有时候根本满足不了,从而会影响到农作物的正常规律生长;另外灌溉量太大,土壤中的肥水流走,从而造成能源的浪费。并且古老的灌水还要农业技术员时时刻刻的盯着作物生长并且指导生产,劳动付出大于生产汇报,在这个方面不能满足于当代农业的提升、高效率化方向开展的要求。再次我国高价购置国外的先进技术来弥补我国的技术缺乏,多数用于种植业的示范区、科研地方,并且不符合我国外乡的土壤特点。我国本身的现代农业灌溉技术的钻研和普及于群众,还处于最开始阶段,我国科研我们的、系统体系功能强且具有很强扩展性的,由我国生产的智能抽水灌溉器,是刻不容缓的。伴随着微型处理器和传感器硬件的高速的开展,人们普遍的都能接受这种高科技产品的价格,同时性能日益提高。综上,可以发现微型计算机技术改造古老农业是可行的,是刻不容缓的。能够将高科技投入到农业灌溉里面,这将是我国农业甚至经济未来开展的方向。1.2课题设计要求能够实现基于单片机与LY-69芯片联合控制的LCD1602显示湿度,并能由单片机控制外围电路中的抽水机浇水。完成硬件设计和软件设计[2]。主要工作制作基于单片机的智能抽水灌溉系统:系统的原理图的分析和设计;元器件的选择;程序的编写;制作和调试实物。1.2.2根本要求该智能抽水灌溉系统根本功能应该包括有准确检测湿度,检测范围为0-99,能够以数字的方式在LCD上显示当前的外界湿度,人工自行设置的最小值湿度和最大值湿度,以英文字母加上数字的形式进行读出,同时能使用按键对最小值和最大值进行校准功能,此外就是智能系统具有恢复出厂设置功能,并能智能的低于最小值湿度时报警。这个设计以AT89C51单片机为核心,在LCD1602显示器上显示目前的测试土壤的湿度,而且用户可以通过按键来设置能是抽水机工作停止的边界值[3]。使用LCD1602作为输出信号的显示器。显示格式为:最上面显示出来湿度,最下面显示人工设置的最小值湿度和最大值湿度。四开关键,分别为:K1湿度显示、K2复位、K3湿度加、K4湿度减。运行后,先设置最大湿度值,再设置湿度最小值,再按K1开始运行系统。程序执行后系统默认开始工作,默认湿度上限值为40%,下限为20%,当前湿度低于最小值时,蜂鸣器响起报警并抽水;当土壤湿度到达了植物生长所需要的水分时候,抽水机就可以停止工作了。第2章方案设计与论证2.1系统设计思路当下的中国大局部的农业种植中都是使用人工大水灌溉,这种灌水的的特点是连续的、不停止的。选取这种灌溉系统仅仅只能保证植物作物不会缺水而死,相反呢,这种灌溉对作物来说并不是最好的成长环境,浪费了水资源又无法使作物健康成长。为了解决上面问题使农业灌溉技术得到改善,我们设计了这套智能抽水灌溉系统,这套系统的优点是他可以解放劳动力,并且还可以更科学的灌溉,更合理的给植物所需要的水资源,节约了本钱,节省了能演。本系统是依据微型计算机单片机原理,通过采集土壤湿度通过传感器收集信号,然后通过人为按键来调整湿度最大值最小值,YL-69土壤传感器将土壤中的湿度变成电信号传送给单片机,单片机的处理中心接受信号,分析信号,这样一个过程处理器就知道土壤的湿度值了,这时候处理器又拿这个值跟人们设置的最值比拟,小于的时候开始上水,大于的时候就停止供水。从而到达智能抽水灌溉的目的。这次实验最主要的是要完成下面的几个系统:1.利用YL-69来对土壤湿度进行检测;2.用LCD作为输出信号显示。3.在对最值设置的时候要问这方面的专家,确定好了最值在设置最值;4.用单片机作为最后的核心处理,计算出需不需要开启水泵灌溉。硬件和软件组成了这个系统,硬件局部又分为单片机接受到信号信息,然后做出类似于人类大脑的判断、信号LCD的输出、种植地的土壤水分计算、最值得输入、是否开启水泵、蜂鸣器响六大模块。核心AT89C51相当于大脑级别的信号分析功能;YL-69土壤的湿度检测器;按键对湿度最值的输入;显示模块是输出传感器传送来的信息即土壤湿度及设置的最大最下湿度值;水泵和蜂鸣器用来接收单片机发来的命令[4]。软件结构与硬件配置相适应,本系统很灵活方便,有很强的动态性,能随时更改湿度的最大最小值;另外本系统研发和设计的时候,将软件局部和硬件局部实时交互性。2.2系统方案论证本设计主要讨论了,对实现LED屏显示的智能抽水灌溉系统的硬件局部设计和软件局部设计,以及实现LED屏的显示,湿度的检测传输,下面介绍本设计系统所需器件以及最优选择。2.2.1芯片的选择微型处理器单片机的选择:对于单片机最优选择,假设采用8031的系列,因为内部没RAM,恰恰本系统需要一块儿存储空间,所以不可用;那么51系列的ROM为4K足够,因此设计上采用AT89C51单片机芯片。A/D转换:ADC0812双通及8位分辨率。LCD屏的选择:用来输出信号显示土壤湿度值。LCD1600是最好的选择性价比高。2.2.2按键控制单个复位开关价格廉价实用价值高做成按键。本系统要四个按钮,恢复按钮、设置按钮、增按钮、减按钮。四个键:K1、K2、K3、K4功能以下:K1:系统恢复按键;K2:设置初值键;K3:数值加;4K:数值减。启动电源开始,开始时首先按K2初值的设置,再次点确认,点K3加温度值,点K4减温度值,按K1恢复初值,默认初值最大40%,最小20%[5]。第3章系统硬件设计以及电路图通过大学期间学习,在课堂中学习的单片机主要以C51为主,平常的练习多以汇编为主,单片机就是微型处理器,国外创造的。它的集成高、个小、廉价、用电量低等许多优点所以被广泛的应用[6]。本系统采用C51单片机,系统的核心电路模块有几个大局部,根据上面介绍由,微处理器模块、信号输出显示模块、采集信息模块、按键模块等外围电路组成。模块的联系如图3.1所示:图3.1电路模块图系统的总电路图如以下图3.2图3.2电路模块图3.1核心器件模块及主要引脚说明AT89C51实物如图3.3所示:图3.3AT89C51实物它的集成高、个小、廉价、用电量低等许多优点所以被广泛的应用。AT89C51的引脚图如图3.4所示[7]:图3.4AT89C51引脚P0口:全部用作在LCD屏的显示。XTAL1、XTAL2:这两个口为晶振信号传输口。RST:这个口是给单片机一个复位信号。P1口:这个口是用作数据输入输出口。3.2液晶显示模块智能抽水灌溉系统用的是LCD1602屏输出的信息,LCD的原理很简单,通过亮光与暗来显示的,这样的输出信息稳定,人们也估计看不到量点的闪烁问题,这样更对人眼不会有损伤作用,价格也可以让平常人买的起,所以是最好的选择[8]。LCD的电路如图3.5所示:图3.5LCD16023.2.1液晶显示原理这里我们讲解显示技术,液晶有两块玻璃,大概有1mm厚,与此同时,中间有特殊材料间隔开了。我们都知道液晶它自己是不发光的对吧,那么为了到达发光的目的我们在旁边安装有灯管,并且呢在后面我们还有个特殊发光的板子和反射板,特殊发光板是有荧光材料制作的可以发光。背板光线在穿过第一层偏振过滤到包含无数的液晶微滴的液晶层。LCD中的液滴都被包含在单元中,一个或多个第一个构成屏幕上的一个像素。还有透明的材料夹在在玻璃板与液晶材料之间,这种透明材料有行和列,行和列的集合点,LCD的旋光可以有电压控制,当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规律的折射,然后进过第二层过滤层的过滤在屏幕上显示出来。3.2.2LCD1602特性①+5V电压,比照度可调;②内含复位电路;③提供各种控制命令;④有八十字节显示数据存储器;⑤内建字符发生器;⑥个可由用户自定义的5×7的字符发生器CGRAM。3.2.3LCD1602管脚功能LCD1602采用标准的16脚接口,如图3.6所示,其中:图3.6LCD1602引脚图第1脚:VSS为电源地;第2脚:VDD接5V电源正极;第3脚:V0是用来弄比照度的;第4脚:RS选择指令和数据,由电平选择,高为数据;低为指令。第5脚:R/W很明显为READ和WRITE,读和写高为读低为写;第6脚:E(或EN)端为使能(enable)端;第7~14脚:DB0~DB7为8位双向数据端;第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.3AT89C51复位电路模块RST端口是本系统中AT89C51单片机的复位端,当我们启动单片机,单片机进行工作的时候,时钟电路就会自动进行运作,如果在运行单片机时有大于2个周期的高水平存在,和RST输入端口的单片机,这个时候就复位,并运行该程序将从头开始。还有一种能够进行复位的方法,那就是利用定时计数器,进行定时复位。单片机复位,程序计数器PC为0000H,中央处理器将从源头开始运行,在外围电路的设置,我们连接到电源。整个系统就等于再复位,还有就是有一个复位按钮可以设置复位[9]。如图3.7所示,图中描述了一个很简单的复位的电路原理。当通电一刹那,由于电容的延时特性,使得电容两个电片之间的电压不能够迅速发生变化,所以单片机RST为“1〞,电容充电过程,RST引脚的电压会逐渐下降,到了图3.8所示的t1时刻,单片机复位端的电压降到了3.6V的水平,随着充电的继续,电容将会被充满电,那么复位端口的电压最终将会变成0。如图3.8所示的是复位端口电平的变化图。如果要单片机重启,就需要有两个机械周期时间存在“1〞,在单片机中,机器所用的频率是由所给的外围的晶振提供的,图3.7中,所使用的电阻不能过小,一般使用的电阻值是8.2kΩ;可以通过电阻R和其频率f的数值算出C3电容的大小。图3.7RC上电复位电路图3.8RST引脚电压-时间关系图3.9组合复位电路如图3.9中所显示的,电阻R2一般设置得比拟小,很多时候都是十几欧姆,由于R2远远小于R1,而我们的电压VR端与电源根本相同,使得复位引脚的电压被设置成了高电平,松开复位键后,过程和我们重启是一样的。在单片机系统中,为了使单片机复位时,需要稳定的电路设计外,并在第一连接微控制器。这种方法,有利于稳定设计,整个系统工作稳定,也提高了系统寿命。当设计的系统中需要多个复位的芯片的时候,我们选择的复位芯片,如果它的匹配性合理,可以将他们直接接在单片机上,所以尽量选这种芯片更简单。详情如图3.9所示,而图3.10表示的是74HCl4施密特电路的原理图[10]。监控电路和复位电路。这样的集成电路不仅能够提供可靠性高的复位信号,还具备有监制、看门狗功能。复位后,ALE引脚端电平为输入功能;片上RAM不受影响;P0~P3口的各个引脚输出的是高电平,这些端口是用作双端口,但是是用于输入的,程序计数器指向程序代码指令的开始位置,因此从程序存储器0000H位置控制器开始取出一条指令并解析实现。因此,当我们的程序出现了死循环或者有DEBUG时,我们可以使其重新运行。图3.1074HCl4施密特反相器3.4YL-69土壤湿度传感器YL-69器件是一个小的芯片,用来测量土壤湿度的传感器。内部是个电容,收到湿度的影响,湿度影响它的电阻,在地里面的水分发生变化时,它的阻止变化从而能产生变化的电信号,这样就能将湿度直接转化成电信号。它的体积小,价格很廉价,适合大规模的生产,因此被广泛的应用[11]。在本智能系统中的电路原理图如图3.11。图3.11YL-69与AD转电路3.5ADC0832功能特点及引脚ADC0832是模数转换器。三根线连接了它与单片机,价格廉价,用电量低,用在小的智能系统里面很多。ADC0832的分辨率是八位,所以平常的信号都能模拟出来。由于模数转换会不准确,所以它用了双数据的传输,准确平安,稳定。它能自己输入,这样单片机就能同一时间处理多个器件。我们用DI端灌入数据,这样可以很简单。其主要特点如下:(1)8位分辨率,基准电压为5V;(2)功耗低仅仅为15mW。(3)5V的电源供电;(4)输入和输出电平与CMOS及TTL兼容;(5)输入模拟信号的电压范围在0到5V之间;(6)在时钟频率为250KHZ时,转换时间是32us;ADC0832有DIP和SOIC两类,DIP的ADC0832引脚排列如图3.12所示。各引脚说明如下:(1)CS——片选端,低电平有效。(2)CH0,CH1——两路模拟信号的输入端。(3)DI——数据信号输入,选择通道控制。(4)DO——数据信号输出,转换数据输出。(5)CLK——串行时钟输入端。(6)Vcc/REF——电源的输入和参考电压输入。(7)GND——电源地。图3.12ADC0832引脚图3.6继电器继电器其实就是一种开关,继电器工作的原理很简单,它就是用非常小的电流去控制大的电流,这样做可以保证平安,还可以远程控制,在就是单片机只能是小电流,所以必须用继电器做一个开关,来关联水泵和单片机。市面上有很多种继电器,本智能抽水系统采用的是电磁继电器,这种继电器的工作机制很简单,电磁顾名思义就是磁铁相关了,在它的内部有线圈和铁块,这就是为了曾大它的磁力。当通电的时候它内部产生磁力,从而把那个贴片吸引下来,这样就形成了闭路,这样被控制的那个模块电路就连同了,从而到达了开启的作用。断电磁力消失,铁片在弹簧的作用下又弹回,断开。这样就形成了开闭电路的作用[12]。如图3.13中,三极管基极为低电平时,三极管导通,继电器有磁力K1接通,水泵开始工作,LED亮起。图3.13继电器控制水泵3.7蜂鸣器及按键蜂鸣器:蜂鸣器是本系统的报警器,电路结构如图:3.14所示。PNP管子通电时报警。图3.14蜂鸣器输入按钮模块:设计图如图3.15所示。S1恢复出厂设置、S2设置湿度最值、S3调整最值加、S4调整最值减。图3.15按键电路按键模块按照要求,控制的按键为4个:S1、S2、S3、S4,各个按键的功能如下:S1:复位按键;S2:设置湿度上下限和启动按键;S3:湿度值加;S4:湿度值减。启动灌溉系统时,可以用S2按键来修改系统默认设置的湿度上限值和下限值,首先根据已经掌握的知识来设置值,用S3、S4来增加减少。如图4.12是其电路图,复位引脚接S1,S2-S4分别接单片机的P3.0-P3.2引脚[13]。以启动电源开始,S2用来控制要设置湿度上限值和下限值,即系统启动时,显示的是系统默认的湿度上下限设置,那按一次S2就可以进行湿度上下限的设置了;按S2开始设置湿度值,这时候点S3湿度值增加,S4湿度值减少;设置好后,我们再点S2确认,这个时候湿度最值就设置好了,与此同时智能抽水系统开始运行。在实验土壤的湿度小于我们设置的最值时候,这个时候报警、抽水,相反,大于的时候停止工作。在两个最值之间的时候停止报警,但是继续抽水。第4章系统软件设计上面是我们设计的硬件的局部,确实硬件局部很重要,但是软件局部的系统设计也是本系统的核心,也是非常重要的一个局部。软件的编程局部也会关系到系统的稳定性,以及效率。为了让系统更好的运行,稳定,我们采用了最为根底的语言C语言,它具有稳定性,软件我们用Keil软件。4.1主界面控制流程主界面如图4.1所示,从程序控制的硬件来看,智能灌溉系统被启动时,单片机进行复位,液晶显示屏也开始显示启动,晶振电路在单片机控制下复位并工作。LCD1602显示屏在最开始的内容就是系统默认的初始值,还有当前土壤的湿度值,这时候的默认值为百分之四十和百分之二十,在最上面的显示的是传感器传回来的湿度值。启动并且有显示后,可以通过四个按键开始分别进行湿度的上限值和下限值以及复位设置,通过按键的调整,得到我们所需要的湿度控制范围,再点击按键中的开始,这样,灌溉系统就可以启动了。图4.1是由程序控制的大体流程图,各模块的详细控制将在讲解各模块时做详细介绍[14]。图4.1程序流程图4.2液晶显示程序对于时钟的设计,我们就是要看到显示出来的信息;所以在本设计中,显示这一局部是最重要的。在这一局部程序中,主要有:LCD显示的初始化,读取数据,写入指令,查状态和在指定位置显示字符等程序。下面我们来介绍关于LCD1602的地址和指令[15]。4.2.1LCD1602地址HD44780内置了DDRAM〔显示数据存储RAM〕、CGROM〔字符存储ROM〕和CGRAM〔用户自定义RAM〕。显示数据就储存在DDRAM中,它来存放将要显示的字符代码。一共80个字节,地址与屏幕的对应关系见下表4.1:表4.1DDRAM地址和屏幕的关系显示位置1234567……40DDRAM地址第一行00H01H02H03H04H05H06H……27H第二行40H41H42H43H44H45H46H……67H打个比方要在LCD上面一个地方显示“K〞我们要输入命令,在哪个地方输入这个字符就对了。至于详细的写入我们要在下面讲到。在LCD中有四十个地址,我们用前十六个满足了就。应见下表4.2:表4.2DDRAM地址与显示位置的对应关系1234……13141516第一行00H01H02H03H……0CH0DH0EH0FH第二行40H41H42H43H……4CH4DH4EH4FH在这里我们要强调一个考前须知,在显示中我们在第一个位置输入一个数字“2〞我们不能直接把“2〞输入进去,这样做是一个容易出错的,所以我们要拿出来讲解下,如果要输入字,我们要在这个地址上面加上80H,也就是你想要输入的地址都要加上80H这样就能正确的显示了。4.2.2LCD1602指令表4.3LCD1602指令集指令名称指令编码指令功能RSR/WDB7~DB0Clear0000000001去除,在DDRAM中写入20H。光标归位闪烁点归位000000001x输入闪烁点移到LCD屏幕的开始输入模式设置000001I/Ds用来指定字符移动的方向显示开关控制0000001DCBLCD屏的显示、闪烁点显示/关闭由CB控制,设定显示屏/光标移动方向000001S/CR/Lxx使光标移位或整个显示屏移位功能设定00001DLNFX数据总线的位数、LCD显示的行以及字形的设置CGRAM地址的设置0001CGRAM的地址设定下一个要存入数据的CGRAM的地址设定DDRAM地址001DDRAM的地址设定下一个要存入数据的DDRAM的地址读忙信号/AC地址01BFAC内容读取忙信号BF的内容,AC地址的内容写入数据10在CGRAM中写入数据读出数据11读出DDRAM或CGRAM中的内容指令如表4.3想要看到什么样的信息,就输入对应的指令,上表说了十一条指令:1602液晶的操作有4种:①状态读操作——输入:RS=0、R/W=1、E=1,输出:DB0~DB7的状态字;②数据读操作——输入:RS=1、R/W=1、E=1,输出:DB0~DB7的数据;③指令写操作——输入:RS=0、R/W=0、E=1,输出:无;④数据写操作——输入:RS=1、R/W=1、E=1,输出:无。4.2.3LCD1602字符集在LCD显示屏的内部有个储存器〔记忆器〕,在这个记忆器可以生产出字符,这些字符可以输出一个图,大致的目标就是下面这样的:阿拉伯数字,字母、包括大小写和符号每个字符能够针对一段代码,打比方一个字母C对应43H,这个就是用十六进制来表示的,最后的显示就是把对应的地址中的数据拿出来就会显示在LCD屏上了。这个对应是由ASCII码识别的,只能够用它来识别,所以在设计中我们用的都会被转化成ASCII码,ASCII可以直接显示,也可以由LCD内部的记忆器转换,这个过程不需要我们人为的去转换。4.2.4LCD1602程序那么我们简单说下LCD的初始化和在一个固定地方显示字符;初始化的流程图如图4.2所示:包括液晶显示开始启动,显示模式设置初始化,关闭显示,清屏显示,显示光标移动设置,显示开以及光标设置、退出等。图4.2液晶初始化流程图LCD屏的初始化是有关显示器的机制,和原理的相关操作。我就不多说了。下面是在一个固定位置显示的代码,如下:voidDLC(ucharX,ucharY,ucharcode*DData){ucharListLength,j;ListLength=strlen(DData);Y&=0x1;X&=0xF;//限制X不能大于15,Y不能大于1if(X<=0xF)//X坐标应小于0xF{for(j=0;j<ListLength;j++) {DOC(X,Y,DData[j]);//显示单个字符X++;}}}上面这些代码,很简单主要是在LCD屏上的固定的位置显示一堆字符;我们可以看到代码中定义了一个unchar的变量X,Y他们的值分别小于等于十五,小于等于一,这里他们表示了LCD中显示的位置,为什么用这样的限制,这里我们还要看上面对LCD的介绍,上面说了LCD的屏幕大小只有16长度,2列宽度,所以对X,Y的值做了这样的限制。4.3时钟芯片程序这里呢首先我们要从DS1302这个里面读取它内部的信息,给了单片机,接着呢在LCD的屏中显示出来,还有呢就是在它的时间需要对准的时候,外部按键更正时间,然后在存入芯片里面。4.3.1DS1302控制命令字节DS1302控制命令字节结构如表4.4所示:表4.4DS1302控制命令字节结构765432101A4A3A2A1A0从上面的表中我们需要知道,在这里面第七位字节,必须是“1〞,因为当它是“0〞的时候不能在它里面写入数据,第六位中如果是“0〞那么表示是时间数据,如果是“1〞那么就表示在RAM中存数据,其他位是操作单元的地址,最后一个位置上如果是“0〞那么表示执行写入操作,如果是“1〞那么就读取操作。4.3.2DS1302的存放器上面一节中我们介绍了DS1302的控制命令,不同的地址有不同的命令,那么我们想他有这么多功能,肯定内部有许多存放器,来存放这些数据,其实它内部有12个,在这个存放器中,跟日历、时间有关的存放器最多,他们以BCD码存入,详细的介绍看下面表4.5:表4.5DS1302存放器存放器名命令字取值范围各位内容写操作读操作76543210秒80H81H0-59CH10SECSEC分82H83H0-59010MINMIN时84H85H01-1200-2312/24010/APHRHR日86H87H01-28、2930、310010DATEDATE月88H89H01-1200010MMONTH周8AH8BH01-0700000WEEK年8CH8DH00-9910YEARYEAR有些位我们要单独的拿出来特别的说一下:CH:它用来控制时钟的停止和开始,它为高电平的时候振荡器停止工作,DS1302为低消耗的备份模式,相反,低电平的时候时钟会启开工作。2/24:用来控制输出时间的方式,有两种方式12和24,当它是1的时候为12小时制。要特别说的是12小时制下,第五位是上午下午的选择,1表示下午,0表示上午。24小时制,第五位是第2个小时位二十到二十三。操作说明:①第一要写入数据,所以我们要把写保护关闭,并且在日期时间的存放器中初始化;②然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值写入,另外我们也能在妙存放器中的第七位的CH改成0,这样DS1302就开始工作了;③当初值初始化成功后,我们就不需要再进行初始化了所以这个时候我们需要开启写入保护,防止存放器的值被更改;④我们接下来做的就是不间断的读取存放器80H到8CH中的值,然后将他们的格式修改,在LCD屏上面显示。4.3.3DS1302数据传输DS1302是通过I/O串行来读写数据的。由于硬件的设置,它的读写数据每次不能低于2个字节,第一个位是控制,说白了它就是一条命令,它来指示DS1302对数据怎么处理,是写进还是读出,并且还告诉对那个存放器使用,和操作地址;第二个位内容就是我们要读写的具体数据。它的具体的时序以下图5.3所示:图4.3DS1302数据传输数据写入:当我们操作的时候,我们要在这之前做准备工作,就是把RST设置为“1〞’,接着,用单片机控制位的数字,通过数据口,稳定,SCLK为“1〞,DS1302开始读取信息,接着SCLK为“0〞,数据口被高水平,一直这样进行,这样将一个字节控制字的八位转给了DS。后面再传读数据给DS,完成后数据传送后,单片机RST置“0〞,结束工作。数据取出:数据的取出跟数据的写入类似,差不多是个相反的过程,SCLK置“1〞DS1302把数据传到IO口里面,SCLK置“0〞数据锁定,这时候单片机读取IO口数据。一直这样进行,最后数据传到单片机。4.4按键程序机械性质是一般按键都有的性质。问题在按键点下的时候,不会很好的连接。还有问题是我们按下的时候来回弹跳,时间极快,我们人体感知是不会体会到的,但是我们都知道单片机的运行时上百万次的,所以这个在我们按下来回弹跳时间对单片机来说时间是极长的。单片时机接受到非常多的上下电流,如果不适当控制下,会影响性能,所以我们做了个判断具体流程以下图4.4所示。开始开始键按下?延时30ms键还按下?读取键值等待释放图4.4按键流程图unsignedcharv_readkey_f(void);/////延时程序{unsignedcharkey;if(P17=0){delay(30);/延时30msif(P17=0){key=1;while(!P17)/等待释放}elsekey=0}}4.4.1ADC0832芯片接口程序为了能够使信息传输得更快和稳定,由于C语言的模块化接口比拟好用,所以,本设计利用C语言进行接口编程是非常好的。数模转换装置是非常快的,其转换时间一般只有短短的32us,所以A/D转换的周期小,频率非常快,这也有利于在一些特定的需要中使用。数据是在子程序中被赋予的,屏蔽了外面函数模块中的信息,尽量减少了全局变量的使用,因为全局变量在各个模块函数中都能够被使用,在这样的情况下,如果在一个子程序中使用了全局变量,又在另外一个子程序中使用了此全局变量,那变量数据就有可能达不到我们所要的要求,数据也有可能被某个模块中的函数破坏掉了,这样对于整个设计是非常不利的。而如果我们使用的是模块函数,并且使用的是局部变量,这样就可以屏蔽外界的信息,保证本模块能够唯一做一件事,不会对其他模块中的数据产生影响,并且在程序运行的时候,动态类的局部变量是存在于栈中的,一旦子程序定义了此类变量,程序才开始为此变量分配空间,一旦子程序运行完毕,这个变量所属的空间会释放掉,不再占用内存空间,这样更有利于解决单片机内存缺乏,运行速度稍微慢等缺点。此外,模块化的程序设计思想,有利于程序的移植,即当我们写过一个程序,下一次要做同样类似的操作的时候,可以进行代码复用,有利于缩短开发的周期,结余了时间和本钱。如图4.5所示的是ADC0832读取数据的流程图。开始开始产生时钟信号能使芯片输入通道控制字读取2字节数据字节数据矫正将值送入指定存放器结束图4.5ADC0832读取数据流程图第5章仿真与调试仿真与调试,程序我们是用C写的所以我们用得Keil软件作为开发平台,这个软件很好用,我们用它进行编译,最后生成可执行的文件,然后最后通过数据线的链接传送到单片机里面,这个过程就是平常大家说的烧进去,在编程中Keil会给你提示编程中出现的错误,很方便的更改,这样我们就有目的更改,最后这个软件也能进行编译,编译成功后我们就可以烧进单片机中[16]。5.1软件调试上面是大概的一个介绍,下面我们做详细的讲解,当我们把程序做好后,我们就需要用数据线吧把它传进单片机中,下面我们来看看Keil的编程具体操作。5.1.1Keil软件介绍美国我们大家都知道,人家的科技是非常兴旺的,所以一些先进的东西最先一般是由美国人创造的,Keil也不例外,它是由美国公司开发的,用来进行C语言与单片机的编写,最一开始的编程我们都知道那是汇编,枯燥难懂,所以美国人又开展到C,这个就比汇编更容易学习,更容易操作,优势非常突出。Keil软件界面如图5.1所示:图5.1Keil软件界面5.1.2程序调试首先我们需要建立一个工程,之后新建一个XX.C文件,把该文件添加到工程中进行编译生成XX.HEX文件。如图5.2。图5.2编译过程5.2仿真结果本系统的仿真图,如图5.3:图5.3开始运行图5.3中液晶显示屏所显示的为系统默认设置的湿度最值,是由程序中默认控制显示的,显示内容为湿度最上限40%,最下限20%,当前湿度34.1%。当电源掉电或者按复位键重新启动时,每次都是显示此默认设置。图5.4设置后运行结果当启动电源后,显示湿度上限值和下限值是系统默认的,最上面显示的是当前检测到的环境湿度值。通过按键K2,切换到设置模式,此时灌溉系统暂停,转为设置态,我们通过K3来加湿度的最值,通过K4来减湿度的最值,同时K2键也充当确实设置键,如图5.4所示,经过我们查找资料,最后我们设置了湿度的最大值56%,最小值为35%,当前环境湿度值为33%。我们再次按下K2键后,表示设置完毕,智能抽水灌溉系统继续工作。当我们设置的湿度高于测试地方的湿度时,喇叭响起报警,这个时候抽水机开启了,进行灌溉;当环境的湿度位于我们所设置的湿度上限值和下限值之间时,蜂鸣器不会报警,但是由于没有到达我们所要求的土壤湿度,所以灌溉系统继续抽水;当我们设置的湿度低于测试地的湿度时候,这个时候浇水到达要求,抽水机就停止工作了,整个系统保持检测状态,一旦出现湿度低于上限值,会对应着做出对应的工作。结论本论文设计的基于单片机的智能抽水灌溉系统,这个系统是根据电子学的自动检测和自动控制装置设计出来的,属于嵌入式系统,是依靠软件进行程序控制的。本系统用的是普遍运用的传感技术,此技术在当今已经很成熟了,利用此传感技术,采集到土壤环境中的湿度值,并将收集到的数据发送给作为中央控制器的单片机,单片机收到数据后,会对收集到的土壤数据进行分析和处理,并实时的做出一定的反响,通过外围电路控制系统对各个局部进行合理的控制,到达自动检测和自动灌溉的目标要求。本设计的单片机自动灌溉系统由两大局部组成:一是通过LY-69芯片检测土壤的湿度,并把数据发送给单片机处理器,单片机处理分析数据后,会把结果写入到LCD1602中进行显示,二是单片机收到土壤湿度数据后,进行分析比照结构,比拟当前土壤湿度和我们所要求的湿度,并对浇灌控制器做出合理的控制。本系统中所使用的YL-6

温馨提示

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

评论

0/150

提交评论