《基于单片机的大棚温湿度采集控制系统-毕业(设计)论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的大棚温湿度采集控制系统-毕业(设计)论文.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大棚温湿度采集控制系统摘 要本设计为基于单片机的温湿度检测控制系统,采用模块化、层次化设计。用新型的智能温湿度传感器DHT11,主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,为显示提供信号,显示部分采用字符型LCD1602液晶显示器显示所测温度和湿度值,控制部分采用加湿设备、除湿设备、加温设备、降温设备控制温湿度的高低。本系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。关键词:温湿度;DHT11;单片机;STC89C52;检测 Greenhouse Temperature and
2、 Humidity Control System of CollectionABSTRACTThe design for the MCU-based temperature and humidity testing system, Using a modular, hierarchical design. The utility model intelligent temperature and humidity sensor DHT11, the main achievement of the temperature, humidity measurement, the temperatur
3、e and humidity signals through the sensor signal acquisition and conversion into a digital signal, using MCU STC89C52 data analysis and processing, is provided for displaying signal, display part adopts the character LCD1602 LCD display the measured temperature and humidity value. This system has th
4、e advantages of simple circuit, high integration, stability, convenient adjustment, high detection precision, and has a certain practical value.Key words:The temperature and humidity;DHT11;MCU;STC89C52;detection目 录1 绪 论11.1选题背景11.2需求分析12 总体设计22.1控制系统22.2测量部分62.3显示部分92.4控制部分123 系统设计133.1硬件设计133.2软件设计
5、144 总结与展望16参考文献18附录一:设计实物图19附录二:程序21致 谢38大棚温湿度采集控制系统1绪 论1.1选题背景植被 “设施栽培”,即“保护地栽培”。它是指在某种类型的保护设施内(如阳畦、温室、大棚等),人为地创造适宜植被生长发育的最佳环境条件,在不同季节内,尤其是不利于植被生长的季节内进行植被栽培的一种措施。设施栽培是人类利用自然、改造自然的一种创造。由于设施内的条件是可以人为控制的,使得植被调节的周年生产得以实现。玻璃温室和塑料薄膜温室出现后,植被生产出现了划时代的变化。现在人们可以根据自己的意愿,随时生产出所需要的各种植被。可以说,这是“设施栽培”的功劳。在不利于植被生长的
6、自然环境中,温室能够创造适宜植被生长发育的条件。温室环境的调节主要包括日光、温度、湿度三个方面。 温度:根据植被生长的适宜温度进行温室温度调节,若低于下限温度则采取升温措施,通常采取电热增温和火力增温等,火力增温比较方便。若高于上限温度则采取降温措施,通常通过水管降温和风扇降温,风扇降温比较方便。 日光:遮荫是调节日照强度最好的办法,其具体做法是加盖遮阳网或草席,这种方法兼有降低温度的效果。 湿度:为满足温室植被对湿度的要求,可以在地上、台阶、盆壁洒水,还可以在空中悬挂湿布,以增加水分的蒸发,最好的办法是设置自动喷雾装置,自动调节湿度。如果湿度过大,容易导致植被病害,可以采用通风的办法来降低湿
7、度,而且最好在室温与气温相差不大的时候进行。本系统注重温度和湿度的调节,光照强度没有考虑其中。1.2需求分析随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温湿度计与传统的温湿度计相比,具有读数方便,测量范围广,测量准确,其输出温湿度采用数字显示,该设计控制器使用单片机STC89C52,数字温湿度传感器使用DHT11,用LCD1602液晶屏,实现温湿度显
8、示,用加湿设备、除湿设备、加温设备、降温设备控制温湿度的高低,能准确达到以上要求。随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温湿度计,本温度计属于多功能温湿度计,可以设置上下报警温湿度,当温湿度不在设置范围内时,可以报警。2总体设计设计图如图2-1所示:测量部分 控制系统显示部分 控制部分图2-1 总体设计框图2.1控制系统2.1.1 STC89C52单片机简介STC89C52是单片机的一个型号。 STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash
9、只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。 STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地
10、降低开发成本。 8052单片机的引脚功能MCS-51系列单片机一般采用40个引脚,双列直插式封装,用HMOS工艺制造,其外部引脚排列如图2-2所示。其中,各引脚的功能为:图2-2 STC89C52外部引脚图8052单片机的引脚 主电源引脚Vcc(40脚):接5V电源正端Vss(20脚):接电源地端一般Vcc和Vss间应接高频去耦电容和低频滤波电容。 外接晶体或外部振荡器引脚XTAL1(19脚):接外部晶振的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器OSC。当采用外部振荡器时,此引脚应接地。XTAL2(18脚):接外部晶振的另一个引脚。在片内接至反相放大器的输
11、出端和内部时钟电路的输入端。当采用外部振荡器时,此脚接外部振荡器的输出端。 控制信号线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)
12、,每一组I/O口线都可以独立地用作输入或输出口,其中: P0口(3239脚)双向口(三态),可作为输入/输出口,可驱动8个LSTTL门电路。实际应用中常作为分时使用的地址/数据总线口,对外部程序或数据存储器寻址时低8位地址与数据总线分时使用P0口:先送低8位地址信号到P0口,由地址锁存信号ALE的下降沿将地址信号锁存到地址锁存器后,再作为数据总线的口线对数据进行输入或输出。 P1口(18脚)准双向口(三态),可驱动4个LSTTL门电路。用作输入线时,口锁存器必须由单片机先写入“1”,每一位都可编程为输入或输出线。 P2口(2128)准双向口(三态),可驱动4个LSTTL门电路。可作为输入/输出
13、口,实际应用中一般作为地址总线的高8位,与P0口一起组成16位地址总线,用于对外部存储器的接口电路进行寻址。 P3口(1017脚)准双向口(三态),可驱动4个LSTTL门电路。双功能口,作为第一功能使用时,与P1口一样;作为第二功能使用时,每一位都有特定用途,其特殊用途如表2.1所示:表2.1 P3口特殊功能脚端口引脚第二功能注 释P3.0RXD串行口数据接收端P3.1TXD串行口数据发送端P3.2/INT0外中断请求0P3.3/INT1外中断请求1P3.4T0定时/计数器0外部计数信号输入P3.5T1定时/计数器1外部计数信号输入P3.6/WR外部RAM写选通信号输出P3.7/RD外部RAM
14、读选通信号输出2.1.2单片机最小系统所谓单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成。对于8052单片机,由于片内有4K的程序存储器,所以其最小系统除了单片机本身外,只需外接时钟电路与复位电路即可。复位电路单片机的复位分为上电自动复位、按键手动复位两种和看门狗强制复位三种等。上电复位通常利用电容的充放电来实现,按键复位则可分为按键脉冲复位和按键电平复位两种,看门狗复位则通过外接看门狗电路或软件看门狗程序实现。常见的上电复位和按键复位电路如图2-3所示。(a)
15、上电复位 (b) 按键脉冲复位 (c) 按键电平复位图2-3 单片机复位电路时钟电路时钟电路用于产生单片机的基本时钟信号。8052的时钟信号可由内部振荡器产生,也可由外部电路直接提供。内部振荡器的输入和输出脚分别为XTAL1和XATL2,由XTAL2给单片机内部电路提供时钟信号。当时钟信号由外部电路提供时,外部时钟引入XTAL2,而XTAL1脚接地。两种时钟信号的连接电路如图2-4所示。 (a)内部方式 (b)外部方式图2-4 单片机时钟电路2.2测量部分测量所用仪器是数字温湿度传感器DHT11。2.2.1 DHT11简介图2-5 DHT11封装图DHT11数字温湿度传感器是一款含有已校准数字
16、信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。如图2-5所示。
17、2.2.2 操作过程1、接口说明 建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。图2-6 DHT11温湿度传感器接线图2、电源引脚DHT11的供电电压为35.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。3、串行接口 (单线双向)DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit
18、,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。通讯过程如图2
19、-7所示图2-7 通讯过程2.3显示部分显示部分是LCD1602液晶显示,如图2-8所示。图2-8 正常工作LCD1602显示2.3.1 1602液晶简介LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的 比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图2-9所示。图2-9 LCD1602规格引脚功能LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2.2所示。表2.2 LCD1602引脚说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令
20、选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极2.3.2 指令说明LCD1602液晶模块内部的控制器共有11条控制指令,如表2.3所示表2.3 LCD1602内部控制器序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标
21、志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容2.4控制部分2.4.1温湿度设置温湿度上下限控制设置如图2-10所示。 (a)湿度下限设置界面 (b)湿度上限设置界面 (c)温度度下限设置界面 (d)温度度上限设置界面图2-10 温湿度上下限设置2.4.2控制设备本系统控制设备采用加湿设备、除湿设备、加温设备、降温设备作为控制器,加湿设备、除湿设备、加温设备、降温设备分别控制湿度与温度,使得蔬菜大棚的温湿度得到控制。设计中,温湿度均可以设置上下限,按下k1键,出现温度上限的设置页面,按k2键为设置上限温度加,按k
22、3键为设置上限温度减,按下k4键确认刷新,即成功设置温度上限。继续按下k1键,出现温度下限设置页面,按k2键为设置下限温度加,按k3键为设置下限温度减,再按下k4键确认刷新,即成功设置温度下限。继续按下k1键,出现湿度上限的设置页面,按k2键为设置上限湿度加,按k3键为设置上限湿度减,再按下k4键确认刷新,即成功设置湿度上限。继续按下k1键,出现湿度下限设置页面,按k2键为设置下限湿度加,按k3键为设置下限湿度减,再按下k4键确认刷新,即成功设置温度下限。3 系统设计3.1硬件设计本设计的设计电路采用模块化、层次化设计,设计的电路原理图如图3-1所示。图3-1 电路原理图主机与主要部件的选择:
23、根据总体功能和性价比及其运行速度等因素的考虑,选用MCS-51系列的STC89C52为主机,满足上面的要求而且设计方便,不需要再存储扩展。数据存储片内设有128B,外部有8279的256B,而由于存入的数据是随时更新的且不计小数位,存入 8个16进制数字,其总共需要的容量只有16B,已经够用。外部模温度、湿度采样,选用DHT11能够满足要求。系统各部件的连接方式如下:DHT11和单片机之间用单总线传输,DHT11的数据口与单片机的P10相连。液晶显示器的RS,RW和E分别与单片机的P25,P26,P27相连,数据输入口DB0-DB7分别与单片机P00-P07口相连。设置按键、按键加、按键减、确
24、认刷新按键分别的单片机的P32,P33,P34,P35相连。单片机P11,P13分别为温度超过或低于上下限控制脚, P12,P14分别为湿度超过或低于上下限控制脚。控制脚通过控制加湿设备、除湿设备、加温设备、降温设备,调节温度及湿度。3.2软件设计系统软件程序基于Keil uvsion2开发平台,采用C51语言编写。本程序采用模块化程序方法:LCD初始化显示模块系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:(a) 系统启动后,显示器上显示两行,第一行为“TEMPERATURE:00 C”,第二行显示为“HUMIDITY: 00 %”(b)等待D
25、TH11采集温度及湿度值。(c)系统进入正常工作状态。系统整体的工作方式如下框图所示程序流程图:图3-2 DHT11数据采集流程图本系统采用DHT11温湿度传感器对蔬菜大棚内温湿度的采集并转换成数字信号,将信息提供给主控制器进行处理和分析,主控制器开始LCD初始化,进行延时等待提取DHT11温湿度传感器模块,将采集的信息处理后传给LCD1602显示,同时调用控制模块,与系统默认设定值比较,系统温度上下限,湿度上下限默认值均为0,可通过设置按钮进行设置,按下设置按钮可对温度下限、上限,湿度下限、上限的顺序依次进行设置,温湿度均可以设置上下限,按下k1键,出现温度上限的设置页面,按k2键为设置上限
26、温度加,按k3键为设置上限温度减,按下k4键确认刷新,即成功设置温度上限。继续按下k1键,出现温度下限设置页面,按k2键为设置下限温度加,按k3键为设置下限温度减,再按下k4键确认刷新,即成功设置温度下限。继续按下k1键,出现湿度上限的设置页面,按k2键为设置上限湿度加,按k3键为设置上限湿度减,再按下k4键确认刷新,即成功设置湿度上限。继续按下k1键,出现湿度下限设置页面,按k2键为设置下限湿度加,按k3键为设置下限湿度减,再按下k4键确认刷新,即成功设置温度下限。当蔬菜大棚实际温度超过设定温度上限时,系统将调用控制模块对降温设备控制,将蔬菜大棚的温度降低;当蔬菜大棚实际温度低于设定温度下限
27、时,系统将调用控制模块对升温设备控制,将蔬菜大棚的温度升高;当蔬菜大棚实际湿度超过设定湿度上限时,系统将调用控制模块对除湿设备控制,将蔬菜大棚的湿度降低;当蔬菜大棚实际湿度低于设定湿度下限时,系统将调用控制模块对加湿设备控制,将蔬菜大棚的湿度提高。主程序流程图如图3-3所示。图 3-3 主程序流程图4 总结与展望单片机是一门应用性和实践性很强的学科,很多人都想学习单片机,并且想知道如何学习单片机。熟悉单片机的人都知道,要学好单片机可不是一件容易的事,倒不是因为单片机很难学,而是很难找到一本专为单片机入门者而编写的教材。翻一下身边的单片机教材,都好像是为已经懂单片机的人而写的,一般先介绍单片机的
28、硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计(随便说一下,很多书中的电路设计已经过时,并且有些程序还是错误的)。如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。学习使用单片机只能靠循序渐进的积累。学单片机不仅要学习理论知识,实践操作也很重要。学过单片机的人都有这样的经历,就是把自己写的程序烧录到单片机里面的时候会发现与自己想要的结果有很大的不同。这就是因为实践操作少了,经验不足的缘故。推荐大家从简单的东西学起,当我们积累了一定的东西之后就可以动手做一些比较复杂的东西了。设计本系统的过程中遇到了很多的问题,在编写DHT11的测量程序的过程
29、中遇到了很多的问题,刚开始始终的不到数据,研究了很长时间都弄不出来。同学提示我要注意一下时序,然后我又按照DHT11的通讯时序和接收时序将程序一条条的重写,在经过几次调试之后,终于得到了自己想要的结果;液晶显示部分也出了一点点小问题,就是送数据过去的时候忘了显示字符必须送字符的ASCII码。本系统具有较强的实用性,淘宝网上DHT11单片价格仅6.5元。作者对DHT11与DS18B20及一些水银温湿度测量器的测量数据进行了比较,验证了DHT11测量数据的准确性和稳定性。低廉的价格、小巧的体积、准确稳定的测量数据、简单的单总线控制方式、简洁的电路连接,这些将使DHT11拥有良好的应用前景。1602
30、液晶也比较便宜,操作比较简单。另外,本系统还具有较高的扩展性,可以集时钟,计算器,温湿度测量等于一体,具有一定的市场价值。参考文献1 黄卜夫欧洲设备安装总线综述M电子技术应用,2001(No.4):7-102 戚作钧.无线电技术基础M.第一版北京:人民教育出版社,1959:165-1833 Wayne Tomasi.电子通信系统M.王曼珠,许萍,曾萍等译.第四版.北京:电子工业出版社,2002:137-1414 Andrew STanenbaum计算机网络M熊桂喜,王小虎译第三版北京:清华大学出版社,1998:402-4195 郑阿奇计算机网络原理与应用M第一版北京:电子工业出版社,2003:
31、34-456 王耀南.计算智能信息处理技术及其应用M.长沙:湖南大学出版社,1999附录一:设计实物图成品图 显示控制 当前为湿度59% 温度21C 温湿度探头 设置界面附录二:程序1. dht11.h程序#include /_nop_();延时函数用#define uchar unsigned char#define uint unsigned intsbit temp_out=P11;sbit humi_out=P12;sbit temp_led=P13;sbit humi_led=P14;uint count; uchar ds1,ds2,ds3,ds4;uchar U8FLAG,k;u
32、char U8count,U8temp;uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;uchar U8comdata;uint U16temp1,U16temp2;sbit IO= P10 ; /void Delay1(uint j)uchar i;for(;j0;j-)for(i=0;i0;i-);void COM(void)uchar
33、 i;for(i=0;i8;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; /-void RH(void)IO=0;Delay1(180);IO=1;Delay_10us();Delay_10us();Delay_10us();Delay_10us
34、();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+U8
35、RH_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;void convdat() ds1=U8RH_data_H/10; ds2=U8RH_data_H%10; ds3=U8T_data_H/10; ds4=U8T_data_H%10;2. lcd_1602.h程序#define u
36、char unsigned char#define uint unsigned intsbit RS=P25;sbit RW=P26;sbit E=P27;uchar d;uchar code tab_t=TEMPERATURE: C;uchar code tab_h=HUMIDITY: %;uchar code tab_time=TIME:;uchar code tab_set_temp_H=SET_TEMP_HIGH;uchar code tab_set_temp_L=SET_TEMP_ LOW;uchar code tab_set_humi_H=SET_HUMI_HIGH;uchar c
37、ode tab_set_humi_L=SET_HUMI_ LOW;uchar code tab_set_hour=SET_HOUR;uchar code tab_lcd_num=0,1,2,3,4,5,6,7,8,9;void delay_1602(uchar x)uchar a,b;for(a=0;a0;b-); void write_cmd(uchar x)E=0;RS=0;RW=0;E=1;P0=x;delay_1602(50);/*uchar read_dat()RS=1;RW=1;E=1;d=P0;delay(5);return d;*/void write_dat(uchar y)
38、E=0;RS=1;RW=0;E=1;P0=y;delay_1602(50);E=0;void busy()uchar a;while(a=0x80)E=0; RS=0; RW=1; E=1;delay_1602(50); a=P0;void init_lcd()busy();write_cmd(0x38);delay_1602(5);busy();write_cmd(0x01);delay_1602(5);busy();write_cmd(0x0C);delay_1602(5);3. zxhr.c程序#include /52单片机头文件#include /温湿度传感器DHT11头文件#incl
39、ude /液晶屏1602头文件 uchar i,key_flag;uchar set_temp_H,set_temp_H_shi,set_temp_H_ge;/设定温度的变量uchar set_temp_L,set_temp_L_shi,set_temp_L_ge;/设定温度的变量uchar set_humi_H,set_humi_H_ge,set_humi_H_shi;/设置湿度的变量uchar set_humi_L,set_humi_L_ge,set_humi_L_shi;/设置湿度的变量sbit k1=P32;/定义按键K1sbit k2=P33;/定义按键K2sbit k3=P34;/
40、定义按键K3sbit k4=P35;/定义按键K4/延时函数/void delay(uchar x)uchar a,b;for(a=0;a0;b-); /显示温度 和 湿度/void disp_t_h() write_cmd(0x8c); write_dat(tab_lcd_numds3);/显示温度十位 write_cmd(0x8d); write_dat(tab_lcd_numds4);/显示温度个位 write_cmd(0xcc); write_dat(tab_lcd_numds1);/显示温湿度十位 write_cmd(0xcd); write_dat(tab_lcd_numds2);
41、/显示温湿度个位/开机显示/void disp_start()for(i=0;i16;i+) write_cmd(0x80+i); write_dat(tab_ti);/温度 for(i=0;i16;i+) write_cmd(0xc0+i); write_dat(tab_hi);/湿度 /扫描按键/void key_scan()if(k1=0)/按下K1 /设置温度上限/ if(key_flag=0)/按键标志0 write_cmd(0x01);/清屏 write_cmd(0x80);/显示位置第一行第一列 for(i=0;i13;i+) write_dat(tab_set_temp_Hi);/显示SET TEMPERATURE字符 while(k4=1)/按下K4 if(k2=0)/按下K2