首页 > 分享 > 【灌溉系统】

【灌溉系统】

、、、智能灌溉系统的设计论文智能灌溉系统的设计论文TianjinUniversityofTechnologyandEducation毕业设计二○一一年六月智能灌溉系统的设计DesignofIntelligentIrrigationSystem20116摘要近几年来,随着全球水资源的日趋紧张,世界各国都在积极探索行之有效的节水PAGE*ROMANPAGE*ROMANIIIAT89S52DHT11DS130232.768kHzLCD12864(自动)模式下,该系统能自关键词温湿度传感器达林顿驱动ABSTRACTInrecentyears,alongwiththeglobalwaterresourcesisnervous,countriesintheworldexploreactivelyeffectivewaysandmeasuresofwater-saving.Automaticcontrolthediscretionofwater-savingirrigationtechnologiesrepresentstheagriculturalmodernization,lowlevelofthedevelopmentsituationofirrigationsystemautomationbecomethemaincauseofrestrictinghigh-efficientagriculturedevelopment,water-savingirrigationisamodernengineeringtechnology,whetherengineeringsectionwater,watersaving,ormanagementofagriculturalwatermustbebasedonthebasisofwater-savingirrigationequipmentrealizingindustrializationproduction.Water-savingirrigationtechniqueisusedtodealwiththewatershortage,improveirrigationefficiencyandbedevelopedintooneofthemodernirrigationtechniques.Thistopicdesignanintelligentirrigationsystem,thissystemselecttheAT89S52SCMascontrolcore,adoptthemodularizingdesignscheme,whichcontainthetemperatureandhumidityacquisitionmodule,PHvaluedetectionmodule,clockmodule,steppingmotorcontrolmodule,keyboardinterfacemoduleandLCDmodule.DHT11andhumiditysensorisselectedasthecoreoftemperatureandhumidityacquisitionmodule,clockmoduleismainlycomposedoftheclockDS1302andcrystalof32.768kHz,steppingmotorcontrolcircuitmoduleadoptedreachlintondrivechipULN2003,displaycircuitmoduleismainlyconsistedoftheLCD12864constitutes.Intheloop(automatically)mode,thesystemcanautomaticallydetectonsoiltemperatureandhumidity,whenactualhumidityunderalertvaluesingle-chipmicrocomputerautomaticstartsteppingmotorforirrigation.KeyWords:AT89S52;DHT11temperatureandhumiditysensor;ULN2003DarlingtonDriver;LCD12864;DS1302目录绪论1引言1课题来源1国内外现状2方案设计与论证4总体方案论证4键盘电路5温湿度传感器的选取6湿度传感器原理6数字温湿度传感器DHT117系统硬件电路设计9AT89S52单片机的硬件结构9单片机的结构及信号引脚9AT89S52最小系统12直流稳压电源的设计13湿度采集模块14温湿度传感器的原理14pH值检测装置17时钟模块19时钟模块接线图19DS1302内部寄存器21液晶显示模块22液晶显示模块概述22模块主要硬件构成说明23步进电机驱动模块25步进电机简介和原理25ULN2003驱动芯片25步进电机驱动模块26系统软件设计27程序设计27主程序设计2812864LCD显示子程序设计30结论35参考文献36致谢37附录一总体电路图38附录二源程序39PAGEPAGE31绪论引言随着中国农业现代化进程的高速发展、农业结构的调整以及我国加入世贸组织等因素,节水灌溉自动化技术的要求越来越高,灌溉控制器在我国有着巨大的市场。节水灌溉控制器近期在中国应朝着价格低、性能可靠、操作简便的方向发展。但从长远利益考虑,新的智能化技术、传感技术和农业科技的引入、应用和普及,将会有智能化程度更高、功能更强、性能更趋于稳定和可靠的灌溉控制器AT89S52AT89S52单片机为控制电路的核心,采用模块化的设计方案。在闭环控制方式下,利用温湿度采集模块将多处不同地点检测到的温度、湿度模拟量进行模数转化后传送给单片机,单片机将采集到的数据与警戒值比较;若采集数据低于警戒值,则启动步进电机驱动模块进行灌溉;若采集数据高于警戒值,则不启动驱动模块进行灌溉。显示模块将采集数据和灌溉信息显示在显示屏上。灌溉时间一到,驱动电路则停止驱动步进电机,灌溉停止。在时间控制方式下,用户通过键盘输入进行灌溉的时间,时间一到,灌溉停止。课题来源经过多年的发展,国外灌溉控制器已逐步趋于成熟化、系列化,但由于价格昂贵,国内虽引进一些,但多数是用于农业示范区、科研单位、高校实验室,虽然国外生产的灌溉控制器性能优越,但没有考虑我国特殊的自然、气候、土地资源、农民经济状况等因素,因而国外引进的灌溉控制器在国内应用并不普及。虽然国内也有多家研制灌溉控制器,但多数是小规模、实验和理论的探讨,应用不够普及,究其原因一则是开发性能完善的灌溉控制系统不仅需要大量的人力、物力的投入,还需要多部门、多学科的融合,这就在一定程度上限制了性能完善、适应性强的控制器的开发;其次是现在开发出来的灌溉控制器价格相对昂贵,农民尽管知道能节省人力、灌溉用水、提高产量,但由于一次性投资太大,大多数农民承受不起,这也在一定程度上限制了灌溉控制器的普及。随着中国农业现代化进程的加快、农业结构的调整、以及我国加人世贸组织等因素,可以预计对农业灌溉自动化技术的要求会越来越高,灌溉控制器在我国将有巨大的市场。节水灌溉控制器近期在中国应朝着价格低、性能可靠、操作简便的方向发展。但从长远利益考虑,新的智能化技术、传感技术和农业科技的引入、应用和普及,将会有智能化程度更高、功能更强、性能更稳定可靠的灌溉控制器出现。西方发达国家在节水灌溉控制器的开发上已越来越成熟,且发展趋势国内外现状国内在开发灌溉自动控制系统方面还处于研制、试用阶段,真正能投入实际应用,且应用较广的灌溉控制器还是很少。在开发的产品中有着代表性的如中国2000型温室自动灌溉施肥系统。该系统是国家“九五”科技攻关项目中自主研发的科技产品,它结合我国温室的环境和实际使用特点,以积木分布式系统结构原理,解决了计算机适时闭环控制、动态监测、控制显示中文、施肥泵混合比可调、电磁阀开度可调等关键技术问题。该系统具有手动控制、程序控制和自动控制等多种灌溉系统模式,可按需要灵活应用,在大连、北京等地已经投入了应用,从系统运行情况来看,该系统有很好控制效果,取的了一定的经济效益和社会效益。天津市水利科学研究所研制的温室滴灌施肥智能化控制系统主要用于现代温室,日光温室作物的灌溉营养液施肥,环境监测的智能控制,采用世界先进的可编程序控制器和触摸屏控制技术,性能可靠、功能齐全、人机界面友好、操作简15m3/h1~2hm2时,能控24路阀门,系统具有人工干预灌溉施肥功能,定时、定量灌溉施肥功能,条件控制灌溉施肥功能。北京澳作生态仪器有限公司的澳作智能节水灌溉控制系统可与各种滴、喷灌系统连接,实时监测土壤墒情,根据要求自动灌溉。控制方式灵活,手动、半自动、全自动任选且可随意在计算机上更改,可同时控制多个设备,受控区位置及形状,环境参数及设备状态可同时显示在中心计算机上。北京奥特WT-02国外一些先进国家,如美国、以色列和加拿大等,运用先进的电子技术、计算机和控制技术,在节水灌溉技术方面起步较早,并已经日趋成熟。这些国家从最早的水力控制、机械控制,到后来的机械电子混合协调式控制,到现今应用广泛的计算机控制、模糊控制和神经网络控制等,控制精度和智能化程度越来越高,可靠性越来越好,操作也越来越简便。近年来随着农业对自动化程度要求的提高,以色列出现灌溉用的可编程逻辑(PLC),这种控制器通过把不同的网络连接到主机上进行数据采集和处理。随着控制技术、传感器技术的发展,以色列开发出了现代诊断式控制器,这种控制器把以前不可能采集到的信息通过不同的传感器来获得,通过因特网、远程控制、GSM等来实现数据传输,然后通过计算机中的一些模型来处理信息,作出灌溉计划。加拿大、澳大利亚和韩国等国家和地区也都有开发成功并形成系列的灌HARDIEIRRGATION公司MICRO-MASTER、RAINJET等多个系列,几十种型号HR6100MICRO-MASTER,系列产品是HARDIE公司为进行大面积灌溉而开发的控制器。该系统采用分布式布置,可与上位机双向通信,用微机对其进行编程操作和对其子控制器进行控制,并能用微机随时监控灌溉系统的工作状况。PAGEPAGE9方案设计与论证总体方案论证本课题以AT89S52单片机为主要硬件模块,通过软件编程实现对土壤温度、湿度、PHEC值(灌溉液中肥料浓度)PH值和EC值低PHECAT89S52单片机为控制电路的核心,采用模块化的[3。PH值检测模块、时钟模块、键盘LCD12864为核心构成,步进电机控制电路以达林顿驱动芯片ULN2003为核心,再配合键盘电路实现对土壤湿度进行检测。在本系统中,PH值执行装置通过单片机控制电磁阀,当所测PH值达不到土壤的PH值要求时,单片机通过PH值执行装置开启PH值电磁阀;湿度灌溉分两种控制方式:闭环控制方式和时间控制方式,用户可在两种方式之间自由选择。在闭环控制方式下,利用湿度采集模块将多处不同地点检测到的温湿度已校准数字信号数据进行综合处[4。2.1所示。PHPH值检测电路LCD12864液晶显示温度湿度PH值执行装置传感器AT89S52单片机键盘控制电路步进电机驱动电路灌溉控制电路系统时钟器时间电路DS1302图2-1智能灌溉系统基本模块原理框图键盘电路I/O口线构成的单个按键电路。每个独立式按键单独I/OI/OI/O口线的工作I/O口线,在按键数量较多时,I/O口线浪费较大。故在按键数量不多时,常采用这种按2.2所示。上拉电阻保证了按键断开时,I/O口线上有PHI/O图2-2独立式按键键盘框图温湿度传感器的选取湿度传感器原理湿敏元件是最简单的湿度传感器。湿敏元件主要有电阻式、电容式两大类。湿敏元件是最简单的湿度传感器。湿敏元件主要有电阻式、电容式两大类。湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空气中的水蒸气吸附在感湿膜上时,元件的电阻率和电阻值都发生变化,利用这一特性即可测量湿度。湿敏电容一般是用高分子薄膜电容制成的,常用的高分子材料有聚苯乙烯、聚酰亚胺、酪酸醋酸纤维等。当环境湿度发生改变时,湿敏电容的介电常数发生变化,使其电容量也发生变化,其电容变化量与相对湿度成正比。下面对各种湿度传感器进行简单的介绍。1、氯化锂湿度传感器(1)电阻式氯化锂湿度计(2)露点式氯化锂湿度计2、碳湿敏元件3、氧化铝湿度计4、陶瓷湿度传感器DHT11,它是广州奥松电子有限公司新近推出的一款含有已校准数字信号输出的温湿度复合传感器。DHT111、DHT11产品概述DHT11NTC8DHT11OTP204DHT112-3图2-3温湿度传感器DHT11外观图2、DHT11应用领域►暖通空调►测试及检测设备►汽车►数据记录器►消费品►湿度调节器►自动控制►气象站►医疗►除湿器►家电系统硬件电路设计AT89S52单片机的硬件结构单片机的全称为微型计算机(SingleChipMicrocomputer)。从应用领域来看,单片机主要用于控制,所以又称微控制器(MicroControllerUnit)或嵌入式控制器(EmbeddedController)。单片机是将计算机的基本部件微型化并集成在一块芯片上(CPU)、存储器、I/OI/O接口配置各种外部设备就构成微机的硬件系统AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程FlashAtmel80C51产品Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。单片机的结构及信号引脚1、主要特性与MCS-51单片机产品兼容8K字节在系统可编程Flash存储器1000次擦写周期全静态操作:0Hz~33Hz三级加密程序存储器32个可编程口线三个16位定时器/计数器八个中断源全双工UART串行通道低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针掉电标识符AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看16位定时器/6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2RAM/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2、芯片引脚封装:AT89S52引脚封装图如图3-1所示。图3-1AT89S52引脚封装图3、芯片引脚说明:VCC:电源GND:地P0口是一个8I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部口也被作为低8位地址/具有内flash口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1端口():P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTLP1时,内部上拉电阻把端口拉高,IIL)P1.0和P1.2/2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表3-1所示。在flash10PAGEPAGE18编程和校验时,P1口接收低8位地址字节。表3-1P1口线的第二功能引脚号P1.0P1.1第二功能信号T2T2EX第二功能信号名称定时器/计数器T2的外部计数输入,时钟输出定时器/计数器T2的捕捉/重载触发信号和方向控制P1.5MOSI在系统编程用P1.6MISO在系统编程用P1.7SCK在系统编程用P2(P2.0-P2.7P2口是一个具有内部上拉电阻的8位双向I/OP2输出缓冲器能驱动4个TTLP2@DPTR)@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P38I/OP3表3-2P3口线的第二功能引脚号引脚号第二功能信号第二功能信号名称P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXDTXDINT0INT0T0T1WRRD串行输入串行输出外部中断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:AT89S52EA/VPP0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。AT89S52最小系统P0LCD12864之间的数据传送,P1.0~P1.3LCD12864用于控LCD12864P2.2LCD12864的指令是属于写数据还是写指令。7个按键。用于驱动步进电DS1302SCLK串行时钟DS1302的I/ODS1302RSTP3.0用于温湿度传感器DHT11数据输入通道。XTAL1XTAL2AT89S52最小系统接线如图3-2所示,在XTAL1、XTAL2端接上11.0592MHZ30PRESET端接上相应的电阻、电容,如需要按键复位,CPURST24(2RSTIOmsRSTRST0000HALE引脚输出高电平。复位后,PO口--P3口输出高电平,且皆处于输入状态,并且将07H写入栈指针SPO7H),PC0(不定位RAM图3-2AT89S52最小系统图和复位电路直流稳压电源的设计]220VU1U2。整流电路U2U3U4。稳压集成块的作用就是将不稳定的直流电U5。图3-3直流稳压电流电路图本设计选择的方案是三端集成稳压器的最基本的应用电路,如图3-3所示。整流滤波后得到的直流输入电压U4接在LM7805LM7805的输出端即可得到稳定的+5V输出电压U5。湿度采集模块温湿度传感器的原理1、概述新型单总线数字温湿度传感器DHT11是广州奥松电子有限公司新近推出的一款含DHT11的诸多优点,使其在自动控制和家电消费品领域中拥有较高的应用价值。2、产品特性①湿温度传感器的一体化结构能相对的同时对相对湿度和温度进行测量。②数字信号输出,从而减少用户信号的预处理负担。③单总线结构输出有效的节省用户控制器的I/O口资源。并且,不需要额外电器元件。④独特的单总数据传输线协议使得读取传感器的数据更加便捷。⑤全部校准。编码方式为8位二进制数。⑥40bit⑦卓越的长期稳定性,超低功耗。⑧4引脚安装,超小尺寸,各型号管脚完全可以互换。⑨测量湿度范围从20%RH到90%RH;测量温度范围从0℃到50℃。⑩适用范围包括恒湿控制,消费家电类产品,温湿度计等领域。3、外型与引脚排列图3-4DHT11外型及管脚4、连接接口说明DHT11I/O口即可完成上下位的3-5205K上拉电阻,大于203.5所示。图3-5DHT11典型电路连接5、串行接口(单线双向)DATA用于微处理器与DHT11一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU,DHT1140bit通讯过程如图3-6所示图3-6通讯过程总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18DHT11DHT1180us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。图3-7DHT11复位时序总线为低电平,DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,bit50us,0还是1.格式见下面图示.则DHT11没有响应,请检查线路是否连接正常.bit50us,随后总线由上拉电阻拉高进入空闲状态。数字0信号表示方法如图3-8所示图3-8数字0信号数字1信号表示方法.如图3-9所示pH值检测装置

图3-9数字1信号农作物对灌溉液的pHpHpH要求值一般为5.5一6.5调节液”一般指酸。1、PH值传感器868PH(2)分辨率:0.1(3)精度:0.001PH(4)温度补偿:自动温度补偿0-100.0℃PHpHpHA/D0809,将模拟信号转换成数字信号传送到单片机。2、A/D转换芯片0809图3-10A/D0809引脚图如图3-10所示,A/D0809芯片的引脚图,其信号引脚:IN1~IN7——模拟量输入通道ALE——B、C地址状态送入地址锁存器中。START——START下降沿时启动芯片,开始进行A/D转换;A/D转换期间,START应保持低电平。本信号有时简写为ST。ABC——ADDA,ADDB和ADDC。18CLK——ADC0808EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。D7~D0——D0为最低位,D7为最高。OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。Vcc——+5V电源。图3-11A/D转换与单片机电路PH值的传感器市场上很少且价格相对昂贵,故在本设计中采P3.3PH值PH7.0,单片机就会点亮发光二极管(打开酸液电磁阀)并在液晶显示屏上显示PH值异常;再按下按键PH值呈中性时,发光二极管就会熄灭(关闭酸液电磁阀),且液晶显示屏PH值正常。时钟模块时钟模块接线图DS130232.768kHz3:SCLK、I/O、RSTDS130231*819PAGEPAGE21RAM2007726000图3-12时钟模块接线图DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供、秒、分、时、日、日期、月、年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1RES复位2I/O数据线3SCLK串行时钟时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信DS1302工作时功耗很低保持数据和时钟信息时功率小于1mWDS1302是由DS1202改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1为可编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域下面将主要的性能指标作一综合实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力还有闰年调整的能力31*8位暂存数据存储RAM串行I/O口方式使得管脚数量最少宽范围工作电压工作电流2.0V时,小于300nA读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式8脚DIP封装或可选的8脚SOIC封装根据表面装配简单3线接口与TTL兼容Vcc=5V可选工业级温度范围-40+85与DS1202兼容在DS1202基础上增加的特性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位RS位00011011电阻没有R1R2R3典型位没有2K4K8KPAGEPAGE26液晶显示模块液晶显示模块概述本设计的液晶显示模块采用的是带中文字库的LCD12864,各行依次显示日期、LCD12864P0口进行128644/823128×64,内819216*1612816*8ASCII8×4模块并行接口说明4RS(CS)RS=“H”4RS(CS)RS=“H”DB7-DB0H/LRS=“L”DB7-DB0DB7-DB05R/W(SID)H/LR/W=“L”,E=“H→L”,DB7——DB0IRDR管脚号管脚符号电平管脚功能描述1VSS0V逻辑电源地2VDD3.0+5V逻辑电源+5V3V0-对比度(亮度)调整6E(SCLK)H/L使能信号7-14DB0-DB7H/L三态数据总线15PSBH/LH:84L:串口方式16NC-空脚17/RESETH/L系统复位,低电平有效18VOUT-LCD驱动电压输出端19LEDAVDD背光电源,LED+(+5V)20LEDKVSS背光电源,LED-(0V)模块主要硬件构成说明控制器接口信号说明:(1)RS,R/W的配合选择决定控制界面的4种模式:表3-4RS、R/W选择模式RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志及地址记数器的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据(2)E信号E状态执行动作表3-5E信号结果高—>低I/O缓冲—>DR配合/W进行写数据或指令高DR—>I/O缓冲配合R进行读数据或指令低/低—>高无无(3)忙标志BF:BF标志提供内部工作情况。BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据。BF=0时,模块为准备状态,随时可接受外部指令和数据。利用STATUSRD指令,可以将BF读到DB7总线,从而检验模块之工作状态。(4)ROM(CGROM):字型产生ROM(CGROM)8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAYON),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。DFF的状态是指令DISPLAYON/OFFRST信号控制的。(5)RAM(DDRAM):RAM64×2个位元组416字(64个字)RAMCGROMCGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAMCGROM的中文字型,三种字型的选择,由在DDRAM0000H—0006H(00000002、0004、00064个)CGRAM的自定义字型,02H—7FH的编码中将选择半A1以上的编码将自动的结合下一个位元组,组成两个位元组BIG5(A140—D75F),GB(A1A0-F7FFH)。RAM提供图象定义(造字)功能,可以提16×16CGRAMCGROMDDRAM显示在屏幕中。(7)ACDDRAM/CGRAM之一的地址,它DDRAM/CGRAM的值时,地RS为“0”R/W为“1”DB6-DB0中。步进电机驱动模块步进电机简介和原理1.8(俗称一步)0.9(俗称半步)。步进电机的速度控制是通过输入的脉冲频率快慢实现的。当发生脉冲的频率减小时,步进电机的速度就下降;当频率增加时,速度就加快。还可以通过频率的改变而提高步进电机的速度或位置精度。ULN2003驱动芯片一般ULN2003ULN2003ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来ULN2003500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行【16】。(1)ULN2003引脚说明:1-7号引脚:输入端10-16号引脚:输出端8号引脚:地端9号引脚:电+(2)达林顿驱动的典型应用:①用于大功率开关电路,电机调速,CMOS电路经过达林顿管驱动LCD智能显示屏LCDLCD矩阵板作显示的系统,可用来显示β,高速低压降的达林顿管。应注意的是,达林顿管由于内部由多只管子及电阻组成,用万用表测试时,基极的正反向阻值与普通三极管不同。步进电机驱动模块P1CPUP1图3.13步进电机驱动模块电路图PHPAGEPAGE33系统软件设计程序设计程序设计是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。由于程序是软件的本体,软件的质量主要通过程序的质量来体现,在软件研究中,程序设计的工作非常重要,内容涉及到有关的基本概念、工具、方法以及方法学等。程序设计通常分为问题建摸,算法设计,编写代码和编译调试四个阶段。按照结构性质,有结构化程序设计与非结构化程序设计之分。前者是指具有结构性的程序设计方法与过程。它具有由基本结构构成复杂结构的层次性,后者反之。按照用户的要求,有过程式程序设计与非过程式程序设计之分。前者是指使用过程式程序设计语言的程序设计,后者指非过程式程序设计语言的程序设计。按照程序设计的成分性质,有顺序程序设计、并发程序设计、并行程序设计、分布式程序设计之分。按照程序设计风格,有逻辑式程序设计、函数式程序设计、对象式程序设计之分。程序设计的基本概念有程序、数据、子程序、子例程、协同例程、模块以及顺序性、并发性、并行性、和分布性等。程序是程序设计中最为基本的概念,子程序和协同例程都是为了便于进行程序设计而建立的程序设计基本单位,顺序性、并发性、并行性和分布性反映程序的内在特性。]模块程序设计法的主要优点是:(1)单个模块比起一个完整的程序易编写、调试及修改。(2)程序的易读性好。(3)程序的修改可局部化。(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由主程序﹑键盘子程序、12864LCD液晶显示子程序构成。主程序设计01,则为自动模式。用户选定模式后,主程序负责执行相应的子程序。若为手动模式,阀门打开后,则屏幕显示倒计时,时间一到,阀门就关闭。若为自动模式,则单片机定时检测P3.3口的值,若该值为高电平则不启动阀门,若该值为低电平,则启动阀门。启动阀门后,单片机还要继续检测P3.3口的值,若变高电平,则关闭阀门。执行完一个灌溉周期后继续循环检测P3.3口的电平值。4-1LCD开始开始初级显示、开外部中断否模式单元的值=0?是手动模式自动模式启动执行完毕结束图4-1主程序流程图主程序如下:

main(){t=0;flag=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;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();}}show_time();//液晶显示数据if(flag==2)//100flag2,进行比较{if(a==U8T_data_H&&b==U8RH_data_H)while(a==U8T_data_H&&b==U8RH_data_H);flag=0;}Setkey();if(ff<38)K1=0;jiaoshui();P1=0x00;PH();}}}

