完整版基于51单片机的温湿度检测控制系统本科生学士学位毕业设计.docx
《完整版基于51单片机的温湿度检测控制系统本科生学士学位毕业设计.docx》由会员分享,可在线阅读,更多相关《完整版基于51单片机的温湿度检测控制系统本科生学士学位毕业设计.docx(48页珍藏版)》请在冰豆网上搜索。
完整版基于51单片机的温湿度检测控制系统本科生学士学位毕业设计
摘要
本次设计是采用MSC-51系列单片机中的AT89S51和DHT11构成的低成本的温湿度的检测控制系统。
单片机AT89S51是一款低消耗、高性能的CMOS8位单片机,由于它强大的功能和低价位,因此在很多领域都是用它。
DHT11温湿度传感器是一款含有已校准数字输出的温湿度复合传感器,传感器包括一个电阻式感湿原件和一个NTC测温元件,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
设计主要包括硬件电路的设计和系统软件的设计。
硬件电路主要包括单片机、温湿度传感器、显示模块、报警器以及控制设备等5部分。
其中由DHT11温湿度传感器及1602字符型液晶模块构成系统显示模块;测温湿度控制电路由温湿度传感器和预设温度值比较报警电路组成;用户根据需要预先输入预设值,当实际测量的温湿度不符合预设的温湿度标准时,发出报警信号(蜂鸣器蜂鸣),启动相应控制。
软件部分包括了主程序、显示子程序、测温湿度子程序。
关键词:
AT89S51;DHT11;温湿度传感器
Abstract
MicrocontrollerAT89S51isalowconsumption,manyareas.DHT11temperatureandtheoriginalsenseofwetandaNTCtemperaturemeasurementdevices.TheproductisfromedbytheAT89S51inMSC-51SeriesandDHT11constitutewhichisalow-costtemperatureandincludesthedesignofandsystemsoftware.
Thetheactualmeasurementofthetemperatureprogram,thedisplayroutines,temperatureands空气6s
迟滞:
<±0.3%RH
长期稳定性:
<±0.5%RHyr
温度
分辨率:
16Bit
重复性:
±0.2°C
量程范围:
25°C±2°C
响应时间:
1e(63%)10s
电气特征
供电:
DC3.5-5.5V
供电电流:
测量0.3mA待机60μA
采样周期:
次大于2秒
引脚说明
(1)VDD供电3.5-5.5V
(2)DATA串行数据,单总线
(3)NC空脚
(4)GND接地,电源负极
2.3.2串行接口(单线双向)
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。
数据格式:
8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。
总线空闲状态为高电平的时候主机把总线拉低等待DHT11响应,DHT11能检测到起始信号,主机必须把总线拉低,至少大于18ms。
DHT11一旦接收到主机的开始信号,接着就等待开始信号的结束,然后发送80us的低电平响应信号,要读取DHT11的响应信号,必须等待开始信号的结束,并延时等待20-40us后才能够接受,主机发送开始信号后,这时候就可输出高电平或切换到输入模式,接着总线由上拉电阻拉高。
DHT11发送响应信号的时候总线为低电平,DHT11把总线拉高80us之前,必须等到响应信号发送,准备发送数据时,每一bit数据都以50us低电平时隙开始,数据位是0或1是由高电平的长或短来决定。
假如响应信号的读取为高电平,但是DHT11无响应响应,这时候说明路线可能连接不正常,当最后一bit数据传送结束后,DHT11把总线拉低50us,接着总线由上拉电阻拉高进入空闲状态。
2.3.3电气特性
VDD=5V,T=25℃
图2-3-3电气特性(注:
采样周期间隔不得低于1秒钟)
参数
条件
min
typ
max
单位
供电
DC
3
5
5.5
V
供电电流
测量
0.5
2.5
Ma
平均
0.2
1
Ma
待机
100
150
Ua
采样周期
秒
1
次
2.3.4性能说明
表2-3-4性能说明
参数
条件
Min
Typ
Max
单位
分辨率
8
±
Bit
1
1
1
%RH
精度
25℃
±4
%RH
重复性
±1
%RH
温度
0-50℃
±5
%RH
温度
量程范围
0℃
30
90
%RH
50℃
20
80
%RH
25℃
20
90
%RH
长期稳定性
典型值
±1
%RHyr
迟滞
±1
℃
互换性
可完全互换
分辨率
8
8
8
Bit
1
1
1
℃
重复性
±1
℃
响应时间
1e(63%)
6
30
S
量程范围
0
50
℃
精度
±1
±2
℃
2.3.5引脚说明
表2.3.5DHT11引脚说明
pin
名称
注释
1
VDD
供电3-5.5V
2
DATA
串行数据,单总线
3
NC
空脚,悬空
4
GND
接地,电源负极
注意引脚2在接单片机时,同时要在数据线接一上拉电阻,接到电源上[4]。
2.3.6应用信息
电阻式温、湿度传感器暴露在化学物质中会受到干扰,导致灵敏度下降,当处于极限状态时,传感器可以通过程序处理,回复到初试的校准状态,在不符合规范的范围内使用传感器,不仅会导致几乎3%的临时漂移信号,而且会加速产品的老化,转为正常的使用范围后,会渐渐恢复校准状态;温度是影响气体相对湿度的关键,因此测量时最好让湿度传感器工作温度相同[5]。
2.3.7封装信息
图2-3-6DHT11的封装信息
2.4AT89S51单片机
2.4.1单片机介绍
AT89S51是美国ATMEL公司生产的低功耗、高性能CMOS的8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP),也可用传统方法进行编程及通用8位微处理器于单片机芯片中,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制的领域【8】。
AT89S51提供以下的功能标准:
4K字节闪烁存储器,128字节随机存取数据存储器,2个16位定时计数器,32个IO口,1个串行通信口,1个5向量两级中断结构,另外,AT89S51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式,闲散方式停止中央处理器的工作,可允许随机存取数据存储器、定时计数器、串行通信口及中断系统继续工作。
掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位,在AT89C51上新增加的功能使AT89S51性能有了较大提升,它的价格甚至更低,它的工作频率可达33MHz,比AT89C51的工作频率更高,ISP在线编程功能的优越性在于它不必要将芯片从工作状态下分离,特别是在改写存储器内的程序,这是一个相当方便简单的功能,它不需要像AT89C51那样外接看门狗计时器单元电路,由于它内部具有双工UART串行通道内部集成看门狗计时器,它具有全新的加密算法,大大加强的程序的保密性,有效的保护知识产权不被侵犯,它完全兼容51全部字系列产品[8]。
图2-5-1AT89S51引脚图
2.4.2引脚说明:
VCC:
电源电压输入端。
GND:
电源地
P0口:
P0口为一个8位漏级开路双向IO口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P0口在访问外部存储器时,P0口既是一个真正的双向数据总线口,又是输出8位地址口。
它包括一个输出锁存器,两个三态缓冲器,一个输出驱动电路和一个输出控制电路
P1口:
P1口是一个内部提供上拉电阻的8位双向IO口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入”1”后,被内部上拉为高电平,可用作输入。
P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
专门为用户使用的IO口,是准双向口,P1口为8位准双向口,每一位均可单独定义为输入或输出口。
在编程校验期间,用做输入低位字节地址。
P1口可以驱动4个TTL负载。
P2口:
P2口为一个内部上拉电阻的8位双向IO口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向IO口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
P2口也是双向口。
它是供系统扩展时输出高8位地址。
如果没有系统扩展时,也可以作为用户的IO口使用。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2=64k,所以AT89S51最大可外接64kB的程序存储器和数据存储器。
P3口除了作为普通IO口,还有第二功能:
表2-5-2P3口的第二功能
端口引脚
功能特性
P3.0
串行输入口(RXD)
P3.1
串行输出口(TXD)
P3.2
外中断0(INTO)
P3.3
外中断1(INT1)
P3.4
定时计数器0的外部输入口(T0)
P3.5
定时计数器1的外部输入口(T1)
P3.6
外部数据存储器写选通(WR)
P3.7
外部数据存储器读选通(RD)
RST:
复位输入端,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALEPROG:
地址锁存允许编程脉冲信号端。
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的16。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号,低电平有效。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EAVPP:
外部程序存储器访问允许。
注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
片内振荡器反相放大器和时钟发生器的输入端。
XTAL2:
片内振荡器反相放大器的输出端。
现在已经对四个8位双向并行IO口有了初步的了解。
根据以上的内容可知只有P1口是标准的IO口,所以我们选用P1口作为数据端口,P1口可逐位分别定义各口线为输入或输出线[7]。
2.4.3单片机最小系统
所谓单片机的最小系统是指使单片机能运行程序、正常工作的最简单电路系统,是保证单片正常启动、开始工作的必须电路,缺一不可。
单片机最小系统一般由单片机、程序存储器、时钟电路和复位电路组成。
对于AT89S51单片机,由于片内有4K的程序存储器,所以其最小系统除了单片机本身外,只需外接时钟电路与复位电路即可。
2.4.4主要性能特点和优越性
(1)4kBytesFlash片内程序存储器;
(2)128bytes的随机存取数据存储器(RAM);
(3)32个外部双向输入输出(IO)口;
(4)5个中断优先级、2层中断嵌套中断;
(5)6个中断源;
(6)2个16位可编程定时器计数器;
(7)2个全双工串行通信口;
(8)看门狗(WDT)电路;
(9)片内振荡器和时钟电路;
(10)与MCS-51兼容;
(11)全静态工作:
0Hz-33MHz;
(12)三级程序存储器保密锁定;
(13)可编程串行通道;
(14)低功耗的闲置和掉电模式。
2.5中断系统
2.5.1中断
程序执行过程中,允许外部或内部事件通过硬件打断程序的执行,使其转向为处理内部事件的中断服务程序中去;完成中断服务的程序后,CPU继续原来被打断的程序,这样的过程称为中断过程。
2.5.2产生中断
能产生中断的外部和内部事件。
AT89S51有5个中断源:
(1)INT0:
外部中断0请求,低电平有效。
通过P3.2引脚输入。
(2)INT1:
外部中断1请求,低电平有效。
通过P3.3引脚输入。
(3)T0:
定时器计数器0溢出中断请求。
(4)TI:
定时器计数器1溢出中断请求。
(5)TXDRXD:
串行口中断请求。
当串行口完成一帧数据的发送或接收时,便请求中断。
每一个中断源都对应一个中断请求标志位,它们设置在特殊功能寄存器TCON和SCON中。
当这些中断源请求中断时,相应的标志分别有TCON和SCON中的相应位来锁存。
2.5.3中断系统有以下4个特殊功能寄存器
(1)定时器控制寄存器TCON(用6位);
(2)串行口控制寄存器SCON(用2位);
(3)中断允许寄存器IE;
(4)中断优先级寄存器IP。
其中,TCON和SCON只有一部分用于中断控制。
通过对以上各特殊功能寄存器的各位进行置位或复位等操作,可实现各种中断控制功能。
2.6复位电路
复位是单片机的初始化操作。
其主要功能是把PC初始化为000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如下图所示.
表2-8复位操作对寄存器的影响
寄存器
复位状态
寄存器
复位状态
PC
0000H
TCON
00H
ACC
00H
TL0
00H
PSW
00H
THO
00H
SP
07H
TL1
00H
DPTR
0000H
TH1
00H
P0-P3
FFH
SCON
00H
IP
XX000000B
SBUF
不定
IE
0X000000B
PCON
OXXXOOOOB
TMOD
OOH
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。
单片机的复位分为上电自动复位、按键手动复位两种和看门狗强制复位三种等。
上电复位通常利用电容的充放电来实现,按键复位则可分为按键脉冲复位和按键电平复位两种,看门狗复位则通过外接看门狗电路或软件看门狗程序实现。
常见的有上电复位和按键复位电路。
2.7时钟电路
时钟电路可以简单定义如下:
1.就是产生象时钟一样准确的振荡电路;2.任何工作都按时间顺序。
用于产生这个时间的电路就是时钟电路。
时钟电路一般由晶体震荡器、晶震控制芯片和电容组成。
时钟电路应用十分广泛,如电脑的时钟电路、电子表的时钟电路以及MP3、MP4的时钟电路。
时钟电路用于产生单片机的基本时钟信号,是用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟,如果运行时钟为0的话,单片机就不工作,当然超出单片机的工作频率的时钟也会导致单片机不工作。
时钟电路是微型计算机的心脏,它控制着计算机的工作节奏,CPU就是通过复杂的时序电路完成不同的指令功能的。
MCS-51的时钟信号可以由两种方式:
一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:
另一种为外部方式,时钟信号由外部引入。
如果没有时钟电路来产生时钟驱动单片机,单片机是无法工作的[12]。
AT89S51的时钟信号可由内部振荡器产生,也可由外部电路直接提供。
内部振荡器的输入和输出脚分别为XTAL1和XATL2,由XTAL2给单片机内部电路提供时钟信号。
当时钟信号由外部电路提供时,外部时钟引入XTAL2,而XTAL1脚接地。
2.8显示部分:
LCD
显示部分是LCD1602液晶显示,
图2-8正常工作LCD1602显示
2.8.1LCD1602液晶简介
LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图2-9所示。
图2-8-1LCD1602规格
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块
2.8.2LCD1602主要技术参数
表2-8-21602的主要技术参数
工作电压:
4.5—5.5V
容量
16×2个字符
最佳工作电压
5.0V
工作电流
2.0mA
字符尺寸
2.95×4.35(W×H)mm
2.8.3引脚功能说明
1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
表2-8-3引脚接口说明表
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表编号
符号
引脚说明
1
VDD
正极
2
VSS
地
3
VL
液晶显示偏压
4
RS
寄存器选择
5
RW
读写选择
6
EN
使能信号
7
D0
数据
8
D1
数据
9
D2
数据
10
D3
数据
11
D4
数据
12
D5
数据
13
D6
数据
14
D7
数据
15
BLA
背光源正极
16
BLK
背光源负极
图2-8-3LCD1602的管脚图
图2-8-31602字符型液晶显示器实物图
2.8.4LCD1602的RAM地址映射及标准字库表
液晶显示模块是一个比较慢的显示器件,因此在执行指令之前要首先确认模块的忙标志处于低电平,表示空闲,不然此指令失效,输入显示字符地址后会显示字符,图是1602的内部显示地址。
图2-8-41602LCD内部显示地址
2.8.5指令说明
LCD1602液晶模块内部的控制器控制指令:
(1)清屏指令
指令功能
指令编码
执行时间ms
清屏
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1.64
0
0
0
0
0
0
0
0
0
1
功能:
①清除液晶显示器,即将DDRAM的内容全部填入“空白”的ASCII码20H;
②光标归位,即将光标撤回液晶显示屏的左上方;
③将地址计数器(AC)的值设为0.
(2)光标归位指令
指令功能
指令编码
执行时间ms
光标归位
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1.64
0
0
0
0
0
0
0
0
1
X
功能:
①把光标撤回到显示器的左上方;
②把地址计数器(AC)的值设置为0;
③保持DDRAM的内容不变
(3)进入模式设置指令
指令功能
指令编码
执行时间us
进入模式设置
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
40
0
0
0
0
0
0
0
I
ID
S
功能:
设定每次定入1位数据后光标的以为方向,并且设定每次写入的一个字符是否移动。
参数设定的情况如下所示:
位名设置
ID0=写入新数据后光标左移1=写入新数据后光标右移
S0=写入新数据后显示屏不移动1=写入新数据后显示屏整体右移一个字符
(4)显示开关指令控制
指令功能
指令编码
执行时间us
显示开关控制
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
40
0
0
0
0
0
0
1
D
C
B
功能:
控制显示器开关、光标显示关闭以及光标是否闪烁,参数设定的情况如下:
位名设置
D0=显示功能关1=显示功能开
C0=无光标1=有光标
B0=光标闪烁1=光标不闪烁
(5)设定显示屏或光标移动方向指令
指令功能
指令编码
执行时间us
设定显示屏或光标移动方向
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
40
0
0
0
0
0
1
SC
RL
X
X
功能:
使光标移位或使整个显示屏幕移位。
参数设定的情况如下:
SCRL设定情况
00光标左移1格,且AC值减1
01光标右移1格,且AC值加1
10显示器上字符全部左移1格,但光标不动
11显示器上字符全部右移1格,但光标不动
(6)功能设定指令
指令功能
指令编码
执行时间us
功能设定
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
40