版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
的温室大棚控制系统设计电科基于物联网技术的温室大棚控制系统设计刘娟(德州学院物理系,山东德州253023)摘要基于物联网技术的温室大棚控制系统以AT89S52人工补光;使用SHT10数字式温湿度传感器、FDS-100型土壤水分传感器、SH-300-DH二氧化碳传感器和TSL2561光强传感器,将采集的大棚内的数据信息在液晶1602上显示出来,并通过无线通信模块nRF905浓度等环境参数,以直观的数据显示给用户,并可以根据种植作物的需求提供报警信息。关键词AT89S52;传感器;nRF9051绪论待。物联网一种物体、机器间不需要人的参与即可完成信息交互的通信方式(Internetofthings)便应运而生[1]整个信息采集、传递、计算的过程中无需人的参与交互。源利用精准化、效率最大化[2]。无线传感网络由部署在监测区域内大量的微型传感器节点通过无线通信形数的信息[3]气、光、热等植物生长所必需的条件控制到最佳状态,保证作物的增产增收。出一种基于物联网技术的温室大棚控制系统。2系统方案与论证本设计给出了三种方案。2.1方案论述AT89S52SHT10数字式温湿度传感器、FDS-100型土壤水分传感器、SH-300-DH二氧化碳传感器和TSL2561光强传感器分别检测温室大棚的AT89S52单1602上显示出来,并通过无线通信模块nRF905将信号传到从机。此外,主机完成各项数值预制和光灯的控制功能。系统的总体结构框图,如图2.1所示。无线土壤水分传感MAX485图2.1系统框图MSP430为主控制器用来总体协调控制整个系统,对内部A/D采集的数据进行处理,与内部设定的数据库比较,根据设定的MSP430采用两块TMP275温度传感器,来采集大棚内外的温度值。湿度和光强利用MSP430内部A/D通过P6.0~P6.3的4TGS4160见图2.2。MSP430主控制器图2.2系统框图方案三:本温室大棚控制系统的核心采用AT89C51单片机;温度传感器采用改进型智能传感器DS18B20;智能湿度传感器采用SHT11;光照度传感器采用GZD-01CO2传感器选用红外线气敏传感器。A/D转换模块采用逐次渐近型8路A/D转换器ADC0809,利用AT89C51单片机的串行I/O口,采用了专用电平转换芯片MAX232,把TTL电平转换成RS232电平,将数据传给上位机(PC机),进行数据的存储。采用液晶显示器(LCD)进行实时显示,系统框图如图2.3所示。A/D图2.3系统框图变2.2方案比较方案一使用的控制器为AT89S52单片机,方案二使用的控制器为MSP430单片机,方案三使用的控制器为AT89C51单片机,没有数据存储功能。与方案二和方案三的单片机相比较,AT89S52单片机功耗低,性能高而且成本不高,并且完全能够满足本方案的需求。方案一使用SHT10数字式温湿度传感器来检测温室大棚中空气的温湿度,方案二选择两块TMP275感器DS18B20SHT10数字号,无需经过AD转换,连接简单,可以有效地解决传统温、湿度传感器的不足。方案一使用FDS-100型土壤水分传感器检测土壤中水分的含量,方案二的湿度和光强利用MSP430内部A/D通过P6.0~P6.3的4案三湿度传感器SHT11FDS-100型各种土壤的真实水分含量,密封性好,可长期埋入土壤中使用,且不受腐蚀。方案一使用SH-300-DH二氧化碳传感器检测温室大棚中二氧化碳的含量,方案二使用TGS4160固态电化学型二氧化碳传感器检测温室大棚中二氧化碳的浓度,但TGS41602二氧化碳浓度。与方案二和方案三相比较,SH-300-DH二氧化碳传感器具有对二氧化碳灵敏度高、受温湿度环境影响小、稳定性好、使用方便、成本低等特点。方案一使用TSL2561的湿度和光强利用MSP430内部A/D通过P6.0~P6.3的4个端口进行多通道序列采集,方案三使用GZD-01型光照度感应探头。与方案二与方案三相比较,方案一的TSL2561方便、线性度好、传输距离长、抗干扰能力强。精确度较高,连接简单的要求,选择方案一来设计本温室大棚控制系统。3系统硬件设计电路模块,显示电路模块,报警电路模块、通信电路模块、控制电路模块组成。3.1控制器模块本设计的控制器模块选用AT89S52CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程FlashAT89S52在众多嵌入式控制应用系统中得到广泛应用。(1)标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时216位定时器/6向量2工串行口,片内晶振及时钟电路[4]。另外,AT89S52可降至0Hz静态逻辑操作,支持2CPURAM/RAM单片机一切工作停止,直到下一个中断或硬件复位为止。(2)AT89S52单片机和MCS-51种封装形式,分别是PDIP形式,为40针脚;PLCC形式,为44针脚;TAFP形式,也为44针脚[5]。其中,常用的为PDIP形式,如图3.1所示。图3.1AT89S52的引脚图3.2空气温湿度测量电路模块本设计选择SHT10数字式温湿度传感器来检测温室大棚中空气的温湿度。SHT10数字式温湿度传感器是由Sensirion公司推出的一种可以同时测量湿号放大、A/D转换、I2C总线接口全部集成于一个芯片上(CMOSens技术)定性;测量精度高,湿度的精度为±3.5,温度的精度为±0.5℃(在20℃时);可靠的CRC数据传输校验功能;片内装载的校准系数,保证100%的互换性;电源电压为2.4~5.5V[6]。引脚功能:1(GND):接地;2(DATA)与3(SCK):串行数字接口,其中DATA为数据线;4(VDD):接电源。如图3.2所示,SHT10数字式温湿度传感器来检测温室大棚中空气的温湿度,并将检测到的信号传送给单片机的P0口,让单片机处理。图3.2SHT10数字式温湿度传感器连接电路图3.3土壤湿度测量电路模块本设计选择FDS-100型土壤水分传感器检测土壤中水分的含量。FDS-100型土壤水分传感器引脚功能[7]如下:红线(VDD):5-12V电源输入黄线(V-OUT):电压输出0~1.875VDC黑线(GND):地线功能及特点:(1)本传感器体积小巧化设计,携带方便,安装、操作及维护简单。(2)结构设计合理,不绣钢探针保证使用寿命。(3)受腐蚀。(4)土质影响较小,应用地区广泛。(5)测量精度高,性能可靠,确保正常工作。(6)响应速度快,数据传输效率高。FDS-100型土壤水分传感器经过LM358经信号放大输送至单片机P0口,电路如图3.3所示。图3.3FDS-100型土壤水分传感器连接电路图3.4光强测量电路模块本设计选择TSL2561光强传感器检测温室大棚的光照度。各引脚的功能[8]如下:脚1和脚3分别是电源引脚和信号地。其工作电压工作范围是是2.7V-3.5V。脚23个不同的访问地址。脚4和脚6,总线的时钟信号线和数据线。脚5中断信号输出引脚。当光强度超过用户编程设置的上或下阈值时器件会输出一个中断信号。TSL2561光强度数字转换芯片与单片机P03.4所示。图3.4TSL2561光强传感器连接电路图3.5二氧化碳测量电路模块本设计采用SH-300-DH块主要应用于CO2含量的检测,具有体积小,反应灵敏,检测精度高等优点。其主要性能参数[9]如下所示:(1)检测范围:0-3000PPM;(2)精度:0-3000PPM,10-50℃;(3)响应时间:小于30秒(0-80%),数据更新时间:2秒;(4)预热;<90秒(25℃);(5)输出:模拟:0-3V;数字UART:默认波特率9600bps;(6)输入电压:DC7V-12V;字通信方式,该传感器的数字输出脚直连到单片机的RXD管脚上。电路图如图3.5所示。图3.5SH-300-DH二氧化碳传感器连接电路3.6显示电路模块本设计采用LCD1602作为输出器件,其特点如下:(1)显示质量高:由于LCD每一个点在收到信息后就一直保持那中色彩和亮度,恒定发光,不需要不断的刷新亮点,因此画质高且不会闪烁。(2)数字式接口,与单片机系统的接口简单,操作更方便。(3)体积小,质量轻。(4)功耗低,耗电量比其他显示器件小得多。电路原理图如图3.6所示。图3.6LCD1602显示电路图3.7报警电路模块I/O口数长时间(具体时间由程序设定)与单片机的连接电路如图3.7所示。图3.7报警电路3.8通信电路模块本系统的通信电路模块分为主机与从机之间的无线通信和单片机与上位机之间的串口通信。主机与从机之间的无线通信主要是主机把采集到的空气温湿度、土壤湿度、二氧化碳浓度以及光强照度的数据通过一对配置的nRF905无线收发模块发送到子系统的运行。nRF905是挪威Nordic公司推出的单片射频发射器芯片,工作电压为1.9~3.6V32引脚QFN5mm×5mm433/868/915MHz3个ISM频道。nRF905可以自动完成处理字头和CR(循环冗余码校验)动完成曼彻斯特编码/解码,使用SPI接口与微控制器通信,配置非常方便,其-10dBm的输出功率发射时电流只有11mA12.5mA[10]。单片机由I/O端口控制nRF905模块的状态接口、模式接口和SPI接口。nRF905详细结构图如图3.8所示。3.8nRF905结构图AT89S52单片机为微控制nRF905连接电路由一对配置nRF905模块构成,其中一端作为发送端,另一端作为接收端。主机与从机之间无线通信连接电路图见附录1。本系统的单片机与上位机之间的串口通讯采用符合RS-485电气标准的MAX485芯片。RS-485/接收,共模抑制比高,抗干扰10Mb/s(传送15m)MODEM100kb/s的距离为1.2km;能实现多点对多点的通信,RS-485允许平衡电缆上连接32个发送器/接收器对。它非常适合温室大棚规模扩大时的测控系统的扩展。单片机和上位机之间的通信必须用RS232/RS485转换器EM485B将电平进行转换。MAX-485与单片机连接电路,如图3.9所示。图3.9单片机与上位机通信电路图3.9控制电路模块通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关。故在电路中起着自动调节、安全保护、转换电路等作用。如图3.10所示,从机从主机接受指令控制继电器的开关,从而使各类执行器件起到对温室环境调节的作用。图3.10继电器控制电路3.10电源电路模块本设计中用到3种电源,分别为-5V、+5V、+12V。如图3.11所示,220V交流电经变压器降压、桥式整流、电容滤波后由7905、7805、7812三端集成稳压管分别得到-5V、+5V、+12V电压,为整个系统供电。图3.11电源电路图4系统软件设计根据空气温湿度、土壤湿度、二氧化碳浓度、光照度等数据的特点和农作PIDAT89S52进行比较,经过PID算法得到控制量并由单片机输出去控制加热炉、补光光源。4.1PID控制算法原理控制器本身是一种基于对“过去、“现在”和“未来”信息估计的简单控制算法。常规的控制系统主要由控制器和被控对象组成。作为一种线性控制器,组合构成控制量,对被控对象进行控制,故称控制器。PID控制器的输出u(t)与输入e(t)微分的关系。即(4.1)写成传递函数的形式(4.2)PID控制器各个参数对系统的动态和稳态性能有不同的影响[11]。A比例作用产生控制作用,使偏差向减小的趋势变化。(1)对动态特性的影响比例控制参数KcKcKcKc系统的动作缓慢。(2)对稳态特性的影响加大比例系数Kcess精度,但是加大Kc只是减少ess,却不能完全消除稳态误差。在PID下快速克服。B积分作用积分作用的引入,主要是为了保证被控量在稳态时对设定值的无静差跟踪,它对系统的性能影响可以体现在以下两方面:(1)对动态特性的影响Ti太小系统将不稳定,TiTi太大,对系统性能的影响减少,当Ti合适时,过渡特性比较理想。(2)对稳态特性的影响积分作用能消除系统的稳态误差,提高控制系统的控制精度。但是Ti太大时,积分作用太弱,以至不能减小稳态误差。C微分作用PD控制或者PID控制。量较小,调节时间缩短,允许加大比例控制,使稳态误差减小,提高控制精度。当微分时间TdTd偏小时,超调量也较大,调节时间也较长只有合适时,可以得到比较满意的过渡过程。直观地分析,来变化趋势之间形成近似的比例关系。从频域分析的角度讲,微分作用等效于一个高通滤波器,即有可能在控制输出中引入较强的高频噪声,这是实际控制所不希望的。计算机控制系统,用软件实现PID控制算法,而且可以利用计算机的逻辑功能,使PID值计算控制量。因此,连续PID控制算法不能直接使用,需要采用离散化方法。在计算机PIDPIDPID控制算法以及增量式PID控制算法[12]。本系统采用了增量数字化PID对数值时,就可以使用增量式PID控制器进行控制[13]。PID递推原理可得(4.3)用式(4.3)减式(4.4),可得增量式PID控制算法(4.4)式(4.5)称为增量式PID控制算法,将其进一步可改写为(4.5)增量式控制虽然只是算法上作了一点改进,却带来了不少的优点[14]:(1)法去掉。(2)手动/自动切换时冲击小,便于实现无扰动切换。此外,当计算机发生故障时,由于输出通道或执行装置具有信号的锁存作用,故仍能保持原值。(3)算式中不需要累加。控制增量u(k)的确定,仅与最近k次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。但是增量式控制也有其不足之处[15]:积分截断效应大,有静态误差;溢出门作为执行器的系统中,则可采用增量式控制算法。4.2系统下位机主程序流程图设计本系统软件下位机程序主要由下位机各数据测控、上位机与下位机通讯、4.1碳浓度后进入下一个循环重新开始比较空气温湿度。NYN空气湿度是否在YN土壤湿度是否YNYNNY图4.1主程序图5结论AT89S52PIDCO2模块nRF905将采集信息传送给控制主机,再结合有线技术传送给上位机,将无具有良好的扩展性和实用性,对于实现温室的智能化测控管理,降低劳动强度,提高生产效率,创造大棚生产的最佳效益将产生积极作用。参考文献[1]管继刚.物联网技术在智能农业中的应用[J].通信管理与技术,2010(3):24-27.[2]孙科.物联网在现代农业上的应用[J].无线互联科技,2012(3):19.[3]龚道礼.基于无线传感器网络的环境监测系统研制[D].中国地质大学,2011:8.[4]胡汉才.单片机原理及系统设计[M].北京:清华大学出版社,2001:20-26.[5]刘守义.单片机应用技术[M].西安:西安电子科技大学出版社,2002.[6].基于AT89S52单片机的多功能智能温室测控系统[J].农机化研究,2009(5):139.[7]龚元石,李子忠.FDS探针两种埋设方式下土壤水分的测定及其比较[J].农业工程学报,1997,13(2):242-244.[8]来清民.传感器与单片机接口及实例[M].北京:北京航空航空大学出版社,2008:139-141.[9]钟亚飞.基于单片机的温室二氧化碳测控系统的设计[D].山东科技大学,2011:13.[10]nRF905的无线数据传输系统[J]2008,(1):29-31.[11]赵建华,沈永良.一种自适应PID控制算法[J].自动化学报,2001,27(2):417-420.[12]刘金琨.先进PID控制MATLAB仿真[M].北京:电子工业出版社(第2版),2004,9.[13]张宇河,金钰.计算机控制系统[M].北京;北京理工大学出版社,1996.[14]IbrahimKayaNusretTanDerekP.Atherton.ArefinementprocedureforPIDcontrollers[J].ElectricalEngineering,(2006)(88):215–221.[15][美]KatsuhikoOgata.陆伯英,于海勋等(译).现代控制工程(第三版)[M]子工业出版社,2000,3.DesignoftheIntelligentMonitoringSystemforGreenhouseBaseduponInternetofThingsLiuJuan(DepartmentofPhysics,DezhouUniversity,Dezhou,253023)AbstractBasedonthecontentofthenetworkingtechnologiesgreenhousecanopycontrolsystembyAT89S52singlechipmicrocomputerasthecore,theheatingfurnaceandfan,sprinklerirrigationandirrigation,fluorescentlamp,respectively,andtoincreasetheheatshedgreenhousecarbondioxideconcentration,increasetheairhumidity,irrigation,artificiallightsupplement;SHT10digitaltemperatureandhumiditysensors,usingFDS-100typesoilmoisturesensor,SH-300-DHcarbondioxidesensorandTSL2561stronglightsensor,willshedthedatacollectedintheinformationintheliquidcrystaldisplayonthe1602,andthroughtheserialcablecommunicationwillsignalstofromthemachine.Thehosttofinishthenumericalprecastandalarmcircuitmodulefunction,andfromthecompletecollectionofmachinenumericaldisplayandheatingandfan,sprinklerirrigationandirrigationandfluorescentlampcontrolfunctions.Inthispaperthedesigngreenhousecanopycontrolsystem,cancollectreal-timecontroloftheairtemperatureandhumidityingreenhouse,soilhumidity,lightintensity,theconcentrationofcarbondioxideandotherenvironmentalparameterstointuitivedatashowstotheuser,andmay,accordingtothedemandofplantingcropsprovidealarminformation.KeywordsAT89S52;SHT10;FDS-100;SH-300-DH;TSL2561致谢选题、构思和资料的收集方面,还是在论文的中期过程检查以及成文定稿方面,地感谢和深深的谢意。学们,在我论文设计过程中给予的帮助,使我能够顺利的完成论文设计。—苦抚养我长大的父母,谢谢您们!附录1主机与从机无线通信模块电路图附录2系统总电路图附录3程序#include<reg52.h>//"头文件"#include<1602.h>#include<cat24c.h>#include<ds1302.h>#include<0832.h>#include<wenshi.h>#include<image.h>sfrAUXR=0x8e;sfrAUXR1=0xa2;//"key记录键值;k自动控制标志;i、b用于显示"unsignedcharkey=0,k=0,i=0,b=0,m=0,j=0,l=0,g=10,s=0;//"m、l、j、g用于计时"unsignedcharxdatashow[8];//"用于显示转换"unsignedcharxdatawet[6];//"湿度[0:1]、温度[2:3]、CO2[4]、光强[5]"unsignedcharxdatamax[6]={0};unsignedcharxdatamin[6]={0};unsignedcharxdatat0ime[8]={1,2,3,5,6,7,8,9};/**///"比较参量0,时间[0:1]、湿度[2:3]、温度[4:5]、CO2[6]、光强[7]"unsignedcharxdatat1ime[8]={1,2,3,5,6,7,8,9};/**///"比较参量1,时间[0:1]、湿度[2:3]、温度[4:5]、CO2[6]、光强[7]"unsignedcharaddress=0x10;//"RAM地址"sbitkey1=P1^7;//"按键1"sbitkey2=P0^1;//"2"sbitkey3=P0^2;//"3"sbitkey4=P0^0;//"4"sbitled=P0^3;//"12864背灯"sbitco2=P3^7;//"CO2加热"sbitmo=P2^0;//"电机"sbitli=P2^1;//"加热灯"voidmenu();voidwelcome()//"欢迎界面"{chn_disp(0x92,4,"欢迎使用");chn_disp(0x98,8,"吉林大学电子学院");}voidreadall()//"读取时间、湿、温、CO2、光强"{Read_RTC();RH(wet);wet[4]=Adc0832(1);wet[5]=Adc0832(1);}voidchange(unsignedcharn)//"数据格式转换"{unsignedchark;unsignedintg;switch(n){case0:for(k=0;k<3;k++){show[6-3*k]=set_rtc_code[k]/16+'0';show[7-3*k]=set_rtc_code[k]%16+'0';}show[5]=show[2]=':';break;case1:show[0]=set_rtc_code[6]/16+'0';show[1]=set_rtc_code[6]%16+'0';show[4]=set_rtc_code[4]/16+'0';show[5]=set_rtc_code[4]%16+'0';show[6]=set_rtc_code[3]/16+'0';show[7]=set_rtc_code[3]%16+'0';break;case2:show[0]=t0ime[1]/16+'0';show[1]=t0ime[1]%16+'0';show[3]=show[2]='-';show[4]=t0ime[0]/16+'0';show[5]=t0ime[0]%16+'0';break;case3:show[0]=t1ime[1]/16+'0';show[1]=t1ime[1]%16+'0';show[3]=show[2]='-';show[4]=t1ime[0]/16+'0';show[5]=t1ime[0]%16+'0';break;case4:g=wet[0]*0x100+wet[1];show[0]=g/100+'0';show[1]=(g/10)%10+'0';show[2]='.';show[3]=g%10+'0';show[4]='%';break;case5:g=wet[2]*0x100+wet[3];show[0]=g/100+'0';show[1]=(g/10)%10+'0';show[2]='.';show[3]=g%10+'0';break;case6:g=CO2_deal(wet[4]);show[0]=g/1000+'0';show[1]=(g/100)%10+'0';show[2]=(g/10)%10+'0';show[3]=g%10+'0';show[4]='p';show[5]='p';show[6]='m';break;case7:show[0]=wet[5]/16+'0';show[1]=wet[5]%16+'0';show[2]='p';show[3]='p';show[4]='m';break;}}voidclean()//"清屏"{wr_lcd(comm,0x30);wr_lcd(comm,0x01);lat_disp(0,0);delay1(100);}voidz()//"制作"{clean();chn_disp(0x80,2,"制作");chn_disp(0x92,2,"肖辉");chn_disp(0x8a,3,"吕兴东");chn_disp(0x9a,3,"王大美");}voidshowall(chara)//"1602显示所有"{switch(a){case0:readall();wr_lcd(comm,0x0c);clean();change(0);chn_disp(0x80,4,show);chn_disp(0x85,2,"星期");show[0]=set_rtc_code[5]+'0';chn_disp_1(0x87,0,1,show);change(4);chn_disp_1(0x90,0,5,show);change(5);chn_disp_1(0x95,0,5,show);chn_disp_1(0x97,0,2,"℃");change(6);chn_disp_1(0x88,0,7,show);change(7);chn_disp_1(0x8d,0,5,show);chn_disp(0x98,4,"功能设置");break;case1:chn_disp(0x80,4,"参量设置");chn_disp(0x90,4,"模式设置");chn_disp(0x88,4,"记录处理");chn_disp(0x98,2,"复位");break;case2:chn_disp(0x82,4,"参量设置");chn_disp(0x90,4,"测量间隔");chn_disp(0x88,4,"时间设置");chn_disp(0x98,4,"湿度范围");break;case9:chn_disp(0x82,4,"参量设置");chn_disp(0x90,4,"温度范围");chn_disp_1(0x88,0,4,"CO^2");chn_disp(0x8a,2,"浓度");chn_disp(0x98,4,"光强范围");break;case3:chn_disp(0x82,4,"测量间隔");show[0]=s/10+'0';show[1]=s%10+'0';chn_disp_1(0x91,0,2,show);chn_disp(0x92,2,"分钟");show[0]='/';chn_disp_1(0x94,0,1,show);chn_disp(0x95,1,"次");chn_disp(0x98,2,"确定");break;case4:chn_disp(0x82,4,"时间设置");change(1);chn_disp(0x92,4,show);chn_disp(0x91,3,show);chn_disp(0x92,1,"年");chn_disp(0x94,1,"月");chn_disp(0x96,1,"日");change(0);chn_disp(0x8a,4,show);show[5]=show[4];show[4]=show[3];chn_disp(0x89,3,show);chn_disp(0x8a,1,"时");chn_disp(0x8c,1,"分");chn_disp(0x8e,1,"秒");chn_disp(0x9a,2,"星期");show[0]=set_rtc_code[5]+'0';chn_disp_1(0x9c,0,1,show);break;case5:chn_disp(0x82,4,"湿度范围");wet[0]=t0ime[2];wet[1]=t0ime[3];change(4);chn_disp_1(0x95,0,5,show);wet[0]=t1ime[2];wet[1]=t1ime[3];change(4);chn_disp_1(0x8d,0,5,show);break;case6:chn_disp(0x82,4,"温度范围");wet[2]=t0ime[4];wet[3]=t0ime[5];change(5);chn_disp_1(0x95,0,5,show);wet[2]=t1ime[4];wet[3]=t1ime[5];change(5);chn_disp_1(0x8d,0,5,show);chn_disp_1(0x8f,0,2,"℃");break;case7:chn_disp_1(0x81,0,3,"CO2");chn_disp(0x83,4,"浓度范围");wet[4]=t0ime[6];change(6);chn_disp_1(0x95,0,5,show);wet[4]=t1ime[6];change(6);chn_disp_1(0x8d,0,5,show);break;case8:chn_disp(0x82,4,"光强范围");wet[5]=t0ime[7];change(7);chn_disp_1(0x95,0,5,show);wet[5]=t1ime[7];change(7);chn_disp_1(0x8d,0,5,show);break;case12:chn_disp(0x82,4,"模式设置");chn_disp(0x90,4,"自动补偿");chn_disp(0x88,4,"手动补偿");chn_disp(0x98,4,"定时补偿");break;case11:chn_disp(0x82,4,"定时补偿");chn_disp(0x90,1,"从");change(2);chn_disp(0x95,3,show);chn_disp(0x88,1,"到");change(3);chn_disp(0x8d,3,show);chn_disp(0x98,2,"确定");break;case22:chn_disp(0x82,4,"记录处理");chn_disp(0x90,4,"上次记录");chn_disp(0x88,2,"作图");chn_disp(0x98,2,"确定");break;case23:chn_disp(0x82,4,"上次记录");change(0);chn_disp(0x90,4,show);change(4);chn_disp_1(0x88,0,5,show);change(5);chn_disp_1(0x8d,0,5,show);change(6);chn_disp_1(0x98,0,7,show);change(7);chn_disp_1(0x9d,0,5,show);break;case24:chn_disp(0x80,4,"湿度作图");chn_disp(0x90,4,"温度作图");chn_disp_1(0x88,0,3,"CO2");chn_disp(0x8a,2,"浓度");chn_disp(0x98,4,"光强作图");break;case32:chn_disp(0x80,5,"确定将系统");chn_disp(0x91,6,"恢复初始状态");chn_disp_1(0x97,0,1,"?");chn_disp(0x98,2,"确定");break;case46:clean();chn_disp(0x92,5,"设置已保存");break;}if((4<a)&&(a<9)){chn_disp(0x90,2,"最高");chn_disp(0x88,2,"最低");chn_disp(0x98,2,"确定");}if(a%23)chn_disp(0x9e,4,"返回");}voidchoose(unsignedchara,unsignedcharw)//"反白"{w=(0xff)*w;switch(a){case0:con_disp(w,w,0x80,0x80,4,16);//"第一行前4个字反白"break;case1:con_disp(w,w,0x80,0x90,4,16);//"第二行前4个字反白"break;case2:con_disp(w,w,0x88,0x80,4,16);//"第三行前4个字反白"break;case3:con_disp(w,w,0x88,0x90,4,16);//"第四行前4个字反白"break;case11:con_disp(w,w,0x85,0x90,3,16);//"第二行后3个字反白"break;case12:con_disp(w,w,0x8d,0x80,3,16);//"第三行后3个字反白"break;case100:con_disp(w,w,0x81,0x90,1,16);//"第二行第2个字反白"break;case101:con_disp(w,w,0x83,0x90,1,16);//"第二行第4个字反白"break;case102:con_disp(w,w,0x85,0x90,1,16);//"第二行第6个字反白"break;case103:con_disp(w,w,0x87,0x90,1,16);//"第二行第8个字反白"break;case104:con_disp(w,w,0x89,0x80,1,16);//"第二行第2个字反白"break;case105:con_disp(w,w,0x8b,0x80,1,16);//"第三行第4个字反白"break;case106:con_disp(w,w,0x8d,0x80,1,16);//"第三行第6个字反白"break;case107:con_disp(w,w,0x8f,0x80,1,16);//"第三行第8个字反白"break;case108:con_disp(w,w,0x8c,0x90,1,16);//"第四行第5个字反白"break;}}voidsend()//"数据从串口送入计算机"{;/**/}voidwriteall()//"数据写入RAM"{Writepage(set_rtc_code,address,4);Writepage(wet,address+0x04,6);//"记录数据"address+=0x0a;if(address>0xf5){send();//"写满送入串口"address=0x10;}}voidrecord()//"将参量写入RAM"{Writepage(t0ime,0,8);Writepage(t1ime,8,8);}voidok()//"显示设置已保存"{showall(46);delay1(4000);b=i=m=0;menu();}voidadd(unsignedcharb)//"调整时间"{switch(b){case0:set_rtc_code[6]++;if((set_rtc_code[6]&0x0f)>9)set_rtc_code[6]+=6;if((set_rtc_code[6]&0x0f0)>0x9f)set_rtc_code[6]=0;break;case1:set_rtc_code[4]++;if((set_rtc_code[4]&0x0f)>9)set_rtc_code[4]+=6;if(set_rtc_code[4]>0x12)set_rtc_code[4]=1;break;case2:set_rtc_code[3]++;if((set_rtc_code[3]&0x0f)>9)set_rtc_code[3]+=6;if(set_rtc_code[3]>0x31)set_rtc_code[3]=1;switch(set_rtc_code[4]){case4:case6:case9:case0x11:if(set_rtc_code[3]>0x30)set_rtc_code[3]=1;break;case2:if(set_rtc_code[3]>0x29)set_rtc_code[3]=1;if((set_rtc_code[6]%16)%4)if(set_rtc_code[3]>0x28)set_rtc_code[3]=1;break;}break;case3:set_rtc_code[2]++;if((set_rtc_code[2]&0x0f)>9)set_rtc_code[2]+=6;if(set_rtc_code[2]>0x23)set_rtc_code[2]=0;break;case4:case5:set_rtc_code[5-b]++;if((set_rtc_code[5-b]&0x0f)>9)set_rtc_code[5-b]+=6;if(set_rtc_code[5-b]>0x59)set_rtc_code[5-b]=0;break;case6:set_rtc_code[5]++;if(set_rtc_code[5]>7)set_rtc_code[5]=1;break;}}voidfuwei()//"复位函数,用于将系统恢复初始状态"{unsignedcharysh[2];ysh[0]=10+'0';ysh[1]='0';Writepage(ysh,0xfe,2);k=0;g=10;}voiddraw(unsignedcharqd)//"画图函数"{unsignedcharqe,qr;unsignedintqw,qq,qp;clean();switch(qd){case0:qr=0x14;qq=max[0]*0x100+max[1];qp=min[0]*0x100+min[1];break;case1:qr=0x16;qq=max[2]*0x100+max[3];qp=min[2]*0x100+min[3];break;case2:qr=0x18;qq=max[4];qp=min[4];break;}D2=1;D0=D1=D3=D4=D5=D6=D7=0;for(;qw<address;qr+=10){qe=Read24C02(qr);if(qd<2)qw=qe*0x100+Read24C02(qr+1);elseqw=qe;image_deal(qe,0x00+(set_rtc_code[2]/0x10)*10+(set_rtc_code[2]%0x10),qd,qq,qp,(address-0x06)/10);qr+=0x0a;}}voidmenu()//"菜单"{switch(i){case0:showall(i++);b=0;choose(3,1);break;case1:switch(key){case1:clean();showall(i++);choose(3,0);choose(b,1);break;case2:case3:showall(0);choose(3,1);break;case4:led=0;//wr_lcd(comm,0x08);i=b=0;break;}break;case2:switch(key){case1:i=i+10*b;clean();showall(i++);choose((b/3)*2+1,1);b=0;break;case2:showall(i-1);choose(b,0);b++;if(b>3)b=0;choose(b,1);break;case3:showall(i-1);choose(b,0);if(!b)b=4;b--;choose(b,1);break;case4:i=0;menu();break;}break;case3:switch(key){case1:clean();if(!b)s=g;showall((i++)+b);if(b>1)choose(1,1);elsechoose(100,1);i+=b;b=0;break;case2:choose((b%3)+1,0);b++;if(b>5)b=0;showall(i-1+(b/3)*7);choose((b%3)+1,1);break;case3:choose((b%3)+1,0);if(!b)b=6;b--;showall(i-1+(b/3)*7);choose((b%3)+1,1);break;case4:i--;clean();showall(i-1);choose(b=0,1);break;}break;case4:switch(key){case1:g=s;Write24C02(g,0xfe);ok();break;case2:if(s<10)s++;elseif(s<30)s+=5;elseif(s<90)s+=10;showall(3);break;case3:if(s>30)s-=10;elseif(s>10)s-=5;elseif(s>0)s--;showall(3);break;case4:i--;clean();showall(i-1);choose(1,1);b=0;break;}break;case5:switch(key){case1:Initial();ok();break;case2:showall(i-1);choose(b/3+b+100,0);b++;if(b>6)b=0;choose(b/3+b+100,1);break;case3:add(b);showall(i-1);choose(b/3+b+100,1);break;case4:i=3;clean();showall(i-1);choose(2,1);b=1;break;}break;case6:switch(key){case1:if(b>2){record();ok();}else{choose(1+b,0);b+=2;choose(9+b,1);}break;case3:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){t0ime[3]++;if(!t0ime[3]){if(t0ime[2]<0x03)t0ime[2]++;elset0ime[2]=0x03;}if(t0ime[2]==0x03){if(t0ime[3]>0xe7)t0ime[3]=0xe7;}}elseif(b>2){t1ime[3]++;if(!t1ime[3]){if(t1ime[2]<0x03)t1ime[2]++;elset1ime[2]=0x03;}if(t1ime[2]==0x03){if(t1ime[3]>0xe7)t1ime[3]=0xe7;}}showall(i-1);break;case2:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){if(!t0ime[3]){if(t0ime[2]){t0ime[2]--;t0ime[3]=0xff;}}elset0ime[3]--;}elseif(b>2){if(!t1ime[3]){if(t1ime[2]){t1ime[2]--;t1ime[3]=0xff;}}elset1ime[3]--;}showall(i-1);break;case4:if(b<2){clean();b=i-4;showall(2+(b/3)*7);choose((b%3)+1,1);i=3;}else{choose(9+b,0);b-=2;choose(1+b,1);}break;}break;case7:switch(key){case1:if(b>2){record();ok();}else{choose(1+b,0);b+=2;choose(9+b,1);}break;case3:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){t0ime[5]++;if(!t0ime[5]){if(t0ime[4]<0x01)t0ime[4]++;elset0ime[4]=0x01;}if(t0ime[4]==0x01){if(t0ime[5]>0x2c)t0ime[5]=0x2c;}}elseif(b>2){t1ime[5]++;if(!t1ime[5]){if(t1ime[4]<0x01)t1ime[4]++;elset1ime[4]=0x01;}if(t1ime[4]==0x01){if(t1ime[5]>0x2c)t1ime[5]=0x2c;}}showall(i-1);break;case2:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){if(!t0ime[5]){if(t0ime[4]){t0ime[4]--;t0ime[5]=0xff;}}elset0ime[5]--;}elseif(b>2){if(!t1ime[5]){if(t1ime[4]){t1ime[4]--;t1ime[5]=0xff;}}elset1ime[5]--;}showall(i-1);break;case4:if(b<2){clean();b=i-4;showall(2+(b/3)*7);choose((b%3)+1,1);i=3;}else{choose(9+b,0);b-=2;choose(1+b,1);}break;}break;case8:switch(key){case1:if(b>2){record();ok();}else{choose(1+b,0);b+=2;choose(9+b,1);}break;case3:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){t0ime[6]++;if(!t0ime[6])t0ime[6]=0xff;}elseif(b>2){t1ime[6]++;if(!t1ime[6])t1ime[6]=0xff;}showall(i-1);break;case2:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){if(t0ime[6])t0ime[6]--;}elseif(b>2){if(t1ime[6])t1ime[6]--;}showall(i-1);break;case4:if(b<2){clean();b=i-4;showall(2+(b/3)*7);choose((b%3)+1,1);i=3;}else{choose(9+b,0);b-=2;choose(1+b,1);}break;}break;case9:switch(key){case1:if(b>2){record();ok();}else{choose(1+b,0);b+=2;choose(9+b,1);}break;case3:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){t0ime[7]++;if(!t0ime[7])t0ime[7]=0xff;}elseif(b>2){t1ime[7]++;if(!t1ime[7])t1ime[7]=0xff;}showall(i-1);break;case2:if(b<2){choose(1+b,0);if(b)b=0;elseb=1;choose(1+b,1);}elseif(b==2){if(t0ime[7])t0ime[7]--;}elseif(b>2){if(t1ime[7])t1ime[7]--;}showall(i-1);break;case4:if(b<2){clean();b=i-4;showall(2+(b/3)*7);choose((b%3)+1,1);i=3;}else{choose(9+b,0);b-=2;choose(1+b,1);}break;}break;case13:switch(key){case1:k=b;Write24C02(k,0xff);if(b==2){Readpage(t0ime,0,4);clean();showall(11);i=12;b=0;choose(102,1);}elseok();break;case2:showall(i-1);choose(b+1,0);b++;if(b>2)b=0;choose(b+1,1);break;case3:showall(i-1);choose(b+1,0);if(!b)b=3;b--;choose(b+1,1);break;case4:i=2;clean();showall(i-1);choose(b=1,1);break;}break;case12:switch(key){case1:record();ok();break;case2:showall(11);choose((b/2)*2+102+b,0);b++;if(b>3)b=0;choose((b/2)*2+102+b,1);break;case3:switch(b){case0:t0ime[1]++;if(t0ime[1]>0x23)t0ime[1]=0;if((t0ime[1]&0x0f)>9)t0ime[1]+=6;break;case2:t1ime[1]++;if(t1ime[1]>0x23)t1ime[1]=0;if((t1ime[1]&0x0f)>9)t1ime[1]+=6;break;case1:t0ime[0]++;if(t0ime[0]>0x59)t0ime[0]=0;if((t0ime[0]&0x0f)>9)t0ime[0]+=6;break;case3:t1ime[0]++;if(t1ime[0]>0x59)t1ime[0]=0;if((t1ime[0]&0x0f)>9)t1ime[0]+=6;break;}showall(11);choose((b/2)*2+102+b,1);break;case4:i=13;clean();showall(i-1);choose(b=3,1);break;}break;case23:switch(key){case1:if(!b){Readpage(set_rtc_code,address-10,4);Readpage(wet,address-0x06,6);}clean();showall(i+=b);if(b)choose(0,1);i++;b=0;break;case2:showall(i-1);choose(b+1,0);if(b)b=0;elseb=1;choose(b+1,1);break;case3:showall(i-1);choose(b+1,0);if(b)b=0;elseb=1;choose(b+1,1);break;case4:i=2;clean();showall(i-1);choose(b=2,1);break;}break;case24:if(key==1){b=i=m=0;menu();break;}el
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论