//扫描各功能键//38%12864LCD显示子程序设计12864LCD11条指令。它的指令是通RSDB0~DB7RW的高低电CS1CS2不同组合代表选择左半屏或者右DB0~DB712864LCD写程序的步骤如下:(1)开启两个半屏(2)清左半屏和右半屏(3)选择左半屏(4)设置页和起始行(5)写左半屏显示屏显示子程序流程图如图4-2所示:开始开始显示屏初始化清屏选择左或右半屏设置起始行、起始列写字否半屏写完?是结束图4-2显示屏显示子程序流程图显示屏显示子程序:voidshow_time(){if(pp==2){gotoxy(1,0);print("");gotoxy(2,0);print("系统初始化中,");//显示时间gotoxy(3,0);print("请稍候");//显示日期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("温湿度:");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("PH值:正常!");}if(ft==2){gotoxy(4,0);print("PH值:异常!");}mdelay(500);//扫描延时}}经过调试,本设计实现基本功能,本设计采用闭环控制,温湿度传感器一直采集PH4-3图4-3湿度大于警戒值4-4所示,直到所测湿度高于PH值呈碱性,显示为异常。图4-4湿度小于警戒值34PAGEPAGE35结论结论经过了两个多月的学习和工作,我终于完成了《智能灌溉系统的设计》的论文。在本次毕业设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其AT89S52LCD12864引脚图及其引脚功能、步进电机的驱动等,为本设计提供了一定的资料。本设计在粟田禾老师的悉心指导和严格要求下业已完成,从课题选择、方案论证ECPAGEPAGE36参考文献参考文献[1]/Article/CJFDTOTAL-PGJX200302011.htm,2003-02-011[2]/Article/CJFDTOTAL-NYJI199908038.htm,1999-08-038[3]童时中.模块化设计原理方法及应用[M].北京:中国标准出版社,2000.[4]节水灌溉编委会.节水灌溉技术手册[M].北京:中国大地出版社,2003.[5]何立民.单片机初级教程[M].北京:北京航空航天大学出版社,1999.[6]徐科军.传感器与检测技术[M].北京:电子工业出版社,2007.[7]刘湘涛,江世明.单片机原理与应用[M].北京:电子工业出版社,2007.[8]王毅.单片机器件应用手册[M].北京:人民邮电出版社,1994.[9]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,1999.[10]赵家贵.新编传感器电路设计手册[M].北京:中国计量出版社,2002.[11]潘新民.微型计算机控制技术实用教程[M].北京:电子工业出版社,2007.[12]周航慈.单片机程序设计基础[M].北京:北京航空航天大学出版社,2004.[13]邵敏权.单片机原理实验及应用[M].吉林:吉林科学技术出版社,1995.[14]杨振江.智能仪器与数据采集系统中的新器件及应用[M].西安:西安电子科技大学出版社,2001.[15]康华光.电子技术基础[M].北京:高等教育出版社,2005.[16]朱兵,彭宣戈.汇编语言程序设计[M].北京:北京航空航天大学出版社,2009.[17]朱清慧,张凤蕊等.PROTUES教程[M].北京:清华大学出版社,2008.[18]何希才.传感器应用接口电路[M].北京:机械工业出版社,1997.[19]冯博琴.微型计算机原理与接口技术[M].北京:清华大学出版社,2004.[20]MatthewChapman.TheUsingSkillsOfSingle-Chip[J].ElectronicDesign,1999.[21]/pub/wml.txt/980810-2.html,1998-08-16/1998-10-04.王鸿钰.步进电机控制技术入门[M].上海:同济大学出版社,1990.霍迎辉,陈宇翔.步进电机的微机和单片机控制[J].电机电器技术,2003.张迎新.单片机微型计算机原理、应用及接口技术[M].北京:国防工业出版社,2004.赵志杰.集成电路应用识图方法[D].北京:机械工业出版社,2003.PAGEPAGE37致谢致谢我的毕业设计从开始到基本完成大概用了二个月,时间虽然不是很长,主要因为自己不断的努力和粟老师对我的耐心指导和热心帮助,给我的毕业设计指明了方向,奠定了基础。感谢我的每一位老师,他们对我的教导我将永远铭记在心间。感谢应教专业各最后,感谢我的家人,他们的支持与鼓励,永远是支撑我前进的最大动力。在此对他们表示衷心的感谢,他们的名字我一直铭记在心!最后,衷心感谢在百忙之中抽出时间审阅本论文的专家老师们。附录附录PAGEPAGE62附录一总体电路图附录二源程序#include<REG52.H>#include<intrins.h>#defineuintunsignedint#defineucharunsignedchar#definelcddataP0#defineAM(X)X#definePM(X)(X+12)//24#defineDS1302_SECOND0x80时钟芯片的寄存器位,存放时间#defineDS1302_MINUTE0x82#defineDS1302_HOUR0x84#defineDS1302_WEEK0x8A#defineDS1302_DAY0x86#defineDS1302_MONTH0x88#defineDS1302_YEAR0x8CsbitDS1302_CLK=P1^5;实时时钟时钟线引脚sbitDS1302_IO=P1^6;实时时钟数据线引脚sbitDS1302_RST=P1^7;实时时钟复位线引脚sbitSet=P3^4;模式切换键sbitUp=P3^5;加法按钮sbitDown=P3^6;减法按钮sbitout=P3^7;立刻跳出调整模式按钮sbitK1=P3^1;正转sbitK2=P3^2;//tingsbitrs=P2^0;sbitrw=P2^1;sbite=P2^2;sbitLED=P2^7;sbitK3=P3^3;sbitbusy=P0^7;//lcdbusybitsbitACC0=ACC^0;sbitACC7=ACC^7;sbitP3_0=P3^0;intpp=0;intff,ft;typedefunsignedcharU8;typedefunsignedintU16;U8U8FLAG,k;U8U8temp;U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8U8comdata;U16a,b,t;U8flag,i;附录附录uchartemp_value,temp1_value;//temp_valuetemp1_value温度值小数部分uchardone,count,temp,up_flag,down_flag;ucharhide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;//秒,分,时到日,月,年位闪的计数ucharTempBuffer[8],week_value[3],dht_11[2];ucharcodeFFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};四相八拍正转编码voidshow_time();液晶显示程序voidwr_d_lcd(ucharcontent);voidwr_i_lcd(ucharcontent);voidclrram_lcd(void);voidinit_lcd(void);voidbusy_lcd(void);voidrev_row_lcd(ucharrow);voidrev_co_lcd(ucharrow,ucharcol,ucharmode);voidclr_lcd(void);voidwr_co_lcd(ucharrow,ucharcol,ucharlcddata1,ucharlcddtta2);voidwr_row_lcd(ucharrow,char*p);voidDelay(U16z){U8x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voiddelay_10us(){U8i;i--;i--;i--;i--;i--;i--;}voiddelay1(uintt){uintk;while(t--){for(k=0;k<125;k++);}}voidCOM(void)01{U8i;for(i=0;i<8;i++){U8FLAG=2;while((!P3_0)&&U8FLAG++);//1bitdelay_10us();delay_10us();U8temp=0;//26us~28us表示为0if(P3_0)U8temp=1;//28us1U8FLAG=2;while((P3_0)&&U8FLAG++);if(U8FLAG==1)break;//U8FLAGforU8comdata|=U8temp;}}voidRH(void)//湿温度读取子程序{P3_0=0;Delay(34);18msP3_0=1;//20usdelay_10us();delay_10us();delay_10us();delay_10us();P3_0=1;//主机设为输入判断从机响应信号if(!P3_0)//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行{否结束

