智能灌溉系统的设计论文

更新时间:2024-05-17 15:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Tianjin University of Technology and Education

毕 业 设 计

二○一一年 六 月

智能灌溉系统的设计

Design of Intelligent Irrigation System

2011年6月

摘 要

近几年来,随着全球水资源的日趋紧张,世界各国都在积极探索行之有效的节水途径和措施。自动控制节水灌溉技术的高低代表着农业现代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因,节水灌溉作为一项现代化的工

程技术,无论是工程节水、农业节水,还是管理节水都必须建立在节水灌溉设备实现产业化生产的基础上。节水灌溉技术是为了解决水资源不足,提高灌溉效率而发展起来的现代灌溉技术之一。

本课题设计了一个智能灌溉系统,该系统以AT89S52单片机为控制核心,采用模块化的设计方案,由温湿度采集模块、时钟模块、步进电机控制模块、键盘接口模块和液晶显示模块组成。温湿度采集模块以DHT11温湿度传感器为核心,时钟模块主要由DS1302和32.768kHz的晶体组成,步进电机控制电路模块采用了达林顿驱动芯片ULN2003,显示电路模块主要由LCD12864构成。在闭环(自动)模式下,该系统能自动对土壤的温湿度进行检测,当实际湿度低于警戒值时单片机自动启动步进电机进行灌溉。

关键词:AT89S52;DHT11温湿度传感器;ULN2003达林顿驱动;LCD12864 ;DS1302

ABSTRACT

In recent years, along with the global water resources is nervous, countries in the world explore actively effective ways and measures of water-saving. Automatic control the discretion of water-saving irrigation technologies represents the agricultural

II

modernization, low level of the development situation of irrigation system automation become the main cause of restricting high-efficient agriculture development, water-saving irrigation is a modern engineering technology, whether engineering section water, water saving, or management of agricultural water must be based on the basis of water-saving irrigation equipment realizing industrialization production. Water-saving irrigation technique is used to deal with the water shortage, improve irrigation efficiency and be developed into one of the modern irrigation techniques.

This topic design an intelligent irrigation system, this system select the AT89S52 SCM as control core, adopt the modularizing design scheme, which contain the temperature and humidity acquisition module, PH value detection module, clock module, stepping motor control module, keyboard interface module and LCD module.DHT11 and humidity sensor is selected as the core of temperature and humidity acquisition module, clock module is mainly composed of the clock DS1302 and crystal of 32.768kHz, stepping motor control circuit module adopted reach linton drive chip ULN2003, display circuit module is mainly consisted of the LCD12864 constitutes. In the loop (automatically) mode, the system can automatically detect on soil temperature and humidity, when actual humidity under alert value single-chip microcomputer automatic start stepping motor for irrigation.

Key Words:AT89S52; DHT11 temperature and humidity sensor; ULN2003

Darlington Driver; LCD12864;DS1302

II

目 录

1 绪论........................................................................................................................ 1

1.1 引言............................................................................................................. 1 1.2 课题来源..................................................................................................... 1 1.3 国内外现状................................................................................................. 2 2 方案设计与论证.................................................................................................... 4

2.1 总体方案论证............................................................................................. 4 2.2 键盘电路..................................................................................................... 5 2.3温湿度传感器的选取.................................................................................. 6

2.3.1湿度传感器原理............................................................................... 6 2.3.2数字温湿度传感器DHT11 ............................................................. 7

3 系统硬件电路设计.............................................................................................. 9

3.1 AT89S52单片机的硬件结构 .................................................................. 9

3.1.1单片机的结构及信号引脚............................................................... 9 3.1.2 AT89S52最小系统 ..................................................................... 12 3.2 直流稳压电源的设计............................................................................... 13 3.3 湿度采集模块........................................................................................... 14

3.3.1 温湿度传感器的原理.................................................................... 14 3.4 pH值检测装置......................................................................................... 17 3.5时钟模块.................................................................................................... 19

3.5.1时钟模块接线图............................................................................. 19 3.5.2 DS1302 内部寄存器 ..................................................................... 21 3.6液晶显示模块............................................................................................ 22

3.6.1液晶显示模块概述......................................................................... 22 3.6.2模块主要硬件构成说明................................................................. 23 3.7步进电机驱动模块.................................................................................... 25

3.7.1步进电机简介和原理..................................................................... 25 3.7.2 ULN2003驱动芯片 ....................................................................... 25 3.7.3步进电机驱动模块......................................................................... 26

4 系统软件设计.................................................................................................... 27

4.1 程序设计................................................................................................... 27

4.2主程序设计............................................................................................... 28 4.3 12864 LCD显示子程序设计.................................................................... 30 结 论...................................................................................................................... 35 参考文献.................................................................................................................. 36 致 谢...................................................................................................................... 37 附录一 总体电路图................................................................................................ 38 附录二 源程序........................................................................................................ 39

1 绪论

1.1 引言

水是一切生命过程中不可替代的基本要素,也是维系国民经济和社会发展的重要基础资源。过去,人们认为水是取之不竭、用之不尽的天然资源。因为在那些年代,科学技术不够发达,经济发展不够迅速,人口数量少,人们对水的使用总是很随意,水资源似乎总也用不完。随着科技不断进步,经济高速发展,生产力极大提高以及人口只增不减,水资源危机开始显现并日渐明显。

