基于at89s52单片机的温湿度检测仪学士学位论文.docx
《基于at89s52单片机的温湿度检测仪学士学位论文.docx》由会员分享,可在线阅读,更多相关《基于at89s52单片机的温湿度检测仪学士学位论文.docx(66页珍藏版)》请在冰豆网上搜索。
基于at89s52单片机的温湿度检测仪学士学位论文
基于AT89S52单片机的温湿度检测仪
摘要
随着社会的发展,人们对环境中的温度和湿度的要求也越来越高,尤其是在医学、电子电力、航天航空、食品发酵等领域中对温湿度的要求尤其严格,鉴于如此设计出一个能够精确、稳定、实时测量出环境中温湿度的实用型温湿度检测仪显得尤为重要。
本温湿度检测仪是以AT89S52单片机的为核心控制芯片,该单片机有很好的抗干扰能力、响应速度快。
基于此单片机的温湿度检测仪可以实时、准确的测量环境中的温度和相对湿度。
本检测仪的硬件部分的设计采用了0809A/D转换器以高灵敏度采集湿敏电阻阻值变化,在经过单片机处理得到相应湿度;单片机直接控制温度传感器DS18B20对温度实时采集和监控。
本仪器还增加了报警装置,用户可根据需要设定温湿度上下限,若当前温湿度超限便会报警。
接入独立键盘键盘实现人机交换功能,并用LCD12864作为显示设备的硬件设计方案。
软件部分则采用模块化的方法将其分成几个部分,然后逐模块设计程序,用C语言来实现,使各部分结合起来协调工作,最终实现对环境中温湿度的实时检测。
该温湿度检测仪能够基本完成的温湿度检测,但由于个人经验不足等因素,本设
计还有一些不足之处,离产品实用还有一定的差距,还有一些方面需要进一步完善。
关键词:
AT89S52单片机,A/D转换器,传感器,LCD,温湿度
MEASURINGINSTRUMENTFORHUMIDITYBASEEDONAT89S52MICROCONTROLLER
ABSTRACT
Withthedevelopmentofsociety,peopleontheenvironmentoftemperatureandhumidityrequirementsarealsoincreasing,especiallyinthemedical,electronicpower,aerospace,foodfermentation,suchastemperatureandhumidityinthefieldoftheharshdemandsinparticular,inviewofsuchadesignthatCanbeprecise,stable,real-timemeasurementoftemperatureandhumidityenvironmenttothepracticaltemperatureandhumiditydetectoritisparticularlyimportant.
ThetemperatureandhumiditydetectorisAT89S52asthecorechip,themicrocontrollerhasaverygoodanti-disturbancecapacity,fastresponse.BasedonthisMCUtemperatureandhumiditydetectorcanbereal-time,accuratemeasurementofenvironmentaltemperatureandrelativehumidity.
ThedetectorpartofthedesignofthehardwareusedtowithAT89S52microcontrollerasthecoreofthecontroldevices,withhighsensitivityAD0809colecthumidityresistancechangethenthroughtheMCUhandledataacquisitioncomponentsforhumidity.AT89S52directcontroltheDS18B20obtainnowtemperature.Thedeviceaddanalarm,itcansetrange.iftempratureandhumidityoverlimititwillalarming.Analoginputkeyboardtoachievehuman-computerinterfaceexchangefunctionandusedasanLCDdisplayhardwaredesign.Thesoftwarepartisdividedintoseveralparts,andtheneachmoduledesignprocess,withClanguagetoachieve,tocombinethevariouspartsofcoordination,andeventuallyrealizetheenvironmentaltemperatureandhumidityinthereal-timedetection.
Thetemperatureandhumiditydetectorcanbasicallycompletethetemperatureandhumiditytesting,butbecauseofpersonalfactorssuchaslackofexperience,thedesignofsomedeficiencies,therearecertainpracticalproductsfromthegap,therearesomeaspectsneedtobeimproved.
KEYWORDS:
AT89S52MCU,A/Dconversion,Sensor,LCD,Temperatureandhumidity
目 录
前 言1
第1章温湿度检测仪总体技术方案2
§1.1温湿度检测仪的主要性能指标及其工作原理2
§1.1.1性能指标2
§1.1.2温湿度检测仪的工作原理2
§1.2温湿度检测仪的硬件设计总体结构方案3
§1.3温湿度检测仪应用软件系统的设计方案3
§1.4温湿度检测仪AT89S52单片机电路的设计5
§1.5温湿度检测仪的硬件电路设计7
§1.5.1温度检测电路7
§1.5.2湿度检测电路8
§1.5.3其它模块电路设计9
第2章温湿度检测仪的软件设计11
§2.1主程序模块设计11
§2.2温湿度检测模块程序设计12
§2.2.1温度检测模块程序设计12
§2.2.2湿度检测模块程序设计14
§2.3键盘扫描和LCD显示模块程序设计19
§2.3.1键盘扫描19
§2.3.2I2总线程序设计23
结 论27
参考文献28
致 谢29
附 录30
前 言
在日常实际生产生活中,科研、农业、暖通、纺织、机房、航空航天、电力等工业部门对产品质量的要求越来越高,对环境温、湿度的控制以及对工业材料的水分值的监测与分析都已成为比较普遍的技术条件之一。
随着科技的进步,检测仪表也向着智能化、小型化、低功耗的方向发展。
在这个发展过程中,以单片机为核心控制器的温湿度检测以体积小、操作简单、性能稳定、测量精度高等诸多有点正逐步进入生产生活的各个方面。
本文介绍的湿度检测仪就是以AT89S52单片机作为核心控制器设计的,它具有体积小、操作简单、性能稳定、测量精度高和抗干扰能力强等优点,可广泛应用于需要对温湿度进行测控的领域中。
先根据实际生产生活的需要提出温湿度检测仪的设计功能要求,然后由这些具体要求和现有的设计条件设计出了适合的硬件原理图,尽量采用模块化的方法将其分成几个部分,然后分模块设计程序,最使各部分结合起来协调工作,实现功能要求。
它是以单片机的在控制方面的突出优势,并综合运用现代检测技术、微控制技术、数据处理和通信技术以及LCD显示技术而设计的数字温湿度检测系统,可以实时、准确的测量环境中的温度和相对湿度,对生产生活有较好的知道意义。
论文的第一章介绍了温湿度检测仪的主要性能指标及其工作原理,主要介绍了温湿度检测仪的硬件设计总体方案和温湿度检测仪的应用软件系统的总体设计方案;第二章主要介绍了温湿度检测仪的硬件电路设计,重点介绍了温度检测电路、键盘LCD显示电路和湿度检测电路;第三章主要介绍了基于AT89S52单片机的湿度检测仪的软件设计,软件设计部分采用模块化设计,重点介绍了湿度检测模块程序设计中键盘扫描、LCD显示。
第1章温湿度检测仪总体技术方案
温湿度作为环境中的两项重要参数,在很多方面都起着重要的作用。
本文中的基于AT89S52单片机的湿度检测仪就是针对这一需求而设计的。
它综合运用了现代检测技术、数据处理和通信技术以及LCD显示技术,可以实时、准确、稳定的测量环境中的温度和相对湿度。
在此设计过程中,本设计综合分析了不同用户在不同场合的不同需求,经研究之后,采用了AT89S52单片机为核心控制器件,A/D0809转换器以高灵敏度温度传感器和湿度传感器为数据获取元件的方案。
该设计主要分为硬件设计和软件部分的设计,下面先总体介绍设计的性能指标和软硬件的总体设计方案。
§1.1温湿度检测仪的主要性能指标及其工作原理
§1.1.1性能指标
1.相对湿度测量精度和范围:
±5%,检测范围0~100%;
2.温度测量精度:
±1℃,检测范围0~100℃;
3.温湿度上下限设定范围:
20~100,0~20;
4.LCD实时显示;
5.电源:
DC5V±10%;
6.工作环境温度≤90℃,工作环境湿度≤90%;
§1.1.2温湿度检测仪的工作原理
加载有相应程序的AT89S52单片机定时采集温度传感器信号和相对湿度测量电路电压输出信号此电压由两位数码管显示出来,从而获得温度和相对湿度数据,分别将这些数据存储于数据存储器中,用户可根据需要设定温湿度上下限值,若单片机采集的数据超限便会报警。
温湿度上下限显示和当前显示都由LCD12864显示屏显示,可通过键盘电路来选择检测湿度或者检测温度。
§1.2温湿度检测仪的硬件设计总体结构方案
该检测仪采用AT89S52单片机为核心,整个硬件系统分为以下几个部件,具体如图1-1所示:
图1-1硬件电路框图
温度检测电路由传感器DS18B20和电阻构成,电阻接在电源和数据线之间,因为DS18B20是单总线温度传感器,数据线是漏极开路,如果DS18B20没接电源,则需要数据线强上拉,给DS18B20供电;如果DS18B20接有电源,则需要一个上拉即可稳定的工作,在经过单片机应用软件处理得到环境温度。
湿度测量电路由0809A/D转换器和湿敏电阻组成,湿敏电阻阻值随环境相对湿度的变化而变化,从而导致其两端电压的变化变化,由0809A/D把模拟量转换成数字量,单片经过软件处理后,获得相对电压值和湿度值。
键盘输入电路与LCD显示电路实现人机对话的功能。
ISP接口电路与PC机的联接,实现下载程序等通讯功能。
§1.3温湿度检测仪应用软件系统的设计方案
该仪表的系统程序设计采用模块化的程序设计方法,其结构见图1-2:
图1-2软件设计模块图
检测仪的应用软件系统包括:
主程序模块、温度检测模块、相对湿度检测模块、掉电存储模块,键盘和显示模块等。
主程序的内容包括:
主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序相互调用,主程序是整个程序的框架,决定了检测仪的工作性能。
温度检测模块实现对湿度数据的存储、显示。
储、显示;相对湿度检测模块主要是完成测湿度电路所得电压与实际湿度的转换,和对湿度数据的存
键盘、显示模块完成检测仪的检测数据的显示功能,反映出要检测的的数据。
§1.4温湿度检测仪AT89S52单片机电路的设计
At89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻
辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,
P0不具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验
时,需要外部上拉电阻。
P1口:
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位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个
TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)
时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用
8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个
TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
§1.5温湿度检测仪的硬件电路设计
该温湿度检测仪的硬件系统由以下部分组成:
温度测量电路、相对湿度度测量电路、键盘扫描电路、LCD显示电路、ISP下载电路,各部分设计如下。
§1.5.1温度检测电路
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
1、DS18B20产品的特点
(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。
C到+125。
C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。
(6)、内部有温度上、下限告警设置。
2、DS18B20的引脚介绍
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VCC
电源
§1.5.2湿度检测电路
湿敏电阻是利用湿敏材料吸收空气中的水分而导致本身电阻值发生变化这一原理而制成的。
工业上流行的湿敏电阻主要有半导体陶瓷湿敏元件,氯化锂湿敏电阻,有机高分子膜湿敏电阻
主要参数
湿敏电阻器的主要参数
1)相对湿度:
指在某一温度下,空气中所含水蒸气的实际密度与同一温度下饱和密度之比,通常用“RH”表示。
例如20%RH
2)湿度温度系数(%RH/℃):
指在环境湿度恒定时,湿敏电阻器在温度每变化1℃时,其湿度指示的变化量。
3)灵敏度:
指湿敏电阻器检测湿度时的分辨率。
4)测湿范围(%RH):
指湿敏电阻器的湿度测量范围。
5)湿滞效应:
指湿敏电阻器在吸湿和脱湿过程中电气参数表现的滞后现象。
6)响应时间(s):
指湿敏电阻器在湿度检测环境快速变化时,其电阻值的变化情况。
(反应速度)。
特性
湿敏电阻器特性:
是一种对环境湿度敏感的元件,它的电阻值能随着环境的相对湿度变化而变化。
应用
湿敏电阻器的应用:
广泛应用于洗衣机、空调器、录音机、微波炉等家用电器及工业、农业等方面作湿度检测和湿度控制用。
§1.5.3其它模块电路设计
键盘模块采用动态扫描的方式,键盘扫描电路控制温度和湿度界面的选择同时还能修改上下限的设定温度。
本设计中采用两个数码管进行动态显示,用三极管C8550驱动来显示相对湿度的电压。
带中文字库的图形液晶12864
用来显示温湿度界面,由于单片机的I/O口有限,我采用了两片74HC573锁存器来扩大I/O口以便连接所有器件。
具体电路如下图所示:
128X64HZ引脚说明
引脚号
引脚名称
方向
功能说明
1
VSS
-
模块的电源地
2
VDD
+5V
模块的电源正端
3
V0
-
LCD驱动电压输入端
4
RS(CS)
H/L
并行的指令/数据选择信号;串行的片选信号
5
R/W(SID)
H/L
并行的读写选择信号;串行的数据口
6
E(CLK)
H/L
并行的使能信号;串行的同步时钟
7
DB0
H/L
数据0
8
DB1
H/L
数据1
9
DB2
H/L
数据2
10
DB3
H/L
数据3
11
DB4
H/L
数据4
12
DB5
H/L
数据5
13
DB6
H/L
数据6
14
DB7
H/L
数据7
15
PSB
H/L
并/串行接口选择:
H-并行;L-串行
16
NC
空脚
17
RESET
H/L
复位低电平有效
18
NC
空脚
19
LED_A
(LED+5V)
背光源正极
20
LED_K
(LED-OV)
背光源负极
逻辑工作电压(VDD):
4.5~5.5V
电源地(GND):
0V
工作温度(Ta):
-10℃~60℃(常温)/-20℃~70℃(宽温)
三、接口时序
模块有并行和串行两种连接方法(时序如下):
8位并行连接时序图
MPU写资料到模块
MPU从模块读出资料
2、串行连接时序图
串行数据传送共分三个字节完成:
第一字节:
串口控制—格式11111ABC
A为数据传送方向控制:
H表示数据从LCD到MCU,L表示数据从MCU到LCD
B为数据类型选择:
H表示数据是显示数据,L表示数据是控制指令C固定为0
第二字节:
(并行)8位数据的高4位—格式DDDD0000
第三字节:
(并行)8位数据的低4位—格式0000DDDD
串行接口时序参数:
(测试条件:
T=25℃VDD=4.5V)
1、指令表1:
(RE=0:
基本指令集)
指令
指令码
说明
执行时间(540KHZ)
RS
RW
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
清除显示
0
0
0
0
0
0
0
0
0
1
将DDRAM填满“20H”,并且设定DDRAM的地址计数器(AC)到“00H”
4.6ms
地址归位
0
0
0
0
0
0
0
0
1
X
设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置;这个指令并不改变DDRAM的内容
4.6ms
进入点
设定
0