基于单片机的粮仓测控系统设计_第1页
基于单片机的粮仓测控系统设计_第2页
基于单片机的粮仓测控系统设计_第3页
基于单片机的粮仓测控系统设计_第4页
基于单片机的粮仓测控系统设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE16PAGEIII基于单片机的粮仓测控系统设计摘要随着经济的发展,越来越多的场合需要对各行各业的温湿度进行监测。传统的测量温度和湿度是用毛发湿度计、干湿度计法、温度计和湿度测试纸和其他手工测试仪器。手工测试方法效率低,耗时费力,试验温湿度大,误差大。现有的湿度、温度监测系统大多采用有线传输,不仅敷设了大量电缆,而且还混合了电力线、控制线和信号线,相互干扰。尤其是监控点太长,接线复杂,传输问题更为严重。因此,有必要建立一个稳定、可靠、科学的管理和高效的温湿度监测系统。本文将整个系统大致分为四个部分,即环境温湿度检测模块、单片机控制模块、显示模块和偏差调整模块。环境温湿度检测模块主要通过选择合适的传感器来检测粮仓环境的温湿度。对测量数据进行处理后发送到单片机。通过对这些环境参数的分析,单片机得到当前环境与设定值的偏差,并根据偏差进行传递。控制相应的电机设备,调节当前环境的温度和湿度。在整个系统的工作中,测控系统测量的温湿度参数显示在液晶屏上,供用户参考。仿真结果表明,该系统完全能够对粮仓的温湿度进行监控并对过程中出现的偏差进行调节。关键词:单片机;粮仓温湿度;监控系统

ABSTRACTWiththedevelopmentofeconomy,moreandmoreoccasionsneedtomonitorthetemperatureandhumidityofallwalksoflife.Thetraditionalmethodsofmeasuringtemperatureandhumidityarehairhygrometer,dryhygrometer,thermometer,humiditytestpaperandothermanualinstruments.Themanualtestingmethodisinefficient,time-consumingandlaborious,withlargetemperatureandhumidityandlargeerror.Mostoftheexistinghumidityandtemperaturemonitoringsystemsusewiredtransmission,whichnotonlylaysalargenumberofcables,butalsomixespowerlines,controllinesandsignallinestointerferewitheachother.Especially,themonitoringpointistoolong,thewiringiscomplex,andthetransmissionproblemismoreserious.Therefore,itisnecessarytoestablishastable,reliable,scientificmanagementandefficienttemperatureandhumiditymonitoringsystem.Inthispaper,thewholesystemisroughlydividedintofourparts,namelyenvironmentaltemperatureandhumiditydetectionmodule,MCUcontrolmodule,displaymoduleanddeviationadjustmentmodule.Theenvironmentaltemperatureandhumiditydetectionmodulemainlydetectsthetemperatureandhumidityofthegranaryenvironmentbyselectingappropriatesensors.Themeasureddataareprocessedandsenttothesinglechipcomputer.Throughtheanalysisoftheseenvironmentalparameters,MCUcangetthedeviationbetweenthecurrentenvironmentandthesetvalue,andtransferitaccordingtothedeviation.Controlthecorrespondingmotorequipment,adjustthetemperatureandhumidityofthecurrentenvironment.Intheworkofthewholesystem,thetemperatureandhumidityparametersmeasuredbythemeasurementandcontrolsystemaredisplayedontheLCDscreenforusers'reference.Thesimulationresultsshowthatthesystemcanmonitorthetemperatureandhumidityofthegranaryandadjustthedeviationintheprocess.Keywords:singlechipmicrocomputer;greenhousetemperatureandhumidity;monitoringsystem.

目录摘要 IABSTRACT II1绪论 11.1研究背景 11.2研究意义 11.3研究现状 12系统总体结构 32.1系统结构 32.2系统主要指标 32.3系统的特点 32.4AT89C52单片机 43系统的硬件设计 53.1温湿度测量方法 53.1.1温度测量方法 53.1.2湿度测量方法 53.2传感器选型 63.2.1温度传感器的选择 63.2.2湿度传感器的选择 73.3传感器检测电路 83.4单片机最小系统 93.6按键电路与报警灯 124系统的软件设计 144.1软件系统开发工具及主流程图 144.1.1软件开发工具 144.1.2系统软件总体流程图 144.2温湿度采集模块的软件设计 154.3显示模块软件的设计 165系统仿真与调试 195.1系统调试 195.3调试中出现的问题及解决方案 21结论 22参考文献 22附录源代码 25PAGE171绪论1.1研究背景粮仓日常工作是防潮、防腐、防霉,为了保证日常工作的顺利进行,必须加强粮仓的温湿度监测。传统的方法是用湿度计,湿度计和手动检测双金属测量仪等检测设备,不符合温度和湿度要求粮仓通风、去湿和冷却。这种手工测试方法费时费力,效率低,温湿度误差大,且随机性强。因此,需要一种成本低、使用方便、温度测量准确的温湿度控制系统。作为粮仓中最重要的物资之一,做好粮食储备尤为重要。一般温度对微生物的生长和繁殖有影响。大多数菌株生长繁殖的最佳温度为28~30℃。它是安全、经济、绿色储粮的先进技术,已成为科学储粮技术发展的新方向。作为本系统所采用的单片机技术,它在我们的生活、工作和科研中得到了广泛的应用,并已成为一项比较成熟的技术。1.2研究意义中国是一个人口大国,科学储粮是一个战略性的事件,保护人民的食品供应和国家经济迫不及待。目前,在粮食粮仓温度和湿度的检测,基本上是人工检测,劳动强度大,复杂的检测报警不及时,和粮食面积,颗粒分散,舱内温度测试点,造成工作量大,效率低,检测周期长,容易泄漏检测、高损伤率测量装置。测试精度难以保证,造成储粮损失现象时有发生,所以每年在粮食储存成本过高,并设计和开发了粮食温湿度自动检测系统是迫在眉睫的优良性能,从而促进社会的发展,产生良好的经济价值的发挥重要的作用。1.3研究现状随着传感技术的成熟,自动检测领域的工作方式正在放生改变,其中粮仓的温度监控系统就是其中之一。国外的传感技术发展比较领先,近年来,我国引进了很多国外先进的粮仓温度监控系统,这对我国响应技术的发展起到了极大的推动作用。目前检测和控制系统中采用了许多新的传感技术,如瑞士森森公司采用的CMOSENS专利技术,为高精度湿度传感器系统设定精度;高精度/高分辨率湿度传感器在市场上得到了广泛的应用。对提高测量精度和分辨率起着重要作用。随着智能湿度传感器从单通道发展到多通道,为多通道湿度测控系统的发展创造了条件,对提高检测功能起到了积极作用。在发达国家智能食品棚的建设和使用中,通过加大对农民的投资和高额财政补贴,智能食品棚得到了快速发展。2007年,荷兰、以色列、澳大利亚、美国等欧美发达国家和地区在控制光、水、肥灌溉方面使用了照明设施、滴灌、喷灌等高度自动化的设备。行动。这些国家主要通过照明、供水、化肥供应等农业生产环节,根据作物的生长需要,设计相应的操作规程,从而实现农村劳动力替代和优化作物生长的目的。艺术食品棚通过电脑监控环境。经过多年的发展和积累,荷兰、以色列、澳大利亚和美国的智能化食品棚技术开始加大力度,将信息、电力等先进技术与农业生产相结合,不断推进农作物在节约人力、物力等资源的同时,提高生产和农业生产水平。质量也增加了这些国家的发展和应用经验。粮食棚也经历了由低档到高档,由传统到现代得不断更新与发展。随着粮仓技术的普及,粮食棚数量不断增多,粮食棚的温湿度控制成为一个难题。