随着中国农业现代化进程的高速发展、农业结构的调整以及我国加入世贸组织等因素,节水灌溉自动化技术的要求越来越高,灌溉控制器在我国有着巨大的市场。节水灌溉控制器近期在中国应朝着价格低、性能可靠、操作简便的方向发展。但从长远利益考虑,新的智能化技术、传感技术和农业科技的引入、应用和普及,将会有智能化程度更高、功能更强、性能更趋于稳定和可靠的灌溉控制器出现。本课题以AT89S52单片机为主要硬件模块,通过软件编程实现对土壤温度和湿度进行多点检测,当所测的实际湿度低于警戒值时,将触发灌溉控制器装置,进行自动灌溉,系统还可以实现时间控制方式,随时灌溉,从而也体现了多用途、人性化的现代智能化系统设计要求。

根据本设计的功能要求,可确定此方案:以AT89S52单片机为控制电路的核心,采用模块化的设计方案。在闭环控制方式下,利用温湿度采集模块将多处不同地点检测到的温度、湿度模拟量进行模数转化后传送给单片机,单片机将采集到的数据与警戒值比较;若采集数据低于警戒值,则启动步进电机驱动模块进行灌溉;若采集数据高于警戒值,则不启动驱动模块进行灌溉。显示模块将采集数据和灌溉信息显示在显示屏上。灌溉时间一到,驱动电路则停止驱动步进电机,灌溉停止。在时间控制方式下,用户通过键盘输入进行灌溉的时间,时间一到,灌溉停止。

1.2 课题来源

经过多年的发展,国外灌溉控制器已逐步趋于成熟化、系列化,但由于价格昂贵,国内虽引进一些,但多数是用于农业示范区、科研单位、高校实验室,虽然国外生产的灌溉控制器性能优越,但没有考虑我国特殊的自然、气候、土地资

1

源、农民经济状况等因素,因而国外引进的灌溉控制器在国内应用并不普及。虽然国内也有多家研制灌溉控制器,但多数是小规模、实验和理论的探讨,应用不够普及,究其原因一则是开发性能完善的灌溉控制系统不仅需要大量的人力、物力的投入,还需要多部门、多学科的融合,这就在一定程度上限制了性能完善、适应性强的控制器的开发;其次是现在开发出来的灌溉控制器价格相对昂贵,农民尽管知道能节省人力、灌溉用水、提高产量,但由于一次性投资太大,大多数农民承受不起,这也在一定程度上限制了灌溉控制器的普及。

随着中国农业现代化进程的加快、农业结构的调整、以及我国加人世贸组织等因素,可以预计对农业灌溉自动化技术的要求会越来越高,灌溉控制器在我国将有巨大的市场。节水灌溉控制器近期在中国应朝着价格低、性能可靠、操作简便的方向发展。但从长远利益考虑,新的智能化技术、传感技术和农业科技的引入、应用和普及,将会有智能化程度更高、功能更强、性能更稳定可靠的灌溉控制器出现。西方发达国家在节水灌溉控制器的开发上已越来越成熟,且发展趋势是研制大型分 布式控制系统和小面积单片机控制系统,并带有通信功能,能与上位机进行通信,并可由微机对其编程操作。同时随着人工智能技术的发展,模糊控制、神经网络等新技术也为节水灌溉控制器的研发开辟了广阔的应用前景。而国内在灌溉控制器的研制方面还没有形成规模大、应用范围广的成套灌溉控制产品。国内的一些高尔夫球场等大面积场地灌溉控制,一般都是采用国外现成的成套灌溉控制产品。而广大农村可根据我国国情和各地经济和技术发展的实际情况,采取简单可行的节水灌溉控制措施及相应的排灌机械和设备,大力发展可靠、实用、成本低、操作简便的节水灌溉控制器,它不仅具有广阔的市场,而且具有巨大的社会和经济效益。

1.3 国内外现状

国内在开发灌溉自动控制系统方面还处于研制、试用阶段,真正能投入实际应用,且应用较广的灌溉控制器还是很少。在开发的产品中有着代表性的如中国农业机械化研究院联合多家单位研制的2000型温室自动灌溉施肥系统。该系统是国家“九五”科技攻关项目中自主研发的科技产品,它结合我国温室的环境和实际使用特点,以积木分布式系统结构原理,解决了计算机适时闭环控制、动态监测、控制显示中文、施肥泵混合比可调、电磁阀开度可调等关键技术问题。该系统具有手动控制、程序控制和自动控制等多种灌溉系统模式,可按需要灵活应用,在大连、北京等地已经投入了应用,从系统运行情况来看,该系统有很好控制效果,取的了一定的经济效益和社会效益。

2

天津市水利科学研究所研制的温室滴灌施肥智能化控制系统主要用于现代温室,日光温室作物的灌溉营养液施肥,环境监测的智能控制,采用世界先进的可编程序控制器和触摸屏控制技术,性能可靠、功能齐全、人机界面友好、操作简单、价格低廉,此控制系统的控制流量为15m3/h,控制规模为1~2hm2时,能控制24路阀门,系统具有人工干预灌溉施肥功能,定时、定量灌溉施肥功能,条件控制灌溉施肥功能。北京澳作生态仪器有限公司的澳作智能节水灌溉控制系统可与各种滴、喷灌系统连接,实时监测土壤墒情,根据要求

活,手动、半自动、全自动任选且可随意在计算机上更改,可同时控制多个设备,受控区位置及形状,环境参数及设备状态可同时显示在中心计算机上。北京奥特思达科技有限公司研制的WT-02型微喷灌定时自动控制器,是一种供农业、草坪、果园、温室一般场合给水的电子灌溉自动控制系统。

