基于单片机的大棚温湿度监测系统的设计本科毕业论文设计Word文件下载.docx
《基于单片机的大棚温湿度监测系统的设计本科毕业论文设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的大棚温湿度监测系统的设计本科毕业论文设计Word文件下载.docx(37页珍藏版)》请在冰豆网上搜索。
temperatureandhumidity;
monitoring;
alarm
第一章绪论
1.1选题背景
近期,我国温室的总种植面积位于世界前列,产业的发展迅猛。
但是,我国的温室自动控制技术远远跟不上温室数量的增长,农业生产还在使用大量的人力劳动,不仅劳累,而且因为无法对温室环境进行精确监测,不仅浪费了大量的资源,还使作物产量受到了影响,降低了收入。
同现代化农业发达的国家相比,我国在这一方面还是有比较大的差距,特别在是对温室生产环境的各个因素的自动监测与控制方面。
本课题目的在于研究一个基于单片机为主控芯片下的大棚温湿度自动监测系统,由于单片机及相关附加部件的经济性,使得其能广泛应用于广大农民之中,从而通过对大棚温湿度的科学量化实时监测调整对作物的环境从而提高农业产量,造福广大农民,其实用性使得这个研究很有必要。
1.2国外研究现状
上个世纪70年代开始,国外就利用当时发展的模拟技术对温室环境因子控制开展研究,告别了之前人工测量的落后时代,随着研究的深入和进步,分布式控制系统便进一步在此领域发展起来了。
随着世界各国的温室自动控制技术的迅猛发展,如以色列、荷兰、日本美国等西方发达国家,都实现了根据所植入和采集到的温室生物的特点与要求,对温室所处的多方面因素进行自动控制,包括温度、湿度、光照强度、水分、气体浓度、肥料等各个方面[1]。
在荷兰,其玻璃温室已经可以通过计算机控制,实行全自动无人化控制生产;
在日本,其温室自动控制在温室生产的各项作业中都逐步实现了无人化、全自动化。
通过热电技术的使用,荷兰实现了精确控制成熟期的水果和蔬菜,鲜花和其他植物的开花期,满足在各种节日的时间需求的人;
在英国,伦敦大学农业学院研制出来的温室自动控制技术,可以对超过50公里的温室环境进行监控,包括温度和湿度,光照强度,气体浓度和水等环境因素。
比国外晚大概十年,也就是在80年代之后,中国相关科研人员不断学习西方发达国家在温室控制领域取得的成果,并且积累总结出自身经验,化为适应中国本土的技术,在研究初始阶段,只能对单一环境因子实现自动控制,但在随后快速发展的微机技术、传感技术等高新技术的驱动下,自动控制的领域有了翻天覆地的变化,通过温室生产,可利用计算机对生物生长所需的部分或者全部的环境因素进行自动控制,使农业生产方式有了巨大的改变,生产信息化、工厂化等已经成为了世界上农业广泛生产的新途径。
1.3系统主要设计容
1.3.1系统框图
图1.1系统框图
1.3.2元器件的选择
利用AT89S52单片机控制单元的设计,传感器采用SHT11数字温湿度传感器,1602A双液晶显示器实时显示温度和湿度,蜂鸣器报警电路,并用三极管驱动,LED报警信息电路。
在单片机中,ATMEL公司生产的C51系列单片机具有成本低廉、运行稳定、开发周期短、易操作使用等优点,但是每次写程序的时候都要进行拔插,不仅在调试的时候比较繁琐,而且对芯片也会造成一定的损害;
而S系列的AT89S52单片机弥补了这一缺陷,不仅支持在线ISP编程,免除繁琐的编程拔插,还比89C51多了一倍的存,因此可以支持更大的程序,这样有利于该系统日后的功能拓展。
在数据采集模块上面,为了使得整体电路更加精简,减少繁杂的外围电路,A/D转换电路,使用集成式的数字式温湿度传感器SHT11。
同样的道理,1602液晶显示器可以显示双行字符,满足了设计的显示要求。
第二章系统硬件设计
2.1系统性能概述
作为一个大棚温湿度监测系统,其核心任务是对棚环境进行自动测量。
该系统上电初始化后,通过SHT11感应并检测大棚的温湿度值,传送给AT89S52核心处理单元,此时处理器调出部设定好的温湿度上下限,据此对比判断对应数据是否异常,然后做出报警与否的反馈;
确定是否异常超过预设的时间,如果超过预定时间,异常信号从报警电路输出;
然后继续确定异常处理,如果解决了,然后就会解除报警。
这样一来,通过单片机的核心处理控制功能来采集实时环境信息,让用户可以实时高效地获取大棚部的环境状态,从而能够及时实施管理。
2.2单片机模块
单片机作为一种微型计算机,广泛应用在工业自动化、自动控制、智能仪器仪表等领域[2],具有体积小、成本低的特性,功能齐全,简单方便,发展迅速,嵌入容易。
本设计采用AT89S52单片机,单片机是一种低功耗,高性能CMOS8位微控制器,有8K的系统可编程闪存。
它兼容MCS-51系列的引脚,适用于所有标准80C51指令集。
从而使该器件进行编程,因此它能够在进行程序烧录是不进行多次拔插,可避免不必要的繁琐程序以及对装置的损耗甚至损坏。
2.2.1AT89S52主要功能概述
AT89s52提供以下标准功能:
8K字节的Flash闪速存储器,256字节部RAM,拥有32个I/O口线、3个16位定时器/计数器、一个6向量两级中断结构、1个全双工串行通信口以及片振荡器及时钟电路。
与此同时,AT89S52可将至0Hz的静态逻辑操作,并支持两种软件可选的结点工作模式。
空闲方式停止CPU工作,但允许RAM和定时器/计数器、串行通信口及中断系统继续工作。
掉电方式下会保存RAM中的容,但是振荡器停止工作并且禁止其它所有部件工作,直到下一个硬件复位。
2.2.2AT89S52封装结构
图2.1AT89S52PDIP封装结构
2.2.3AT89S52引脚功能
VCC:
电源引脚
GND:
逻辑地
P0口:
8位的地址和总线复用I/O口。
P1口:
I/O端口,8位,具有部上拉电阻。
P2口:
P2口是一个带有部上拉电阻的8位双向I/O口。
P3口:
端口P3是具有部上拉电阻的8位双向I/O口。
P3口依然和AT89C51一样提供了它的第二功能。
RST:
复位输入端口,复位方式是当其工作是在RST引脚接入持续时间长达两个机器周期以上高电平。
ALE/
:
地址锁存允许。
片外程序存储器的读选通信号。
/VPP:
外部访问允许端口。
第二功能,即VPP功能,在对片Flash进行编程的时候,要在这个引脚上接入12V的编程电压。
XTAL1:
片振荡器反相放大器和部时钟发生器的输入端。
XTAL2:
片振荡器反相放大器的输出端。
2.3单片机最小系统
单片机最小系统就是单片机能够运行程序,正常工作最简单电路系统,是保证单片机的正常启动和开始工作的必须电路,组成这部分的东西缺一不可,单片机最小系统应该有单片机、晶振电路、复位电路。
2.3.1单片机
在上节已经作了阐述。
2.3.2晶振电路
在Proteus仿真环境里如图2.2。
图2.2单片机振荡电路
系统在执行程序的时候需要一个稳定的时钟信号,一切的指令都需要这样的时钟信号才能够有条不紊地执行。
单片机系统所需的时钟信号由晶振提供,并且其运行速度与频率的高低息息相关,呈现出正比的规律,单片机产生的频率越高其运行速度就越快,反之则越慢。
在一般环境下,晶体振荡器的频率五十的绝对精度可以达到百万,足够一般使用,先进的水晶会更精确。
STC89S52采用11.0592MHz的晶振作为振动源,单片机部含振荡器电路,所以震荡电路的连接跟8051单片机一样,所连接的电容容量为22pF即可。
2.3.4复位电路
如同计算机,单片机在执行程序的时候可能会遇到各种各样的意外情况而使系统瘫痪或者软件跑飞,因此就需要一个复位机制。
就好比计算机的重启部分,单片机复位电路使得其具有恢复正常运作的功能,当按下复位按键的时候,部的程序会重新从头开始执行。
图2.3复位电路
单片机的复位电路由两种方式,分别是上电自动复位和按键复位,本设计采用的是上电自动复位电路,实现原理如图2.3。
2.4传感器模块
2.4.1SHT11简介
目前在电容式温湿度传感器的发展中,以盛世瑞恩公司制造的SHTXX系列的产品占主要份额,即集成的单片智能数字化温湿度传感器[3]。
这种产品在工业CMOS过程中采用了微加工技术,从而使其有长期的稳定性和比较高的可靠性。
它的外观和引脚如图2.4所示。
图2.4SHT11外观和引脚
这个温度和湿度传感器由一个湿度传感器探头式温度测量元件和电容器体,还包含了A/D转换器[4],这样一来就能够免去复杂的外围电路而使该装置直接输出数字信号。
对于传感器的系数校准方面,它会在对外界检测到相应信号的时候自动调用存储在OTP存里的校准系数程序。
其湿度测量围为0%~100%RH,测量精度为±
0.1%RH;
温度测量围为-40~123.8℃,测量精度为±
0.01℃。
2.4.2SHT11端口介绍
VDD:
电源引脚。
SHT11的额定电压为5V。
一般在3.3V就可以正常工作,上电后电源引脚可以接上一个100nF的电容。
SHT11的串行接口优化传感器读出和有效的电力消耗。
传感器可以连接到一个I2C总线,不干扰其他设备连接到总线,控制器必须在协议之间进行切换。
GND:
地。
SCK:
串行时钟输入。
DATA:
串行数据引脚。
这个传感器的三态串行数据引脚用来收发数据。
传感器发送命令到串行数据时钟(SCK)的有效前沿,并且必须保持稳定在较高的水平时,SCK,SCK边缘的数据值可能倒台后发生改变。
为了保持安全通讯数据有效,应当延长在TSU上升和THO下降沿的SCK后,分别见图2.5。
图2.5SHT11收发数据时序
用于读取数据传感器、数据SCK已经是低电平,后是有效的电平SCK仍然有效,直到下一个下降沿到来。
为了避免信号争用单片机必须唯一用低电平驱动数据位,所以通常在该引脚外部接上10k大小的上拉电阻。
2.4.3SHT11典型应用电路
图2.6SHT11典型应用电路
2.5显示模块
2.5.1LCD1602概述
本系统选择的字符型显示器是一种用5*7点阵图形显示字符的显示器,根据可以显示的字数多少可以分为2行20字、2行16字、1行16字等。
通常我们所用的是2行16字,也就是本系统采用的LCD1602模块。
液晶显示器具有体积小,功耗低,微薄而轻,使用方便,显示容丰富等优点,已应用于许多低功率器件。
这个装置的引用使得这些电子设备的人机界面变的越来越形象和直观。
图2.7是该模块的实物图。
图2.7LCD1602实物图
2.5.2LCD1602特性
该类型液晶显示模块部有字符发生器CGROM,也就是字符库。
可以显示192个5*7点阵字符。
如图2.8。
因此,每个字母和数字都有唯一的一个代码至,而且恰好与ASCII码中的字母和数字相同。
因此在显示字母和数字的时候,向LCD1602送入对应的ASCII码就行了。
图2.8LCD1602ROM字符库的容
2.5.3LCD1602引脚说明
字符型LCD通常有14条引脚(无背光)线或16条引脚线(带背光)两种接口形式[5],其中16条引脚的多出了背光电源线VCC(15脚)和地线GND(16脚),各引脚定义如表2.1所示。
表2.1LCD1602引脚功能定义
编号
符号
引脚说明
1
VSS
电源地
9
DB2
Data
2
VDD
电源正极
DB3
续表2.3
3
VL
液晶显示偏压
11
DB4
4
RS
数据/命令选择
12
DB5
5
R/ ̄W
读/写选择
13
DB6
6
E
使能信号
14
DB7
7
DB0
数据
15
BLA
背光源正极
8
DB1
16
BLK
背光源负极
2.5.4命令格式及功能说明
(1)清屏。
下面是命令格式:
表2.2清屏命令
R/W
这条命令将屏幕显示清除,光标归位。
(2)返回。
表2.3返回命令
X
该指令将DDRAM和显示RAM的地址置0,将显示返回到原来的位置。
(3)输入方式设置。
命令格式如下:
表2.4输入方式设置命令
I/D
S
这段指令的功能室设置光标的移动方向,并且指定是不是将整体显示移动。
I/D=1增量方式
I/D=0减量方式
S=0移位
S=1不移位
(4)显示开关控制指令。
表2.5显示开关指令
D
C
B
功能:
控制整体显示器的开/关、光标的开/关、光标所处字符闪烁与否。
D=0显示器关;
D=1显示器开;
C=0光标关;
C=1光标开;
B=0字符不闪烁;
B=1字符闪烁。
(5)光标移位指令。
表2.6光标移位指令
S/C
R/L
让光标移位或者整体显示移位。
S/C=0光标移位;
S/C=1显示移位;
R/L=0向左移位;
R/L=1向右移位。
(6)功能设置指令。
表2.7功能设置指令
DL
N
F
设置数据总线位数和显示的行数及其字型。
DL=04位数据接口;
DL=18位数据接口;
N=0单行显示;
DL=1双行显示;
F=05*7点阵;
F=15*10点阵。
(7)CGRAM地址设置指令。
表2.8CGRAM设置指令
CGRAMD的地址(低6位)
设置CGRAM(数据显示存储器)的地址,围为0-36。
(8)DDRAM地址设置指令。
表2.9DDRAM设置指令
CGRAMD的地址(低7位)
设置DDRAM(数据显示存储器)的地址,围为0-127。
(9)读忙信号及地址计数器。
表2.10读忙信号指令
BF
AC容(低7位)
指令解释如下:
BF=0LCD不忙(此时可以接收命令和数据);
BF=1LCD忙;
AC是地址计数器值,围是0-127。
(10)向CGRAM或DDRAM写入数据指令。
表2.11写数据指令
要写入的数据D7~D0
向DDRAM写入字符码以显示对应字符。
(11)从CGRAM或者DDRAM中读出数据指令。
表2.12读数据指令
要读出的数据D7~D0
2.6按键电路
按键电路要完成的任务有:
判别是否有按键按下,如果有就进入下一步工作;
然后识别哪一个键被按下,求出相应的键值;
依据键值找到相应的处理程序入口。
在单片机系统中我们常用的键盘是按键式键盘,那个按键实际上就是一个开关。
图2.9是按键按下时行线电压输出波形图。
图2.9按键抖动现象
由图可知按键在开闭的一瞬间都有抖动期,基本上在5-10ms左右,在键盘被按下的稳定期,电平状态呈现出低电平。
因此判定按键是否按下实质上就是检测行线输出的电压时低电平还是高电平。
若为高电平,则按键断开;
若低电平,按键闭合。
但是由于其机械特性导致的抖动现象,我们必须消除按键的抖动从而消除对按键闭合与否的判断障碍,提高判别的准确性。
消去按键抖动的方式有两种:
软件延迟和采用专门的键盘接口芯片。
考虑到使用系统的成本和简单消除抖动的角度,我们采用的是软件延时的设计方法。
利用软件延时的方法消除按键抖动的思想:
当检测到按键按下时,行线电平状态为低电平,此时执行一段延时为10ms的子程序,再确认电平是否为低电平,如果此时真有按键按下,则应仍为低电平。
反之,当按键松开是,该按键所在的行线跳变为高电平,同样执行一段延时10ms的延时子程序后,再看是不是高电平,如果为高电平,则表示按键已经释放[6]。
这样的操作可以达到消除两个抖动期的影响,大大提高可靠性。
本设计采用四个机械按键,接在单片机的P3口,四个按键满足对系统温湿度上下限值的设定。
连接方式如图2.10:
图2.10键盘电路
SET键的作用是选择调整项目,即温度上限、温度下限、湿度上限、湿度下限四个可选,OK是确定键,UP和DOWN分别是加和减的操作。
通过这几个按键和对该装置设定允许的温湿度上下限,超过该设定值就会启动报警电路发出警报。
2.7报警电路
为了让电路在检测到环境温湿度超过预设值的时候做出反应,本设计采用了声光报警电路,蜂鸣器发出声音提醒大棚农户,通过8050晶体管来驱动蜂鸣器;
四个LED灯分别对应温度过高、温度过低、湿度过高、湿度过低的异常状态,好让用户一眼看出发生了哪一个具体的异常情况[7]。
连接图如下:
图2.11声报警电路
图2.12光报警电路
第三章系统软件设计
3.1系统主程序设计方法
本系统使用的是Keil软件,它是C51系列兼容单片机C语言软件开发系统,能够应用通俗易懂的高级C语言对单片机进行软件开发。
当然,在写程序之前必须要对系统的电路有足够的了解,各个接口,还有系统各个芯片或者模块的时序,在编程过程中都要对其遵守,那样才能将你所预设的功能付诸实现。
在搞清楚了硬件的特性之后,根据该特性首先要做的就是画出流程图,组织好每个模块的处理先后顺序。
另外,也要善于利用软件去替代部分硬件做的事情,比如在此设计里,消除键盘按键抖动现象就使用了软件除抖,使得硬件电路更简洁,也降低了系统总体成本。
所有的程序,使用C51编程语言,在keil开发环境中编译和调试,整个程序利用了中断技术、数字滤波技术、系数补偿技术以及其他先进技术。
程序设计都分了模块,模块化的程序结构清晰,易于修改[8]。
由以下主要模块组成:
主程序模块、温湿度采集模块,报警模块、数据显示模块、按键模块和其他的附加模块。
图3.1是该系统的主程序流图。
否
是
图3.1系统主程序流