2系统总体结构2.1系统结构硬件主要基于AT89C52单片机。利用LCD1602可以实时显示传感器DHT11检测到的温湿度。门限可通过AT24C02存储,实现断电保护。过阀相应的报警驱动。本研究设计的温湿度控制器框图如图2-1所示。图2-1温湿度控制器方框图2.2系统主要指标整个系统的功能指标主要由温湿度传感器、除湿器、散热器风扇等组成。温湿度传感器:采用一体化温湿度传感器,温度测量范围为-55~+65C,控温精度为(+0.5C);湿度测量范围为0-99%RH,湿度测量精度为(+3%RH)。除湿机:采用工业冷凝除湿机;散热风机:采用220V交流市电供电的工业用散热风机;2.3系统的特点(1)粮仓现场所用的温湿度检测传感器实行数字化输出,不但使得外围电路得到了最大程度上的简化,而且由于外围器件的减少,系统的可靠性得到了提高;(2)采用分布式测控系统,每个传感器的通信总线可连接多个传感器进行数据传输,满足现代工业领域的布线要求;(3)采用两线制的串行总线进行数据传输,施工简单,节省器材,施工成本降低;(4)上位机中实时显示各个传感器的工作情况,便于用户对损坏的器件进行检修。2.4AT89C52单片机AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。主要功能特性:32个双向I/O口·256x8bit内部RAM3个16位可编程定时/计数器中断·时钟频率0-24MHz2个串行中断·可编程UART串行通道2个外部中断源·共8个中断源2个读写中断口线·3级加密位兼容MCS52指令系统·8k可反复擦写(>1000次)FlashROM低功耗空闲和掉电模式·软件设置睡眠和唤醒功能这里的控制器包括现场控制器和主控制器,它们的流程图见软件设计部分。