国外一些先进国家,如美国、以色列和加拿大等,运用先进的电子技术、计算机和控制技术,在节水灌溉技术方面起步较早,并已经日趋成熟。这些国家从最早的水力控制、机械控制,到后来的机械电子混合协调式控制,到现今应用广泛的计算机控制、模糊控制和神经网络控制等,控制精度和智能化程度越来越高,可靠性越来越好,操作也越来越简便。

近年来随着农业对自动化程度要求的提高,以色列出现灌溉用的可编程逻辑控制器(PLC),这种控制器通过把不同的网络连接到主机上进行数据采集和处理。随着控制技术、传感器技术的发展,以色列开发出了现代诊断式控制器,这种控制器把以前不可能采集到的信息通过不同的传感器来获得,通过因特网、远程控制、GSM等来实现数据传输,然后通过计算机中的一些模型来处理信息,作出灌溉计划。加拿大、澳大利亚和韩国等国家和地区也都有开发成功并形成系列的灌溉控制器产品,其中,比较有代表性的如澳大利亚的HARDIE IRRGATION公司的灌溉控制器,已形成了MICRO-MASTER、RAINJET等多个系列,几十种型号的产品。其中HR6100系列成本较低,是一种小型自动灌溉控制器,主要是面对家庭庭院和小面积的商业绿化场地的灌溉,而MICRO-MASTER,系列产品是HARDIE公司为进行大面积灌溉而开发的控制器。该系统采用分布式布置,可与上位机双向通信,用微机对其进行编程操作和对其子控制器进行控制,并能用微机随时监控灌溉系统的工作状况。

3

2 方案设计与论证

2.1 总体方案论证

本课题以AT89S52单片机为主要硬件模块,通过软件编程实现对土壤温度、湿度、PH值、EC值(灌溉液中肥料浓度)进行多点检测,当所测的实际湿度、PH值和EC值低于警戒值时,将触发灌溉控制器装置,进行自动灌溉,系统还可以实现手动控制灌溉方式,随时灌溉,从而也体现了多用途、人性化的现代智能化系统设计要求。

根据本设计的功能要求,由于时间和花费的种种问题,本设计的PH值和EC值部分先不考虑,现确定此方案:以AT89S52单片机为控制电路的核心,采用模块化的设计方案。所谓的模块化设计,简单地说就是将产品的某些要素组合在一起,构成一个具有特定功能的子系统,将这个子系统作为通用性的模块与其他产品要素进行多种组合,构成新的系统,产生多种不同功能或相同功能、不同性能的系列产品。模块化是在传统设计基础上发展起来的一种新的设计思想,现已成为一种新技术被广泛应用,尤其是信息时代电子产品不断推陈出新,模块化设计的产品正在不断涌现。模块化设计已被广泛应用于机床、电子产品、航天、航空等设计领域。模块化设计是绿色设计方法之一,它已经从理念转变为较成熟的设计方法。

本设计总分为六大模块:温湿度采集电路模块、PH值检测模块、时钟模块、键盘接口电路模块和液晶显示电路模块、步进电机控制电路模块。其中温湿度采集模块核心器件为数字式温湿度传感器DHT11,PH值检测模块有玻璃电极、玻璃电极信号处理电路和A/D转化电路,时钟模块以DS1302为核心器件,显示电路以液晶显示器LCD 12864为核心构成,步进电机控制电路以达林顿驱动芯片ULN2003为核心,再配合键盘电路实现对土壤湿度进行检测。

在本系统中,PH值执行装置通过单片机控制电磁阀,当所测PH值达不到土壤的PH值要求时,单片机通过PH值执行装置开启PH值电磁阀;湿度灌溉分两种控制方式:闭环控制方式和时间控制方式,用户可在两种方式之间自由选择。在闭环控制方式下,利用湿度采集模块将多处不同地点检测到的温湿度已校准数字信号数据进行综合处理,再传送给单片机。单片机将接收到的数据和单片机内存的数据进行比较,若收到的数据低于设定的数值,则步进电机控制电路模块启动步进电机进行灌溉。若收到的数据不低于设定的数值,则不启动步进电机进行灌溉。同时单片机将采集到的数据和系统的灌溉状况在现实模块的显示屏上显示出来。灌溉进行一定的时间后自动停止,该时间由用户加载在单片机内部数据决定。用户可通过灌溉方式切换键切换到时间控

4

[3]

制方式。在时间控制方式下,用户通过键盘输入灌溉的时间和灌溉的周期,对应的数据将在显示屏上显示出来。这种灌溉方式主要应用于特殊情况。

综上所述,本系统不但具有非常友好的人机交互界面,而且具有良好的实时控制功能,能及时响应用户请求。系统支持的灌溉方式灵活多样,用户可根据实际情况进行模式选择。系统结构简洁,各类功能易于实现,大大提高了系统的可靠性和实用性。系统的基本模块原理图如图2.1所示。

PH值检测电路 温度湿度 传感器 键盘控制电路 系统时钟器 图2-1智能灌溉系统基本模块原理框图

[4]

AT89S52 单片机 LCD12864 液晶显示 PH值执行装置 步进电机 驱动电路 时间电路 DS1302 灌溉控制电路

2.2 键盘电路

