版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大棚温湿度采集控制系统摘要本设计为基于单片机的温湿度检测控制系统,采用模块化、层次化设计。用新型的智能温湿度传感器DHT11,主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,为显示提供信号,显示局部采用字符型LCD1602液晶显示器显示所测温度和湿度值,控制局部采用加湿设备、除湿设备、加温设备、降温设备控制温湿度的上下。本系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。关键词:温湿度;DHT11;单片机;STC89C52;检测GreenhouseTemperatureandHumidityControlSystemofCollectionABSTRACTThedesignfortheMCU-basedtemperatureandhumiditytestingsystem,Usingamodular,hierarchicaldesign.TheutilitymodelintelligenttemperatureandhumiditysensorDHT11,themainachievementofthetemperature,humiditymeasurement,thetemperatureandhumiditysignalsthroughthesensorsignalacquisitionandconversionintoadigitalsignal,usingMCUSTC89C52dataanalysisandprocessing,isprovidedfordisplayingsignal,displaypartadoptsthecharacterLCD1602LCDdisplaythemeasuredtemperatureandhumidityvalue.Thissystemhastheadvantagesofsimplecircuit,highintegration,stability,convenientadjustment,highdetectionprecision,andhasacertainpracticalvalue.Keywords:Thetemperatureandhumidity;DHT11;MCU;STC89C52;detection目录TOC\o"1-4"\h\z\u1绪论11.1选题背景11.2需求分析12总体设计22.1控制系统22.2测量局部62.3显示局部92.4控制局部123系统设计133.1硬件设计133.2软件设计144总结与展望16参考文献18附录一:设计实物图19附录二:程序21致谢38大棚温湿度采集控制系统1绪论1.1选题背景植被“设施栽培〞,即“保护地栽培〞。它是指在某种类型的保护设施内〔如阳畦、温室、大棚等〕,人为地创造适宜植被生长发育的最正确环境条件,在不同季节内,尤其是不利于植被生长的季节内进行植被栽培的一种措施。设施栽培是人类利用自然、改造自然的一种创造。由于设施内的条件是可以人为控制的,使得植被调节的周年生产得以实现。玻璃温室和塑料薄膜温室出现后,植被生产出现了划时代的变化。现在人们可以根据自己的意愿,随时生产出所需要的各种植被。可以说,这是“设施栽培〞的功绩。在不利于植被生长的自然环境中,温室能够创造适宜植被生长发育的条件。温室环境的调节主要包括日光、温度、湿度三个方面。·温度:根据植被生长的适宜温度进行温室温度调节,假设低于下限温度那么采取升温措施,通常采取电热增温和火力增温等,火力增温比拟方便。假设高于上限温度那么采取降温措施,通常通过水管降温和风扇降温,风扇降温比拟方便。·日光:遮荫是调节日照强度最好的方法,其具体做法是加盖遮阳网或草席,这种方法兼有降低温度的效果。·湿度:为满足温室植被对湿度的要求,可以在地上、台阶、盆壁洒水,还可以在空中悬挂湿布,以增加水分的蒸发,最好的方法是设置自动喷雾装置,自动调节湿度。如果湿度过大,容易导致植被病害,可以采用通风的方法来降低湿度,而且最好在室温与气温相差不大的时候进行。本系统注重温度和湿度的调节,光照强度没有考虑其中。1.2需求分析随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否认的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向开展。本设计所介绍的数字温湿度计与传统的温湿度计相比,具有读数方便,测量范围广,测量准确,其输出温湿度采用数字显示,该设计控制器使用单片机STC89C52,数字温湿度传感器使用DHT11,用LCD1602液晶屏,实现温湿度显示,用加湿设备、除湿设备、加温设备、降温设备控制温湿度的上下,能准确到达以上要求。随着时代的进步和开展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比拟成熟的技术,本文将介绍一种基于单片机控制的数字温湿度计,本温度计属于多功能温湿度计,可以设置上下报警温湿度,当温湿度不在设置范围内时,可以报警。2总体设计设计图如图2-1所示:测量局部测量局部控制系统显示局部控制局部图2-1总体设计框图2.1控制系统2.1.1STC89C52单片机简介STC89C52是单片机的一个型号。STC89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器〔RAM〕,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。STC89C52有40个引脚,32个外部双向输入/输出〔I/O〕端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本钱。8052单片机的引脚功能MCS-51系列单片机一般采用40个引脚,双列直插式封装,用HMOS工艺制造,其外部引脚排列如图2-2所示。其中,各引脚的功能为:图2-2STC89C52外部引脚图8052单片机的引脚⑴主电源引脚Vcc〔40脚〕:接+5V电源正端Vss〔20脚〕:接电源地端一般Vcc和Vss间应接高频去耦电容和低频滤波电容。⑵外接晶体或外部振荡器引脚XTAL1〔19脚〕:接外部晶振的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器OSC。当采用外部振荡器时,此引脚应接地。XTAL2〔18脚〕:接外部晶振的另一个引脚。在片内接至反相放大器的输出端和内部时钟电路的输入端。当采用外部振荡器时,此脚接外部振荡器的输出端。⑶控制信号线RST/VPD〔9脚〕:复位信号输入端,复位/掉电时内部RAM的备用电源输入端ALE/〔30脚〕:地址锁存允许/编程脉冲输入。用ALE锁存从P0口输出的低8位地址;在对片内EPROM编程时,编程脉冲由此输入。PSEN/〔29脚〕:外部程序存储器读选通信号,低电平有效。EA/VPP〔31脚〕:访问外部存储器允许/编程电压输入。EA为高电平时,访问内部存储器;低电平时,访问外部存储器。对片内EPROM编程时,此脚接21V编程电压。⑷多功能I/O口引脚8052单片机设有4个双向I/O口〔P0、P1、P2、P3〕,每一组I/O口线都可以独立地用作输入或输出口,其中:①P0口〔32~39脚〕——双向口〔三态〕,可作为输入/输出口,可驱动8个LSTTL门电路。实际应用中常作为分时使用的地址/数据总线口,对外部程序或数据存储器寻址时低8位地址与数据总线分时使用P0口:先送低8位地址信号到P0口,由地址锁存信号ALE的下降沿将地址信号锁存到地址锁存器后,再作为数据总线的口线对数据进行输入或输出。②P1口〔1~8脚〕——准双向口〔三态〕,可驱动4个LSTTL门电路。用作输入线时,口锁存器必须由单片机先写入“1〞,每一位都可编程为输入或输出线。③P2口〔21~28〕——准双向口〔三态〕,可驱动4个LSTTL门电路。可作为输入/输出口,实际应用中一般作为地址总线的高8位,与P0口一起组成16位地址总线,用于对外部存储器的接口电路进行寻址。④P3口〔10~17脚〕——准双向口〔三态〕,可驱动4个LSTTL门电路。双功能口,作为第一功能使用时,与P1口一样;作为第二功能使用时,每一位都有特定用途,其特殊用途如表2.1所示:
表2.1P3口特殊功能脚端口引脚第二功能注释P3.0RXD串行口数据接收端P3.1TXD串行口数据发送端P3.2/INT0外中断请求0P3.3/INT1外中断请求1P3.4T0定时/计数器0外部计数信号输入P3.5T1定时/计数器1外部计数信号输入P3.6/WR外部RAM写选通信号输出P3.7/RD外部RAM读选通信号输出2.1.2单片机最小系统所谓单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成。对于8052单片机,由于片内有4K的程序存储器,所以其最小系统除了单片机本身外,只需外接时钟电路与复位电路即可。复位电路单片机的复位分为上电自动复位、按键手动复位两种和看门狗强制复位三种等。上电复位通常利用电容的充放电来实现,按键复位那么可分为按键脉冲复位和按键电平复位两种,看门狗复位那么通过外接看门狗电路或软件看门狗程序实现。常见的上电复位和按键复位电路如图2-3所示。上电复位(b)按键脉冲复位(c)按键电平复位图2-3单片机复位电路时钟电路时钟电路用于产生单片机的根本时钟信号。8052的时钟信号可由内部振荡器产生,也可由外部电路直接提供。内部振荡器的输入和输出脚分别为XTAL1和XATL2,由XTAL2给单片机内部电路提供时钟信号。当时钟信号由外部电路提供时,外部时钟引入XTAL2,而XTAL1脚接地。两种时钟信号的连接电路如图2-4所示。〔a〕内部方式〔b〕外部方式图2-4单片机时钟电路2.2测量局部测量所用仪器是数字温湿度传感器DHT11。2.2.1DHT11简介图2-5DHT11封装图DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最正确选那么。产品为4针单排引脚封装。如图2-5所示。2.2.2操作过程1、接口说明建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用适宜的上拉电阻。图2-6DHT11温湿度传感器接线图2、电源引脚DHT11的供电电压为 3-5.5V。传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。电源引脚〔VDD,GND〕之间可增加一个100nF的电容,用以去耦滤波。3、串行接口(单线双向)DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数局部和整数局部,具体格式在下面说明,当前小数局部用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据〞所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取局部数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。通讯过程如图2-7所示图2-7通讯过程2.3显示局部显示局部是LCD1602液晶显示,如图2-8所示。图2-8正常工作LCD1602显示2.3.11602液晶简介LCD1602分为带背光和不带背光两种,基控制器大局部为HD44780,带背光的 比不带背光的厚,是否带背光在应用中并无差异,两者尺寸差异如图2-9所示。图2-9LCD1602规格引脚功能LCD1602采用标准的14脚〔无背光〕或16脚〔带背光〕接口,各引脚接口说明如表2.2所示。表2.2LCD1602引脚说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极2.3.2指令说明LCD1602液晶模块内部的控制器共有11条控制指令,如表2.3所示表2.3LCD1602内部控制器序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM〕10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容2.4控制局部2.4.1温湿度设置温湿度上下限控制设置如图2-10所示。〔a〕湿度下限设置界面(b)湿度上限设置界面(c)温度度下限设置界面(d)温度度上限设置界面图2-10温湿度上下限设置控制设备本系统控制设备采用加湿设备、除湿设备、加温设备、降温设备作为控制器,加湿设备、除湿设备、加温设备、降温设备分别控制湿度与温度,使得蔬菜大棚的温湿度得到控制。设计中,温湿度均可以设置上下限,按下k1键,出现温度上限的设置页面,按k2键为设置上限温度加,按k3键为设置上限温度减,按下k4键确认刷新,即成功设置温度上限。继续按下k1键,出现温度下限设置页面,按k2键为设置下限温度加,按k3键为设置下限温度减,再按下k4键确认刷新,即成功设置温度下限。继续按下k1键,出现湿度上限的设置页面,按k2键为设置上限湿度加,按k3键为设置上限湿度减,再按下k4键确认刷新,即成功设置湿度上限。继续按下k1键,出现湿度下限设置页面,按k2键为设置下限湿度加,按k3键为设置下限湿度减,再按下k4键确认刷新,即成功设置温度下限。3系统设计3.1硬件设计本设计的设计电路采用模块化、层次化设计,设计的电路原理图如图3-1所示。图3-1电路原理图主机与主要部件的选择:根据总体功能和性价比及其运行速度等因素的考虑,选用MCS-51系列的STC89C52为主机,满足上面的要求而且设计方便,不需要再存储扩展。数据存储片内设有128B,外部有8279的256B,而由于存入的数据是随时更新的且不计小数位,存入8个16进制数字,其总共需要的容量只有16B,已经够用。外部模温度、湿度采样,选用DHT11能够满足要求。系统各部件的连接方式如下:DHT11和单片机之间用单总线传输,DHT11的数据口与单片机的P1^0相连。液晶显示器的RS,RW和E分别与单片机的P2^5,P2^6,P2^7相连,数据输入口DB0-DB7分别与单片机P00-P07口相连。设置按键、按键加、按键减、确认刷新按键分别的单片机的P3^2,P3^3,P3^4,P3^5相连。单片机P1^1,P1^3分别为温度超过或低于上下限控制脚,P1^2,P1^4分别为湿度超过或低于上下限控制脚。控制脚通过控制加湿设备、除湿设备、加温设备、降温设备,调节温度及湿度。3.2软件设计系统软件程序基于Keiluvsion2开发平台,采用C51语言编写。本程序采用模块化程序方法:LCD初始化显示模块系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化局部包括以下方面的内容:(a)系统启动后,显示器上显示两行,第一行为“TEMPERATURE:00C〞,第二行显示为“HUMIDITY:00%〞(b)等待DTH11采集温度及湿度值。(c)系统进入正常工作状态。系统整体的工作方式如下框图所示程序流程图:图3-2DHT11数据采集流程图本系统采用DHT11温湿度传感器对蔬菜大棚内温湿度的采集并转换成数字信号,将信息提供应主控制器进行处理和分析,主控制器开始LCD初始化,进行延时等待提取DHT11温湿度传感器模块,将采集的信息处理后传给LCD1602显示,同时调用控制模块,与系统默认设定值比拟,系统温度上下限,湿度上下限默认值均为0,可通过设置按钮进行设置,按下设置按钮可对温度下限、上限,湿度下限、上限的顺序依次进行设置,温湿度均可以设置上下限,按下k1键,出现温度上限的设置页面,按k2键为设置上限温度加,按k3键为设置上限温度减,按下k4键确认刷新,即成功设置温度上限。继续按下k1键,出现温度下限设置页面,按k2键为设置下限温度加,按k3键为设置下限温度减,再按下k4键确认刷新,即成功设置温度下限。继续按下k1键,出现湿度上限的设置页面,按k2键为设置上限湿度加,按k3键为设置上限湿度减,再按下k4键确认刷新,即成功设置湿度上限。继续按下k1键,出现湿度下限设置页面,按k2键为设置下限湿度加,按k3键为设置下限湿度减,再按下k4键确认刷新,即成功设置温度下限。当蔬菜大棚实际温度超过设定温度上限时,系统将调用控制模块对降温设备控制,将蔬菜大棚的温度降低;当蔬菜大棚实际温度低于设定温度下限时,系统将调用控制模块对升温设备控制,将蔬菜大棚的温度升高;当蔬菜大棚实际湿度超过设定湿度上限时,系统将调用控制模块对除湿设备控制,将蔬菜大棚的湿度降低;当蔬菜大棚实际湿度低于设定湿度下限时,系统将调用控制模块对加湿设备控制,将蔬菜大棚的湿度提高。主程序流程图如图3-3所示。图3-3主程序流程图4总结与展望单片机是一门应用性和实践性很强的学科,很多人都想学习单片机,并且想知道如何学习单片机。熟悉单片机的人都知道,要学好单片机可不是一件容易的事,倒不是因为单片机很难学,而是很难找到一本专为单片机入门者而编写的教材。翻一下身边的单片机教材,都好似是为已经懂单片机的人而写的,一般先介绍单片机的硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计〔随便说一下,很多书中的电路设计已经过时,并且有些程序还是错误的〕。如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。学习使用单片机只能靠循序渐进的积累。学单片机不仅要学习理论知识,实践操作也很重要。学过单片机的人都有这样的经历,就是把自己写的程序烧录到单片机里面的时候会发现与自己想要的结果有很大的不同。这就是因为实践操作少了,经验缺乏的缘故。推荐大家从简单的东西学起,当我们积累了一定的东西之后就可以动手做一些比拟复杂的东西了。设计本系统的过程中遇到了很多的问题,在编写DHT11的测量程序的过程中遇到了很多的问题,刚开始始终的不到数据,研究了很长时间都弄不出来。同学提示我要注意一下时序,然后我又按照DHT11的通讯时序和接收时序将程序一条条的重写,在经过几次调试之后,终于得到了自己想要的结果;液晶显示局部也出了一点点小问题,就是送数据过去的时候忘了显示字符必须送字符的ASCII码。本系统具有较强的实用性,淘宝网上DHT11单片价格仅6.5元。作者对DHT11与DS18B20及一些水银温湿度测量器的测量数据进行了比拟,验证了DHT11测量数据的准确性和稳定性。低廉的价格、小巧的体积、准确稳定的测量数据、简单的单总线控制方式、简洁的电路连接,这些将使DHT11拥有良好的应用前景。1602液晶也比拟廉价,操作比拟简单。另外,本系统还具有较高的扩展性,可以集时钟,计算器,温湿度测量等于一体,具有一定的市场价值。参考文献[1]黄卜夫.欧洲设备安装总线综述[M].电子技术应用,2001〔No.4〕:7-10[2]戚作钧.无线电技术根底[M].第一版.北京:人民教育出版社,1959:165-183[3]WayneTomasi.电子通信系统[M].王曼珠,许萍,曾萍等译.第四版.北京:电子工业出版社,2002:137-141[4]AndrewS.Tanenbaum.计算机网络[M].熊桂喜,王小虎译.第三版.北京:清华大学出版社,1998:402-419[5]郑阿奇.计算机网络原理与应用[M].第一版.北京:电子工业出版社,2003:34-45[6]王耀南.计算智能信息处理技术及其应用[M].长沙:湖南大学出版社,1999附录一:设计实物图成品图显示控制当前为湿度59%温度21°C温湿度探头设置界面附录二:程序dht11.h程序#include<intrins.h>//_nop_();延时函数用#defineucharunsignedchar#defineuintunsignedintsbittemp_out=P1^1;sbithumi_out=P1^2;sbittemp_led=P1^3;sbithumi_led=P1^4;uintcount;uchards1,ds2,ds3,ds4;ucharU8FLAG,k;ucharU8count,U8temp;ucharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;ucharU8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;ucharU8comdata;uintU16temp1,U16temp2;sbitIO=P1^0;//voidDelay1(uintj){uchari;for(;j>0;j--){for(i=0;i<27;i++);}}voidDelay_10us(void){uchari=5;for(;i>0;i--);}voidCOM(void){uchari;for(i=0;i<8;i++){U8FLAG=2;//while((!IO)&&U8FLAG++);Delay_10us();Delay_10us();//Delay_10us();U8temp=0;if(IO)U8temp=1;U8FLAG=2;while((IO)&&U8FLAG++);////P2_1=0;//P2_1=1;//if(U8FLAG==1)break;U8comdata<<=1;U8comdata|=U8temp;}}//voidRH(void){IO=0;Delay1(180);IO=1;Delay_10us();Delay_10us();Delay_10us();Delay_10us();IO=1;if(!IO){U8FLAG=2;while((!IO)&&U8FLAG++);U8FLAG=2;while((IO)&&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;IO=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;}}}voidconvdat(){ds1=U8RH_data_H/10;ds2=U8RH_data_H%10;ds3=U8T_data_H/10;ds4=U8T_data_H%10;}lcd_1602.h程序#defineucharunsignedchar#defineuintunsignedintsbitRS=P2^5;sbitRW=P2^6;sbitE=P2^7;uchard;ucharcodetab_t[]={"TEMPERATURE:C"};ucharcodetab_h[]={"HUMIDITY:%"};ucharcodetab_time[]={"TIME:"};ucharcodetab_set_temp_H[]={"SET_TEMP_HIGH"};ucharcodetab_set_temp_L[]={"SET_TEMP_LOW"};ucharcodetab_set_humi_H[]={"SET_HUMI_HIGH"};ucharcodetab_set_humi_L[]={"SET_HUMI_LOW"};ucharcodetab_set_hour[]={"SET_HOUR"};ucharcodetab_lcd_num[]={'0','1','2','3','4','5','6','7','8','9'};voiddelay_1602(ucharx){uchara,b;for(a=0;a<10;a++){for(b=x;b>0;b--);}}voidwrite_cmd(ucharx){E=0;RS=0;RW=0;E=1;P0=x;delay_1602(50);}/*ucharread_dat(){RS=1;RW=1;E=1;d=P0;delay(5);returnd;}*/voidwrite_dat(uchary){E=0;RS=1;RW=0;E=1;P0=y;delay_1602(50);E=0;}voidbusy(){uchara;while(a==0x80){E=0;RS=0;RW=1;E=1;delay_1602(50);a=P0;}}voidinit_lcd(){busy();write_cmd(0x38);delay_1602(5);busy();write_cmd(0x01);delay_1602(5);busy();write_cmd(0x0C);delay_1602(5);}zxhr.c程序#include<reg52.h>//52单片机头文件#include<dht11.h>//温湿度传感器DHT11头文件#include<lcd_1602.h>//液晶屏1602头文件uchari,key_flag;ucharset_temp_H,set_temp_H_shi,set_temp_H_ge;//设定温度的变量ucharset_temp_L,set_temp_L_shi,set_temp_L_ge;//设定温度的变量ucharset_humi_H,set_humi_H_ge,set_humi_H_shi;//设置湿度的变量ucharset_humi_L,set_humi_L_ge,set_humi_L_shi;//设置湿度的变量sbitk1=P3^2;//定义按键K1sbitk2=P3^3;//定义按键K2sbitk3=P3^4;//定义按键K3sbitk4=P3^5;//定义按键K4/////////////////////////延时函数/////////////////////////////voiddelay(ucharx){uchara,b;for(a=0;a<20;a++){for(b=x;b>0;b--);}}/////////////////////////显示温度和湿度//////////////////////////voiddisp_t_h(){write_cmd(0x8c);write_dat(tab_lcd_num[ds3]);//显示温度十位write_cmd(0x8d);write_dat(tab_lcd_num[ds4]);//显示温度个位write_cmd(0xcc);write_dat(tab_lcd_num[ds1]);//显示温湿度十位write_cmd(0xcd);write_dat(tab_lcd_num[ds2]);//显示温湿度个位}///////////////////////开机显示////////////////////////////////////voiddisp_start(){for(i=0;i<16;i++){write_cmd(0x80+i);write_dat(tab_t[i]);//温度}for(i=0;i<16;i++){write_cmd(0xc0+i);write_dat(tab_h[i]);//湿度}}///////////////////////扫描按键////////////////////////////////voidkey_scan(){if(k1==0)//按下K1{//设置温度上限////////////////////////////////if(key_flag==0)//按键标志0{write_cmd(0x01);//清屏write_cmd(0x80);//显示位置第一行第一列for(i=0;i<13;i++)write_dat(tab_set_temp_H[i]);//显示SETTEMPERATURE字符while(k4==1)//按下K4{if(k2==0)//按下K2{while(k2==0);set_temp_H++;//设置温度数值加if(set_temp_H==100)//到100,清0set_temp_H=0;}if(k3==0)//按下K2{while(k3==0);//松手检测set_temp_H--;//设置温度数值减if(set_temp_H==0)//到0,加为100set_temp_H=100;}set_temp_H_ge=set_temp_H%10;//计算设置温度个位set_temp_H_shi=set_temp_H/10;//计算设置温度十位write_cmd(0xc6);write_dat(tab_lcd_num[set_temp_H_shi]);//显示设置温度个位write_cmd(0xc7);write_dat(tab_lcd_num[set_temp_H_ge]);//显示设置温度十位}delay(200);}//设置温度下限////////////////////////////////if(key_flag==1)//按键标志1{write_cmd(0x01);//清屏write_cmd(0x80);//显示位置第一行第一列for(i=0;i<13;i++)write_dat(tab_set_temp_L[i]);//显示SETTEMPERATURE字符while(k4==1)//按下K4{if(k2==0)//按下K2{while(k2==0);set_temp_L++;//设置温度数值加if(set_temp_L==100)//到100,清0set_temp_L=0;}if(k3==0)//按下K2{while(k3==0);//松手检测set_temp_L--;//设置温度数值减if(set_temp_L==0)//到0,加为100set_temp_L=100;}set_temp_L_ge=set_temp_L%10;//计算设置温度个位set_temp_L_shi=set_temp_L/10;//计算设置温度十位write_cmd(0xc6);write_dat(tab_lcd_num[set_temp_L_shi]);//显示设置温度个位write_cmd(0xc7);write_dat(tab_lcd_num[set_temp_L_ge]);//显示设置温度十位}}////设置湿度上限///////////////////////////////////////////////////if(key_flag==2)//按键标志2{write_cmd(0x01);//清屏write_cmd(0x80);//显示位置第一行第一列for(i=0;i<13;i++)write_dat(tab_set_humi_H[i]);//显示SETHUMIDITY字符while(k4==1){if(k2==0){while(k2==0);set_humi_H++;//设置湿度数值加if(set_humi_H==100)set_humi_H=0;}if(k3==0){while(k3==0);set_humi_H--;//设置湿度数值减if(set_humi_H==0)set_humi_H=100;}set_humi_H_ge=set_humi_H%10;//计算设置湿度个位set_humi_H_shi=set_humi_H/10;//计算设置湿度十位write_cmd(0xc6);write_dat(tab_lcd_num[set_humi_H_shi]);//显示设置湿度十位write_cmd(0xc7);write_dat(tab_lcd_num[set_humi_H_ge]);//显示设置湿度个位}}////设置湿度下限///////////////////////////////////////////////////if(key_flag==3)//按键标志3{write_cmd(0x01);//清屏write_cmd(0x80);//显示位置第一行第一列for(i=0;i<13;i++)write_dat(tab_set_humi_L[i]);//显示SETHUMIDITY字符while
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年能源销售合同3篇
- 2024年标准销售顾问服务协议模板版B版
- 2024年度地磅电子秤销售合同协议(升级版)3篇
- 研究生旅行课程设计要素
- 幼儿园手工美工课程设计
- 2024年度全国市场品牌代理权委托协议3篇
- 墩台课程设计六梁式
- 2024年聘请专业家教实施个性化教育培养的劳动合同3篇
- 窄凸缘拉伸件课程设计
- 2024年版个人仓储租赁承包协议模板版B版
- _ 基本粒子与宏观物体内在联系
- 象棋比赛积分编排表
- 工会新闻的写作培训讲义(共36页).ppt
- 小学赣美版六年级美术上册第二十课向往和平课件(16张)ppt课件
- 中药饮片购进验收记录表格模板
- TCM远红外发展初析
- 滑坡稳定性计算及滑坡推力计算
- 房地产开发企业土地增值税清算政策与实务操作(成都市)解读
- 房地产估计第九章假设开发法练习题参考答案
- [爆笑小品校园剧本7人]爆笑小品校园剧本
- 第五章 逆向选择
评论
0/150
提交评论