3系统的硬件设计整个硬件部分的设计主要包括传感器检测模块、单片机最小系统、偏差执行机构。系统通电后,温湿度检测模块采集当前环境中的温湿度。数据采集模块测量温度和湿度后,将数据传输至主控制器。如果现场检测得到的温湿度参数在系统中,主控制器根据接收到的温湿度数据和预设值判断温湿度。如果检测到当前环境中的温度和湿度超过预设值,将激活相应的设备,根据预设的控制模式调整环境中的温度和湿度,直到现场环境中的温度和湿度达到环境设定值。作记号。3.1温湿度测量方法3.1.1温度测量方法温度测量主要有压力温度计、热电阻温度计、双金属温度计、热电偶温度计、光学温度计、辐射温度计和红外温度计。压力温度计是工业生产过程中最早测量温度的方法之一。它结构简单,机械强度好,不依赖外部电源,价格低廉。它在工业生产过程中广泛应用于温度测量,但由于其响应时间长、仪表密封维护不变、外部暴露等特点,在工业生产中得到了广泛的应用。边界环境影响较大,逐渐退出温度检测行列。热电阻温度计是利用导体或半导体的电阻值随温度变化的特性来测量温度的一种温度计。它可以将温度信号转化为电阻变化,最终将电阻变化转化为电信号变化。计算机通过检测电信号的变化来实现温度控制。由于其精度高、重现性好,广泛应用于各种温度检测系统中。但是,由于电阻温度计在工作过程中需要电源,且机械强度较低,因此不能用于机械振动的场合。双金属温度计具有结构简单、价格低廉、维护方便等优点。它广泛应用于各种温度测量场合,但由于其精度较低,只能用于精度要求较低的场合。热电偶在工业测温中占有很大的比重,其可用于非接触式测温,具有体积小、安装方便等优点,但缺点是温度输出与热点势之间呈现飞线性关系,因此需要对热点势经过线性处理之后才能使用。光学高温计、辐射高温计以及红外测温仪都输出非接触式测温计。3.1.2湿度测量方法日常生活和工业领域的湿度通常是相对湿度,用RH%表示。也就是说,在与空气相同的条件下,气体(通常在空气中)中的水蒸气含量(蒸气压力)与饱和蒸气含量(蒸气压力)的百分比。湿度的表示包括绝对湿度、相对湿度、露点、湿干气比(重量或体积)等,常用的湿度测量方法有:动态法(双压法、双温法、分路法)、静态法(饱和盐法)HOD、硫酸法)、露点法、干湿球法、电子传感器法。双压法和双温法是基于热力学P、V、T平衡原理,平衡时间长。劈裂法是基于绝对湿度和绝对干燥空气的精确混合。由于采用了现代测控手段,这些装置可以制作得相当精确,但由于其复杂、设备昂贵、操作费时,作为标准测量,其测量精度可达(+2%)rh以上。静态法中的饱和盐法是湿度测量中最常用的方法,简单可行。然而,饱和盐法要求液相和气相之间有严格的平衡,要求环境温度具有较高的稳定性。它需要很长的时间来平衡,在低湿度下使用也需要更长的时间。尤其是当室内湿度和瓶内湿度相差较大时,每个开口需要6-8小时的平衡。露点法是热力学的直接结果,用来测量湿空气达到饱和时的温度。它具有精度高、测量范围广等特点。精密露点仪的测量精度可达到(+0.2c)甚至更高。但基于现代光电原理的冷镜露点仪价格昂贵,常与标准湿度发生器配套使用。干湿球法,发明于18世纪。它历史悠久,最常用。干湿球法是一种间接法。采用干湿球方程计算湿度值。这个方程是有条件的:湿球附近的风速必须大于2.5米/秒。普通的干湿球温度计简化了这个条件,因此其精度仅为相对湿度的5-7%。电子湿度传感器产品和湿度测量属于上世纪90年代兴起的行业,近年来国内外湿度传感器的研究和开发取得了很大进展。湿度传感器从简单的湿度传感器迅速发展到集成化、智能化、多参数检测,为新一代温湿度测控系统的开发创造了有利条件,也提高了湿度测量的质量。传感器的静态特性是指静态输入信号的传感器输出和输入之间的关系。因为此时输入和输出都与时间无关,它们之间的关系是,传感器的静态特性可以用无时间变量的代数方程来描述,也可以用输入作为横坐标,输出作为纵坐标。表征传感器静态特性的主要参数有线性度、灵敏度、滞后性、重复性、漂移等。3.2传感器选型在本系统的设计中,传感器主要分为温度传感器和湿度传感器两类,因此有必要对这两类传感器进行选择。3.2.1温度传感器的选择在系统设计中,通常有三种温度传感器可供选择:热阻式温度传感器、模拟集成式温度传感器和数字温度传感器。方案一:热阻式温度传感器是利用导体或半导体的电阻值随温度升高而增大的特性制成的。在这种传感器的测量中,温度信号转化为热电势的电信号。电信号最终通过一定的处理传送到计算机。根据计算机获取的数据,将温度信号转换成热电势的电信号。通过对现场温度的转换,最终得到测量温度。它主要由铂、铜、镍等热电阻组成。它具有测量范围宽、测量精度高、数据传输方便等特点。其中铂电阻最好。由于其金属丰度差,在恶劣的环境中不易腐蚀,抗氧化性强,因此铂电阻也得到了广泛的应用。用于工业领域的温度测量。铜和镍电阻具有很强的金属活性,容易被酸和其他环境腐蚀和氧化。主要用于非腐蚀性介质中,工业上用于-50~+180℃的测量。方案二:采用模拟集成温度传感器。在方案的替代方案中,采用了美国分析仪器公司开发的单片集成双端温度传感器AD590。模拟集成温度传感器通过电流输出方式传输温度数据,其输出电流与当前环境的温度成正比。它的应用范围是-55~+150C,低成本的单片集成电路和无外围电路的特点,使该芯片在温度测量领域具有很好的预防性应用。与传统的模拟传感器不同,它不需要线性化、精密运算放大器、电阻测量和冷端补偿电路。在使用过程中,用户只需将芯片的输出电流转换成电压即可。经过A/D转换器后,模拟信号可以转换成数字信号。此外,当AD590用于长线路传输时,它对电路中的电压降不敏感。任何绝缘性能好的双绞线均可用于电流传输,传输距离可达数百英尺。因此,很有可能选择这种模拟集成温度传感器作为替代。方案三:采用数字温度传感器。当使用数字温度传感器作为替代方案时,有两种设备可供选择:美国达拉斯的DS18B20和瑞士Sensirion的DHT11。下面简要介绍这两种器件及芯片的选择。DS18B20是一个支持“单线总线”接口的温度传感器。它具有小型化、低功耗、高性能、抗干扰能力强、易于配置微处理器等特点。它可以直接将温度信号转换成数字信号,供主控制器使用。DHT11类似于DS18B20,属于数字温度传感器,采用与DS18B20类似的单线数据传输方式。除了性能上的细微差别外,DS18B20和DS18B20的主要区别在于除了能够输出温度信号外,还可以输出湿度信号来检测环境。通过对以上三种备选方案的分析可以知道,热电阻式温度传感器虽然测量范围广,输出精度高,但由于铂电阻价格相对来说较高,并且在使用了该种温度传感器之后,后续还需要加上信号放大电路、滤波电路以及A/D转换电路等,这无疑为系统的成本加大了许多,因此综合考虑,该种温度传感器并不适用于本系统的粮仓温湿度监控当中;第二种模拟集成温度传感器具有良好的线性输出,测量范围也比较广,并且适合长距离传输,但由于其后续需要添加模数转换系统,这样做不但使得系统的成本得到了增加还由于元件的增加,降低了系统的可靠性。因此系统最终将传感器的选型定位在数字型温度传感器中。3.2.2湿度传感器的选择在湿度传感器的选择上,也有许多传感器供用户选择,正常使用的有HOS-21湿敏传感器、HS1101湿度传感器以及DHT11数字湿度传感器,由温度传感器的选型方案可知,数字式传感器由于其接口少、能直接输出数字信号、不需要外接信号处理电路等优点,应该成为本系统设计的首要选择,因此在综合考虑以上的因素之后选用DHT11温湿度传感器来作为系统的传感器选型。这是因为DHT11不但能够对环境的温度进行测量,还能够对环境的湿度进行检测,这恰恰能够满足系统的要求,并且由于温度与湿度的信号都以数字化的形式进行输出,不需要外接其他的信号处理以及A/D转换模块,因此设计最终选择DHT11温湿度传感器来作为系统的温湿度参数检测。3.3传感器检测电路DHT11数字温湿度传感器是一种具有校准数字信号输出的温湿度复合传感器。采用特殊的数字模块采集技术和温湿度传感技术,确保产品具有高可靠性和优异的长期稳定性。该传感器由电阻式湿度传感器和NTC温度传感器组成,并与高性能8位单片机相连。因此,该产品具有质量优良、响应速度快、抗干扰能力强、性价比高等优点。每个DHT11传感器都在非常精确的湿度校准实验室中进行校准。校准系数以程序的形式存储在OTP存储器中。在传感器内部的信号处理过程中调用这些校准系数。单线串行接口,使系统集成简单快捷。超小尺寸,功耗极低,信号传输距离可达20米以上,是各种应用的最佳选择,甚至是最苛刻的应用。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。DHT11传感器如下2-1所示:图2-1DHT11传感器(1)引脚介绍:Pin1:(VDD),电源引脚,供电电压为3~5.5V。Pin2:(DATA),串行数据,单总线。Pin3:(NC),空脚,请悬浮。Pin4(VDD),接地端,电源负极。(2)接口说明:当连接线长度小于20米时,建议使用5K上拉电阻;当连接线长度大于20米时,建议使用合适的上拉电阻。图2-2DHT11典型应用电路(3)数据帧的描述:DATA它用于微处理器和DHT11之间的通信和同步。采用单总线数据格式。每次通信时间约为4ms。数据分为小数部分和整数部分。具体格式如下。当前的小数部分用于将来的扩展,读数为零。操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据当数据传输正确时,校验和数据等于“8位湿度整数数据+8位湿度小数数据+8位双温整数数据+8位温度小数数据”结果的最后8位。(4)电气特性:VDD=5V,T=25℃表2-1DHT11的电气特性参数条件Mintypmax单位供电DC355.5V供电电流测量0.52.5mA平均0.21mA待机100150uA采样周期秒1次注:采样周期间隔不得低于1秒钟。3.4单片机最小系统在主控制器选择上,设计选用美国ATMEL公司生产的AT89C52单片机来作为系统的主控芯片。AT89C52是一款8位高性能单片机。它包含4kb可重复可擦除只读存储器(perom)和128字节随机存取数据寄存器(ram)。该系列设备采用高密度、非易失性存储技术制造,与标准的MCS-51指令系统完全兼容。由于该芯片采用高性能的CMOS技术生产,因此该芯片在使用过程中具有良好的低功耗以、稳定性与可靠性。其主要性能参数如下所示。(1)单片机与MCS-51产品指令系统完全兼容;(2)内部集成4K字节的可擦写Flash高速存储器;(3)128×8字节的内部RAM;(4)32个可编程I/O口;(5)2个16位的定时器/计数器;(6)片内含有6个中断源;(7)可编程的串行UART通道。为了满足不同用户的需求,AT89C52设计了多种封装形式以供用户进行选择,其封装形式主要有PDIP、PQFP、TQFP以及PLCC等,用户可以根据制版的需要选用合适的封装形式。在设计中为了方便制作电路板,选择PDIP的封装形式。其引脚图如图3.5所示。图3.5AT89C52单片机的PDIP封装引脚图由图3.5可知,整个AT89C52共有40个引脚,这40个引脚总共可以分为3类,分别是电源和时钟引脚、编程控制引脚以及I/O引脚。下面就对这3类引脚进行简要的说明。(1)电源及时钟类引脚有两个电源插脚,VCC(插脚40)和GND(插脚20),其中VCC是单片机电源的正极。官方手册建议使用+5V单极电源为单片机供电。接地脚是电源的负极,只需接地即可。AT89C52有两个时钟引脚XTAL1(引脚19)和XTAL2(引脚18),XTAL1是振荡电路的输入端,XTAL2是片上振荡电路的输出端。8051时钟有两种方式:一种是片内时钟振荡方式,其中石英晶体和振荡电容需要连接在两个引脚外。振荡电容值一般为10pF~30pF,另一个为外部时钟模式,XTAL1接地,外部时钟由XTAL2引脚输入。在设计中使用片外石英晶体振荡的方式来对单片机提供时钟信号,其接线方式如图3.6所示。使用片外的晶体振荡,不但可靠性高而且接线简单,具有较高的使用价值。图3.6单片机晶振电路(2)编程控制引脚共有4个,其各自引脚号以及引脚描述如表3.1所示。表3.18051编程引脚描述引脚号引脚说明引脚描述9RST复位引脚29/PSEN程序存储器允许输出控制端30ALE/PROG编程引脚31EA/VPP外部ROM扩展引脚由于在设计中只使用到了RST引脚,因此只对RST引脚进行说明,而对于另外的3个引脚则不进行详细的说明。当连续输入两个机器循环时,当RST引脚复位有效时,单片机复位后程序计数器返回零,并且单片机的程序指针指向第一条程序,等待执行。在设计中使用上拉电平的方式来对单片机进行复位。其复位电路如图3.7所示。图3.7单片机复位引脚电路如图3.7所示,当按下开关按钮时,RST引脚通过电阻R7连接到系统+5V电源。只要时间保持在两个机器周期内,复位操作就由单片机实现。3.6按键电路与报警灯在单片机组成的小型系统中,有些需要人机交互功能,按键是最常用的输入方式。本电路中的按键电路连接单片机,通过按键电路,能够对温湿度的报警参数进行设置。通过OK、SET、ADD、DEC等四个按键调节并保存,其中K1为设置的保存,K2为温湿度数值的设置选择,可对温度的上下限、湿度的上下限进行项目选择,K3为温湿度上下限增加,K4为温湿度上下限的减小。图3.8按键电路图如图3.9所示的温湿度报警灯,分别是温度过高、温度过低、湿度过高、湿度过低的LED报警设置,若温度过高,则第一个灯报警;若温度过低,则第二个灯报警;若湿度过高,则第三个灯报警;若湿度过低,则第四个灯报警。图3.9温湿度报警灯