独立式按键是指直接用一根I/O口线构成的单个按键电路。每个独立式按键单独占有一根I/O口线,每根I/O口线上的按键的工作状态不会影响其他I/O口线的工作状态。独立式按键接口电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大。故在按键数量不多时,常采用这种按键结构。独立式按键电路如图2.2所示。上拉电阻保证了按键断开时,I/O口线上有确定的高电平。本设计外围电路接有七个独立按键,其中两个作为电机手动启停按键,一个作为PH值演示按键,剩下四个按键作为时钟调整按键。

因为本设计所用的I/O口不是很多,而且需要的按键数目不多,故选用独立式键盘。

5

2.3.1湿度传感器原理

2.3温湿度传感器的选取

下面对各种湿度传感器进行简单的介绍。

其电容量也发生变化,其电容变化量与相对湿度成正比。

亚胺、酪酸醋酸纤维等。当环境湿度发生改变时,湿敏电容的介电常数发生变化,使

附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量湿度。

1、氯化锂湿度传感器

图2-2 独立式按键键盘框图

湿敏元件是最简单的湿度传感器。湿敏元件主要有电阻式、电容式两大类。

湿敏电容一般是用高分子薄膜电容制成的,常用的高分子材料有聚苯乙烯、聚酰

湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空气中的水蒸气吸

6

(1)电阻式氯化锂湿度计 (2)露点式氯化锂湿度计 2、碳湿敏元件 3、氧化铝湿度计 4、陶瓷湿度传感器

目前市场上测量湿度和温度的方法有很多种,也有很多种传感器,它主要通过传感器采集土壤中的水分含量和室外温度,对灌溉系统实现智能控制。但由于符合应用要求的土壤湿度传感器购买麻烦、价格昂贵且在最后演示时还得需要土壤样本,故本设计选取了空气湿度温度传感器作为替代。而温度湿度传感器又分为模拟式温湿度传感器和数字式温湿度传感器,在实际温湿度采集时,模拟式温湿度传感器在与单片机之间还需加上模数转换芯片,所以本设计采用数字温湿度传感器DHT11,它是广州奥松电子有限公司新近推出的一款含有已校准数字信号输出的温湿度复合传感器。 2.3.2数字温湿度传感器DHT11 1、DHT11产品概述

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。温湿度传感器DHT11外观图如图2-3所示。

7

图2-3温湿度传感器DHT11外观图

2、DHT11 应用领域

?暖通空调 ?测试及检测设备 ?汽车 ?数据记录器

? 消费品 ?自动控制 ?气象站 ?家电 ?湿度调节器 ?医疗 ?除湿器

8

3 系统硬件电路设计

3.1 AT89S52单片机的硬件结构

单片机的全称为微型计算机(Single Chip Microcomputer)。从应用领域来看,单片机主要用于控制,所以又称微控制器(MicroControllerUnit)或嵌入式控制器(Embedded Controller)。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机,其基本组成和工作原理与通用微型计算机是一致的。主要由微处理器(CPU)、存储器、I/O接口三大功能部分通过总线有机连接而成,在外部通过I/O接口配置各种外部设备就构成微机的硬件系统[7]。单片机体积小,成本低,运用灵活,易于产品化;面向控制,能针对性地解决从简单到复杂的各类控制任务;抗干扰能力强,适用范围广。

AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 3.1.1单片机的结构及信号引脚 1 、主要特性

??与MCS-51单片机产品兼容

??8K字节在系统可编程Flash存储器 ??1000次擦写周期

??全静态操作:0Hz~33Hz ??三级加密程序存储器 ??32个可编程I/O口线 ??三个16位定时器/计数器 ??八个中断源

??全双工UART串行通道 ??低功耗空闲和掉电模式 ??掉电后中断可唤醒 ??看门狗定时器 ??双数据指针 ??掉电标识符

9

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 2、芯片引脚封装:

AT89S52引脚封装图如图3-1所示。

图3-1 AT89S52引脚封装图

3、芯片引脚说明:

VCC : 电源 GND: 地

P0 端口(P0.0-P0.7):P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令 字节。程序校验时,需要外部上拉电阻。

P1 端口(P1.0-P1.7):P1口是一个具有内部上拉电阻的8 位双向I/O口,p1输出缓冲器能驱动4 个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表3-1所示。在flash

10

编程和校验时,P1口接收低8位地址字节。

表3-1 P1口线的第二功能

引脚号 P1.0 P1.1 P1.5 P1.6 P1.7 第二功能信号 T2 T2EX MOSI MISO SCK 第二功能信号名称 定时器/计数器T2的外部计数输入,时钟输出 定时器/计数器T2的捕捉/重载触发信号和方向控制 在系统编程用 在系统编程用 在系统编程用 P2 端口(P2.0-P2.7):P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3 端口(P3.0-P3.7):P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表3-2所示。在flash编程和校验时,P3口也接收一些控制信号。

表3-2 P3口线的第二功能 引脚号 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能信号 RXD TXD INT0 INT0 T0 T1 WR RD 11

第二功能信号名称 串行输入 串行输出 外部中断0 外部中断0 定时器0外部输入 定时器1外部输入 外部数据存储器写选通 外部数据存储器写选通

RST: 复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。

EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端。 3.1.2 AT89S52最小系统

在本设计中,AT89S52单片机的P0口用于单片机与LCD12864之间的数据传送,P1.0~ P1.3用于步进电机的驱动接口,P2.0用于LCD12864显示的位驱,P2.1用于控制对LCD12864的读写控制信号,P2.2用于控制对LCD12864的指令是属于写数据还是写指令。P3.1-P3.7用作键盘电路,一共设置7个按键。P1.0-P1.3用于驱动步进电机,P1.5口用于时钟芯片DS1302的SCLK 串行时钟,P1.6口用于时钟芯片DS1302的