U8FLAG=2;while((!P3_0)&&U8FLAG++);//判断从机是否发出80us的低电平响应信号是U8FLAG=2;while((P3_0)&&U8FLAG++);//判断从机是否发出80us的高电平,如发出则进入数据接收状态COM();//数据接收状态U8RH_data_H_temp=U8comdata;8U8RH_data_L_temp=U8comdata;8U8T_data_H_temp=U8comdata;8U8T_data_L_temp=U8comdata;8U8checkdata_temp=U8comdata;校验位P3_0=1;U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);if(U8temp==U8checkdata_temp)//数据校验正确执行{U8RH_data_H=U8RH_data_H_temp;U8RH_data_L=U8RH_data_L_temp;U8T_data_H=U8T_data_H_temp;U8T_data_L=U8T_data_L_temp;U8checkdata=U8checkdata_temp;}}//jj=date/10;}voidwrite_dht11(U8date){dht_11[0]=date/10+'0';dht_11[1]=date%10+'0';ff=date;}voidinit_lcd(void){wr_i_lcd(0x06);wr_i_lcd(0x0c);}voidclrram_lcd(void){wr_i_lcd(0x30);wr_i_lcd(0x01);}voidwr_d_lcd(ucharcontent){busy_lcd();rs=1;rw=0;lcddata=content;e=1;e=0;}voidwr_i_lcd(ucharcontent){busy_lcd();rs=0;rw=0;lcddata=content;e=1;;e=0;}voidbusy_lcd(void){lcddata=0xff;rs=0;rw=1;e=1;while(busy==1);e=0;}voidgotoxy(unsignedchary,unsignedcharx){if(y==1)wr_i_lcd(0x80|x);if(y==2)wr_i_lcd(0x90|x);if(y==3)wr_i_lcd((0x80|x)+8);if(y==4)wr_i_lcd((0x90|x)+8);}//**********************************//液晶显示字符串程序//**********************************voidprint(uchar*str){while(*str!=''){wr_d_lcd(*str);str++;}}typedefstructSYSTEMTIME{ucharSecond;ucharMinute;ucharHour;ucharWeek;ucharDay;ucharMonth;ucharYear;ucharDateString[11];ucharTimeString[9];}SYSTEMTIME;//定义的时间类型SYSTEMTIMECurrentTime;//**********************************//实时时钟写入一字节(内部函数)//**********************************voidDS1302InputByte(uchard){uchari;ACC=d;for(i=8;i>0;i--){DS1302_IO=ACC0;//相当于汇编中的RRCDS1302_CLK=1;DS1302_CLK=0;ACC=ACC>>1;}}//*************************************//实时时钟读取一字节(内部函数)//*************************************ucharDS1302OutputByte(void){uchari;for(i=8;i>0;i--){ACC=ACC>>1;//相当于汇编中的RRCACC7=DS1302_IO;DS1302_CLK=1;DS1302_CLK=0;}return(ACC);}//**************************************//ucAddr:DS1302ucData:要写的数据//**************************************voidWrite1302(ucharucAddr,ucharucDa){DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;DS1302InputByte(ucAddr);//地址,命令DS1302InputByte(ucDa);//写1Byte数据DS1302_CLK=1;DS1302_RST=0;}//**************************************//读取DS1302某地址的数据//**************************************ucharRead1302(ucharucAddr){ucharucData;DS1302_RST=0;DS1302_CLK=0;DS1302_RST=1;DS1302InputByte(ucAddr|0x01);//地址,命令ucData=DS1302OutputByte();//读1Byte数据DS1302_CLK=1;DS1302_RST=0;return(ucData);}//******************************************//获取时钟芯片的时钟数据到自定义的结构型数组//******************************************voidDS1302_GetTime(SYSTEMTIME*Time){ucharReadValue;ReadValue=Read1302(DS1302_SECOND);Time->Second=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);//转换为相应的10进制数ReadValue=Read1302(DS1302_MINUTE);Time->Minute=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);ReadValue=Read1302(DS1302_HOUR);Time->Hour=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);ReadValue=Read1302(DS1302_DAY);Time->Day=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);ReadValue=Read1302(DS1302_WEEK);Time->Week=((ReadValue&0x10)>>4)*10+(ReadValue&0x0F);ReadValue=Read1302(DS1302_MONTH);Time->Month=((ReadValue&0x70)>>4)*10+(ReadValue&0x0F);ReadValue=Read1302(DS1302_YEAR);Time->Year=((ReadValue&0xf0)>>4)*10+(ReadValue&0x0F);}//******************************************//将时间年,月,日,星期数据转换成液//晶显示字符串,放到数组里DateString[]//******************************************voidDateToStr(SYSTEMTIME*Time){uchartab[]={0XD2,0XBB,0XB6,0XFE,0XC8,0XFD,0XCB,0XC4,0XCE,0XE5,0XC1,0XF9,0XC8,0XD5};if(hide_year<2)if,else,<22007/07/22{Time->DateString[0]='2';Time->DateString[1]='0';Time->DateString[2]=Time->Year/10+'0';Time->DateString[3]=Time->Year%10+'0';}else{Time->DateString[0]='';Time->DateString[1]='';Time->DateString[2]='';Time->DateString[3]='';}Time->DateString[4]='-';if(hide_month<2){Time->DateString[5]=Time->Month/10+'0';Time->DateString[6]=Time->Month%10+'0';}else{Time->DateString[5]='';Time->DateString[6]='';}Time->DateString[7]='-';if(hide_day<2){Time->DateString[8]=Time->Day/10+'0';Time->DateString[9]=Time->Day%10+'0';}else{Time->DateString[8]='';Time->DateString[9]='';}if(hide_week<2){week_value[0]=tab[2*(Time->Week%10)-2];星期的数据另外放到week_value[]数组里,跟年,月,日的分开存放,因为等一下要在最后显示week_value[1]=tab[2*(Time->Week%10)-1];}else{week_value[0]='';week_value[1]='';}week_value[2]='';Time->DateString[10]='';//字符串末尾加'',判断结束字符}voidTimeToStr(SYSTEMTIME*Time){if(hide_hour<2){Time->TimeString[0]=Time->Hour/10+'0';Time->TimeString[1]=Time->Hour%10+'0';}else{Time->TimeString[0]='';Time->TimeString[1]='';}Time->TimeString[2]=':';if(hide_min<2){Time->TimeString[3]=Time->Minute/10+'0';Time->TimeString[4]=Time->Minute%10+'0';}else{Time->TimeString[3]='';Time->TimeString[4]='';}Time->TimeString[5]=':';if(hide_sec<2){Time->TimeString[6]=Time->Second/10+'0';Time->TimeString[7]=Time->Second%10+'0';}else{Time->TimeString[6]='';Time->TimeString[7]='';}Time->TimeString[8]='';}voidInitial_DS1302(void){ucharSecond=Read1302(DS1302_SECOND);if(Second&0x80)判断时钟芯片是否关闭{Write1302(0x8e,0x00);//写入允许Write1302(0x8c,0x07);以下写入初始化时间日期:07/07/25.星期:3.时间:23:59:55Write1302(0x88,0x07);Write1302(0x86,0x25);Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);Write1302(0x80,0x55);Write1302(0x8e,0x80);//禁止写入}}voidmdelay(uintdelay){uinti;for(;delay>0;delay--){for(i=0;i<80;i++)//1ms延时.{;}}}voidoutkey(){ucharSecond;if(out==0){mdelay(5);count=0;hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;Second=Read1302(DS1302_SECOND);Write1302(0x8e,0x00);写入允许Write1302(0x80,Second&0x7f);Write1302(0x8E,0x80);禁止写入done=0;}}voidUpkey(){Up=1;

