基于单片机的仓库温湿度智能控制系统设计Word格式文档下载.docx
《基于单片机的仓库温湿度智能控制系统设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的仓库温湿度智能控制系统设计Word格式文档下载.docx(31页珍藏版)》请在冰点文库上搜索。
所以本设计采用的是方案二。
1系统整体设计
本设计核心部件为AT89C51,信号采集及处理部分由SHT11构成,进入单片机后经处理后通过LCD1602显示温湿度,信号显示采用的液晶屏为5×
7点阵,一行可显示16字,两行。
通过上位机部分对测量的温湿度进行上下值的设定,应用RS-485通信方式完成测控电路与上位PC机的数据交换[5]。
当测量超过限定值,通过超限报警处理电路对其进行处理分别显示不同的二极管灯亮,蜂鸣器产生长鸣。
硬件中包括一个开关,为复位开关。
开机后,所有器件初始化,温湿度传感器SHT11开始进行温湿度测量和计算,最后通过LCD液晶显示器显示结果。
在测量结果中有超过设定的温湿度上下限的,通过超限模块作出反应。
其他是一些附件,比如复位、晶振电路。
整体电路框图如图1所示:
图1整体电路框图
2硬件设计
2.1芯片介绍
2.1.1单片机AT89C51
89C51是一种带4K字节可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
89C2051是一种带2K字节可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容[11]。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。
89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[1]。
1、主要特性:
·
与MCS-51兼容;
4K字节可编程闪烁存储器;
寿命:
1000写/擦循环;
数据保留时间:
10年;
全静态工作:
0Hz-24Hz;
三级程序存储器锁定;
128×
8位内部RAM;
32可编程I/O线;
两个16位定时器/计数器;
5个中断源;
可编程串行通道;
低功耗的闲置和掉电模式;
片内振荡器和时钟电路。
2、管脚说明(如图2所示)[2]:
VCC:
供电电压。
图2AT89C51芯片引脚图
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写“1”时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高[3]。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如表1所示[4]:
表1P3口管脚备选功能
P3.0RXD
串行输入口
P3.4T0
记时器0外部输入
P3.1TXD
串行输出口
P3.5T1
记时器1外部输入
P3.2/INT0
外部中断0
P3.6/WR
外部数据存储器写选通
P3.3/INT1
外部中断1
P3.7/RD
外部数据存储器读选通
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置“0”。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)[6]。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出[7]。
3、振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度[8]。
4、芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行[9]。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器、串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止[10]。
5、结构特点:
·
8位CPU;
·
2个16位的定时器/计数器;
片内振荡器和时钟电路;
5个中断源,两个中断优先级;
32根I/O线;
✧·
全双工串行口;
外部存贮器寻址范围ROM、RAM64K;
布尔处理器。
2.1.2温湿度传感器SHT11
SHT11是瑞士Scnsirion公司推出的一款数字温湿度传感器芯片。
温湿度传感器SHT11集温度传感器和湿度传感器于一体,因此采用SHT11进行温湿度实时监测的系统具有精度高、成本低、体积小、接口简单等优点;
另外SHT11芯片内部集成了14位A/D转换器,且采用数字信号输出,因此抗干扰能力也比同类芯片高。
该芯片在温湿度监测、自动控制等领域均已得到广泛应用。
该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。
共主要特点如下:
高度集成,将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上;
提供二线数字串行接口SCK和DATA,接口简单,支持CRC传输校验,传输可靠性高;
测量精度可编程调节,内置A/D转换器(分辨率为8~12位,可以通过对芯片内部寄存器编程选择);
测量精确度高,由于同时集成温湿度传感器,可以提供温度补偿的湿度测量值和高质量的露点计算功能;
封装尺寸超小(7.62mm×
5.08mm×
2.5mm),测量和通信结束后,自动转入低功耗模式;
高可靠性,采用CMOSens工艺,测量时可将感测头完全浸于水中。
SHT11温湿度传感器采用SMD(LCC)表面贴片封装形式,接口非常简单,引脚名称及各引脚的功能如下:
脚1-GND和脚4-VDD——信号地和电源,其工作电压范围是2.4~5.5V;
脚2-DATA和脚3-SCK——二线串行数字接口,DATA为数据线,SCK为时钟线;
脚5~8——未连接。
SHT11的内部结构和工作原理:
温湿度传感器SHT11将温度感测、湿度感测、信号变换、A/D转换和加热器等功能集成到一个芯片上,其内部结构如图3所示。
该芯片包括一个电容性聚合体湿度敏感元件和一个用能隙材料制成的温度敏感元件。
这两个敏感元件分别将湿度和温度转换成电信号,该电信号首先进入微弱信号放大器进行放大;
然后进入一个14位的A/D转换器;
最后经过二线串行数字接口输出数字信号。
SHT11在出厂前,都会在恒湿或恒温环境巾进行校准,校准系数存储在校准寄存器中;
在测量过程中,校准系数会自动校准来自传感器的信号。
此外,SHT11内部还集成了一个加热元件,加热元件接通后可以将SHT11的温度升高5℃左右,同时功耗也会有所增加。
此功能主要为了比较加热前后的温度和湿度值,可以综合验证两个传感器元件的性能。
在高湿(>
95%RH)环境中,加热传感器可预防传感器结露,同时缩短响应时间,提高精度。
加热后SHT11温度升高、相对湿度降低,较加热前,测量值会略有差异。
SCK
DATA
GND
VDD
图3SHT11内部结构图
微处理器是通过二线串行数字接口与SHT11进行通信的。
通信协议与通用的I2C总线协议是不兼容的,因此需要用通用微处理器I/O口模拟该通信时序。
微处理器对SHT11的控制是通过5个5位命令代码来实现的,命令代码的含义如表2所示。
表2SHT11控制命令代码
命令代码
含义
00011
测量温度
00101
测量湿度
00111
读内部状态寄存器
00110
写内部状态寄存器
11110
复位命令,使内部状态寄存器恢复默认值。
下一次命令前至少等待11ms
其他
保留
SHT11应用设计:
微处理器采用二线串行数字接口和温湿度传感器芯片SHT11进行通信,所以硬件接门设计非常简单;
然而,通信协议是芯片厂家自己定义的,所以在软件设计中,需要用微处理器通用I/O口模拟通信协议。
硬件设计:
SHT11通过二线数字串行接口来访问,所以硬件接口电路非常简单。
需要注意的地方是:
DATA数据线需要外接上拉电阻,时钟线SCK用于微处理器和SHT11之间通信同步,由于接口包含了完全静态逻辑,所以对SCK最低频率没有要求;
当工作电压高于4.5V时,SCK频率最高为10MHz,而当工作电压低于4.5V时,SCK最高频率则为1MHz。
软件设计:
微处理器和温湿度传感器通信采用串行二线接口SCK和DATA,其中SCK为时钟线,DATA为数据线。
该二线串行通信协议和I2C协议是不兼容的。
在程序开始,微处理器需要用一组“启动传输”时序表示数据传输的启动,如图4所示。
当SCK时钟为高电平时,DATA翻转为低电平;
紧接着SCK变为低电平,随后又变为高电平;
在SCK时钟为高电平时,DATA再次翻转为高电平。
图4数据传输启动时序
2.1.3液晶显示LCD1602
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5×
7或者5×
11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。
1602LCD是指显示的内容为16×
2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
显示质量高、数字式接口、体积小、重量轻、功耗低。
1602LCD主要技术参数:
显示容量:
16×
2个字符;
芯片工作电压:
4.5—5.5V;
工作电流:
2.0mA(5.0V);
模块最佳工作电压:
5.0V;
字符尺寸:
2.95×
4.35(W×
H)mm。
1602采用标准的16脚接口,其中:
第1脚:
VSS为电源地。
第2脚:
VDD接5V电源正极。
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度);
第5脚:
RW为读写信号线,高电平“1”时进行读操作,低电平“0”时进行写操作;
第6脚:
E(或EN)端为使能(enable)端。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
1602LCD的指令说明及时序:
1602液晶模块内部的控制器共有11条控制指令,如表3所示。
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说
明:
1为高电平、0为低电平)
表31602LCD控制指令
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
2
光标返回
*
3
置输入模式
I/D
S
4
显示开、关控制
D
C
B
5
光标或字符移位
S/C
R/L
6
置功能
DL
N
F
7
置字符发生存储器地址
字符发生存储器地址
8
置数据存储器地址
显示数据存储器地址
9
读忙标志活地址
BF
计数器地址
10
写数到CGRA,M或DDRAM
要写的数据内容
11
从CGRAM或DDRAM读数
读出的数据内容
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置。
I/D:
光标移动方向,高电平右移,低电平左移;
S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电
平表示关显示;
C:
控制光标的开与关,高电平表示有光标,低电平表示无光标;
B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位。
S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令。
DL:
高电平时为4位总线,低电平时为8位总线;
N:
低
电平时为单行显示,高电平时双行显示;
F:
低电平时显示5×
7的点阵字符,高电
平时显示5×
10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址。
BF:
为忙标志位,高电平表示忙,此时模块不能
接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
2.2模块功能介绍
2.2.1复位电路和时钟电路
此复位电路的工作原理是:
单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电通过电阻给电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒),RC构成的微分电路在上电瞬间产生一个微分脉冲,其宽度大于两个机器周期,89C51将复位。
正因为这样,复位脚的电由低电位升到高电位,引起了内部电路的复位工作,RST端电压慢慢下降,降到一定电压值以后,即为低电平,单片机开始正常工作(这是单片机的上电复位,也叫初始化复位);
当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作(这是手动复位原理)。
如图5所示。
单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路[12],如图5所示。
图5手动复位及时钟电路
2.2.2传感器电路
此模块是整个电路设计的信号采集及初步处理的模块,由温湿度传感器芯片SHT11构成,如图6所示。
主要的功能结构在前面的芯片介绍中已有,这里不重新介绍。
下面介绍多点温湿度采集系统的设计,对于多点采集只需在单个采集的基础上作一点程序上的改动,所以本文只作介绍不作仿真,只对单个采集仿真[16]。
图6SHT11传感器电路
多点采集系统设计
由于每个SHT11占用单片机两个I/O口,所以单片机有限的I/O口资源将制约着单个微控制器上所能测量的最大点数;
由于每个SHT11的测量所需时间是固定不变的,采用单独操作的逐个测量方式在多点测量系统中必然导致数据采集时间过长、控制滞后,从而影响控制系统性能的提高。
在仓库测控应用系统中,要求所采集的温湿度数据是反应整个仓库相同时间点的总体情况的,所以多个SHT11必须同时开始测量,即单片机必须同时向多个SHT11发送测量命令。
结合仓库应用的具体要求,本文对多个SHT11传感器和微控制器的连接方式采取如下方案:
各SHT11的SCK线接到微控制器的同一个I/O口上,而DATA线则分别接到不同I/O口线上。
这种连接方式有几个优点:
首先,n个传感器只占用n+1个I/O口,比前述方式节省了n-1个I/O口,解决了多点测量系统中单片机I/O口资源短缺和尽可能增加测量点之间的矛盾问题;
其次,由于多个SHT11共用一条时钟线所以在每次测量中可以同时发出测量命令,多个传感器同时进行测量,只需一次等待时间则完成了整体数据的收集,大大缩短了数据采集时间,为控制系统快速响应提供了条件[17]。
下面以三点测量为例详细介绍该设计方案的实现,如图7所示。
测量部分中3个SHT11的SCK时钟线均连接到AT89S52的P2.6口,而各DATA线分别接到P2.7、P2.5和P2.4。
当需要再增加测量点时只需要增加对应的I/O口数即可以,而且只需