I/O 数据输入和数据输出,P1.7

口用于时钟芯片DS1302的RST 复位脚。P3.0用于温湿度

传感器DHT11数据输入通道。

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。由于输入至内部时钟信号要通过一个十二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

AT89S52最小系统接线如图3-2所示,在XTAL1、XTAL2端接上11.0592MHZ晶振及两个30P谐振电容,在RESET端接上相应的电阻、电容,如需要按键复位,加上按键即可组成一个最小系统,按要求通电后,系统就可以工作了。单片机在启动运行时都需要复位,以便CPU和系统中的其他部件都处于某一确定的初始状态,并从这个状态开始工作。单片机的复位是靠外部电路实现的,在时钟电路工作后,只要在

12

单片机的RST引脚上出现24个时钟振荡脉冲(2个机械周期)以上的高电位,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,在设计复位电路时,通常使RST引脚保持IOms以上稳定的高电平。只要RST保持高电平,单片机就循环复位;当RST从高电平变为低电平以后,单片机从0000H地址开始执行程序。在复位有效期间,ALE引脚输出高电平。

复位后,PO口--P3口输出高电平,且皆处于输入状态,并且将07H写入栈指针SP(即设定堆栈底为O7H),同时,将程序计数器PC和其余的特殊寄存器清0(不定位除外)。但复位不影响单片机内部的RAM状态。

图3-2 AT89S52最小系统图和复位电路

3.2 直流稳压电源的设计

随着集成技术的发展,稳压电路也迅速实现集成化。特别是三端集成稳压器,芯片只引出三个端子,分别接输入端、输出端和公共端,基本上不需外接元件,而且内部有限流保护、过热保护和过压保护电路,使用十分安全、方便[6]。

直流稳压电源一般由电源变压器、整流电路、滤波电路及稳压电路组成,电源变压器的作用是将电网220V的交流电压U1转换成整流电路所需的电压U2。整流电路的作用是将交流电压U2转换成脉动的直流电压U3。滤波电路的作用是将脉动直流电

13

压滤除纹波,变成纹波小的直流电压U4。稳压集成块的作用就是将不稳定的直流电压转换成稳定的直流电压U5。

图3-3 直流稳压电流电路图

本设计选择的方案是三端集成稳压器的最基本的应用电路,如图3-3所示。 整流滤波后得到的直流输入电压U4接在LM7805输入端和公共端之间,在LM7805的输出端即可得到稳定的+5V输出电压U5。

3.3 湿度采集模块

3.3.1 温湿度传感器的原理

1、概述

新型单总线数字温湿度传感器DHT11是广州奥松电子有限公司新近推出的一款含有已校准数字信号输出的温湿度复合传感器,它具有体积小巧、接口简单、响应速度快、性价比高等特点。由于DHT11的诸多优点,使其在自动控制和家电消费品领域中拥有较高的应用价值。 2、产品特性

①湿温度传感器的一体化结构能相对的同时对相对湿度和温度进行测量 。 ②数字信号输出,从而减少用户信号的预处理负担。

③单总线结构输出有效的节省用户控制器的I/O口资源。并且,不需要额外电器元件。 ④ 独特的单总数据传输线协议使得读取传感器的数据更加便捷。 ⑤全部校准。编码方式为8位二进制数。

⑥40bit 二进制数据输出。其中湿度整数部分占1Byte,小数部分1Byte;温度整数部分1Byte,小数部分1Byte。其中,湿度为高16位。最后1Byte为校验和。 ⑦卓越的长期稳定性,超低功耗。

⑧ 4引脚安装,超小尺寸,各型号管脚完全可以互换。

⑨ 测量湿度范围从20%RH到90%RH;测量温度范围从0℃到50℃。 ⑩适用范围包括恒湿控制,消费家电类产品,温湿度计等领域。

14

3、外型与引脚排列

图3-4 DHT11外型及管脚

4、连接接口说明

DHT11数字湿温度传感器连接电路简单,只需要占用控制器一个I/O口即可完成上下位的连接。典型应用电路如下图3-5所示。另外,建议连接线长度短于20时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻,如图3.5所示。

图3-5 DHT11典型电路连接

5、串行接口 (单线双向)

15

DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:

一次完整的数据传输为40bit,高位先出。

数据格式:8bit湿度整数数据+8bit湿度小数数据

+8bi温度整数数据+8bit温度小数数据

+8bit校验和

数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。

用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

1. 通讯过程如图3-6所示

图3-6 通讯过程

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。

16

图3-7 DHT11复位时序

总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。

数字0信号表示方法如图3-8所示

图3-8 数字0信号

数字1信号表示方法.如图3-9所示

图3-9 数字1信号

3.4 pH值检测装置

农作物对灌溉液的pH值也有一定要求,需加pH调节液进行调节。灌溉液的pH要求值一般为5.5一6.5之间的某一值。由于肥料一般或呈碱性,或溶于水后,在作物所能承受的浓度范围内pH大于农艺要求,故施肥时,往往加酸,在本论文中,“pH调节液”一般指酸。

17

1、PH值传感器

本设计采用的是美国奥立龙868型酸度计。其主要技术参数有: (1)测量范围:0-14 PH (2)分辨率:0.1 (3)精度:0.001PH

(4)温度补偿:自动温度补偿0-100.0℃

