基于单片机数字温湿度控制器的设计.docx
《基于单片机数字温湿度控制器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机数字温湿度控制器的设计.docx(59页珍藏版)》请在冰点文库上搜索。
基于单片机数字温湿度控制器的设计
本科毕业论文
基于单片机数字温湿度控制器的设计
年 月 日
摘要
适宜的温、湿度是人类及一切动植物生存生长所必需的两个最基本的环境参数,在现代生产生活中,温度和湿度的监测与控制有着十分重要的意义。
传统的测试温度和湿度的方法是通过一定的测试仪器人工逐点进行检测,这种方法费时费力,效率低且误差大。
本文介绍的检测装置不仅具有可以自动检测温度和湿度的功能,而且还可以通过键盘选择需要检测点对应的通道进行显示,报警调节等功能。
不仅提高了传统温度和湿度的检测性能,而且还可以改变初始值对室内或者生产环境的温湿度进行控制,也可以使用于温湿度要求较高的场所,例如实验室,生产车间,仓库等使用都非常方便。
该测控系统是以单片机为核心,配合温度和湿度传感器,以及相关的电路组成。
可以接收所测环境的温度和湿度信号,检测人员可以通过仪器的数码显示数据,实时监控环境的温度和湿度情况。
所有的测量操作都可以通过主机控制软件来实现。
由温度和湿度传感器得到的测量信号,经电路转换为电信号,然后通过一定的放大通过A/D转换送到单片机进行数据处理,经软件分析处理后送显示装置,CPU根据检测到的温度和湿度结果,判断温度,湿度是否在界定的范围内,由此启动系统的报警,并进行自动调节,直到温度和湿度达到标准范围之内为止。
关键词:
温度;湿度;单片机;传感器
1概述
环境条件中的温湿度指标是许多工作场合的重要参数,不论是仓库管理、图书保存还是工业测量与计量检定,都需要符合操作规定的温湿度环境条件。
而温湿度也是最不易保障的指标,针对这一情况,研制可靠且实用的温湿度控制器显得非常重要。
常用温湿度传感器的非线性输出及一致性较差,使温湿度的测量方法和手段相对较复杂,且给电路的调试带来很大的困难。
传统的温湿度测量多采用模拟小信号传感器,不仅信号调理电路复杂,且温湿度值的标定过程也极其复杂,并需要使用昂贵的标定仪器设备。
因此对于温湿度控制器的设计有着很大的现实生产意义,本文以单片机为核心,配合hih3610大信号线性电压输出湿度传感器和ds18b20数字温度传感器研制出一种多功能智能温湿度测试仪,该仪器具有测量精度高、硬件电路简单、并能很好的进行显示、并能进行实现温湿度的闭环控制(PID),可测试不同环境温湿度的特点。
对于湿度的测试本人采用honeywell公司的线性电压输出湿度传感器hih3610研制出一种测试精度高,能测试多点温湿度,且可与上位机通信的温湿度智能测试仪。
该测试仪可实现温湿度的多点自动测量,为温湿度测量自动化奠定了良好的基础。
在本设计中单片机是系统的控制核心,所以单片机的性能关系到整个系统的好坏。
因此单片机的选择,对所设计系统的实现以及功能的扩展有着很大的影响。
单片机种类很多,在众多51系列单片机中,较为常用的是ATMEL公司的AT89C51和AT89S52单片机,AT89C51片内4KROM是Flash工艺的,使用专用的编程器自己就可以随时对单片机进行电擦除和改写,片内有128字节的RAM。
而AT89S52含有在系统可编程的Flash存储器,片内有8K闪存,RAM的容量也较AT89C51大,为256字节。
显然这种单片机优点更多,开发时间也大为缩短。
因此,在本次设计中选用了ATMEL公司的AT89S52单片机。
在本设计中,温度信号的采集为模拟信号,而单片机接收的为数字信号,因此需要进行A/D转换,在需要进行多路A/D转换时,目前常采用多通道A/D转换器,如ADC0809、AD574等。
这些转换器多为8通道,电路较为复杂。
如果只需完成单个通道8位转换,且速度要求不高时,采用TLC549是一种较好的选择,TLC549是单通道的A/D转换芯片,8位开关电容型逐次逼近模数转换器,它具有三个控制输入端,采用简单的3线串行接口可方便地与微处理器进行连接,且价格适中,是做为A/D转换的最佳选择器件之一。
在本设计中,键盘接口电路较为简单,而显示部分有两种方案供选择:
一种为LCD,一种为LED。
LCD液晶显示的像素单元是整合在同一块液晶版当中分隔出来的小方格。
通过数码控制这些极小的方格进行显像。
显示非常细腻但是造价很高。
而LED数码显示中每一个像素单元就是一个发光二极管,如果是单色,一般是红色发光二极管。
如果是彩色,一般是三个三原色小二极管组成的一个大二极管。
这些二极管组成的矩阵由数码控制实时显示文字或图象,造价相对低廉,显示效果也较好。
由于单片机工作现场存在着各种干扰,为保证系统的可靠工作,本设计选择了常用的看门狗芯片X5045,以实现对单片机的复位,监控等功能。
软件程序的设计也考虑了抗干扰措施。
在设计初期找了很多温度传感器,在智能化的温度传感器中,大多是同步串行总线技术,如I²(Philips)、SMBus(Intel)、SPI(Motorola)、Microwire/Plus(NSC)等串行总线协议,而DS18B20采用的是1-WIRE总线协议。
1-WIRE是DALLAS公司的一项专有技术,它采用一根信号线实现信号的双向传输,具有接口简单、节省I/O口线、便于扩展和维护等优点。
为此最终确定使用美国达拉斯(DALLAS)半导体公司推出的智能温度传感器DS18B20,它是将温度传感器、A/D转换器、寄存器、极口电路集成在一块芯片中,可实现直接数字化输出和测试。
系统由以上元器件组成,通过硬件电路和软件程序的设计,实现系统的基本功能。
以下就分别对系统的硬件以及软件方面做一详细介绍。
2硬件部分的设计
对于硬件部分的设计,本着简单可靠的思想。
本次设计的对象是针对一个应用系统,是对环境温度和湿度的检测,其系统构图如图2-1所示。
系统中主要用到:
AT89S52单片机与晶振时钟电路;看门狗复位电路;温度传感器DS18B20;A/D转换TLC549;放大器HAF17358运放器;湿度检测传感器HIH-3610;键盘与LED显示等。
图2-1系统结构图
下面就对各个功能模块或芯片进行详细介绍。
2.1AT89S52单片机及其晶振电路
2.1.1功能特性描述
AT89S52是一种低功耗、高性能CMOS八位微控制器,具有8K在系统可编程Flash存储器,使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许ROM在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使其为众多嵌入式控制应用系统提供灵活的解决方案。
其主要特性为:
(1)与MCS-51单片机产品兼容;
(2)8K字节在系统可编程Flash存储器;
(3)1000次擦写周期;
(4)全静态操作:
0Hz~33Hz;
(5)三级加密程序存储器;
(6)32个可编程I/O口线;
(7)三个16位定时器/计数器;
(8)八个中断源;
(9)全双工UART串行通道;
(10)低功耗空闲和掉电模式;
(11)掉电后中断可唤醒;
(12)看门狗定时器;
(13)双数据指针;
(14)掉电标识符。
AT89S52芯片的引脚图见图2-2
图AT89S52的引脚图
VCC:
电源
Vss:
地
P0口:
8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在Flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在Flash编程和校验时,P1口接收低8位地址字节。
P2口:
具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动四个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在方位外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。
表2-1P1口引脚的第二功能
引脚号
第二功能
P1.0
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5
MOSI(在系统编程用)
P1.6
MISO(在系统编程用)
P1.7
SCK(在系统编程用)
在Flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动四个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在Flash编程和校验时,P3口也接收一些控制信号。
表2-2P3口引脚的第二功能
引脚号
第二功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/
:
控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(
)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
:
外部程序存储器选通信号(
)是外部程序存储器选通信号。
当89S52从外部程序存储器执行外部代码时,
在每个机器周期被激活两次,而在访问外部数据存储器时,
将不被激活。
/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,
必须接地。
为执行内部程序指令,
应该接VCC。
在Flash编程期间,
也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.1.2AT89S52晶振连接电路
AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是
放大器的输入、输出端。
石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。
从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入,如图2-4。
在本设计系统中采用的是外部振荡电路连接法,如图2-3所示。
图2-3内部振荡电路连接图
图2-4外振振荡电路连接图
(石英晶振C1,C2=30PF±10PF陶瓷谐振器C1,C2=40PF±10PF)
2.2看门狗复位电路
当系统CPU不能正常工作时,有可能会造成死机、信息丢失、运行不稳定等故障。
为了解决这些问题,实现系统安全可靠、稳定、实时运行,可以采用集可编程看门狗、电压监控、E2PROM等功能于一身的X5045芯片。
这种组合设计有效地减少了硬件电路的复杂程度。
X5045中的看门狗对系统提供了保护功能。
当系统发生故障而超过设置时间时,电路中的看门狗将通过RESET信号向CPU做出反应。
X5045提供了三个时间值供用户选择使用。
它所具有的电压监控功能还可以保护系统免受低电压的影响,当电源电压降到允许范围以下时,系统将复位,直到电源电压返回到稳定值为止。
X5045的存储器与CPU可通过串行通信方式接口。
引脚介绍:
X5045的引脚图可参见图2-5。
它共有8个引脚:
图2-5X5045的引脚图
表2-3引脚功能描述
引脚
名称
功能描述
1
/WDI
芯片选择输入:
当
是高电平时,芯片末选中,并将SO置为高阻态。
器件处于标准的功耗模式,除非一个向非易失单元写的周期开始。
在
是高电平时,将
拉低将使器件处于选择状态,器件将工作于功耗状态。
在上电后任何操作之前,
必须要有一个高变低的过程。
看门狗输入:
在看门狗定时器超时并产生复位之前,一个加在WDI引脚上的由高到低的电平变化将复位看门狗定时器。
2
SO
串行输出:
SO是一个推/拉串行数据输出引脚,在读数据时,数据在SCK脉冲的下降沿由这个引脚送出。
3
写保护:
当
引脚是低电平时,向X5045中写的操作被禁止,但是其它的功能正常。
当引脚是高电平时,所有操作正常,包括写操作。
如果在
是低的时候,
变为低电平,则会中断向X5045中写的操作,但是,如果此时内部的非易失性写周期己经初始化了,
变为低电平不起作用。
4
VSS
地。
5
SI
串行输入:
SI是串行数据输入端,指令码、地址、数据都通过这个引脚进行输入。
在SCK的上升沿进行数据的输入,并且高位(MSB)在前。
6
SCK
串行时钟:
串行时钟的上升沿通过SI引脚进行数据的输入,下降沿通过SO引脚进行数据的输出。
7
RESET
复位输出:
RESET下是一个开漏型输出引脚。
只要Vcc下降到最小允许Vcc值,这个引脚就会输出高电平,一直到Vcc上升超过最小允许值之后200ms。
同时它也受看门狗定时器控制,只要看门狗处于激活状态,并且WDI引脚上电平保持为高或者为低超过了定时的时间,就会产生复位信号。
引脚上的一个下降沿将会复位看门狗定时器。
由于这是一个开漏型的输出引脚,所以使用时必须接上拉电阻。
8
VCC
正电源。
X5045的状态寄存器描述了器件的当前状态,各位意义如下所示。
表2-4X5045状态寄存器各位定义
7
6
5
4
3
2
1
0
0
0
WD1
WD0
BL1
BL0
WEL
WIP
其中,WD1、WD0是看门狗定时时间设置位;BL1、BL0是存储单元写保护区设置位;WEL是只读标志,1表明写使能开关打开;WIP也是只读标志,1代表芯片内部正处于写周期。
电复位时,各位都被清零。
X5045芯片功能包括以下4种:
(1)上电复位控制。
在对X5045通电时,RESET引脚输出有效的复位信号,并保持至少200ms,使CPU有效复位。
(2)电源电压监控。
当检测到电源电压低于内部门槛电压VTRIP时,RESET输出复位信号,直至电源电压高于VTRIP并保持至少200ms,复位信号才被撤消。
VTRIP的出厂值根据芯片型号不同共有5个级别的电压范围。
对于需要电源电压精确监控的应用,用户可以搭建编程电路,对芯片内VTRIP电压进行微调。
(3)看门狗定时器。
芯片内部状态寄存器的WD1、WD0是看门狗定时设置位,通过状态寄存器写指令WRSR修改这两个标志位,就能在三种定时间隔中进行选择或关闭定时器。
对看门狗的复位由
输入电平的下降沿完成。
下表是WD1、WD0组合的含义。
表2-5WD1、WD0组合定义
WD1
WD0
看门狗定时值
0
0
1.4s
0
1
600ms
1
0
200ms
1
1
禁止看门狗工作
(4)串行E2PROM。
芯片内含512字节存储单元,10万次可擦写,数据保持时间100年,并设计了3种保护方式防止误写。
包括:
写保护引脚,当引脚被拉低时,内部存储单元状态寄存器都禁止写入;
存储区域写保护模式,通过对状态寄存器的BL1、BL0位的设置,可以选择对不同的存储区域进行写保护;
在进行任何写操作前都必须打开写使能开关,而且在上电初始化写操作完成时,写使能开关自动关闭。
显然,在几方面的保护之下,产生误写的可能性极小,下表是BL1、BL0组合的含义。
表2-6BL1、BL0组合定义
BL1
BL0
写保护的单元地址
0
0
没有保护
0
1
180H~1FFH
1
0
100H~1FFH
1
1
000H~1FFH
(1)WREN和WRDI是写使能开关的开/关指令。
它们都是单字节指令。
(2)RDSR和WRSR是状态寄存器的读/写指令。
在从SI输入指令后,RDSR的执行结果,即状态寄存器内容须从SO读出;而WRSR需要紧接着输入修改数据。
(3)READ和WRITE是存储单元的读/写指令。
输入指令后(指令的位三用于选择存储器的上半区和下半区),接着输入低八位地址,最后就可以连续读出或写入数据。
其中,读指针和写指针的工作方式完全不同,读指针的全部8位用来计数,0FFH溢出后变成00H;写指针只用最低两位计数,XXXXXX11B溢出后变成XXXXXX00B,所以连续写的实际结果是在4个单元中反复写入。
另外,由于E2PROM的写入时间长,所以在连续两条写指令之间应读取WIP状态,只有内部写周期结束时才可输入下一条写指令。
芯片内部共有6条指令,如下表所列。
表2-7X5045内部指令
命令名称
命令格式
内 容
WREN
00000110
打开写使能开关
WRDI
00000100
关闭写使能开关
RDSR
00000101
读状态寄存器
WRSR
00000001
写状态寄存器
READ
0000A8011
读存储单元
WRITE
0000A8010
写存储单元
对X5045的操作是通过4根口线
、SCK、SI和SO进行同步串行通信来完成的。
X5045与AT89S52单片机的连接电路图见图2-14。
SCK是外部输入的同步时钟信号,在对芯片进行写入指令或数据时,时钟前沿将SI引脚信号输入;在读取数据时,时钟后沿将数据位输出到SO引脚上。
数据的输入、输出都是高位在先。
图2-6X5045与AT89S52单片机连接电路图
综上所述,并基于图2-6电路产生复位信号的条件,只要满足以下任意一个条件,就将使系统产生复位,迫使程序从起点执行。
(1)该芯片在其上电后自产生复位信号,这样就实现单片机的上电自动复位;
(2)当电源VCC低于规定值时,(如VCC=5V,则规定值为4.25~2.5V),将产生复位信号。
这样就实现系统电源的掉电复位;
(3)当程序在编程选择的时间里没有访问X5045时,即没有一个喂狗语句,则看门狗(WDT)将起作用,RST将产生复位信号,迫使单片机复位。
2.3温度信号采集模块
2.3.1DS18B20芯片简介
DS18B20是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。
该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。
本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:
(1)系统的特性:
测温范围为-55℃~+125℃,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。
(2)系统成本:
由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。
一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。
(3)系统复杂度:
由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。
使测温系统的线路结构设计和硬件开销大为简化。
(4)系统的调试和维护:
由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。
同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。
DS18B20采用3脚封装如图2-7所示
图2-7DS18B20引脚图
(引脚说明:
GND接地;DQ数字输入/输出;VDD可选的电源)
2.3.2DS18B20的温度测量
DS18B20的核心功能是其数字温度传感器,其温度与数字量的关系如表2-8所示。
温度传感器的测量结果被用户定义为9,10,11或12位,其各自的准确度为0.5、0.25、0.125、0.0625。
DS18B20测得温度数据在温度寄存器中被存为带标志位的16位数,标志位S表示温度是正是负,为正则S=0,为负则S=1,如果DS18B20设定为12位结果,温度寄存器中所有位将包含有数据;对于11位结果,0位未定义;10位结果,0位和1位未定义;9位结果位2、位1和位0未定义。
表2-9是DS18B20内部存储器,表2-10是DS18B20温度存储格式与配置寄存器控制字的格式。
由表2-8可知,检测温度由两个字节组成,字节1的高5位S代表符号位,字节0的低4位是小数部分,中间7位是整数部分。
字节4是配置寄存器控制字的格式,当主机发出温度转换命令(44H)时,启动温度转换过程,转换时间最长750ms。
主机通过读寄存器命令(BEH),将温度值读出。
通过写寄存器功能命令,改变分辨率的设置。
表2-8温度和数字量的关系
温度
数字输出(二进制)
数字输出(十六进制)
+1250C
0000011111010000B
07D0H
+850C
0000010101010000B
0550H
+25.06250C
0000000110010001B
0191H
+10.1250C
0000000010100010B
00A2H
+0.50C
0000000000001000B
0008H
00C
0000000000000000B
0000H
-0.50C
1111111111111000B
FFF8H
-10.1250C
1111111101011110B
FF5EH
-25.06250C
1111111001101111B
FE6FH
-550C
1111110010010000B
FC90H
表2-9DS18B20内部存储器
字节
ROM
RAM
0
产品代号(28H)
温度低8位
1
48位器件序列号
温度高8位
2
48位器件序列号
TH
3
48位器件序列号
TL
4
48位器件序列号
配置寄存器
5
48位器件序列号
保留
6