4系统的软件设计4.1软件系统开发工具及主流程图4.1.1软件开发工具KeilUvision4是一个C语言开发系统,由美国的KeilSoftwareCompany开发。KeilUvision4可用于开发多种单片机的软件,包括8051系列单片机。Keiluvision4提供了丰富的库功能和强大的集成开发和调试工具。它已成为世界上应用最广泛的单片机开发软件。合理的设计使得keiluvision4能够高效地生成目标代码,更好地体现了基于模块化开发大型软件的优越性。C51工具包中的WINDOWS和FORDOS的C51集成开发环境(IDE)可以完成编辑、编译、连接、调试和仿真的整个开发过程。开发人员可以使用IDE本身或其他编辑器编辑C或汇编源文件。然后是目标文件(OBJ)分别由C51和A51编译器编译和生成。对象文件可以由LIB51创建以生成库文件,也可以通过L51连接与库文件一起定位以生成绝对对象文件(。ABS)。通过调试器DSCOPE51或TSCOPE51将ABS文件从OH51转换为源代码级调试的标准十六进制文件。它们也可以通过模拟器直接调试或直接写入程序存储器,如EPROM。4.1.2系统软件总体流程图整个系统通电后,下位机的温湿度检测模块采集当前环境中的温湿度,数据采集模块测得环境的温湿度之后,将数据传输至主控制器,主控制器根据接收到的温湿度数据与预设值进行判断,若现场检测得到的温湿度参数处于系统的要求之内,则返回温湿度检测模块继续下一个周期的检测,若检测到当前环境中的温湿度超出预设值,则根据事先设定好的控制方式来启动相应的设备对环境中的温湿度进行调节,直到现场环境中的温湿度达到环境设定的指标。在系统的整个工作过程中,上位机始终与下位机保持通信状态,并且当前系统中的温湿度信号会显示在上位机软件中,用户可以对检测得到的信号进行存储、编辑等操作。根究系统的工作过程可以得到系统软件总体流程图如图4.1所示。图4.1系统软件主流程图在确定了系统的主流程图之后,下面将分别对各个子程序进行介绍。4.2温湿度采集模块的软件设计总线的空闲状态为高。主机拉下总线,等待DHT11响应。主机将总线拉下超过18毫秒,以确保DHT11能够检测到启动信号。DHT11接收到主机启动信号后,等待主机启动信号结束,然后发送80us低电平响应信号。主机启动信号发送后,等待20-40us后读取DHT11响应信号。主机发出启动信号后,可以切换到输入模式或输出高功率平均值,总线可以拉起电阻。图4.2DHT11时序图总线为低电平,表示DHT11发送响应信号。DHT11发送响应信号后,将总线提升80us,准备发送数据。每个位数据以50us低电平间隙开始。高电平的长度决定数据位是0还是1。格式如下图所示。如果读取响应信号为高电平,DHT11不响应,请检查。当最后一位数据传输完成时,DHT11将总线50us拉下来,然后总线将上拉电阻拉上去,进入空闲状态。如图4.3所示DHT11接线图。图4.3DHT11接线图4.3显示模块软件的设计在设计中需要对当前环境中的温度和湿度信息进行显示。系统使用液晶来对数据进行显示,在综合考虑市场上主流的液晶显示屏后选用1602来对数据进行显示。图4.41602显示子程序流程图从上面的介绍可以看出,1602采用并行的数据显示方式,用户可以自行设定数据显示的方式与位置。其基本操作时序如表4.2所示。表4.21602基本操作时序操作对应指令读状态RS=L,R/W=H,E=H读数据RS=H,R/W=H,E=H写指令RS=L,R/W=L,D0~D7=指令码,E=高脉冲写数据RS=H,R/W=L,D0~D7=数据,E=H高脉冲从表4.2可以得出1602显示数据的流程图如4.4所示当1602接通电源时,需要先初始化1602,包括1602启用端口的关闭、显示模式的设置以及光标是否显示。其初始化子程序如下所示。Voidint(){ lcden=0;//关闭LCD使能 write_com(0x38);//设置16×2显示,5×7点阵,8位数据接口write_com(0x0c);//设置开显示,不显示光标write_com(0x06);//写一个字符后地址指针加1write_com(0x01);//显示清0,数据指针清0}

5系统仿真与调试5.1系统调试在该部分的调试中,由于时间有限,没能制作出实物PCB板来对系统进行调试,只是利用了Proteus仿真软件来对系统的一部分功能进行仿真。使用KeiluVeision对程序进行编译,生成HEX文件之后,就可以将HEX文件下载到单片机中利用Proteus软件进行调试。Protus软件是英国Labcenter电子公司发布的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还可以对单片机和外围设备进行仿真。它是目前模拟单片机和外围设备的最佳工具。proteus是世界上著名的EDA工具(仿真软件)。从原理图布局、代码调试到单片机与外围电路的协同仿真、一键开关到印刷电路板的设计,真正实现了从概念到产品的完整设计。目前,它是世界上唯一集成电路仿真软件、印刷电路板设计软件和虚拟模型仿真软件的设计平台。处理器型号支持8051、HC11、PIC、DSPIC33、AVR、ARM、8086和MSP430。2010年,Cortex和DSP处理器增加,其他处理器不断增加。在编译方面,它也支持IAR、Keil和MPLAB等多种编译。由于在Proteus库中含有DHT11器件,因此可以直接用来进行系统的仿真。系统仿真界面如图5.1所示。图5.1温湿度测量系统仿真界面值得注意的是,在设计中使用直流电机来模拟实际应用中偏差执行机构,即除湿器或散热风扇。当达到预设值的时候,电机工作来模拟执行器的启动。单片机程序加载完毕就可以对程序进行仿真调试,程序运行之后可以从1602中直观地得到当前环境中的温度以及湿度的信息。其显示结果如图5.2所示。图5.2系统仿真结果由图5.2可以看出,当前系统环境的湿度为84.6%,超过了预设值,因此电机启动来对环境进行除湿。至此可以看出,设计的系统完全可以达到实际应用的要求。5.3调试中出现的问题及解决方案系统的调试过程并不是一帆风顺的,在调试的过程中发生了一些错误,但是在老师的指导下最终找出问题并纠正了设计中存在的错误及不合理的地方。设计中出现的问题及解决方案主要有以下几个方面。(1)在电源模块的仿真过程中,发现调试输出值不能始终满足设计要求,在排查了原理上的错误之后发现原来是没有对变压器线圈的匝数进行设定,最后设定了线圈的匝数之后得到了预期的结果;(2)在使用Protues进行软件的仿真时,发现1602出现了乱码的现象。后来经过一步步的调试之后才发现在调用显示程序时,没有事先对1602进行初始化,在显示程序中加入初始化程序之后得到了正确的结果;(3)在仿真初始,Protues总是提示P0口出现逻辑错误,虽然不影响结果的输出,但是在真正制版的时候肯定会对电路产生影响。后来,经过调查,发现1602的繁忙状态在数据发送到1602显示时没有被判断出来。后来,在设计中加入了忙碌状态后,系统工作正常,数据端口没有出现逻辑错误提示。

结论本设计以档案室温湿度环境控制为研究对象。在详细分析了温湿度对档案纸的影响后,提出了一种基于单片机的温湿度测控系统。整个设计的主要工作如下。(1)通过查阅相关资料以及国家标准,明确了环境温湿度对于档案室资料的影响,并以此为出发点提出了以温湿度控制为主要目标的粮仓温湿度测控系统;(2)针对前一部分中提出的问题,提出了利用温湿度传感器来采集环境温湿度,利用单片机来控制整个系统的设计方案。(3)通过对市面上主流的温湿度传感器进行分析与选型,最终确定以DHT11温湿度传感器来作为现场环境中的温湿度采集;(4)设计了以DHT11为温湿度采集装置,AT89C52为系统主控芯片,1602为显示设备的硬件电路;(5)针对所设计的硬件电路,以Keil-uversion为开发工具,Proteus为仿真工具,multisim为功率仿真工具,设计了系统的软件和仿真调试。通过仿真和调试,表明所设计的系统完全能够满足温湿度测量和控制的要求。仿真结果表明,整个设计完全能满足温湿度测量和控制的要求,但整个系统仍存在一些问题和改进,需要在后续研究中加以改进。(1)所设计的系统只含有一个温湿度传感器,在实际的应用当中应该在同一个环境中放置多个温湿度传感器从而实现分布式测量系统,更符合现代测控技术的发展要求;(2)在偏差执行机构的控制上该设计没有引入算法,在实际的应用中应当引入算法的控制,譬如PID算法、模糊算法、神经网络控制算法等,通过算法的引进可以大大提高执行器的效率(3)在以后的工作与学习中可以对人机交互界面尽心更完善的开发,譬如引进现场总线来对各个节点的温湿度数据进行传输,或者利用无线数据传输的方法,开发出手机APP,这样无论在什么地方,工作人员都能够对粮仓中的温湿度环境进行监控。参考文献[1]冯超,徐艳蕾.基于物联网的粮食仓库远程监测系统设计[J].农业现代化研究,2017,38(02):328-334.[2]徐海刚,段朝伟.粮仓智能监控系统的设计与实现[J].河南机电高等专科学校学报,2015,23(06):4-6.[3]吴海滨.基于单片机控制的粮仓测温及通风系统设计[J].电子测试,2016(13):28-29.[4]刘娜.基于ZigBee模块粮仓温湿度测控系统[J].单片机与嵌入式系统应用,2016,16(05):69-72.[5]赵方,祁泽刚,郑晓茜.粮库温度的多点检测及远程监控系统[J].农机化研究,2015,37(05):86-90.[6]李小凡,李慧媛.粮库粮情全数字无线测控系统设计与实现[J].中国农机化学报,2015,36(06):221-224+229.[7]高德欣,刘芳,张如耀.基于Android的轮胎模具粮仓温湿度无线监控系统设计[J].自动化与仪表,2016,04:30-33.[8]杨清志,王杰.基于DHT21的中药材粮仓温湿度无线监控与自动调节系统设计[J].廊坊师范学院学报(自然科学版),2016,02:36-39.[9]徐德明,杨清志.基于AT89S52中药材粮仓温湿度自动监控与调节系统的设计[J].绥化学院学报,2016,09:158-160.[10]朱高中.基于单片机的粮仓温湿度远程监控系统的设计[J].湖北农业科学,2013,03:677-681.[11]GaoGuanwang,WangYanpeng,ShaZhanyou.TheDesignofEmbeddedMCUNetworkMeasureandControlSystem[J].EnergyProcedia,2012,17.[12]DawoonHan,You-CheolJang,Sung-NamOh,RohitChand,Ki-TaeLim,Kab-IlKim,Yong-SangKim.MCUbasedreal-timetemperaturecontrolsystemforuniversalmicrofluidicPCRchip[J].MicrosystemTechnologies,2014,20(3).

附录源代码#include<reg52.h>#include<intrins.h>#include<absacc.h>#include<math.h> //包含头文件#defineucharunsignedchar#defineuintunsignedint //宏定义//定义四个输出端口sbitLed_jiashi=P3^4; //加湿sbitLed_qushi=P3^3; //去湿sbitLed_jiangwen=P3^1; //降温sbitLed_shengwen=P3^2; //升温//定义三个设置按键sbitKey_SET=P2^0; //设置按键sbitKey_ADD=P2^1; //加按键sbitKey_SUB=P2^2; //减按键sbitKey_OK=P2^3; //确定按键//定义24C02数据口sbitSCL=P1^0;sbitSDA=P1^1;//定义DHT11数据口sbitDATA=P1^7;sbitbuzz=P3^5; //蜂鸣器接口//定义LCD1602端口sbitE=P1^3; //1602使能引脚//sbitRW=P2^6; //1602读写引脚 我们只需要向液晶里写数据,不需要读取数据,所以就把读写引脚直接接地,程序里就不用单独控制了sbitRS=P1^2; //1602数据/命令选择引脚//定义全局变量ucharU8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp; //定义读取温湿度变量ucharU8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;ucharMode,humidity,temperature; //设置模式、读取到的湿度温度数据存储变量charTH,TL,HH,HL; //温湿度的上下限变量bitbdataFlagStartRH,hot,cold,humid,dry,BJ; //开启转换温湿度标志位、热冷湿干和报警变量//定时器0初始化voidTimer0_Init(){ ET0=1;//允许定时器0中断 TMOD=0x11;//定时器工作方式选择 TL0=0xb0; TH0=0x3c;//定时器赋予初值50ms TR0=1;//启动定时器T0}//定时器0中断voidTimer0_ISR(void)interrupt1using0{ ucharRHCounter; //定义计数变量 TL0=0xb0; TH0=0x3c;//定时器赋予初值 RHCounter++; //每进一次中断就是50ms,此变量加一 if(RHCounter%10==0&&BJ==1) //加到10的整数倍,并且报警标志位为1 buzz=!buzz; //开启报警,每500ms蜂鸣器引脚取反一次,就是蜂鸣器一秒响一次 elseif(BJ==0) //报警标志位为0时 buzz=1; //关闭报警 //每2秒钟启动一次温湿度转换if(RHCounter>=40) //计数到40次,就是2s,启动一次温湿度转换{FlagStartRH=1; //启动转换变量置1 RHCounter=0; //计数变量清零}}/*以下程序为24c02的程序,都是官方的实例程序,可以参考时序图理解,都是固定的*//*********************************BASEDRIVE**********************************/voidDELAY(unsignedintt) //延时函数{ while(t!=0) t--;}/******************************IICDRIVE******************************/voidIICStart(void) //24c02的开始函数,关于24c02的函数多看下24c02的手册{SCL=0; //SCL引脚拉低 DELAY(1); //短延时SDA=1;SCL=1;DELAY(1); //SDA拉高,SCL拉高,短延时SDA=0;DELAY(1); //SDA拉低,短延时SCL=0; //SCL拉低}voidIICStop(void) //停止{ SDA=0;SCL=1;DELAY(1); //注释略SDA=1;DELAY(1);SCL=0; }voidSEND0(void) //发送{ SDA=0; SCL=1; DELAY(1); SCL=0;}voidSEND1(void){ SDA=1; DELAY(1); SCL=1; DELAY(1); SCL=0;}bitCheck_Ack(void) //应答{ unsignedcharerrtime=250; //定义变量 DELAY(1); SCL=1; DELAY(1); CY=SDA; //SDA引脚高电平就是1,低电平就是0,赋值给CY while(CY) //如果CY为1,就执行此while { errtime--; //变量减 CY=SDA; //赋值 if(!errtime) //判断有没有减到0 { IICStop(); //停止24C02 return1; //返回1 } } DELAY(1); SCL=0; return0;}voidWrite_byte(unsignedchardat){unsignedchari; for(i=0;i<8;i++) { if((dat<<i)&0x80) SEND1(); else SEND0(); }}unsignedcharRead_byte(void){ unsignedchari,temp=0; for(i=0;i<8;i++) {SDA=1; SCL=1; DELAY(1); if(SDA==1) { temp=temp<<1; temp=temp|0x01; } else temp=temp<<1; SCL=0; } returntemp;}/************************************EEPROMDRIVE Addr:from0x00-->*************************************/unsignedcharrdeeprom(unsignedcharaddr){unsignedchartemp=0; bitflag=0; IICStart(); Write_byte(0xa0);Check_Ack(); Write_byte(addr); Check_Ack(); IICStart(); Write_byte(0xa1); Check_Ack(); temp=Read_byte(); SEND1(); IICStop(); returntemp;}voidwrteeprom(unsignedcharaddr,unsignedchardat){ IICStart(); Write_byte(0xa0); Check_Ack(); Write_byte(addr); Check_Ack(); Write_byte(dat); Check_Ack(); IICStop();}/*以下程序为DHT11温湿度传感器程序,官方的实例程序*/voidDelay1(uintj) //延时程序{uchari;for(;j>0;j--){ for(i=0;i<27;i++);}}voidDelay_10us(void) //延时函数,大约10us,不精确{uchari;i--;i--;i--;i--;i--;i--;} voidCOM(void) //读取温湿度函数{uchari;for(i=0;i<8;i++) { U8FLAG=2; while((!DATA)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0;if(DATA)U8temp=1; U8FLAG=2; while((DATA)&&U8FLAG++); //超时则跳出for循环 if(U8FLAG==1)break; //判断数据位是0还是1 //如果高电平高过预定0高电平值则数据位为1 U8comdata<<=1; U8comdata|=U8temp;//0}//rof}////温湿度读取子程序////以下变量均为全局变量//温度高8位==U8T_data_H//温度低8位==U8T_data_L//湿度高8位==U8RH_data_H//湿度低8位==U8RH_data_L//校验8位==U8checkdata//调用相关子程序如下//Delay();,Delay_10us();,COM();//ucharRH(void){//主机拉低18msDATA=0; Delay1(180);//原来为5 DATA=1; //总线由上拉电阻拉高主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); //主机设为输入判断从机响应信号 DATA=1; //判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行 if(!DATA) //T! { U8FLAG=2; //判断从机是否发出80us的低电平响应信号是否结束 while((!DATA)&&U8FLAG++); U8FLAG=2; //判断从机是否发出80us的高电平,如发出则进入数据接收状态 while((DATA)&&U8FLAG++); //数据接收状态 COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; DATA=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; } return1; } else//传感器不响应 { return0; }}/*********************************************************************文件名:液晶1602显示.c*描述:该程序实现了对液晶1602的控制。***********************************************************************//*********************************************************************名称:delay()*功能:延时,延时时间大概为140US。*输入:无*输出:无***********************************************************************/voiddelay() { inti,j; for(i=0;i<=10;i++) for(j=0;j<=2;j++);} /*********************************************************************名称:enable(uchardel)*功能:1602命令函数*输入:输入的命令值*输出:无***********************************************************************/voidenable(uchardel){ P0=del; //数据发送到P0口 RS=0; //RS引脚拉低 E=1; //E引脚高电平 delay(); //延时 E=0; //E引脚低电平 delay(); //延时}/*********************************************************************名称:write(uchardel)*功能:1602写数据函数*输入:需要写入1602的数据*输出:无***********************************************************************/voidwrite(uchardel){ P0=del; //同上 RS=1; E=1; delay(); E=0; delay();}/*********************************************************************名称:L1602_init()*功能:1602初始化,请参考1602的资料*输入:无*输出:无***********************************************************************/voidL1602_init(void){ enable(0x38); //设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据 enable(0x0c); //开显示不显示光标 enable(0x06); //整屏不移动,光标自动右移 enable(0x01);//清屏}/*********************************************************************名称:L1602_char(ucharhang,ucharlie,charsign)*功能:改变液晶中某位的值,如果要让第一行,第五个字符显示"b",调用该函数如下 L1602_char(1,5,'b')*输入:行,列,需要输入1602的数据*输出:无***********************************************************************/voidL1602_char(ucharhang,ucharlie,charsign){ uchara; //定义变量 if(hang==1)a=0x80; //如果hang变量为1,让地址数据为0x80就是第一行的 if(hang==2)a=0xc0; //如果hang变量为0,让地址数据为0xc0就是第二行的 a=a+lie-1; //列数据减一,因为液晶屏的列是从0开始的 enable(a); //发送行和列数据 write(sign); //写显示内容}/*********************************************************************名称:L1602_string(ucharhang,ucharlie,uchar*p)*功能:改变液晶中某位的值,如果要让第一行,第五个字符开始显示"abcdef",调用该函数如下 L1602_string(1,5,"abcdef;")*输入:行,列,需要输入1602的数据*输出:无***********************************************************************/voidL1602_string(ucharhang,ucharlie,uchar*p){ uchara; if(hang==1)a=0x80; //第一行地址 if(hang==2)a=0xc0; //第二行地址 a=a+lie-1; //行和列数据加一起 enable(a); //发送行列数据 while(1) //进入循环 { if(*p=='\0')break; //发送完字符串后跳出while循环 write(*p); //没发送完就继续发 p++; //字符串指针地址加1 }}//显示整型的温湿度数据用,共占用4位,其中一位符号位voidL1602_int(ucharhang,ucharlie,intnum){uinttemp;uintgewei,shiwei,baiwei,sign;if(num>=0) //如果温度值大于等于0sign=0; //符号为正else //反之sign=1; //符号为负temp=abs(num); //温度值取绝对值baiwei=temp/100; //除以100得到温度值百位temp=temp-baiwei*100; //温度值减去百位得到十位和个位的数shiwei=temp/10; //除以10得到十位的数据gewei=temp-shiwei*10; //减去十位的数据得到个位的数num=abs(num); //温度取绝对值if(num>=100) //如果温度大于100{//L1602_char(hang,lie+1,baiwei+48); L1602_char(hang,lie+2,shiwei+48); //显示十位和个位 L1602_char(hang,lie+3,gewei+48);}elseif(num>=10) //温度大于10{if(sign==1) //负数时 L1602_char(hang,lie+1,'-'); //显示负号 L1602_char(hang,lie+2,shiwei+48); //显示十位和个位数L1602_char(hang,lie+3,gewei+48);}else //温度小于10{if(sign==1) //负数时 L1602_char(hang,lie+2,'-'); //显示负号 else //正数 L1602_char(hang,lie+2,''); //十位不显示L1602_char(hang,lie+3,gewei+48); //显示个位数}}voiddisplay() //显示函数{ if(Mode==0) //不是设置状态 { L1602_int(1,3,temperature); //显示温度数据 L1602_char(1,7,0xdf); //显示摄氏度的° L1602_int(1,12,humidity); //显示湿度数据 if(hot==1&&cold==0&&humid==0&&dry==0) //温度过高 {L1602_string(2,1,"It'sveryhot!");BJ=1;} //显示热,报警 elseif(hot==1&&cold==0&&humid==1&&dry==0) //温度高,湿度高 {L1602_string(2,1,"Hotandhumid!");BJ=1;} //显示热,湿,报警 elseif(hot==1&&cold==0&&humid==0&&dry==1) //温度高,湿度低 {L1602_string(2,1,"Hotanddry!");BJ=1;} //显示热,干,报警 elseif(hot==0&&cold==1&&humid==0&&dry==0) //温度低 {L1602_string(2,1,"It'sverycold!");BJ=1;} //显示冷,报警 elseif(hot==0&&cold==1&&humid==1&&dry==0) //温度低,湿度高 {L1602_string(2,1,"Coldandhumid!");BJ=1;} //显示冷,湿,报警 elseif(hot==0&&cold==1&&humid==0&&dry==1) //温度低,湿度低 {L1602_string(2,1,"Coldanddry!");BJ=1;} //显示冷,干,报警 elseif(hot==0&&cold==0&&humid==1&&dry==0) //湿度高 {L1602_string(2,1,"It'sveryhumid!");BJ=1;} //显示潮湿,报警 elseif(hot==0&&cold==0&&humid==0&&dry==1) //湿度低 {L1602_string(2,1,"It'sverydry!");BJ=1;} //显示干燥 elseif(hot==0&&cold==0&&humid==0&&dry==0) //都在范围内 {L1602_string(2,1,"Goodenvironment");BJ=0;} //显示环境好,关闭报警 } }/***按键函数***/voidKEY() //按键函数{ if(Key_SET==0) //设置按键按下 { Delay1(200); //延时去抖 if(Key_SET==0) //再次判断按键按下 { Mode++; //显示位加 TR0=0; //关闭定时器 Led_shengwen=1; Led_jiangwen=1; Led_jiashi=1; Led_qushi=1; //关闭四路继电器输出 hot=0; cold=0; humid=0; dry=0; //变量清零 if(Mode==1) //设置第一个位置 { L1602_string(1,1,"TH:CHH:%"); //初始化设置界面,第一行显示温度和湿度上限 L1602_char(1,8,0xdf); //显示摄氏度的° L1602_string(2,1,"TL:CHL:%"); //第二行显示温度和湿度的下限 L1602_char(2,8,0xdf); //显示摄氏度的° L1602_int(1,4,TH); //显示温度上限 L1602_int(1,12,HH); //显示湿度上限 L1602_int(2,4,TL); //显示温度下限 L1602_int(2,12,HL); //显示湿度下限 enable(0x80+6);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论