本设计PH值检测装置,土壤pH值的测试采用的则是电位分析法。电位分析法基于两个电极上发生的电化学反应,即将两个电极插在同一土壤稀释溶液中,其中一个电极作为测量电极,其输出电位随被测溶液中的氢离子活度的变化而变化,另一电极作为参比电极,其电位固定不变,两个电极构成原电池,产生大小与pH值有关的电动势。后通过A/D转换芯片0809,将模拟信号转换成数字信号传送到单片机。 2、A/D转换芯片0809

图3-10 A/D0809引脚图

如图3-10所示,A/D0809芯片的引脚图,其信号引脚: IN1~IN7——模拟量输入通道

ALE——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。

START——转换启动信号。START上升沿时,复位ADC0809:START下降沿时启动芯片,开始进行A/D转换;A/D转换期间,START应保持低电平。本信号有时简写为ST。

A、B、C——地址线。通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。

18

CLK——时钟信号。ADC0808的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHZ的时钟信号。

EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。

D7~D0——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高。

OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。

Vcc——+5V电源。

图3-11 A/D转换与单片机电路

由于需要检测土壤PH值的传感器市场上很少且价格相对昂贵,故在本设计中采用一个按键来替代,当按键按下后,将单片机P3.3口接低电平,表示所测土壤PH值称碱性,需要加酸液中和,在本设计中体现为,当所测PH值高于7.0,单片机就会点亮发光二极管(打开酸液电磁阀)并在液晶显示屏上显示PH值异常;再按下按键会使土壤PH值呈中性时,发光二极管就会熄灭(关闭酸液电磁阀),且液晶显示屏会显示PH值正常。

3.5时钟模块

3.5.1时钟模块接线图

时钟模块主要由DS1302和32.768kHz的晶体组成,若时间有误差可用键盘设置。与单片机的连接仅需3各接口:SCLK、I/O、RST。另外,由于DS1302提供了31*8

19

位的RAM并带有备用电源,可采用它来存储目标湿度、当前水阀状态等变量、防止主电源掉电后数据丢失。

在本设计中,DS1302为本设计提供时钟源,当我们需要手动灌溉时,可以让我们控制灌溉时间。液晶屏显示初始时间为2007年7月26日0时0分0秒,我们可以通过按键来调整时间。

图3-12时钟模块接线图

DS1302 是DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供、秒、分、时、日、日期、月、年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES 复位2 I/O 数据线3 SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW

DS1302 是由DS1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1 为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域下面将主要的性能指标作一综合

", 实时时钟具有能计算2100 年之前的秒、分、时、日、日期、星期、月、年的

能力还有闰年调整的能力 ", 31*8 位暂存数据存储RAM ", 串行I/O口方式使得管脚数量最少 ", 宽范围工作电压2.0--5.5V ", 工作电流2.0V 时,小于300nA ", 读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式 ", 8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配 ", 简单3线接口 ", 与TTL兼容Vcc=5V ", 可选工业级温度范围-40 +85

20

", 与DS1202兼容 ", 在DS1202基础上增加的特性

3.5.2 DS1302 内部寄存器

CH: 时钟停止位 寄存器2的第7位12/24小时标志 CH=0 振荡器工作允许 bit7=1,12 小时模式

CH=1 振荡器停止 bit7=0,24 小时模式

WP: 写保护 寄存器2 的第5 位:AM/PM 定义 WP=0 寄存器数据能够写入 AP=1 下午模式 WP=1 寄存器数据不能写入 AP=0 上午模式

TCS: 涓流充电选择 DS: 二极管选择位

TCS=1010 使能涓流充电 DS=01 选择一个二极管 TCS=其它 禁止涓流充电 DS=10 选择两个二极管 DS=00 或11, 即使TCS=1010, 充电功能也被禁止

RS 位 电阻 典型位 00 没有 没有 01 R1 2K 10 R2 4K R3 8K 11

21

3.6液晶显示模块

3.6.1液晶显示模块概述

本设计的液晶显示模块采用的是带中文字库的LCD12864,各行依次显示日期、时间、温度、湿度。液晶的电路连接比较简单,把LCD12864与单片机的P0口进行通信。12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 模块并行接口说明

22

表3-3 LCD12864液晶显示器的引脚功能

管脚号 1 2 3 4 管脚符号 电平 VSS VDD V0 RS(CS) H/L 0V 3.0+5V - 管脚功能描述 逻辑电源地 逻辑电源+5V 对比度(亮度)调整 RS=“H”表示DB7-DB0为显示数据 RS=“L”表示DB7-DB0为显示指令数据 5 R/W(SID) H/L R/W=“H”,E=“H“数据被读到DB7-DB0 R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR 6 7-14 15 16 17 18 19 20

E(SCLK) H/L DB0-DB7 H/L PSB NC /RESET LEDA LEDK H/L - H/L VDD VSS 使能信号 三态数据总线 H:8位或4位并口方式,L:串口方式 空脚 系统复位,低电平有效 LCD驱动电压输出端 背光电源,LED+(+5V) 背光电源,LED-(0V) VOUT - 3.6.2模块主要硬件构成说明

控制器接口信号说明:

(1) RS,R/W的配合选择决定控制界面的4种模式:

表3-4 RS、R/W选择模式

RS L L H H R/W L H L H 功能说明 MPU写指令到指令暂存器(IR) 读出忙标志(BF)及地址记数器(AC)的状态 MPU写入数据到数据暂存器(DR) MPU从数据暂存器(DR)中读出数据 23

