大棚温湿度控制系统论文 精品Word文件下载.docx
《大棚温湿度控制系统论文 精品Word文件下载.docx》由会员分享,可在线阅读,更多相关《大棚温湿度控制系统论文 精品Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
用新型的
智能温湿度传感器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的数据口与单片机的P1^7相连。
液晶显示器的RS,RW和E分别与单片机的P2^5,P2^6,P2^7相连,数据输入口DB0-DB7分别与单片机P00-P07口相连。
设置按键、按键加、按键减、确认刷新按键分别的单片机的P2^0,P2^1,P2^2,P2^3相连。
单片机P1^3,P1^5分别为温度超过或低于上下限控制脚,P1^4,P1^6分别为湿度超过或低于上下限控制脚。
控制脚通过控制加湿设备、除湿设备、加温设备、降温设备,调节温度及湿度。
2.2控制系统
2.2.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存储器可有效地降低开发成本[3]。
8052单片机的引脚功能
MCS-51系列单片机一般采用40个引脚,双列直插式封装,用HMOS工艺制造,其外部引脚排列如图2-2所示。
其中,各引脚的功能为:
图2-2STC89C52外部引脚图
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.1DHT11简介
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与长期的稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至极为苛刻的应用场合的最佳选择。
产品为4针单排引脚封装[5]。
如图2-3所示。
图2-3DHT11封装图
2.3.2操作过程
1、接口说明
建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻[6]。
图2-4DHT11温湿度传感器接线图
图2-5DHT11温湿度传感器模块
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-6所示
图2-6通讯过程
2.4显示部分
显示部分是LCD1602液晶显示,如图2-7所示。
图2-7正常工作LCD1602显示
2.4.11602液晶
LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别[6]。
图2-8DHT11温湿度传感器模块
引脚功能
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2.2所示。
表2.2LCD1602引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
2.4.2指令说明
LCD1602液晶模块内部的控制器共有11条控制指令[7],如表2.3所示。
表2.3LCD1602内部控制器
序号
指令
清显示
光标返回
*
置输入模式
I/D
S
显示开/关控制
D
C
B
光标或字符移位
S/C
R/L
置功能
DL
N
F
置字符发生存贮器地址
字符发生存贮器地址
置数据存贮器地址
显示数据存贮器地址
读忙标志或地址
BF
计数器地址
写数到CGRAM或DDRAM)
要写的数据内容
从CGRAM或DDRAM读数
读出的数据内容
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按键模块
第三章.软件设计
3.1软件设计
系统软件程序基于Keiluvsion2开发平台,采用C51语言编写。
本程序采用模块化程序方法:
LCD初始化显示模块
系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容:
(a)系统启动后,显示器上显示两行,第一行为“TEMPERATURE:
00C”,第二行显示为“HUMIDITY:
00%”
(b)等待DTH11采集温度及湿度值。
(c)系统进入正常工作状态。
系统整体的工作方式如下框图所示
程序流程图:
图2-11DHT11数据采集流程图
本系统采用DHT11温湿度传感器对蔬菜大棚内温湿度的采集并转换成数字信号,将信息提供给主控制器进行处理和分析,主控制器开始LCD初始化,进行延时等待提取DHT11温湿度传感器模块,将采集的信息处理后传给LCD1602显示,同时调用控制模块,与系统默认设定值比较,系统温度上下限,湿度上下限默认值均为0,可通过设置按钮进行设置,按下设置按钮可对温度下限、上限,湿度下限、上限的顺序依次进行设置,温湿度均可以设置上下限,按下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-183
[3]欧洲设备安装总线综述[M].电子技术应用,2001(No.4):
7-10
[4]WayneTomasi.电子通信系统[M].王曼珠,许萍,曾萍等译.第四版.北京:
电子工业出版社,2002:
137-141
[5]AndrewS.Tanenbaum.计算机网络[M].熊桂喜,王小虎译.第三版.北京:
清华大学出版社,1998:
402-419
[6]郑阿奇.计算机网络原理与应用[M].第一版.北京:
电子工业出版社,2003:
34-45
[7]王耀南.计算智能信息处理技术及其应用[M].长沙:
湖南大学出版社,1999
致谢
我的毕业论文(设计)撰写工作自始至终都是在姜丽飞老师全面、具体的指导下进行的。
姜丽飞老师渊博的学识、敏锐的思维、民主而严谨的作风,使我受益匪浅,终生难忘。
姜丽飞老师严谨的治学态度和对工作兢兢业业、一丝不苟的精神将永远激励和鞭策我认真学习、努力工作。
感谢我的指导教师姜丽飞对我的关心、指导和教诲!
感谢实验室的各位老师的关心和帮助!
感谢我的学友和朋友们对我的关心和帮助!
附录
大棚温湿度控制系统原理图:
温湿度传感器DHT11模块
#include<
intrins.h>
//_nop_();
延时函数用
#defineucharunsignedchar
#defineuintunsignedint
sbittemp_out=P1^3;
sbithumi_out=P1^4;
sbittemp_led=P1^5;
sbithumi_led=P1^6;
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^7;
//
voidDelay1(uintj)
{
uchari;
for(;
j>
0;
j--)
for(i=0;
i<
27;
i++);
}
voidDelay_10us(void)
uchari=5;
i>
i--);
voidCOM(void)
8;
i++)
U8FLAG=2;
//---------------------
while((!
IO)&
&
U8FLAG++);
Delay_10us();
//Delay_10us();
U8temp=0;
if(IO)U8temp=1;
while((IO)&
//----------------------
//P2_1=0;
//P2_1=1;
if(U8FLAG==1)break;
U8comdata<
<
=1;
U8comdata|=U8temp;
//--------------------------------
voidRH(void)
IO=0;
Delay1(180);
IO=1;
if(!
IO)
COM();
U8RH_data_H_temp=U8comdata;
U8RH_data_L_temp=U8comdata;
U8T_data_H_temp=U8comdata;
U8T_data_L_temp=U8comdata;
U8checkdata_temp=U8comdata;
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