1、0目 录第 1 节 引 言31.1 节水灌溉系统概述31.2 本设计任务和主要内容4第 2 节 系统主要硬件电路设计52.1 单片机控制系统原理52.2 单片机主机系统电路52.2.1时钟电路62.2.2复位电路62.2.3数据存储器的扩展电路62.3 数据采集处理电路72.4 LED 显示系统电路 82.5 超限报警电路10第 3 节 系统软件设计113.1 系统主程序设计113.2 采样子程序设计123.3 数据处理133.3. 1 数字滤波技术133.3.2 标度变换153. 3. 3 BCD 转换183. 4 LED 动态显示程序18第 4 节 结束语21参考文献221基于单片机的自动
2、节水灌溉系统数理与信息工程学院 05 计算机专升本 孙岳指导教师:余水宝 第 1 节 引 言自动控制节水灌溉技术的高低代表着农业现代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。单片机控制的滴灌节水灌溉系统,该系统可对不同土壤的湿度进行监控,并按照作物对土壤湿度的要求进行适时、适量灌水,其核心是单片机和 PC机构成的控制部分,主要对土壤湿度与灌水量之间的关系、灌溉控制技术及设备系统的硬件、软件编程各个部分进行实现。单片机控制部分采用 AT89C51单片机为核心,主要由土壤湿度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。单片机可
3、将土壤湿度传感器检测到的土壤湿度模拟量转换成数字量,显示于 LED显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。1.1 节水灌溉系统概述生命之起源,水为必要条件,没有了水,地球上的生命将会枯竭。随着 21世纪的到来,能源危机将接踵而至。比能源危机更可怕的是,作为人类生命之源的水的短缺到了前所未有的程度,这一状况还将随着时间的推移和社会的发展继续恶化。水资源危机已成为全球性的突出问题,利用科技手段缓解这一危机,将是人类主要的出路。农业是人类社会最古老的行业,是各行各业的基础,也是人类顿以生存的最重要的行业。农业的发展从长远来看很重要,一是水的问题,二是科技的问题。农业的根
4、本出路在科技,在教育。由传统农业向现代化农业转变,由粗放经营向集约经营转变,必须要求农业科技有一个大的发展,进行一次新的农业技术革命。农业与工业、交通等行业相比仍然比较落后,农业灌溉技术尤其落后。灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。传统的灌溉模式自动化程度极低,基本上属粗放的人工操作,即便对于给定的量,在操作中也无法进行有效的控制,为了提高灌溉效率,缩短劳动时间和节约水资源,必须发展节水灌溉控制技术。现代智能型控制器是进行灌溉系统田间管理的有效手段和工具,它可提高操作准确性,有利于灌溉过程的科学管理,降低对操作者本身素质的要求。除了能大大减少劳动量,更重要的是它能准确、定时
5、、定量、高效地给作物自动补充水分,以提高产量、质量,节水、节能。现代灌溉控制器的研究使用在我国农、林、及园艺为数不多,与发达国家相比,有较大的差距,还基本停留在人工操作上,即使有些地方搞了一些灌溉工程的自动化控制系统,也是根据经验法来确定每天灌溉次数和每次灌溉量,如果灌溉量与作物实际需水量相比太少,便不能有效的促进作物健康成长;而灌溉量太多,肥水流失,又会造成资源浪费,同时传统的灌溉法还需要相关专家的实时观察并经验指导生产,劳动生产率低,这也不能与现代化农业向优化、高效化方向发展要求同步。随着计算机技术和传感器技术的迅猛发展,计算机和传感器的价格日益降低,可靠性日益提高,用信息技术改造农业不仅
6、是可能的而且是必要的。用高新技术改造农业产业,实施节水灌溉已成为我国农业乃至国民经济持续发展带战略2性的根本大事。本文旨在设计一套能对作物生长的土壤湿度进行自动监控的系统,它能对作物进行适时、适量的灌水,起到高效灌溉,节水、节能的作用。1.2 本设计任务和主要内容本论文主要研究单片机控制的滴灌节水灌溉系统,分别对土壤湿度与灌水量之间的关系、灌溉控制技术及系统设备的软、硬件各个部分进行了研究。主要内容如下:1.根据滴灌技术的特点,进行节水灌溉控制系统的整体研究与设计。2.针对土壤湿度难以用精确的数学模型描述的特点,采用模糊控制理论,对这一理论进行了深入的研究,重点研究双输入单输出的模糊控制方式。
7、3. LED 显示土壤湿度值,在灌水期间以倒计时的方式显示灌水剩余时间。4.当土壤湿度值低于设定的最低值时,系统可自动报警。第 2 节 系统主要硬件电路设计2.1 单片机控制系统原理3种植作物的土壤 土壤湿度传感 A/D 转换AT89C51单片机LED显示 报警 放大驱动电磁阀图 2 单片机控制系统原理框图22 单片机主机系统电路AT89C51单片机是 51系列单片机的一个成员,是 8051单片机的简化版。内部自带 2K字节可编程 FLASH存储器的低电压、高性能 COMS八位微处理器,与 Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位 CPU和闪速存储器结合在单个
8、芯片中,因此,AT89C2051 构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的 RAM、ROM 和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。图 3 单片机主机系统图2.2.1时钟电路单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51 单片机内部有一个用于构成振荡器的高增益反向放大器,引脚 XTALl和 XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图 3所示在其外接晶体振荡器(简称晶振)或陶4瓷
9、谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图 3中外接晶体以及电容 C2和 C1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为 30P左右,晶振频率选 6MHz oRESET2.2.2复位电路为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使 CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要 RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果 RST引脚上持续为高电平,单片机就处
10、于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为 FFH,堆栈指针 SP置为 07H, SBUF内置为不定值,其余的寄存器全部清 0,内部 RAM的状态不受复位的影响,在系统上电时 RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。图 3中 R9和 Cl组成上电复位电路,其值 R取为 1KQ, C取为 1pF.2.2.3数据存储器的扩展电路AT89C51单片机外接数据 RAM时,P2 口输出存储器地址的高 8位,PO 口分时输出地址的低 8位和传送指令字节或数据。PO 口先输出低 8位地址信号,在 ALE有效时将它锁存到外部地址锁存器
11、中,然后 PO口作为数据总线使用,此处地址锁存器选用 74LS373,实际电路图连接如图 4所示。图 4数据存储器的扩展电路2.3数据采集处理电路ADC0809是一种 8位逐次逼近式 A/D转换器,内部具有锁存控制的 8路模拟开关,外接 8路模拟输入端,可同时对 8路 0-5V的输入模拟电压信号分时进行采集转换,本系统只用到 INO和 INl两路输入通道。ADC0809 转换器的分辨率为 8位,最大不可调误差小于士 1LSB,采用单一+5V 供电,功耗为 15mW,不必进行零点和满度调整。由于 ADC0809转换器的输出数据寄存器具有可控的三态输出功能,输出具有 TTL三态锁存缓冲器,故其 8
12、位数据输出引脚可直接与数据总线相连。A/D 转换器需外部控制启动转换信号方能进行转换,这一启动5转换信号可由 CPU提供,不同型号的 A/D转换器,对启动转换信号的要求也不同,分脉冲启动和电平启动两种,ADC0809 采用脉冲启动转换,只需给 A/D转换器的启动控制转换的输入引脚(START)上,加入正脉冲信号,即启动 A/D转换器进行转换,转换开始后,转换结束信号输出端(EOC)信号变低,转换结束时,EOC 返回高电平,以通知主机读取转换结果的数字量,这个信号可以作为 A/D转换器的状态信号供查询,也可以用作中断请求信号。图 5数据采集处理电路本系统中 ADC0809与 AT89C51单片机
13、的接口如图 5所示,采用等待延时方式。ADC0809的时钟频率范围要求在 10-1280kHz , AT89C51单片机的 ALE脚的频率是单片机时钟频率的 1/6,因此当单片机的时钟频率采用 6MHz,ADC0809输入时钟频率即为 CLK=1MHz,发生启动脉冲后需延时 100Us才可读取 A/D转换数据。如图 5连接方式,ADC0809 的 8位数据输出引脚可直接与数据总线相连,地址译码引脚 A, B, C分别与 74LS373的 A, B, C相连,以选通 INO- IN7中的一个通道。AT89C51的 p 2.6作为片选信号,在启动 AM转换时,由单片机的写信号 WR和 p2.。控制
14、 ADC的地址锁存和转换启动。由于 ALE与 START连在一起,因此 ADC0809在锁存通道地址的同时也启动转换,在读取转换结果时,用单片机的读信号 RD和 p2.。引脚一级或非门产生的正脉冲作为 OE信号,用以打开三态输出锁存器。24 LED 显示系统电路微机化测控系统中常用的测量数据的显示器有发光二极管显示器(简称 LED或数码管)和液晶显示器(简称 LCD)。这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点,本系统输出结果选用 4个 LED显示。数码管有共阴共阳之分,本系统采用 8段共阴型 LED,其原理图如图 6所示,每位数码管内部有 8个发光二极管,公共端由 8个发光二极
15、管的阴极并接而成,正常显示时公共端接低电平(GND),各发光二极管是否点亮取决于 a-dp各引脚上是否是高电平。LED数码管的外形结构如图 6,外部有 10个引脚,其中 3, 8脚为公共端也称位选端,其余 8个引脚称为段选端,当要使某一位数码管显示某一数字(0-9 中的一个)必须在这个数码管的段选端加上与数字显示数字对应的 8位段选码(也称字形码),在位选端加上低电平即可。由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。LED 有共阴极和共阳极两种。如图 6 所示。6二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V 的电压。一
16、位显示器由 8 个发光二极管组成,其中 7 个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为 dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段 LED不被损坏,需外加限流电阻。图 6 LED数码管结构原理图:符号和引脚 共阴极 共阳极数码管显示器有两种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需要解决多位LED 数码管的 “段控”和 “位控”问题,本电路的通过 P1 口实现:而每一位的公共端,即 LED 数码管的“ 位控” ,则由 P3 口控制。这种连接方式由于多位
17、字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过 PNP 三极管的导通与截止来控制,即三极管处于“开头”状态。因 AT89C51 单片机 I/O 口资源有限,必须对其 Il0 口进行扩展才能满足实现系统功能,如图 7 所示为用 8155 扩展 1/0 口的 4 个 8 位 LED 动态显示器,显示扫描由程控实现,其中 PA 口输出字型码,PC 口输出位选信号即扫描信号,图
18、中片选线CE 和 AT89C51 的 P2.7 口相连,IO/ M 选通输入线与 P2.4 口相连,该系统中当P2.7=0 且 P2.4 =1 时,选中 8155 芯片内三个 I/O 口。相应的端口地址分配如表 4-1:表 4-1 8155 端口地址分配7图 7 显示电路2.5 超限报警电路为了在某些紧急状态或反常状态下,能使操作人员不致忽视,以便及时处理,往往需要有某种更能引起人们注意提起警觉的报警信号产生,这种报警信号通常有三种类型:闪光报警、鸣音报警、语音报警,本系统采用简单易行的声光报警电路。如图 8 所示报警电路,报警设备选用压电式蜂鸣器,它约需要 10mA 的驱动电流,只需在其两条
19、引线上加 3 一 15V 的直流电压,即可产生 3KHz 左右的蜂鸣声音,图中蜂鸣器的一端接在高电平+SV,另一端接 Pl.0,在初态 Pl.0 始终输出高电平 1,当需要报警时,程序对其端口清零即可,声音的长短可用延时程序控制实现。图中接入的发光二极管 LED 为超高线报警器,当 P1.1 端输出为低电平“0”时,二极管导通,灯亮发出报警信号图 8 报警电路8第 3 节 系统的软 件设计系统软件程序设计主要包括:主程序设计,采样子程序设计,数据处理程序,显示子程序,串口通信程序等。各芯片地址编码为:RAM6116: OFOOOH-OF7FFH 81551/0 口:7FF8H - 7FFDHA
20、DC0809: OBFF8H-OBFFFH31 系统主程序设计ADTURNO EQU 21H ;INO通道 A/D转换数据存放首址ADTURN1 EQU 2CH ;IN1通道 A/D转换数据存放首址LINEADRO EQU 37H ;1N0采集数据经滤波处理数据存放地址LINEADR1 EQU 38H ;INl采集数据经滤波处理数据存放地址LINEADR EQU 39H ;平均值存放地址HUMID EQU 3BH ;标度变换后的湿度值存放地址BCDADR EQU 3CH ;BCD转换后的湿度值存放地址HUMADR EQU 3DH ;上位机传来的湿度值存放地址TIMEADR EQU 3EH ;上
21、位机传来的时间值存放地址T100US EQU 256-50 ;延时参Cl00US EQU 3FHSHOWADR EQU 40H ;显示区数据存放首址ORG OOOOHSJMP STARTORG OOOBH ;定时器 0中断服务程序入口Limp TOINTORG 0023H ;串行 I/O中断服务程序入口Limp SERVEORG 0050HSTART: MOV SP, #50H ;设置堆栈MOV HUMADR, #OFFHSETB OD3H ;选中寄存器 3SETS OD4HMOV R0, #HUMADRCLR OD3H ;选中寄存器 09CLR OD4HMov TMOD, #22H;主程序初
22、始化Mov TH1, #OF3HMov TLl, #OF3HMov SCON, #50HMov PCON, #80Hmov DPTR, #7FF8Hmov A, #4DHMOVX DPTR, ASETB TR1SETB EASETB ESRUN: LCALL AD;调用 A/D转换子程序LCALL MAOPAO;调用滤波子程序LCALL TURN;调用湿度转换子程序Mov A, HUMID;将湿度值送往上位机Mov SBUF, ALCALL TWOSEC;延时等待两妙钟LCALL BCDTURN;调用 BCD转换子程序LCALL SHOW;调用显示子程序Mov A, HUMIDCJNE A,
23、HUMADR, COMP; 检测到的湿度值大于上位机送来的湿度值时,则循环采样,否则报警灌溉DONE: CLR P1.1LCALL ALARM;调用报警延时子程序进行灌溉动作LCALL TIMEORL P1, #02HLCALL TENMIN;灌水结束等待 10分钟Limp RUN;回到主程序COMP:JC DONELJMP RUNEND32 采样子程序设计根据电路图 5,因 EOC未接入单片机,故只能采用延时等待的方法来读取 A/D转换结果,ADC0809 的 INO和 INl两个地址分别是 OBFF8H, OBFF9H, INO通道采集到的 11个数据放入以 ADTURNO(片内 21H)为首址的一片数据区内,IN1 通道采集到的 11个数据放入以 ADTURN1(片内 2CH)为首址的另一片数据区内。