(2)E信号

表3-5 E信号

E状态 执行动作 结果 配合/W进行写数据或指令 配合R进行读数据或指令 无 高—>低 I/O缓冲—>DR 高 低/低—>高

DR—>I/O缓冲 无 (3)忙标志BF:BF标志提供内部工作情况。BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态。

(4)字型产生ROM(CGROM):字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。 DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。

(5)显示数据RAM(DDRAM):模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。

(6)字型产生RAM(CGRAM):字型产生RAM提供图象定义(造字)功能, 可以提供四组16×16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。

(7)地址计数器AC:地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6-DB0中。

24

3.7步进电机驱动模块

3.7.1步进电机简介和原理

步进电机是将给定的电脉冲信号转变为角位移或线位移的开环控制元件。给定一个电脉冲信号,步进电机转子就转过相应的角度,这个角度就称作该步进电机的步距角。目前常用步进电机的步距角大多为1.8度(俗称一步)或0.9度(俗称半步)。以步距角为0.9度的步进电机来说,当我们给步进电机一个电脉冲信号,步进电机就转过0.9度;给两个脉冲信号,步进电机就转过1.8度。以此类推,连续给定脉冲信号,步进电机就可以连续运转。由于电脉冲信号与步进电机转角存在的这种线性关系,使得步进电机在速度控制、位置控制等方面得到了广泛的应用【22】。

步进电机的使用至少需要三个方面的配合,一是电脉冲信号发生器,它按照给定的设置重复为步进电机输送电脉冲信号,目前这种信号大多数由可编程控制器或单片机来完成;二是驱动器(信号放大器),它除了对电脉冲信号进行放大、驱动步进电机转动以外,还可以通过它改善步进电机的使用性能,事实上它在步进电机系统中起着重要的作用,一般一种步进电机可以根据不同的工况具有多种驱动器;三是步进电机,它有多种控制原理和型号,现在常用的有反应式、感应子式、混合式等。 步进电机的速度控制是通过输入的脉冲频率快慢实现的。当发生脉冲的频率减小时,步进电机的速度就下降;当频率增加时,速度就加快。还可以通过频率的改变而提高步进电机的速度或位置精度。 3.7.2 ULN2003驱动芯片

一般ULN2003是用作灌电流驱动。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行【16】。

(1)ULN2003引脚说明:

1-7号引脚:输入端 10-16号引脚:输出端 8号引脚:地端 9号引脚:电源+ (2)达林顿驱动的典型应用:

①用于大功率开关电路,电机调速,逆变电路,利用CMOS电路经过达林顿管驱动高灵敏度继电器的电路;②驱动LCD智能显示屏

25

LCD智能显示屏是由微型计算机控制,以LCD矩阵板作显示的系统,可用来显示各种文字及图案。该系统中的行驱动器和列驱动器均可采用高β,高速低压降的达林顿管。应注意的是,达林顿管由于内部由多只管子及电阻组成,用万用表测试时,基极的正反向阻值与普通三极管不同。 3.7.3步进电机驱动模块

单片机输出波形信号脉冲的宽度可由延时子程序来确定。只要改变延时时间,就可以改变驱动脉冲的频率,也就改变了步进电机的转速。显然,使用方便、灵活。

单片机向P1口输出驱动代码由程序进行。在实际编程中,单片机驱动代码存入存储器,构成控制表。只要CPU执行传送命令,数据依次取出,送P1口就可以了。每输出一个代码,步进电机旋转一步,连续循环输出,步进电机连续运行;倒序输出,步进电机反向运行;停止输出,步进电机停止运行。改变数据输出的速度,可改变输出脉冲的频率,也就改变了步进电机运行的速度

【23】

图3.13 步进电机驱动模块电路图

由于设计灌溉控制电路所需的时间和花费太大,本设计在硬件电路方面没有做灌溉电路,原意是设计一个水阀控制电路,它有一个水阀灌溉部分和一个酸液电磁阀,最后有一个控制总阀门,当湿度低于最小值时,水阀自动打开灌溉,若土壤PH值呈碱性,那酸液电磁阀也会打开。

26

4 系统软件设计

4.1 程序设计

程序设计是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软件研究中,程序设计的工作非常重要,内容涉及到有关的基本概念、工具、方法以及方法学等。程序设计通常分为问题建摸,算法设计,编写代码和编译调试四个阶段。

按照结构性质,有结构化程序设计与非结构化程序设计之分。前者是指具有结构性的程序设计方法与过程。它具有由基本结构构成复杂结构的层次性,后者反之。按照用户的要求,有过程式程序设计与非过程式程序设计之分。前者是指使用过程式程序设计语言的程序设计,后者指非过程式程序设计语言的程序设计。按照程序设计的成分性质,有顺序程序设计、并发程序设计、并行程序设计、分布式程序设计之分。按照程序设计风格,有逻辑式程序设计、函数式程序设计、对象式程序设计之分。

程序设计的基本概念有程序、数据、子程序、子例程、协同例程、模块以及顺序性、并发性、并行性、和分布性等。程序是程序设计中最为基本的概念,子程序和协同例程都是为了便于进行程序设计而建立的程序设计基本单位,顺序性、并发性、并行性和分布性反映程序的内在特性。

在硬件系统设计好以后,就要设计相应的程序实现系统功能。把整个过程分成若干个部分,每一部分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。

模块程序设计法的主要优点是:

