资源描述
本科毕业论文题 目 大棚温湿度控制系统的设计 学 生 指导教师 年 级 2008级 专 业 系 别 2012年5月 郑重声明 本人的毕业论文(设计)是在指导教师 姜丽飞 的指导下独立撰写完成的。如有剽窃、抄袭、造假等违反学术道德、学术规范和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。特此郑重声明。毕业论文(设计)作者(签名):邵均祚 2012 年 5 月 4 日目 录标题1中文摘要1第一章绪论11.1选题背景11.2需求分析2第二章硬件设计22.1硬件设计图22.2控制系统32.3测量部分42.4显示部分72.5控制部分9第三章软件设计103.1软件设计10第四章总结与展望12参考文献13致谢14附录15外文页27大棚温湿度控制系统的设计摘 要 本设计为基于单片机的温湿度检测控制系统,采用模块化、层次化设计。用新型的智能温湿度传感器DHT11,主要实现对温度、湿度的控制,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52进行数据的分析和处理,为显示提供信号,显示部分采用字符型LCD1602液晶显示器显示所测温度和湿度值,控制部分采用加湿设备、除湿设备、加温设备、降温设备控制温湿度的高低。本系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。关键词 温湿度 DHT11 单片机 STC89C52 控制 第一章绪论1.1选题背景植被 “设施栽培”,即“保护地栽培”。它是指在某种类型的保护设施内(如阳畦、温室、大棚等),人为地创造适宜植被生长发育的最佳环境条件,在不同季节内,尤其是不利于植被生长的季节内进行植被栽培的一种措施。设施栽培是人类利用自然、改造自然的一种创造。由于设施内的条件是可以人为控制的,使得植被调节的周年生产得以实现。玻璃温室和塑料薄膜温室出现后,植被生产出现了划时代的变化。现在人们可以根据自己的意愿,随时生产出所需要的各种植被。可以说,这是“设施栽培”的功劳1。在不利于植被生长的自然环境中,温室能够创造适宜植被生长发育的条件。温室环境的调节主要包括日光、温度、湿度三个方面。 温度:根据植被生长的适宜温度进行温室温度调节,若低于下限温度则采取升温措施,通常采取电热增温和火力增温等,火力增温比较方便。若高于上限温度则采取降温措施,通常通过水管降温和风扇降温,风扇降温比较方便。 日光:遮荫是调节日照强度最好的办法,其具体做法是加盖遮阳网或草席,这种方法兼有降低温度的效果。 湿度:为满足温室植被对湿度的要求,可以在地上、台阶、盆壁洒水,还可以在空中悬挂湿布,以增加水分的蒸发,最好的办法是设置自动喷雾装置,自动调节湿度。如果湿度过大,容易导致植被病害,可以采用通风的办法来降低湿度,而且最好在室温与气温相差不大的时候进行。本系统注重温度和湿度的调节,光照强度没有考虑其中。1.2需求分析随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展2。本设计所介绍的数字温湿度控制系统与传统的温湿度计相比,具有读数方便,测量范围广,测量准确,其输出温湿度采用数字显示,该设计控制器使用单片机STC89C52,数字温湿度传感器使用DHT11,用LCD1602液晶屏实现温湿度显示,用加湿设备、除湿设备、加温设备、降温设备控制温湿度的高低,所以本设计能满足设计任务要求。本文将介绍一种基于单片机控制的数字温湿度控制系统,本系统属于多功能温湿度计,可以设置上下报警温湿度,当温湿度不在设置范围内时,可以报警并且进行控制。第二章硬件设计设计图如图2-1所示图太大,不美观:测量部分 控制系统控制部分显示部分 图2-1 总体设计框图2.1硬件设计各章节标题要和目录对应主机与主要部件的选择:根据总体功能和性价比及其运行速度等因素的考虑,选用MCS-51系列的STC89C52为主机,满足上面的要求而且设计方便,不需要再什么意思存储扩展。数据存储片内设有128B,外部有8279的256B,而由于存入的数据是随时更新的且不计小数位,存入 8个16进制数字,其总共需要的容量只有16B,已经够用。外部模温度、湿度采样,选用DHT11能够满足要求。系统各部件的连接方式如下把附录里的原理图放在此处叙述的更清楚:DHT11和单片机之间用单总线传输,DHT11的数据口与单片机的P17相连。液晶显示器的RS,RW和E分别与单片机的P25,P26,P27相连,数据输入口DB0-DB7分别与单片机P00-P07口相连。设置按键、按键加、按键减、确认刷新按键分别的单片机的P20,P21,P22,P23相连。单片机P13,P15分别为温度超过或低于上下限控制脚, P14,P16分别为湿度超过或低于上下限控制脚。控制脚通过控制加湿设备、除湿设备、加温设备、降温设备,调节温度及湿度。2.2控制系统2.2.1 STC89C52单片机简介STC89C52是单片机的一个型号。 STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。 STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本3。 8052单片机的引脚功能MCS-51系列单片机一般采用40个引脚,双列直插式封装,用HMOS工艺制造,其外部引脚排列如图2-2所示。其中,各引脚的功能为:图2-2 STC89C52外部引脚图 8052单片机的引脚 主电源引脚Vcc(40脚):接5V电源正端Vss(20脚):接电源地端一般Vcc和Vss间应接高频去耦电容和低频滤波电容。控制信号线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口线都可以独立地用作输入或输出口4。2.3测量部分测量所用仪器是数字温湿度传感器DHT11。2.3.1 DHT11简介DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与长期的稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至极为苛刻的应用场合的最佳选择。产品为 4 针单排引脚封装5。如图2-3所示。 图2-3 DHT11封装图2.3.2 操作过程1、接口说明 建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻6此处可将文字前移一下标在一行。图2-4 DHT11温湿度传感器接线图图2-5 DHT11温湿度传感器模块2、电源引脚DHT11的供电电压为35.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-6所示图2-6 通讯过程2.4显示部分显示部分是LCD1602液晶显示,如图2-7所示。 图2-7 正常工作LCD1602显示2.4.1 1602液晶LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别6。说一下什么如图2-8所示,别一下把图一放,什么也不注释图2-8 DHT11温湿度传感器模块引脚功能LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2.2所示。表把表好好编辑一下,去掉空行2.2 LCD1602引脚说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极 2.4.2 指令说明LCD1602液晶模块内部的控制器共有11条控制指令7,如表2.3所示。表尽量调在一页2.3 LCD1602内部控制器序号指令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.5控制部分2.5.1温湿度设置温湿度上下限控制设置如图2-9所示。 (a)湿度下限设置界面 (b)湿度上限设置界面 (c)温度度下限设置界面 (d)温度度上限设置界面图2-9 温湿度上下限设置2.5.2控制设备本系统控制设备采用加湿设备、除湿设备、加温设备、降温设备作为控制器,加湿设备、除湿设备、加温设备、降温设备分别控制湿度与温度,使得蔬菜大棚的温湿度得到控制。设计中,温湿度均可以设置上下限,按下k1键,出现温度上限的设置页面,按k2键为设置上限温度加,按k3键为设置上限温度减,按下k4键确认刷新,即成功设置温度上限。继续按下k1键,出现温度下限设置页面,按k2键为设置下限温度加,按k3键为设置下限温度减,再按下k4键确认刷新,即成功设置温度下限。继续按下k1键,出现湿度上限的设置页面,按k2键为设置上限湿度加,按k3键为设置上限湿度减,再按下k4键确认刷新,即成功设置湿度上限。继续按下k1键,出现湿度下限设置页面,按k2键为设置下限湿度加,按k3键为设置下限湿度减,再按下k4键确认刷新,即成功设置温度下限怎么出来的2-10,说一下。图2-10 按键模块第三章软件设计3.1软件设计系统软件程序基于Keil uvsion2开发平台,采用C51语言编写。本程序采用模块化程序方法写分几个模块,在写主程序流程图,初始化模块流程图等子模块:LCD初始化显示模块系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:(a) 系统启动后,显示器上显示两行,第一行为“TEMPERATURE:00 C”,第二行显示为“HUMIDITY: 00 %”(b)等待DTH11采集温度及湿度值。(c)系统进入正常工作状态。系统整体的工作方式如下框图所示如图几别说如下图程序流程图: 图2-11 DHT11数据采集流程图本系统采用DHT11温湿度传感器对蔬菜大棚内温湿度的采集并转换成数字信号,将信息提供给主控制器进行处理和分析,主控制器开始LCD初始化,进行延时等待提取DHT11温湿度传感器模块,将采集的信息处理后传给LCD1602显示,同时调用控制模块,与系统默认设定值比较,系统温度上下限,湿度上下限默认值均为0,可通过设置按钮进行设置,按下设置按钮可对温度下限、上限,湿度下限、上限的顺序依次进行设置,温湿度均可以设置上下限,按下k1键,出现温度上限的设置页面,按k2键为设置上限温度加,按k3键为设置上限温度减,按下k4键确认刷新,即成功设置温度上限。继续按下k1键,出现温度下限设置页面,按k2键为设置下限温度加,按k3键为设置下限温度减,再按下k4键确认刷新,即成功设置温度下限。继续按下k1键,出现湿度上限的设置页面,按k2键为设置上限湿度加,按k3键为设置上限湿度减,再按下k4键确认刷新,即成功设置湿度上限。继续按下k1键,出现湿度下限设置页面,按k2键为设置下限湿度加,按k3键为设置下限湿度减,再按下k4键确认刷新,即成功设置温度下限。当蔬菜大棚实际温度超过设定温度上限时,系统将调用控制模块对降温设备控制,将蔬菜大棚的温度降低;当蔬菜大棚实际温度低于设定温度下限时,系统将调用控制模块对升温设备控制,将蔬菜大棚的温度升高;当蔬菜大棚实际湿度超过设定湿度上限时,系统将调用控制模块对除湿设备控制,将蔬菜大棚的湿度降低;当蔬菜大棚实际湿度低于设定湿度下限时,系统将调用控制模块对加湿设备控制,将蔬菜大棚的湿度提高;主程序流程图如图3-3所示。 图2-12 主程序流程图图号是不是错了,再加一个按键扫描流程图就更好了第四章总结与展望单片机是一门应用性和实践性很强的学科,很多人都想学习单片机,并且想知道如何学习单片机。熟悉单片机的人都知道,要学好单片机可不是一件容易的事,并不是因为单片机很难学,而是很难找到一本专为单片机入门者而编写的教材。翻一下身边的单片机教材,都好像是为已经懂单片机的人而写的,一般先介绍单片机的硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计(随便说一下,很多书中的电路设计已经过时,并且有些程序还是错误的)。如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。学习使用单片机只能靠循序渐进的积累。学单片机不仅要学习理论知识,实践操作也很重要。学过单片机的人都有这样的经历,就是把自己写的程序烧录到单片机里面的时候会发现与自己想要的结果有很大的不同。这就是因为实践操作少了,经验不足的缘故。推荐大家从简单的东西学起,当我们积累了一定的东西之后就可以动手做一些比较复杂的东西了。设计本系统的过程中遇到了很多的问题,在编写DHT11的测量程序的过程中遇到了很多的问题,刚开始始终的不到数据,研究了很长时间都弄不出来。同学提示我要注意一下时序,然后我又按照DHT11的通讯时序和接收时序将程序一条条的重写,在经过几次调试之后,终于得到了自己想要的结果;液晶显示部分也出了一点点小问题,就是送数据过去的时候忘了显示字符必须送字符的ASCII码。本系统具有较强的实用性, DHT11传感器价格也很便宜。我对DHT11与DS18B20及一些水银温湿度测量器的测量数据进行了比较,验证了DHT11测量数据的准确性和稳定性。低廉的价格、小巧的体积、准确稳定的测量数据、简单的单总线控制方式、简洁的电路连接,这些将使DHT11拥有良好的应用前景。1602液晶也比较便宜,操作比较简单。另外,本系统还具有较高的扩展性,可以集时钟,计算器,温湿度测量等于一体,具有一定的市场价值。参考文献:1 夏晓南 基于单片机的温箱温度和湿度的控制J.现代电子技术,2005,215-24:117-118.黄卜夫2 戚作钧.无线电技术基础M.第一版北京:人民教育出版社,1959:165-1833 欧洲设备安装总线综述M电子技术应用,2001(No.4):7-104 Wayne Tomasi.电子通信系统M.王曼珠,许萍,曾萍等译.第四版.北京:电子工业出版社,2002:137-1415 Andrew STanenbaum计算机网络M熊桂喜,王小虎译第三版北京:清华大学出版社,1998:402-4196 郑阿奇计算机网络原理与应用M第一版北京:电子工业出版社,2003:34-457 王耀南.计算智能信息处理技术及其应用M.长沙:湖南大学出版社,1999 致 谢我的毕业论文(设计)撰写工作自始至终都是在姜丽飞老师全面、具体的指导下进行的。姜丽飞老师渊博的学识、敏锐的思维、民主而严谨的作风,使我受益匪浅,终生难忘。姜丽飞老师严谨的治学态度和对工作兢兢业业、一丝不苟的精神将永远激励和鞭策我认真学习、努力工作。感谢我的指导教师姜丽飞对我的关心、指导和教诲!感谢实验室的各位老师的关心和帮助!感谢我的学友和朋友们对我的关心和帮助!附录大棚温湿度控制系统原理图:温湿度传感器DHT11模块#include /_nop_();延时函数用#define uchar unsigned char#define uint unsigned intsbit temp_out=P13;sbit humi_out=P14;sbit temp_led=P15;sbit humi_led=P16;uint count; uchar ds1,ds2,ds3,ds4;uchar U8FLAG,k;uchar 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= P17 ; /void Delay1(uint j)uchar i;for(;j0;j-)for(i=0;i0;i-);void COM(void)uchar 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();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;void convdat() ds1=U8RH_data_H/10; ds2=U8RH_data_H%10; ds3=U8T_data_H/10; ds4=U8T_data_H%10;LCD1602显示模块#define uchar unsigned char#define uint unsigned intsbit RS=P12;sbit RW=P11;sbit E=P10;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 code 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)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);温湿度控制系统程序#include /52单片机头文件#include /温湿度传感器DHT11头文件#include /液晶屏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=P20;/定义按键K1sbit k2=P21;/定义按键K2sbit k3=P22;/定义按键K3sbit k4=P23;/定义按键K4sbit baojing=P33;/延时函数/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);/显示温湿度个位/开机显示/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 while(k2=0); set_temp_H+;/设置温度数值加 if(set_temp_H=100)/到100,清0 set_temp_H=0; if(k3=0)/按下K2 while(k3=0);/松手检测 set_temp_H-;/设置温度数值减 if(set_temp_H=0)/到0,加为100 set_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_numset_temp_H_shi);/显示设置温度个位 write_cmd(0xc7); write_dat(tab_lcd_numset_temp_H_ge);/显示设置温度十位 delay(200); /设置温度下限/if(key_flag=1)/按键标志1 write_cmd(0x01);/清屏 write_cmd(0x80);/显示位置第一行第一列 for(i=0;i13;i+) write_dat(tab_set_temp_Li);/显示SET TEMPERATURE字符 while(k4=1)/按下K4 if(k2=0)/按下K2 while(k2=0); set_temp_L+;/设置温度数值加 if(set_temp_L=100)/到100,清0 set_temp_L=0; if(k3=0)/按下K2 while(k3=0);/松手检测 set_temp_L-;/设置温度数值减 if(set_temp_L=0)/到0,加为100 set_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_numset_temp_L_shi);/显示设置温度个位 write_cmd(0xc7); write_dat(tab_lcd_numset_temp_L_ge);/显示设置温度十位 /设置湿度上限/ if(key_flag=2)/按键标志2 write_cmd(0x01);/清屏 write_cmd(0x80);/显示位置第一行第一列 for(i=0;i13;i+) write_dat(tab_set_humi_Hi);/显示SET HUMIDITY字符 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_numset_humi_H_shi);/显示设置湿度十位 write_cmd(0xc7); write_dat(tab_lcd_numset_humi_H_ge);/显示设置湿度个位 /设置湿度下限/ if(key_flag=3)/按键标志3 write_cmd(0x01);/清屏 write_cmd(0x80);/显示位置第一行第一列 for(i=0;iset_temp_H)/如果温度大于设置温度,关闭温度继电器和温度LED, baojing=0; else baojing=1; /temp_out=0;/P1.3 / else temp_out=1; if(U8T_data_Hset_humi_H)/如果湿度大于设置湿度,关闭湿度继电器和湿度LED, humi_out=0;/P1.4 else humi_out=1; if(U8RH_data_Hset_humi_L)/否则湿度继电器和湿度LED, humi_led=0;/P1.2 else humi_led=1; /主函数/void main() init_lcd();/初始化液晶1602 disp_start();/显示字符 RH();/读取DHT11温湿度数值 convdat();/转换DHT11温湿度数值 disp_t_h();/显示温度 和 湿度 while(1) key_scan();/扫描按键 count+;/计数器加 if(count=100)/到100,转换温湿度数据 count=0; RH(); convdat(); disp_t_h();/显示温度 和 湿度 bijiao();/比较数据控制 继电器动作 The temperature and humidity control system design of the greenhouseShaoJunzuo Directed By JiangLifei lecturerAbstract The 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 temperature and humidity signals through the sensor signal acq
展开阅读全文