if(Up==0){mdelay(5);switch(count){case1:temp=Read1302(DS1302_SECOND);读取秒数temp=((temp&0x70)>>4)*10+(temp&0x0F);temp=temp+1;秒数加1up_flag=1;数据调整后更新标志if((temp)>59)超过59秒,清零temp=0;temp=temp/10*16+temp%10;break;case2:temp=Read1302(DS1302_MINUTE);读取分数temp=((temp&0x70)>>4)*10+(temp&0x0F);temp=temp+1;分数加1up_flag=1;if(temp>59)59temp=temp/10*16+temp%10;break;case3:temp=Read1302(DS1302_HOUR);读取小时数temp=((temp&0x70)>>4)*10+(temp&0x0F);temp=temp+1;小时数加1up_flag=1;if(temp>23)23temp=temp/10*16+temp%10;break;case4:temp=Read1302(DS1302_WEEK);读取星期数temp=((temp&0x70)>>4)*10+(temp&0x0F);temp=temp+1;星期数加1up_flag=1;if(temp>7)temp=1;temp=temp/10*16+temp%10;break;case5:temp=Read1302(DS1302_DAY);读取日数temp=((temp&0x70)>>4)*10+(temp&0x0F);temp=temp+1;日数加1up_flag=1;if(temp>31)temp=1;temp=temp/10*16+temp%10;break;case6:temp=Read1302(DS1302_MONTH);读取月数temp=((temp&0x70)>>4)*10+(temp&0x0F);temp=temp+1;月数加1up_flag=1;if(temp>12)temp=1;temp=temp/10*16+temp%10;break;case7:}}voidDownkey(){

temp=Read1302(DS1302_YEAR);读取年

相关知识

灌溉系统
智能灌溉系统
花坛灌溉系统类型
自动植物灌溉系统
花园智能灌溉系统方案
庭院明星—花园智能驱蚊灌溉系统
洒水车,花园灌溉系统浇灌草坪图片
一种针对花园灌溉系统的自动化测试方法
苏软软优质灌溉系统汉怡昏:苏软软灌溉系统的使用心得与汉怡昏体验
金昌自动灌溉系统的养护和维修指南

网址: 【灌溉系统】 https://m.huajiangbk.com/newsview105904.html

所属分类:花卉
上一篇: SDL:安全性非功能需求识别表
下一篇: 进口缓释肥 奥绿肥315s 原装