(1)单个模块比起一个完整的程序易编写、调试及修改。 (2)程序的易读性好。 (3)程序的修改可局部化。

(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。 (5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。

27

[16]

本系统软件采用模块化结构,由主程序﹑键盘子程序、12864LCD液晶显示子程序构成。

4.2主程序设计

在本系统的程序设计中,主控模块负责启动系统后显示屏上的初级显示,开外部中断,判断系统模式,以及执行相应的子程序,完成系统功能。

在主程序模块中,需要完成对各模块接口的初始化工作,另外,在主程序模块中还需要检测模式标志单元的值,若该单元的值为0,则为手动模式,若为1,则为自动模式。用户选定模式后,主程序负责执行相应的子程序。若为手动模式,阀门打开后,则屏幕显示倒计时,时间一到,阀门就关闭。若为自动模式,则单片机定时检测P3.3口的值,若该值为高电平则不启动阀门,若该值为低电平,则启动阀门。启动阀门后,单片机还要继续检测P3.3口的值,若变高电平,则关闭阀门。执行完一个灌溉周期后继续循环检测P3.3口的电平值。

主程序流程图如图4-1所示。当接通电源时,自动灌溉控制系统启动,同时LCD液晶显示提示语,提示用户选择模式。若选择手动模式,显示屏还会提示用户通过键盘设置灌溉时间。在运行中键盘采用中断方式,若有键按下,则转向相应的子程序。

开始初级显示、开外部中断否模式单元的值=0?是手动模式自动模式启动执行完毕结束 图4-1主程序流程图

28

主程序如下:

main() { t=0; flag=0; TMOD=0x01;

TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; P3_0=1; init_lcd(); clrram_lcd();

Initial_DS1302(); //时钟芯片初始化 up_flag=0; down_flag=0;

done=0; //进入默认液晶显示 pp=2; LED=ft=1; RH(); delay1(20); while(1) {

while(done==1)

keydone(); //进入调整模式

while(done==0) { RH();

if(pp==2) {

show_time();pp=0; //初始化 while(ff==0){RH();show_time();}

29

} }

}

show_time(); //液晶显示数据

if(flag==2)//100后flag为2,进行比较 {

if(a==U8T_data_H&&b==U8RH_data_H) while(a==U8T_data_H&&b==U8RH_data_H); flag=0; Setkey(); jiaoshui();

//扫描各功能键 //湿度小于38%

} if(ff<38)K1=0;

P1=0x00; PH(); }

4.3 12864 LCD显示子程序设计

12864LCD显示屏有着自己的指令集,基本指令集有11条指令。它的指令是通过选择RS的高低电平来区别所从DB0~DB7输入的是数据还是指令, RW的高低电平来选择对现实屏是读操作还是写操作。CS1、CS2不同组合代表选择左半屏或者右半屏。数据或者指令的代码从DB0~DB7输入。对12864LCD写程序的步骤如下:

(1)开启两个半屏 (2)清左半屏和右半屏 (3)选择左半屏 (4)设置页和起始行 (5)写左半屏

显示屏显示子程序流程图如图4-2所示:

30

开始显示屏初始化清屏选择左或右半屏设置起始行、起始列写字否半屏写完?是结束

图4-2 显示屏显示子程序流程图

显示屏显示子程序: void show_time() {

if(pp==2) {

gotoxy(1,0);

print(\ \ gotoxy(2,0);

print(\系统初始化中, \显示时间 gotoxy(3,0);

print(\请稍候.... \显示日期

31

gotoxy(4,0);

print(\ \ RH(); delay1(3000); } else {

DS1302_GetTime(&CurrentTime); //获取时钟芯片的时间数据 TimeToStr(&CurrentTime); //时间数据转换液晶字符 DateToStr(&CurrentTime); //日期数据转换液晶字符 if(pp==0) {

gotoxy(2,0); print(\时间:\ gotoxy(2,3);

print(CurrentTime.TimeString); //显示时间 gotoxy(1,3);

print(CurrentTime.DateString); //显示日期 gotoxy(1,0); print(\星期\ gotoxy(1,2);

print(week_value); //显示星期 } if(pp==1) {

gotoxy(1,0);

print(\智能灌溉系统 \ gotoxy(2,0);

print(\电机状态:工作 \ }

gotoxy(3,0); print(\温湿度:\

32

gotoxy(3,4); //液晶字符显示位置 write_dht11(U8T_data_H); print(dht_11); gotoxy(3,5); print(\℃\ /*gotoxy(3,5); print(\湿度:\ //gotoxy(4,2); gotoxy(3,6);

write_dht11(U8RH_data_H); print(dht_11); gotoxy(3,7); print(\ if(ft==1) {gotoxy(4,0);

print(\值:正常!\

} if(ft==2) {gotoxy(4,0);

print(\值:异常!\ } }

经过调试,本设计实现基本功能,本设计采用闭环控制,温湿度传感器一直采集实时数据,若所测湿度高于警戒值时,步进电机停止,液晶显示屏会实时显示此时温度和湿度,并显示时钟,且此时土壤PH值设定为正常,液晶屏显示状态如图4-3所示。

}

mdelay(500); //扫描延时

33

图4-3湿度大于警戒值

若所测湿度小于警戒值时,电机就会自启动,如图4-4所示,直到所测湿度高于警戒值之后,步进电机就会自动停止,且此时PH值呈碱性,显示为异常。

图4-4湿度小于警戒值

34

本文来源:https://www.bwwdw.com/article/jrq7.html

Top