资源描述
基于单片机的节水灌溉系统设计
79
2020年4月19日
文档仅供参考
教学单位 信息工程系
学生学号
本科毕业论文(设计)
题 目 基于单片机的节水灌溉系统设计
学生姓名 胡枫
专业名称 电子信息工程
指导教师 丁么明
12月20日
目录
前言 1
1.课题研究背景 1
2.国内外节水灌溉技术发展概况 1
3.课题研究的目的和意义 2
4.课题研究内容 3
正文 4
1.土壤含水量 4
1.1概述 4
1.2土壤湿度计算 4
2.单片机控制系统简图 5
3.主要器件的选取 6
3.1单片机的选取 6
3.2土壤湿度传感器的选取 7
3.3 A/D转换器的选用 10
3.4显示器件选取 10
3.5开关与报警选取 11
4.软件语言的选取 11
5.单片机的主要系统电路 13
5.1时钟电路 13
5.2复位电路 13
5.3数据采集处理电路 14
5.4 LCD液晶显示 14
5.4报警系统 14
6.软件设计部分 16
6.1头文件 16
6.2主程序与子程序部分 18
结论 26
致谢 27
参考文献 27
前言
1.课题研究背景
生命离不开。随着21世纪的到来,能源危机将接踵而至。比能源危机更可怕的是,作为人类生命之源的水的短缺到了前所未有的程度,这一状况还将随着时间的推移和社会的发展继续恶化。水资源危机己成为全球性的突出问题,越来越受到国际社会的重视和关注。专家们曾预言,如果不注意保护水节约水,地球上剩下的最后一滴水将是人类的眼泪。利用科技手段缓解这一危机,将是人类主要的出路。
当前,占世界人口总量40%的80个国家缺水,其中26个国家严重缺水。中国有2.8万亿m3的水资源总量,全世界排第6位,但人均水资源不足世界水资源的1/4,排在世界人均占有水资源量的第109位,是世界上人均占有水资源最贫乏的13个国家之一,当前,中国每年缺水量近400亿m3,其中农业缺水约300亿m3。中国用水大户依然是农业用水,约占70%,而农业用水的90%是灌溉用水,因此节水首先要在农业节水上做文章。采用传统的灌溉模式,灌溉定额普遍偏高,全国平均每亩实际灌水量达到450--500 m3,超过实际需水量的1倍左右,有的地区高达2倍以上。与一些发达国家相比,中国农业的用水效率还是相当低的,灌溉水
资源的浪费情况相当严重,节水的潜力十分巨大。据统计:当前中国灌溉水利用率只有40%左右,水分生产率不足1.0 kg/m 3;而发达国家的灌溉水利用率可达80%~90%,水分生产率在2.0 kg/m 3以上。如果采用先进的灌溉技术,将中国的灌水利用率提高到60%~70%,则在当前情况下每年可节约灌溉用水O.10~O.15万亿m3。这样,经过发展节水灌溉,在减少(最起码不增加)农业用水总量的前提下,满足灌溉需要,同时把节约出来的水量用于城市生活、工业生产和生态用水,以水资源的可持续利用促进经济社会的可持续发展。
2.国内外节水灌溉技术发展概况
微灌是一种现代化的精细高效节水灌溉技术,它是当前世界上诸多节水灌溉技术中省水率最高、最为先进的一种灌溉方法。近十年来,微灌作为新兴的灌溉技术在世界各国得到了较快的发展。从70年代中期到90年代中期,微灌在部分发达国家迅速推广,1983年全世界微灌面单片机控制的节水灌溉系统的研究积达到43万丘m 2,其中美国占一半以上。到90年代中,全世界微灌面积达到291.3万m 2,约占全世界灌溉面积的1.1%,其中美国约150万m 2,占美国总灌溉面积的4%,根据 统计,美国微灌面积占全国总灌溉面积2553.6万m2的5%。灌溉面积中微灌比例最高的国家是塞浦路斯和以色列,其中以色列农业微灌面积占到了灌溉总面积的40%,达到10,4万m2,其余均为喷灌。西班牙、法国、意大利、希腊、埃及等环地中海国家以及南非、澳大利亚、墨西哥、日本等国应用面积也较多。而同一时期中国微灌设备与技术进步缓懂,全国微灌面积徘徊在2~3.7万hm2。90年代以来,中国对节水灌溉越来越重视,据各地资料汇总,到1999年底,全国微灌面积己达到20万hm2,平均每年以 0~27000m2的速度增加,一年新增面积相当于过去二十年的总和1811*1。尽管至今微灌在世界总灌溉嚣积中所占的比重很小,僵其增长率远高于其它灌溉技术。在微灌技术发展的同时,自动化灌溉控制技术以及相应的理论研究也得到了高度重视。
3.课题研究的目的和意义
农业是人类社会最古老的行业,是各行各业的基础,也是人类赖以生存的最重要的行业。农业的发展从长远来看很重要,一是水的闯题,二是科技的闯题。农业的根本出路在科技,在教育。由传统农业向现代化农业转变,由粗放经营向集约经营转变,必须要求农业科技有一个大的发展,进行一次耨的农业技术革命。农业与工业、交通等行业相比依然比较落后,农业灌溉技术特别落后。灌溉系统自动化东平较低是制约中国离效农业发展豹主要原因。传统的灌溉模式自动化程度极低,基本上属粗放的人工操作,即便对于给定的置,在操作中也无法进行有效的控制,为了提高灌溉效率,缩短劳动时间和节约水资源,必须发展节水灌溉控制技术。单片机控制的节水灌溉系统的研究现代智能型控制器是进行灌溉系统田间管理的有效手段和工具,它可提高操作准确性,有利于灌溉过程的科学管理,降低对操作者本身素质的要求。除了能大大减少劳动量,更重要的是它能准确、定时、定量、高效地给作物自动补充水分,以提高产量、质量,节水、节能。现代灌溉控制器的研究使用在中国农:林、及园艺为数不多,与发达国家相比,有较大的差距,还基本停留在人工操作上,即使有些地方搞了一些灌溉工程的自动化控制系统,也是根据经验法来确定每天灌溉次数和每次灌溉量,如果灌溉量与作物实际需水量相比太少,便不能有效的促进作物健康成长;而灌溉量太多,肥水流失,又会造成资源浪费,同时传统的灌溉法还需要相关专家的实时观察并经验指导生产,劳动生产率低,这也不能与现代化农业向优化、高效化方向发展要求同步。中国先后引进了以色列、美国、法国、德国等国家的部分先进灌溉控制设备,但价格昂贵,维护保养困难,多数用于农业示范区、科研单位或高校,而且不符合中国土壤的应用特点。中国自己的现代灌溉控制器的研制和使用尚处于起步阶段,因此,作为一个农业大国,中国硪究开发自己的先进的低成本、使用维护方便、系统功能强且扩展容易的国产化数字式节水灌溉器是一项极有意义的工作。随着计算机技术和传感器技术的迅猛发展,计算机和传感器的价格日益降低,可靠性日益提高,用信息技术改造农业不但是可能的而且是必要的。用高新技术改造农业产业,实施节水灌溉已成为中国农业乃至国民经济持续发展带战略性的根本大事。本文旨在设计一套能对作物生长的土壤湿度迸行自动监控的系统,它能对作物进行适时、适量的灌水,起到高效灌溉,节水、节能的作用。
4.课题研究内容
本论文主要研究单片枫控制的漓灌节水灌溉系统,分别对土壤湿度与灌水量之间的关系、灌溉控制技术及系统设备的软、硬件各个部分进行了深入的研究。
主要内容如下:
(1)根据滴灌技术的特点,进行节水灌溉控制系统的整体研究与设计。
(2)针对土壤湿度难以用精确的数学模型描述的特点,采用模糊控聿4理论,
对这一理论进行了深入的研究,重点研究双输入单输出的模糊控制方式。
(3)上位机采用VB编程语言建立良好的人机对话界面,可对相关的参数值
进行设置,从而实现对不同作物进行适时、适量灌水的目的。
(4)上位机(PC机)与下位机(AT89C51)之间可进行双向数据通信。
(5)LED显示土壤湿度值,在灌水期间以倒计时的方式显示灌水剩余时间。
(6)当土壤湿度值低于设定的最低值时,系统可自动报警。
(7)经过滴灌实验研究灌水量、灌水时间和土壤湿度之间的关系。
正文
1.土壤含水量
1.1概述
土壤含水量是影响农作物收成与水保的重要因素之一。土壤湿度对于制定灌溉进程表、水与溶质流的评价、净太阳辐射潜热与显热的划分等方面都是很重要的。 作为预测水源耗竭模式中的重要参量,土壤湿度在水文学中是很重要的。在大气数值模式中陆气相互作用的模拟及水气循环的其它参量要求测量土壤湿度,卫星遥感评价的验证也需要直接测量地表土壤水分。 土壤湿度的测量可用土壤含水量与土壤湿度位势的测定来表示。土壤含水量反映了土壤中水的质量与体积,而土壤湿度位势则反映土壤水分能量状态。 农业学科非常关注土壤水分的测定。为满足土壤水分状态测量的广泛需求,许多仪器已发展到商业化的程度。
湿润层深度是决定灌水定额的主要参数之一,当前研究认为计划湿润层深度应决定于根系密集层深度,并与土壤剖面水分的消失深度有关,它随着生育期的改变,根系发育而异。对于~般蔬菜类作物,其根系湿润层深度约为O~O.6m。土壤供水的土层深度与蔬菜根系在土壤中分布的深浅相适应。蔬菜根系伸展深度大致可分为三类范围:
①浅根系蔬菜,根深在0~O。6m范围,属于这类蔬菜的有油菜、大葱、甘蓝、大蒜、菜花、洋葱、萝h、菠菜、马铃薯、芹菜等。
②单片机控制的节水灌溉系统的研究中等深度的根系根深在O.9~1.2m范围,葫芦、胡萝等。
③根深系蔬菜有番茄、如菜豆、黄瓜、豌豆、茄子、甜椒、南瓜等。
1.2土壤湿度计算
称重技术是测量土壤含水量最为简单且被广泛运用的方法。因为此方法简单易行而且是直接测量,因此被用作其它方法参照的标准。定义在干质基础上的称重土壤湿度θg可表示为:
θg=.100 % (11.1) 此处为土样中水质量,为土样中烤干(100-110℃)后的土质量。 对于风干(25℃)的矿物土壤,称重土壤湿度一般少于2%,但随着土壤水分达到饱和,其水含量会增到25%至60%。可是称重取样法具有破坏性,使得土壤接近饱和时,取得准确的土壤含水量测量结果变得极为困难。 一般,土壤湿度用体积表示。由于降水、蒸散量和溶质变化参量一般见容量表示,用体积表示的水含量更为有用。体积水含量θv可表示为:
θv= .100% (11.2)此处,为水体积,为土壤(土+气+水)总体积。土壤体积含水量的变化可从风干土壤的少于10%到临近饱和的矿物土壤的40-50%间变化。由于水与土壤体积的准确测定存在困难,体积水含量一般间接测定。体积与称重土壤含水量有一定关系。该关系如下:
θv=θg ρb/ρ w (11.3)ρb是干土壤体积密度,ρw是土壤水分密度。2.单片机控制系统简图
3.主要器件的选取
3.1单片机的选取
随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时器/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机(single chip microcomputer),直译为单片机,沿用至今。准确反映单片机本质的叫法应是微控制器(microcontroller)。单片机具有集成度高,功能强,可靠性高,体积小,功耗低。使用方便,价格低廉等特点,在各个领域得到了广泛的应用和发展,当前已渗透到人们工作和生活的各个角落,几乎无处不在。革片机最早是以嵌入式微控制器(EmbeddedMicro-
controller)的面貌出现的。在嵌入式系统中,它是应用最多的核心器件。在计算机主导工业生产而且目益走进家庭生活的今天,从家用电器、工业控制、医疗仪器到军事应用,到处都有单片机的存在。当前世界上有很多单片枕卷4造公司,如美国的INTEL、ATMEL、MOTOROLA和ZILOG公司:德国的SIEMES公司;荷兰的PHILIP公司等。她们相继推出了各种类型的单片机,其中INTEL公司撰出的一种离性能8位单片机MCS--51系列单片机以优越的性能,成熟的技术和高性价比迅速占领了工业测控和自动化工程领域的主要市场,成为单片机领域中的主流产品。除了INTEL公司外,PHILIP,ATMEL,ADM,SIEMES等公司纷纷推出了与MCS--51系列兼容的单片机,其中ATMEL公司的89系列单片机也称Flash单片机是以8031为核心构成的,它和INTEL公司的MCS--51系列单片机完全兼容,它不但继承了MCS一51系列原有的功能,而且又扩展了它的功能。对于一般用户来说,89系列单片机存在下列很显著的优点:
①内部含Flash存储器;
②和AT80CSl插座兼容;
③静态时钟方式:
④错误编程亦无废品产生;
⑤可重复进行系统试验。
使用方便是ATMEL公司89系列单片机被广泛应用的一个主要因素。一般的OTP产品,一旦错误编程就成了废品,而89系列单片枫内部采用了Flash存储器,因此,错误编程后仍能够重新编程,直到正确为止。其次是它可重复进行系统试验。用89系列单片枕设计的系统,能够重复进行系统试验,每次试验能够编入不同的程序,这样能够保证用户的系统设计达到最优,而且还能够随用户的需要和发展进行修改,使系统能不断追髓用户的最新要求。89系列单片机可分为标准型号,低档型号和高档型号。鉴于以上的优点,经过分析比较,根据本课题的特点,选用ATMEL公司89系列懿标准型单片机STC89C52RC。
型号
电压
时钟频
率HZ
Flash
存储器
RAM
降低
EMI
看门狗
双倍速
P4口
ISP
IAP
A/D
EEPROM
STC89C52RC
5V
0-80M
8K
512
√
√
√
√
√
√
无
2K
3.2土壤湿度传感器的选取
当前国内外测定土壤水分的方法有多种,最常见的方法是使用土钻法(SA亦称烘干法),即钻取一定量的土,用烘箱烘干后再称其纯千±重量,即可计算出土壤含水量。间接测量土壤含水量能够用石膏电阻块法、负压法和中子仪法等。20越纪80年代初期,为了准确测定土壤含水量,一些研究者开始对时域反射仪(简称TDR)技术产生了兴趣。因为它具有许多优点,如无核辐射,测量快速,并与土壤类型基本没有关系。TDR技术正逐渐成为土壤水分测定的一项重要的新工具。土壤水分的盈缺对作物生长有着最宣接的影响,在适宜的湿度环境下,作物长势良好,因此土壤湿度传感器的选用就要满足能够使湿度控制在一定的范围内,并能够快速、准确地测定农田±壤水分,以便适时作出灌溉、施肥决策和捧水措施等。本系统的输入信号是传感器所测土壤水分信息,因此传感器的选择很重要,如选用的土壤湿度传感器精度太高,则增加了成本,糖度太低,则难以保证把土壤湿度控制在需要的范围内,综合考虑选用SS2802M 土壤水分传感器。
SS2802M 土壤水分传感器为可远距离传输的土壤水分传感器,可长期埋设于土壤和堤坝内使用,对表层和深层土壤进行墒情的定点监测和在线测量,也叫农田墒情检测仪。采用4-20mA工业通用接口,可直接接入各种显示仪表,实现土壤水分监测。与数据采集器配合使用,可作为水分定点监测或移动测量的仪器。
土壤的各种理化性状、地形的差异作用、气候变化和人为的土壤管理措施对土壤水分状况有不同的影响,地表特征与土壤水分状况也存在着依次的相关性。SS2802M是一种高精度、高可靠性、受土壤质地影响不明显的快速土壤水分测量传感器。传感器采用世界先进的最新FDR原理制作,其性能和精度可与TDR型和FD型土壤水分传感器相媲美,并在可靠性与测量速度上具有更大的优势。本产品可应用在、农场自动化灌溉系统、温室大棚种植土壤水分控制系统、食用菌水分控制系统、沙漠地区农业自动化滴灌系统。其它需要监测土壤水分的各种场合等。
SS2802M为新一代土壤水分测量传感器,采用工业级精密核心元件,使其具有优越的准确性与长期稳定性。小巧化的体积设计,方便携带和安装。结构设计合理密封,不锈钢探针保证适用性和广泛性。以环氧树脂密封胶灌封,能够直接埋入土壤中使用且不受腐蚀,保证较长的使用寿命。很高的测量灵敏度和精度,采用高抗干扰设计,性能可靠稳定。4-20mA工业通用接口,使现场测量更加灵活多变,可适应多种场合。技术参数:
接口说明:设备输出三线接口,红黑线是传感器电源接口,绿线是电流输出接口。
接口会引出三个接线座方便用户接线。本设备绿线和黑线为4-2mA电流输出,供电电压为红线和黑线,电压为12-24V之间。具体颜色与引脚定义如下表所示:
本设备采集工业通用的电流4-20mA信号输出的方式,下图为典型的应用接线示意图。其中V-为电源的负极。V+与V-之间一般在本地接入电源。而A+与A-之间为水分信号电流输出。因输出为是电流信号,故能够远距离信号传输。理论上最大能够在1000米距离范围内可靠传输。
使用说明:土壤含水率:规定条件下测得的土壤中水的量,以土壤的烘前质量与烘干质量的差数对烘干质量的百分率表示。简单地说就是:(湿重-干重)/干重×100%,含水率为土壤中自由水的质量在土壤总质量中占的百分比。实际使用时,当土壤中的含水量超过24%时土壤已达到饱和且呈溢出水状态,因此检测含水量超过24%的值没有实际意义。农作物正常生长所需的适宜含水率土壤为12%-20%范围之内。因此仅需要检测低于饱和含水量24%的含水量就满足灌溉和各种生产实际需要了。因此该传感器的动态定为0-24%检测范围表示为0-100%的土壤含水率输出。因输出为模拟量,4-20mA分别对应设定的满量程。
3.3 A/D转换器的选用
A/D转换是把模拟量信号转化成与其大小成正比的数字置信号,A/D转换电
路是数据采集系统的核心电路。当前A/D转换电路的种类繁多,但大量投放市场的单片集成或模块A/D按其转换原理主要分为逐次逼近式、双积分式、量化反馈式和并行式A/D转换器。双积分式A/D转换器转换精度高,抗干扰能力强、价格低,但转换速度较慢;并行式转换器速度快,但价格高:逐次逼近式A/D转换器,转换精度较高、速度快,大约在几微妙到几百微妙之间,但抗干扰能力弱。总的来讲逐次逼近式A/D转换器的性价比最高,应用最广泛,国内使用较多的芯片有ADC0808/0809,ADC0801--ADC0805及ADC0816/0817和ADS74等.本系统选用中速、低廉的逐次逼近式ADC0809模数转换芯片。A/D转换爨的主要技术指标为:
①分辨率表示输出数字量变化一个相邻数码所需输入模拟电压的变化量,习惯上以输出的二进制位数或BCD码位数表示。
②量化误差由A/D转换器的有限分辨率面引起的误差。
③转换精度反映一个实际A/D转换器在量化值上与理想A/D转换器的差值。
④转换速率指能够重复进行数据转换的速疫,即每秒转换的次数。
3.4显示器件选取
显示部分选用1602液晶显示共十六引脚,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常见的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母”A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母”A” 。
蓝底白字标准型16X2液晶显示字符模块(背光/蓝屏)
1602采用标准的16脚接口,其中:
第1脚:VSS为地电源
第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生”鬼影”,使用时能够经过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时能够写入指令或者显示地址,当RS为低电平RW为高电平时能够读忙信号,当RS为高电平RW为低电平时能够写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光电源正极
第16脚:背光电源负极
3.5开关与报警选取
开关部分采用控制开关来控制电路。报警装置采用的是蜂鸣器以及二极管。
4.软件语言的选取
本系统下位机以单片机为核心,采用C语言编程。C语言是书写程序的一种软件语言,它是计算机软件设计的重要工具。在系统软件开发、实时控制的和实时处理领域中有着不可替代的地位。用C语言编程使编程简洁易懂,进而进行高质量的设计,而且它不独立于具体机器,是一种非常通用的高级程序设计语言,采用C语言编程,因此,在已经有众多高级语言和可视化集成开发环境工具的今天,C语言有着重要的有效的程序设计语言地位。
5.单片机的主要系统电路
5.1时钟电路
单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号一般见两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图中外接晶体以及电容C2和C3构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30PF左右,晶振频率选12MHz。
5.2复位电路
为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电平,即可引起系统复位。但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(I/O)端口寄存器置为FFH,堆栈指针SP置为07H,SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。
5.3数据采集处理电路
ADC0809是一种8位逐次逼近AD转换器,内部具有锁存控制的8路模拟开关,外接8路模拟输入端,可同时对8路O一5V的输入模拟电压信号分时进行采集转换,本系统只用到IN0输入通道。ADC0809转换器的分辨率为8位,最大不可调误差小于±1LSB,采用单一+5V供电,功耗为15mW,不必进行零点和满度调整。由于ADC0809转换器的输出数据寄存器具有可控的三态输出功能,输出具有三态锁存缓冲器,故其8位数据输出引脚可直接与数据总线相连。AD转换器需外部控制启动转换信号方能进行转换,这一启动转换信号可由CPU提供,不同型号的A/D转换器,对启动转换信号的要求也不同,分脉冲启动和电平启动两种,ADC0809采用脉冲启动转换,只需给A/D转换器的启动控制转换的输入引脚(START)上,加入正脉冲信号,即启动A/D转换器进行转换,转换开始后,转换结束信号输出端(EOC)信号变低,转换结束时,EOC返回高电平,以通知主机读取转换结果的数字量,这个信号能够作为A/D转换器的状态信号供查询,也能够用作中断请求信号。本系统中ADC0809与AT89C51单片机的接口如图4.5所示,采用等待延时方ADC0809的时钟频率范围要求在10一1280kHz,采用定时器给其脉冲频率。如图连接方式,ADC0809的8位数据输出引脚可直接与数据总线相连,地址译码引脚A、B、C分别接地,以选通IN0通道。AT89C51的P:。作为片选信号,在启动AID转换时,由单片机的写信号WR和P:。控制ADC的地址锁存和转换启动。由于ALE与START连在一起,因此ADC0809在锁存通道地址的同时也启动转换,在读取转换结果时,用单片机的读信号RD和P,。引脚一级或菲门产生的正脉冲作为OE信号,用以打开三态输出锁存器。
6.4 LCD液晶显示
该系统采用1602液晶显示,数据口接单片机P0口,和AD0809公用数据口,LCD显示简单,电路接线也简单,价格也便宜。
6.5报警系统
为了在某些紧急状态或反常状态下,能使操作人员不致忽视,以便及时处理,往往需要有某种更能引起人们注意提起警觉的报警信号产生,这种报警信号一般有三种类型:闪光报警、鸣音报警、语音报警,本系统采用简单易行的光报警
电路。
报警设备选用压电式蜂鸣器,它约需要10mA的驱动电流,只需在其两条引线上加3一15v的直流电压,即可产生3KHz左右的蜂鸣声音,图中蜂鸣器的一端接在高电平+5V,另一端接P1.7,在初态P1.7始终输出高电平1,当需要报警时,程序对其端口清零即可,声音的长短可用延时程序控制实现。
6.软件设计部分
系统软件程序设计主要包括:主程序设计.采样子程序设计。数据处理程序
LCD显示子程序,开关控制,蜂鸣器报警。
6.1头文件
文件名称:main.c
版 本:Keil uVision4
控 制 器: STC89C51/STC89C52RC/AT89C51/AT89C52@12MHz
说 明:基于SHT10的自动花草浇水器控制程序
说 明:传感器SHT10,液晶显示器LCD1602,蜂鸣器报警,继电器控制,按键设置
说 明:液晶实时显示采集的湿度值,显示湿度界限值,浇水倒计时时间
说 明:三个设置按键,一个设定按键,一个增加按键,一个减少按键,检测频率150ms
说 明:测量湿度值小于湿度界限值,自动打开继电器浇水,蜂鸣器报警提示
说 明:倒计时运行,显示倒计时。加水期间,湿度值大于界限值,自动停止浇水
****************************************************************************/
/*includes-----------------------------------------------------------------*/
#include "reg52.h"
#include "intrins.h"
/*typedefs------------------------------------------------------------------*/
typedef unsigned char u8;
typedef unsigned int u16;
/*-------------------------继电器底层控制函数-------------------------------*/
/*sbits---------------------------------------------------------------------*/
sbit Pin_Relay = P1^3; //Pin of Relay
/*defines-------------------------------------------------------------------*/
#define Relay_ResetPin() Pin_Relay = 0
#define Relay_SetPin() Pin_Relay = 1
/****************************************************************************
* 函数名称: Relay_Control(unsigned char State)
* 功能书名: 继电器1控制函数
******************************************************************************/
void Relay_Control(unsigned char State)
{
if(State) {Relay_ResetPin();}
else {Relay_SetPin();}
}
/*----------------------------蜂鸣器驱动函数--------------------------------*/
/*sbits---------------------------------------------------------------------*/
sbit Pin_BuzzePhone = P2^4; //--Button pin of BuzzePhone
/*defines-------------------------------------------------------------------*/
#define BuzzePhone_ResetPin() Pin_BuzzePhone = 0
#define BuzzePhone_SetPin() Pin_BuzzePhone = 1
/****************************************************************************
* 函数名称: BuzzePhone_DelayOneMillisecond(void)
* 功能书名: 蜂鸣器发声延时函数,延时1个mS程序
*****************************************************************************/
void BuzzePhone_DelayOneMillisecond(void)
{
unsigned char i, j;
i = 2;j = 239;
do{while (--j);}while(--i);
}
6.2主程序与子程序部分
* 函数名称: BuzzePhone_Switch(unsigned char State)
* 功能书名: 蜂鸣开关控制
*****************************************************************************/
void BuzzePhone_Switch(unsigned char State)
{
if(State){BuzzePhone_ResetPin();}
else {BuzzePhone_SetPin();}
}
/****************************************************************************
* 函数名称: BuzzePhone_Music(unsigned int Number)
* 功能书名: 蜂鸣器发音乐函数
*****************************************************************************/
void BuzzePhone_Music(unsigned int Number,unsigned char Frequency)
{
unsigned int i;
unsigned char j,k;
for(i = 0;i < Number;i++)
{
for(j = 0;j < 20;j++)
{
BuzzePhone_Switch(0x01);//蜂鸣器发声音
for(k=0;k<Frequency;k++){BuzzePhone_DelayOneMillisecond();}
BuzzePhone_Switch(0x00);//蜂鸣器不发声
for(k=0;k<Frequency/2;k++){BuzzePhone_DelayOneMillisecond();}
}
}
}
/*-----------------------------按键检测底层函数-----------------------------*/
/*sbits---------------------------------------------------------------------*/
sbit Key_Up = P3^3; //递增按键
sbit Key_Set = P1^0; //设置按键
sbit Key_Down = P1^5; //递减按键
/****************************************************************************
* 函数名称: Check_ButtonState(void)
* 功能说明: 检测按键的状态,返回按键的状态值
*****************************************************************************/
unsigned char Check_ButtonState(void)
{
unsigned char ButtonFunctionValue;
if(Key_Up == 0) {ButtonFunctionValue = 0x03;}
else if(Key_Set == 0) {ButtonFunctionValue = 0x01;}
else if(Key_Down == 0){ButtonFunctionValue = 0x02;}
else {ButtonFunctionValue = 0xff;}
return ButtonFunctionValue;
}
/*-------------------------LCD1602器驱动函数--------------------------------*/
/*sbits---------------------------------------------------------------------*/
sbit LCD1602_RS = P2^7; //数据命令端口
sbit LCD1602_RW = P2^6; //读写控制端口
sbit LCD1602_EN = P2^5; //器件使能端口
/*defines-------------------------------------------------------------------*/
#define LCD1602_ResetRS() LCD1602_RS = 0
#define LCD1602_SetRS() LCD1602_RS = 1
#define LCD1602_ResetRW() LCD1602_RW = 0
#define LCD1602_SetRW() LCD1602_RW = 1
#define LCD1602_ResetEN() LCD1602_EN = 0
#define L
展开阅读全文