《基于单片机的智能抽水灌溉系统设计(共33页).doc》由会员分享,可在线阅读,更多相关《基于单片机的智能抽水灌溉系统设计(共33页).doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上毕业设计(论文)课 题 名 称 基于单片机的智能抽水灌溉系统设计 学 生 姓 名 X X 学 号 系、年级专业 XXXXXXXXXXXXXXXXXXXXXXXXX 指 导 教 师 SDWDSDSDDDSD职 称 WDS2016年 5月 18日 专心-专注-专业摘 要当今世界日新月异,在我们学过的历史中,有第一次工业革命,第二次工业革命,每次的革命都意味着技术的提升,解放人们的双手,纵观历史,我们会发现,科技是推动一切发展的根源,人们的欲望又推动着科技的发展,现在人们吃喝住行,愈来愈智能化,意味着生活一切的智能,现在人们已经开始追求智能的生活了,智能最多的是体现在了城市
2、中,在农村很少有智能的东西,因此束缚了农民的劳动力,农村也需要智能也需要改革。以前农民种植都是需要农民自己浇灌,很费时间和资源,农民也不能经常外出打工,因为农业智能化低,需要很多的劳动力,所以在这种矛盾中我们开始了智能抽水灌溉系统,目的就是解放农民的双手,让他们有更多的时间可以外出务工,增加家庭收入。智能抽水灌溉系统是用51单片机为核心控制的,YL-69是一个传感器就是把土壤湿度信息传给单片机的,LCD1602是把数据读出来让人们可以直观的看到,蜂鸣器是一个喇叭有发出声音的作用。使用YL-69把湿度信息传给单片机,单片机来处理传输来的信息,判断怎么执行,然后将执行的信号发给各个控制器,这就完成
3、了一个系统的功能了。关键词:浇灌;YL-69;湿度;AT89C51单片机;水泵;LCD1602ABSTRACTIn todays rapidly changing world, in we learned about the history, the first industrial revolution, the second industrial revolution, every revolution means the promotion of technology, liberating the peoples hands, throughout history, we will f
4、ind that, science and technology is the source of promoting the development of all, the desire of the people and promote the development of science and technology, people now eat to live, become more and more intelligent means of all lifes intelligent, now people have began to pursue the smart livin
5、g, smart most is reflected in the cities, in rural areas is rarely a smart things and so shackled the labor of farmers, rural areas need a smart also needs reform.Before farmers are farmers and pour yourself, it costs time and resources, farmers cant often go out to work, because of the low intellig
6、ent agriculture, requires a lot of labor force, so in this contradiction we began intelligent pumping irrigation system, purpose is to liberate their hands, let them have more time to migrant workers, increase the income of the family.Intelligent pumping irrigation system is with 51 single-chip micr
7、ocomputer as the core control, YL-69 is a sensor is the soil moisture information to single chip, LCD1602 is to read out the data so that people can see intuitively, the buzzer is a horn sound effect. Use YL-69 to the humidity information to the microcontroller, the microcontroller to process the tr
8、ansmission of information, to judge how to perform, and then the signal to each controller, which completes the function of a system.Key words: YL-69; humidity; AT89C51 MCU; water pump; LCD16目录第一章 绪论1.1 课题介绍及发展趋势 伴随着现代科技的发展,及电子行业科学的飞速崛起,单片机系统在自动控制领域中的应用已经是常见了,人们对于单片机的使用都非常的熟悉的了,但却鲜有人知它内部的结构及工作的原理。因为
9、单片机系统是智能抽水灌溉的系统的核心处理器,可以通过它检测温度和湿度进而来做出判断是否抽水灌溉,达到智能的效果。另外外界的温度和土壤的湿度可由LCD1602读出来。而且可以键盘实现土壤水分的最大值和最小值的更改,最后蜂鸣器用作对外的报警信号。种植业是从古至今一直延续的最古老的,是生存的基础,。种植业的改革长远来看重中之重,首先是用水,其次是技术。从古老农业向科技农业的转变,由散点种植向集群种植的转变,前提是一定要科技的支持科技在种植业的巨大变革,再来一次技术革命。种植灌水体系科技水平较低是阻止我们国家效率种植业的发展的最根本原因。古老的大水灌溉模式科技度低,总体上就是以人工操作为主,人们的控制
10、能力不行,更好的提高灌水效率,减少劳动的时间和节省水资源,一定要大力的提高智能抽水系统的发展。当代智能控制器是一种有效的方法和技术对于智能灌溉系统田间管理,可以提高对水灌溉的高精度,有助于灌水过程中的科学化种植。一方面能最大限度的节省人们的劳动,最主要是由于它能精准、时空、给定量的、效率地给农作物智能补充水分,为了提高农作物的产值、重量,节约水、环保。当代灌溉技术的研究使用在我国种植业、林业不多,与世界发达国家比较,有非常大的差距,都处于人工操作上,束缚劳动力1。更重要的是农作物的需求有时候根本满足不了,从而会影响到农作物的正常规律生长;另外灌溉量太大,土壤中的肥水流走,从而造成能源的浪费。并
11、且古老的灌水还要农业技术员时时刻刻的盯着作物生长并且指导生产,劳动付出大于生产汇报,在这个方面不能满足于当代农业的提升、高效率化方向发展的要求。再次我国高价购买国外的先进技术来弥补我国的技术不足,多数用于种植业的示范区、科研地方,并且不符合我国本土的土壤特点。我国本身的现代农业灌溉技术的钻研和普及于大众,还处于最开始阶段,我国科研我们的、系统体系功能强且具有很强扩展性的,由我国生产的智能抽水灌溉器,是刻不容缓的。伴随着微型处理器和传感器硬件的高速的发展,人们普遍的都能接受这种高科技产品的价格,同时性能日益提高。综上,可以发现微型计算机技术改造古老农业是可行的,是刻不容缓的。能够将高科技投入到农
12、业灌溉里面,这将是我国农业甚至经济未来发展的方向。1.2 课题设计要求能够实现基于单片机与LY-69芯片联合控制的LCD1602显示湿度,并能由单片机控制外围电路中的抽水机浇水。完成硬件设计和软件设计2。1.2.1 主要工作制作基于单片机的智能抽水灌溉系统:(1) 系统的原理图的分析和设计;(2) 元器件的选择;(3) 程序的编写;(4) 制作和调试实物。1.2.2 基本要求该智能抽水灌溉系统基本功能应该包括有准确检测湿度,检测范围为0-99,能够以数字的方式在LCD上显示当前的外界湿度,人工自行设置的最小值湿度和最大值湿度,以英文字母加上数字的形式进行读出,同时能使用按键对最小值和最大值进行
13、校准功能,此外就是智能系统具有恢复出厂设置功能,并能智能的低于最小值湿度时报警。这个设计以AT89C51单片机为核心,在LCD1602显示器上显示目前的测试土壤的湿度,而且用户可以通过按键来设置能是抽水机工作停止的边界值3。(1) 使用LCD1602作为输出信号的显示器。(2) 显示格式为:最上面显示出来湿度,最下面显示人工设置的最小值湿度和最大值湿度。(3) 四开关键,分别为:K1湿度显示、K2复位、K3湿度加、K4湿度减。(4) 运行后,先设置最大湿度值,再设置湿度最小值,再按K1开始运行系统。(5) 程序执行后系统默认开始工作,默认湿度上限值为40%,下限为20%,当前湿度低于最小值时,
14、蜂鸣器响起报警并抽水;当土壤湿度达到了植物生长所需要的水分时候,抽水机就可以停止工作了。第2章 方案设计与论证2.1系统设计思路当下的中国大部分的农业种植中都是使用人工大水灌溉,这种灌水的的特点是连续的、不停止的。选取这种灌溉系统仅仅只能保证植物作物不会缺水而死,相反呢,这种灌溉对作物来说并不是最好的成长环境,浪费了水资源又无法使作物健康成长。为了解决上面问题使农业灌溉技术得到改善,我们设计了这套智能抽水灌溉系统,这套系统的优点是他可以解放劳动力,并且还可以更科学的灌溉,更合理的给植物所需要的水资源,节约了成本,节省了能演。本系统是依据微型计算机单片机原理,通过采集土壤湿度通过传感器收集信号,
15、然后通过人为按键来调整湿度最大值最小值,YL-69土壤传感器将土壤中的湿度变成电信号传送给单片机,单片机的处理中心接受信号,分析信号,这样一个过程处理器就知道土壤的湿度值了,这时候处理器又拿这个值跟人们设置的最值比较,小于的时候开始上水,大于的时候就停止供水。从而达到智能抽水灌溉的目的。这次实验最主要的是要完成下面的几个系统:1.利用YL-69来对土壤湿度进行检测;2.用LCD作为输出信号显示。3.在对最值设置的时候要问这方面的专家,确定好了最值在设置最值;4.用单片机作为最后的核心处理,计算出需不需要开启水泵灌溉。硬件和软件组成了这个系统,硬件部分又分为单片机接受到信号信息,然后做出类似于人
16、类大脑的判断、信号LCD的输出、种植地的土壤水分计算、最值得输入、是否开启水泵、蜂鸣器响六大模块。核心AT89C51相当于大脑级别的信号分析功能;YL-69土壤的湿度检测器;按键对湿度最值的输入;显示模块是输出传感器传送来的信息即土壤湿度及设置的最大最下湿度值;水泵和蜂鸣器用来接收单片机发来的命令4。软件结构与硬件配置相适应,本系统很灵活方便,有很强的动态性,能随时更改湿度的最大最小值;另外本系统研发和设计的时候,将软件部分和硬件部分实时交互性。2.2 系统方案论证本设计主要讨论了,对实现LED屏显示的智能抽水灌溉系统的硬件部分设计和软件部分设计,以及实现LED屏的显示,湿度的检测传输,下面介
17、绍本设计系统所需器件以及最优选择。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:数值减。
18、启动电源开始,开始时首先按K2初值的设置,再次点确认,点K3加温度值,点K4减温度值,按K1恢复初值,默认初值最大40%,最小20%5。 第3章 系统硬件设计以及电路图通过大学期间学习,在课堂中学习的单片机主要以C51为主,平常的练习多以汇编为主,单片机就是微型处理器,国外发明的。它的集成高、个小、便宜、用电量低等许多优点所以被广泛的应用6。本系统采用C51单片机,系统的核心电路模块有几个大部分,根据上面介绍由,微处理器模块、信号输出显示模块、采集信息模块、按键模块等外围电路组成。模块的联系如图3.1所示:图3.1 电路模块图系统的总电路图如下图3.2图3.2 电路模块图3.1 核心器件模块及
19、主要引脚说明AT89C51实物如图3.3所示:图3.3 AT89C51实物它的集成高、个小、便宜、用电量低等许多优点所以被广泛的应用。AT89C51的引脚图如图3.4所示7:图3.4 AT89C51引脚P0口:全部用作在LCD屏的显示。 XTAL1、XTAL2:这两个口为晶振信号传输口。RST:这个口是给单片机一个复位信号。P1口:这个口是用作数据输入输出口。 3.2 液晶显示模块智能抽水灌溉系统用的是LCD1602屏输出的信息,LCD的原理很简单,通过亮光与暗来显示的,这样的输出信息稳定,人们也估计看不到量点的闪烁问题,这样更对人眼不会有损伤作用,价格也可以让平常人买的起,所以是最好的选择8
20、。LCD的电路如图3.5所示:图3.5 LCD16023.2.1 液晶显示原理这里我们讲解显示技术,液晶有两块玻璃,大概有1mm厚,与此同时,中间有特殊材料间隔开了。我们都知道液晶它自己是不发光的对吧,那么为了达到发光的目的我们在旁边安装有灯管,并且呢在后面我们还有个特殊发光的板子和反射板,特殊发光板是有荧光材料制作的可以发光。背板光线在穿过第一层偏振过滤到包含无数的液晶微滴的液晶层。LCD中的液滴都被包含在单元中,一个或多个第一个构成屏幕上的一个像素。还有透明的材料夹在在玻璃板与液晶材料之间,这种透明材料有行和列,行和列的汇合点,LCD的旋光可以有电压控制,当LCD中的电极产生电场时,液晶分
21、子就会产生扭曲,从而将穿越其中的光线进行有规律的折射,然后进过第二层过滤层的过滤在屏幕上显示出来。3.2.2 LCD1602特性+5V电压,对比度可调;内含复位电路;提供各种控制命令;有八十字节显示数据存储器;内建字符发生器;个可由用户自定义的57的字符发生器CGRAM。3.2.3 LCD1602管脚功能LCD1602采用标准的16脚接口,如图3.6所示,其中:图3.6 LCD1602引脚图第1脚:VSS为电源地;第2脚:VDD接5V电源正极;第3脚:V0是用来弄对比度的;第4脚:RS选择指令和数据,由电平选择,高为数据;低为指令。第5脚:R/W很明显为READ和WRITE,读和写高为读低为写
22、;第6脚:E(或EN)端为使能(enable)端;第714脚:DB0DB7为8位双向数据端;第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。3.3 AT89C51复位电路模块RST端口是本系统中AT89C51单片机的复位端,当我们启动单片机,单片机进行工作的时候,时钟电路就会自动进行运作,如果在运行单片机时有大于2个周期的高水平存在,和RST输入端口的单片机,这个时候就复位,并运行该程序将从头开始。还有一种能够进行复位的方法,那就是利用定时计数器,进行定时复位。单片机复位,程序计数器PC为0000H,中央处理器将从源头开始运行,在外围电路的设置,我们连接到电源。整个系统就等于再复
23、位,还有就是有一个复位按钮可以设置复位9。如图3.7所示,图中描述了一个很简单的复位的电路原理。当通电一刹那,由于电容的延时特性,使得电容两个电片之间的电压不能够迅速发生变化,所以单片机RST为“1”,电容充电过程,RST引脚的电压会逐渐下降,到了图3.8所示的t1时刻,单片机复位端的电压降到了3.6V的水平,随着充电的继续,电容将会被充满电,那么复位端口的电压最终将会变成0。如图3.8所示的是复位端口电平的变化图。如果要单片机重启,就需要有两个机械周期时间存在“1”,在单片机中,机器所用的频率是由所给的外围的晶振提供的,图3.7中,所使用的电阻不能过小,一般使用的电阻值是 8.2k;可以通过
24、电阻R和其频率f的数值算出C3电容的大小。图3.7RC上电复位电路 图3.8 RST引脚电压-时间关系 图3.9 组合复位电路如图3.9中所显示的,电阻R2一般设置得比较小,很多时候都是十几欧姆,由于R2远远小于R1,而我们的电压VR端与电源基本相同,使得复位引脚的电压被设置成了高电平,松开复位键后,过程和我们重启是一样的。在单片机系统中,为了使单片机复位时,需要稳定的电路设计外,并在第一连接微控制器。这种方法,有利于稳定设计,整个系统工作稳定,也提高了系统寿命。当设计的系统中需要多个复位的芯片的时候,我们选择的复位芯片,如果它的匹配性合理,可以将他们直接接在单片机上,所以尽量选这种芯片更简单
25、。详情如图 3.9所示,而图3.10 表示的是74HCl4施密特电路的原理图10。 监控电路和复位电路。这样的集成电路不仅能够提供可靠性高的复位信号,还具备有监制、看门狗功能。复位后,ALE引脚端电平为输入功能;片上RAM不受影响;P0P3口的各个引脚输出的是高电平,这些端口是用作双端口,但是是用于输入的,程序计数器指向程序代码指令的开始位置,因此从程序存储器0000H位置控制器开始取出一条指令并解析实现。因此,当我们的程序出现了死循环或者有DEBUG时,我们可以使其重新运行。图3.10 74HCl4施密特反相器3.4 YL-69土壤湿度传感器YL-69器件是一个小的芯片,用来测量土壤湿度的传
26、感器。内部是个电容,收到湿度的影响,湿度影响它的电阻,在地里面的水分发生变化时,它的阻止变化从而能产生变化的电信号,这样就能将湿度直接转化成电信号。它的体积小,价格很便宜,适合大规模的生产,因此被广泛的应用11。在本智能系统中的电路原理图如图3.11。图3.11YL-69与AD转电路3.5 ADC0832功能特点及引脚ADC0832是模数转换器。三根线连接了它与单片机,价格便宜,用电量低,用在小的智能系统里面很多。ADC0832的分辨率是八位,所以平常的信号都能模拟出来。由于模数转换会不准确,所以它用了双数据的传输,准确安全,稳定。它能自己输入,这样单片机就能同一时间处理多个器件。我们用DI端
27、灌入数据,这样可以很简单。其主要特点如下:(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)G
28、ND电源地。图3.12 ADC0832引脚图3.6 继电器继电器其实就是一种开关,继电器工作的原理很简单,它就是用非常小的电流去控制大的电流,这样做可以保证安全,还可以远程控制,在就是单片机只能是小电流,所以必须用继电器做一个开关,来关联水泵和单片机。市面上有很多种继电器,本智能抽水系统采用的是电磁继电器,这种继电器的工作机制很简单,电磁顾名思义就是磁铁相关了,在它的内部有线圈和铁块,这就是为了曾大它的磁力。当通电的时候它内部产生磁力,从而把那个贴片吸引下来,这样就形成了闭路,这样被控制的那个模块电路就连同了,从而达到了开启的作用。断电磁力消失,铁片在弹簧的作用下又弹回,断开。这样就形成了开闭
29、电路的作用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按键来修改系统默认设置的湿度上
30、限值和下限值,首先根据已经掌握的知识来设置值,用S3、S4来增加减少。如图4.12是其电路图,复位引脚接S1,S2-S4分别接单片机的P3.0-P3.2引脚13。以启动电源开始,S2用来控制要设置湿度上限值和下限值,即系统启动时,显示的是系统默认的湿度上下限设置,那按一次S2就可以进行湿度上下限的设置了;按S2开始设置湿度值,这时候点S3湿度值增加,S4湿度值减少;设置好后,我们再点S2确认,这个时候湿度最值就设置好了,与此同时智能抽水系统开始运行。在实验土壤的湿度小于我们设置的最值时候,这个时候报警、抽水,相反,大于的时候停止工作。在两个最值之间的时候停止报警,但是继续抽水。第4章 系统软件
31、设计上面是我们设计的硬件的部分,的确硬件部分很重要,但是软件部分的系统设计也是本系统的核心,也是非常重要的一个部分。软件的编程部分也会关系到系统的稳定性,以及效率。为了让系统更好的运行,稳定,我们采用了最为基础的语言C语言,它具有稳定性,软件我们用Keil软件。4.1 主界面控制流程主界面如图4.1所示,从程序控制的硬件来看,智能灌溉系统被启动时,单片机进行复位,液晶显示屏也开始显示启动,晶振电路在单片机控制下复位并工作。LCD1602显示屏在最开始的内容就是系统默认的初始值,还有当前土壤的湿度值,这时候的默认值为百分之四十和百分之二十,在最上面的显示的是传感器传回来的湿度值。启动并且有显示后
32、,可以通过四个按键开始分别进行湿度的上限值和下限值以及复位设置,通过按键的调整,得到我们所需要的湿度控制范围,再点击按键中的开始,这样,灌溉系统就可以启动了。图4.1是由程序控制的大体流程图,各模块的详细控制将在讲解各模块时做详细介绍14。图4.1 程序流程图4.2液晶显示程序对于时钟的设计,我们就是要看到显示出来的信息;所以在本设计中,显示这一部分是最重要的。在这一部分程序中,主要有:LCD显示的初始化,读取数据,写入指令,查状态和在指定位置显示字符等程序。下面我们来介绍关于LCD1602的地址和指令15。4.2.1 LCD1602地址HD44780内置了DDRAM(显示数据存储RAM)、C
33、GROM(字符存储ROM)和CGRAM(用户自定义RAM)。显示数据就储存在DDRAM中,它来寄存将要显示的字符代码。一共80个字节,地址与屏幕的对应关系见下表4.1:表4.1 DDRAM地址和屏幕的关系显示位置123456740DDRAM地址第一行00H01H02H03H04H05H06H27H第二行40H41H42H43H44H45H46H67H打个比方要在LCD上面一个地方显示“K”我们要输入命令,在哪个地方输入这个字符就对了。至于详细的写入我们要在下面讲到。在LCD中有四十个地址,我们用前十六个满足了就。应见下表4.2:表4.2 DDRAM地址与显示位置的对应关系12341314151
34、6第一行00H01H02H03H0CH0DH0EH0FH第二行40H41H42H43H4CH4DH4EH4FH在这里我们要强调一个注意事项,在显示中我们在第一个位置输入一个数字“2”我们不能直接把“2”输入进去,这样做是一个容易出错的,所以我们要拿出来讲解下,如果要输入字,我们要在这个地址上面加上80H,也就是你想要输入的地址都要加上80H这样就能正确的显示了。4.2.2 LCD1602指令表4.3 LCD1602指令集指令名称指令编码指令功能RSR/WDB7DB0Clear清除,在DDRAM中写入20H。光标归位闪烁点归位x输入闪烁点移到LCD屏幕的开始输入模式设置 I/D s用来指定字符移
35、动的方向显示开关控制DCBLCD屏的显示、闪烁点显示/关闭由CB控制,设定显示屏/光标移动方向 S/C R/L x x使光标移位或整个显示屏移位功能设定00001 DL N F X X数据总线的位数、LCD显示的行以及字形的设置CGRAM地址的设置0001 CGRAM的地址设定下一个要存入数据的CGRAM的地址设定DDRAM地址001 DDRAM的地址设定下一个要存入数据的DDRAM的地址读忙信号/AC地址01 BF AC内容读取忙信号BF的内容,AC地址的内容写入数据10在CGRAM中写入数据读出数据11 读出DDRAM或CGRAM中的内容指令如表4.3想要看到什么样的信息,就输入对应的指令
36、,上表说了十一条指令:1602液晶的操作有4种:状态读操作输入:RS=0、R/W=1、E=1,输出:DB0DB7的状态字;数据读操作输入:RS=1、R/W=1、E=1,输出:DB0DB7的数据;指令写操作输入:RS=0、R/W=0、E=1,输出:无;数据写操作输入:RS=1、R/W=1、E=1,输出:无。4.2.3 LCD1602字符集在LCD显示屏的内部有个储存器(记忆器),在这个记忆器可以生产出字符,这些字符可以输出一个图,大致的目标就是下面这样的:阿拉伯数字,字母、包括大小写和符号每个字符能够针对一段代码,打比方一个字母C对应43H,这个就是用十六进制来表示的,最后的显示就是把对应的地址
37、中的数据拿出来就会显示在LCD屏上了。这个对应是由ASCII码识别的,只能够用它来识别,所以在设计中我们用的都会被转化成ASCII码,ASCII可以直接显示,也可以由LCD内部的记忆器转换,这个过程不需要我们人为的去转换。4.2.4 LCD1602程序那么我们简单说下LCD的初始化和在一个固定地方显示字符;初始化的流程图如图4.2所示:包括液晶显示开始启动,显示模式设置初始化,关闭显示,清屏显示,显示光标移动设置,显示开以及光标设置、退出等。图4.2 液晶初始化流程图LCD屏的初始化是有关显示器的机制,和原理的相关操作。我就不多说了。下面是在一个固定位置显示的代码,如下:void DLC(uc
38、har X, uchar Y, uchar code *DData) uchar ListLength,j; ListLength = strlen(DData); Y &= 0x1; X &= 0xF; /限制X不能大于15,Y不能大于1 if (X = 0xF) /X坐标应小于0xF for(j=0;jListLength;j+) DOC(X, Y, DDataj); /显示单个字符 X+; 上面这些代码,很简单主要是在LCD屏上的固定的位置显示一堆字符;我们可以看到代码中定义了一个unchar的变量X,Y他们的值分别小于等于十五,小于等于一,这里他们表示了LCD中显示的位置,为什么用这样
39、的限制,这里我们还要看上面对LCD的介绍,上面说了LCD的屏幕大小只有16长度,2列宽度,所以对X,Y的值做了这样的限制。4.3 时钟芯片程序这里呢首先我们要从DS1302这个里面读取它内部的信息,给了单片机,接着呢在LCD的屏中显示出来,还有呢就是在它的时间需要对准的时候,外部按键更正时间,然后在存入芯片里面。4.3.1 DS1302控制命令字节DS1302控制命令字节结构如表4.4所示:表4.4 DS1302控制命令字节结构765432101A4A3A2A1A0从上面的表中我们需要知道,在这里面第七位字节,必须是“1”,因为当它是“0”的时候不能在它里面写入数据,第六位中如果是“0”那么表
40、示是时间数据,如果是“1”那么就表示在RAM中存数据,其他位是操作单元的地址,最后一个位置上如果是“0”那么表示执行写入操作,如果是“1”那么就读取操作。4.3.2 DS1302的寄存器上面一节中我们介绍了DS1302的控制命令,不同的地址有不同的命令,那么我们想他有这么多功能,肯定内部有许多寄存器,来寄存这些数据,其实它内部有12个,在这个寄存器中,跟日历、时间有关的寄存器最多,他们以BCD码存入,详细的介绍看下面表4.5:表4.5 DS1302寄存器寄存器名命令字取值范围各位内容写操作读操作76543210秒80H81H0-59CH10SECSEC分82H83H0-59010MINMIN时
41、84H85H01-1200-2312/24010/APHRHR日86H87H01-28、2930、310010DATEDATE月88H89H01-1200010MMONTH周8AH8BH01-0700000WEEK年8CH8DH00-9910 YEARYEAR有些位我们要单独的拿出来特别的说一下:CH:它用来控制时钟的停止和开始,它为高电平的时候振荡器停止工作,DS1302为低消耗的备份模式,相反,低电平的时候时钟会启动工作。2/24:用来控制输出时间的方式,有两种方式12和24,当它是1的时候为12小时制。要特别说的是12小时制下,第五位是上午下午的选择,1表示下午,0表示上午。24小时制,
42、第五位是第2个小时位二十到二十三。操作说明:第一要写入数据,所以我们要把写保护关闭,并且在日期时间的寄存器中初始化;然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值写入,另外我们也能在妙寄存器中的第七位的CH改成0,这样DS1302就开始工作了;当初值初始化成功后,我们就不需要再进行初始化了所以这个时候我们需要开启写入保护,防止寄存器的值被更改;我们接下来做的就是不间断的读取寄存器80H到8CH中的值,然后将他们的格式修改,在LCD屏上面显示。4.3.3 DS1302数据传输DS1302是通过I/O串行来读写数据的。由于硬件的设置,它的读写数据每次不能低于2个字节,第
43、一个位是控制,说白了它就是一条命令,它来指示DS1302对数据怎么处理,是写进还是读出,并且还告诉对那个寄存器使用,和操作地址;第二个位内容就是我们要读写的具体数据。它的具体的时序下图5.3所示:图4.3 DS1302数据传输数据写入:当我们操作的时候,我们要在这之前做准备工作,就是把RST设置为“1”,接着,用单片机控制位的数字,通过数据口,稳定,SCLK为“1”,DS1302开始读取信息,接着SCLK为“0”,数据口被高水平,一直这样进行,这样将一个字节控制字的八位转给了DS。后面再传读数据给DS,完成后数据传送后,单片机RST置“0”,结束工作。数据取出:数据的取出跟数据的写入类似,差不
44、多是个相反的过程,SCLK置“1”DS1302把数据传到IO口里面,SCLK置“0”数据锁定,这时候单片机读取IO口数据。一直这样进行,最后数据传到单片机。4.4 按键程序机械性质是一般按键都有的性质。问题在按键点下的时候,不会很好的连接。还有问题是我们按下的时候来回弹跳,时间极快,我们人体感知是不会体会到的,但是我们都知道单片机的运行时上百万次的,所以这个在我们按下来回弹跳时间对单片机来说时间是极长的。单片机会接受到非常多的高低电流,如果不适当控制下,会影响性能,所以我们做了个判断具体流程下图4.4所示。开始键按下?延时30ms键还按下?读取键值等待释放图4.4 按键流程图unsigned
45、char v_readkey_f(void);/延时程序unsigned char key;if(P17=0)delay(30); /延时30msif(P17=0) key=1; while(!P17)/等待释放 elsekey=04.4.1 ADC0832芯片接口程序为了能够使信息传输得更快和稳定,由于C语言的模块化接口比较好用,所以,本设计利用C语言进行接口编程是非常好的。数模转换装置是非常快的,其转换时间一般只有短短的32us,所以A/D转换的周期小,频率非常快,这也有利于在一些特定的需要中使用。数据是在子程序中被赋予的,屏蔽了外面函数模块中的信息,尽量减少了全局变量的使用,因为全局变量在各个模块函数中都能够被使用,在这样的情况下,如果在一个子程序中使用了全局变量,又在另外一个子程序中使用了此全局变量,那变量数据就有可能达不到我们所要的要求,数据也有可能被某个模块中的函数破坏掉了,这样对于整个设计是非常不利的。而如果我们使用的是模块函数,并且使用的是局部变量,这样就可以屏蔽外界的信息,保证本模块能够唯一做一件事,不会对其他模块中的数据产生影响,并且在程序运行的时候,动态类的局部变量是存在于栈