LCD1602体温计系统设计.docx
《LCD1602体温计系统设计.docx》由会员分享,可在线阅读,更多相关《LCD1602体温计系统设计.docx(31页珍藏版)》请在冰豆网上搜索。
LCD1602体温计系统设计
摘要
该设计主要研究了基于低消耗单片机数字显示体温计的实现和原理。
该设计硬件的部分是由显示模块和复位按键以及蜂鸣警报器构成的,它们在设计过程中分别可以显示测温,再次测温以及超过设定温度就会报警的作用。
中央处理芯片可以用51单片机。
软件设计部分本设计用的是C语言进行编程,用keil作编程软件,软件设计部分可以将温度传感器接收的数字信号用十进制的方式表达出来,并在LCD1602上给予精确显示,在实现过程中温度值超过设定值时蜂鸣器就会报警,测定温度可以用按键让它保持。
用LCD1602电子体温计测温的精确度很高,较之我们生活中平常用的水银温度计来说,它能够更加的简单方便测温及显示温度值。
每次测量温度时间一秒钟,测量过程时间较短。
数字体温计轻捷方便、精确度很高、并且过程简单易懂可用于生活与科学。
关键字:
数字体温计,51单片机,DS18B20,LCD1602
Abstract
Throughthepaper,Iresearchedtheprincipleandachievementofthedigitalthermometer,whichisbasedonSingle-chipmicrocomputer.thehardwarepartisdividedintodatacollectionpart,displayingpart,keyingandalertingpart,whilerealizesthedesignofthewholecircuitry,thedataacquisitionandthesynthesizedofthedisplaypart.Thecentralprocessingchipis51Single-chipmicrocomputer,thetemperaturesensorisDS18B20andthedisplayerisLCD1602.ThesoftwaredesignpartusesClanguagetoprogramme,useskeilastheprogrammesoftware,thesoftwaredesignpartrealizesturningthesignaltemperaturesensorcollectstodecimalsystem,displayingthetemperatureonLCD1602,whenthetemperatureishigherthanthestandardtemperature(setvalue),thebuzzergiveanalarm,thekeyisusedtokeepthemeasuredtemperature.
ComparedthedigitalthermometerwiththedigitalthermometerbasedonSingle-chipwhichischeapcanmeasuretemperatureaccuracily.Theaccuracyis0.0625.Itcandisplaythenumberatoneradixpoint.Themeasuringtimeisshort,thetimemeasureeachtimeisshorterthanonesecond.Itcanbecarriedconveniency,itischeapanditisaccurate.
Keywords:
DigitalThermometer,51Single-chipMicrocomputer,DS18B20,LCD1602
前言
数字体温计在生活、科技等地方都用到,单片机的普及与应用使人们的生活更加简易与方便,用它来比较传统水银温度计,该设计能更精确的显示人体体温测量。
温度测量涉及我们日常生活以及工作等多方面的领域。
但是由于水银体温计使用方便而且较为传统所以在实际应用中用到比较多。
目前所使用的水银温度计分辨率大概都在1到0.1之间。
再加上水银温度计测温的方法与其构造都已成熟,所以没有太大改进的余地,人们几乎已经习惯了水银温度计的现状没有过多的去研究,导致它没有更好的发展。
水银体温计测量温度时会带来很大的不便,因为水银温度计的刻度的间隔一般情况下都很密,不易分辨,导致读数困难,并且它们的热容量较大,要达到热平衡所需要的时间也较长,使用起来比较不便。
水银是一种污染比较严重的物质。
为了更精确的测量出人体的局部温度,也改进与发展了不少测量体温的方法和仪器。
目前,出现的电子体温计正逐步的普及人们的生活与用于科技发展,对于我们来说是一个很好的消息,较之传统测温方法有了很大进步。
温度计从传统的水银温度计到电子式温度计发展的很迅速,现在大多数领域都有触及。
传感器是电子式的重要构成部分能传感温度的高低,温度计的精度度与灵敏度基本能决定温度计对温度的精确测量范围与控制范围和用途等。
温度传感器在应用上非常广泛,到目前为止已经研究并制造出很多种温度传感器,使得温度监控系统的性能优良。
该设计较之普通电子体温计有大幅度的提高:
设计电路简单,消耗低,精确度高,并且可实现超过温度设定值报警。
在该设计进行之前,查找了大量的有关书籍与参考文献,全方位的分析了该设计的利与弊,并且研究与之有关的温度传感器以及液晶显示屏,最后选定最优设计方案:
利用DS18B20测量温度,LCD1602显示测量温度值,并且用AT89C51作为中央处理芯片。
在以理论研究设计的基础上,该设计应用了C语言的编程与protues仿真,最后实现了温度测量的精确度。
同时在温度显示增加了按键的部分,按下按键就可保持当前的温度值,使它不会受到外部温度的影响,继续测温只需要再次按下按键。
当测量的温度值大于该设计本身的设定值时蜂鸣器就会报警。
该设计的数字体温计对温度的精确度很高,要想精确度能达到0.0625,本设计可用DS18B20的12位分辨率。
用LCD1602显示测量的温度,可让我们直观的看到显示测量的温度值。
1系统方案设计
1.1温度传感模块的选定
方案一:
利用名称为LM35的温度传感器设计方案。
该方案电路较为复杂,在设计过程中所需要的器件也很多,成本也较高,并且在测温的时候需要用到放大器和A/D转换来处理信号是比较复杂的。
方案二:
采用热敏电阻设计方案。
热敏电阻虽然价格相对便宜,原理也比较简单,但是线性度不是很好,一旦没有进行线性补偿的,很难达到精确度;如果对非线性补偿,电路的结构就会很复杂,在设计过程中很难调整。
方案三:
用DS18B20温度传感器来采集温度与测量。
DS18B20可集成放大器与A/D转换,不需要外部的器件,它有独立的单线接口只需要一个端口引脚就可以通讯,使电路得到简化。
测量温度时数字量的转换时间也比较短,可以用3.0~5.5V的电源供电。
待机状态无功耗。
根据仔细分析,本设计采用的是方案三。
1.2显示模块的选定
方案一:
用数码管来显示。
在我们平常用的数码管种类比较多,显示的测温值数据也读不相同。
数码管需要译码器,在设计的时候过程较为复杂,并且想要显示所测体温值数据需要用七段码。
方案二:
用LCD1602来显示。
在设计时遇到液晶屏是否可以显示时,可以看液晶分子的状态就可以LCD1602显示中想要显示所测量的温度值是否可以显示出来。
用LCD1602显示可以让使用者直接的看到显示的数字温度值,并且它的功耗也较低。
根据仔细分析,本设计采用方案二。
1.3总体方案设计
本设计采集温度选用的是DS18B20。
(1)把DS18B20采集的数据经过单片机I/O口输入,通过单片机把数据处理之后转换成1602能够显示的测温值。
(2)利用液晶屏来显示测出的温度值。
(3)温度超过了设计中的要求值时蜂鸣器就会发出警报。
(4)按下按键能够让温度固定,使它不会受外部环境等因素的影响,再次按下按键就可以继续测温。
1.4总体结构框图
通过上面方案的阐述,该系统采用单片机最小系统为核心,加上LCD1602显示模块、DS18B20人体体温采集模块以及串口模块四部分组成。
整个系统总框图如图2-1所示:
图1.1系统结构框图
2设计原理
2.1单片机AT89C51
2.1.1单片机简介
单片机指的是一个集成在芯片上相当于计算机一个完整系统。
同时集成比如接口和定时器以及实时时钟等设备。
目前一些单片机系统能够将网络与图像以及输出和输入系统集成在一块小芯片上。
单片机微控制器所表示大概意思:
一块芯片相当于一台计算机。
它重量轻、价格也较为便宜,能为学习、实践应用和研究开发带来便利的条件以及让我们进一步了解单片机的工作原理与用途。
2.1.2AT89C51
本设计中的AT89C51是一种性能较高的微处理器含有4K字节的闪烁的低电压,并且我们可以用它进行编程。
较之对比工业上使用的MCS-51指令集与输出管脚相互兼容。
含有ATMEL的AT89C51能让控制系统方案称为更加具有灵活的程度方案并且它的价格方面也是比较便宜的。
图2.1AT89C51引脚图[1]
GND:
接地引脚。
VCC:
电源引脚。
P0:
P0口为一个8位的双向I/O口,每个管脚可以吸收8个TTL门电流。
P0口是没有上拉电阻的,可以外接一个。
这就是P0在设计中的作用和操作过程。
P1:
当把P1口写成“1”的时候,P2口管脚将把其内部上拉电阻进行拉高,可当作输入。
用FLASH编程与检验的时候,P1口将会当作第八位接收地址。
以上就是P1在设计中的作用也操作过程。
P2:
当P2口写成“1”的时侯,P2口管脚将把其内部上拉电阻进行拉高,当作输入。
根据P2口的特性:
内部上拉电阻就可以输出电流。
P3:
当P3口在高电平的状态下,可以作为输入端,并且可以用于输入。
P3口管脚起到的作用及操作过程。
RST:
复位和输入。
EA:
当EA保持低电平的状态时,这个时候应当注意加密方式1时,其内部就会锁定RESET,在用设计软件的过程中,EA引脚可为编程电源。
XTAL1:
反向放大器输入。
XTAL2:
就是反向振荡器输出。
振荡器的作用:
在反向放大器中的输出与输入的分别是管脚18与管脚19,如上图所示XTAL1及XTAL2的管脚分布。
这个反向放大器能配置成片内振荡器。
可采用陶瓷与石英振荡器。
外接电容C1,C2没有太大要求,但是电容容量大小会影响到震荡频率的高低与震荡器工作时的稳定性以及起振的程序难易和温度的稳定性。
芯片擦除:
在重复编程的时候必须要被执行。
2.1.3AT89C51闲散节电模式
AT89C51在闲散模式的情况下就会成为省电模式,在掉电的模式情况下闲散模式作用是相同的。
可以用专门用来控制的寄存器PCON中PD与IDL位来实现。
在PD=1时,掉电工作模式就会被激活单片机则进入掉电的工作状态。
如过要两种工作模式同时进行,就是PD与IDL同时为1是,就会先将掉电模式激活。
闲散工作模式情况下,其它片内的外设依旧会保持激活的状态只有中央处理器CPU处于睡眠状态,这样的方式是因为软件而产生的。
在这个时候,片内随机存取数据存储器是没有改变的特殊功能寄存器的内容同样没有改变。
闲散模式复位终止是可以由所有允许的中断请求和硬件来做到的。
在程序里最开始的是中断,就会进入中断服务的程序,当执行了中断服务程序紧随RETI指令之后,接下来执行的指令是把单片机模式调整进入闲散工作的模式,这是后面的一条指令。
闲散工作模式终止可以通过硬件复位来完成。
激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的写入指令[2]。
2.1.4AT89C51掉电模式
在硬件复位的时候,能够使整个系统重新启动并且再次进行工作,在这个过程中就可以从掉电模式提出。
在掉电的模式的情况下,时钟振荡器停震,单片机处于掉电模式片内RAM的数据被保持,只能用复位来唤醒。
该设计里,采用的是将单片机P3.7口接入到DS18B20的通讯端口P0口与P2.5、P2.6口接入LCD1602液晶显示屏,而P2.0口与P1.5口分别接入按键和接蜂鸣器。
2.2温度传感器DS18B20
2.2.1DS18B20性能
(1) 电压的范围在3.0~5.5V;
(2) 测温的范围是-55~+125℃;
(3) 可以编程分辨率9~12位;
(4) 要想把温度值转换成数字12位分辨率时间应该在750ms之内;
(5) 负压特性:
在设计过程中,将电源的正负极接反,本设计LCD1602电子体温计系统不能正常进行测温及显示。
2.2.2DS18B20的外形和内部结构
图2.2DS18B20简单介绍
DS18B20构成部分:
(1)温度传感器
(2)温度报警触发器
(3)配置寄存器
(4)64位光刻ROM
DS18B20管脚排列与简介如图2.3所示:
图2.3DS18B20外形图[3]
引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为电源输入端(需要外接供电)
DS18B20内部结构:
2.2.3相关数据
DS18B20格式表(温度值)如图2.3:
图2.2温度格式表
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
LSByte
23
22
21
20
2-1
2-2
2-3
2-4
bit15
bit14
bit13
bit12
bit11
bit10
bit9
bit8
MSByte
S
S
S
S
S
26
25
24
表2.3温度数据表
温度
数字输出(二进制)
数字输出(十六进制)
+125oC
0000000011111010
00FAH
+25oC
0000000000110010
0032H
+1/2oC
0000000000000001
0001H
0oC
0000000000000000
0000H
-1/2oC
1111111111111111
FFFFH
-25oC
1111111111001110
FFCEH
-55oC
1111111110010010
FF92H
2.2.4DS18B20寄存器配置
温度值分辨率设置表:
表2.4分辨率数据即时间
R1
R0
分辨率
温度最大转换时间
0
0
9位
93.75ms
0
1
10位
187.5ms
1
0
11位
375ms
1
1
12位
750ms
2.2.5高速暂存存储器
本设计所用的是有由9个字节组成的存储器,即高速暂存存储器。
该存储器对应温度的计算(如下表):
S位一般有两种情况:
当S=0时,二进制与十进制之间相互转换。
当S=1时,原字节的补码变为原码。
具体温度值如表2.5所示。
表2.5DS18B20暂存寄存器功能对应字节
寄存器结构及组成部分
对应字节地址
温度值低位
0
温度值高位
1
高温限值
2
低温限值
3
配置寄存器
4
温度值不变
5
温度值不变
6
温度值不变
7
CRC检验
8
在被控制的情况下,DS18B20想要完成转换需要三个步骤。
步骤如下:
(1)对DS18B20进行复位。
(2)发送RAN指令。
(3)完成转换。
表2.6所示ROM的指令表[4]
指令
约定代码
功 能
读ROM
33H
读DS18B20ROM中的编码。
符合ROM
55H
发出这个命令后,可以帮助DS18B20做读写准备。
搜索ROM
0F0H
设计原件运行准备。
跳过ROM
0CCH
直接通过暂存存储器下达温度转换命令。
蜂鸣警报器命令
0ECH
温度超过设计的要求值就会下达报警命令蜂鸣器就会发出警报。
2.7表RAM指令表
指令
约定代码
功 能
温度变换
44H
把得到的结果存入RAM。
读暂存器
0BEH
内部RAM中9字节的内容。
写暂存器
4EH
传送第3、4两字节的数据。
复制暂存器
48H
把RAM中第3、4字节的内容复制并传送至EEPROM中。
重调EEPROM
0B8H
把EEPROM中的内容恢复到RAM中
读供电方式
0B4H
读DS18B20的供电模式。
2.2.6DS18B20使用中注意事项
DS18B20在测温的时候含有很多优点,例如;简易、使用方便。
如果使用双绞线带屏蔽的电缆的信号传输的长度效果会更好。
因为总线分布电容能让信号波形产生畸变所以会产生这种情况。
所以长距离测温之前必须要检查电路中的电容和电阻之间是否可以让整个电路正常进行。
在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此[5]。
2.3液晶屏LCD1602
2.3.1液晶显示简介
(1)液晶显示原理
原理;运用其物理特性,利用电压就可以控制其显示的地方,通电就可以显示,显示出想要得到的图形。
液晶显示器包含了许多优点,例如;厚度比较的薄、也适用集成电路直接驱动及得到彩色图像等特点,在实际生活中应用也很普及,比如我们的电脑以及电视机等电子产品。
(2)字符
一个字符的组成可以用8×8的点阵来组成,但是相当的复杂,找起来不方便,而且每字节的不同位是“1”,其余的是“0”,是“1”的点亮,是“0”的不亮。
如此就可以组成字符。
液晶显示的基本原理如上两点所诉。
2.3.2LCD1602的基本参数及引脚功能
图2.4LCD1602尺寸[6]
(1)1602LCD的主要技术参数如下
1.显示容量是16×2个字符
2.芯片进行工作时,电压为4.5—5.5V
3.工作电流为2.0mA(5.0V)
4.模块的工作电压为5V
(2)引脚功能的说明
各引脚接口说明如表2.8所示;
编号
符号
引脚说明
1
VSS
接地引脚
2
VDD
电源引脚
3
VL
液晶显示
4
RS
命令选择
5
R
读选择
6
E
使能信号
7
D0
数据
8
D1
数据
表2.8LCD1602引脚说明
2.3.3LCD1602的指令说明及时序
(1)基本操作时序
①读状态:
输入:
RS=L,RW=H,E=H输出:
D0~D7=状态字
②写指令:
输入:
RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:
无
③读数据:
输入:
RS=H,RW=H,E=H输出:
D0~D7=数据
④写数据:
输入:
RS=H,RW=L,D0~D7=数据,E=高脉冲输出:
无
(2)ARM地址映射图
表2.9LCD1602的部分ARM地址
00
01
02
03
04
05
06
07
08
40
41
42
43
44
45
46
47
48
在实验的时候要显示字符时需要提前输入显示字符地址,这样我们就知道在哪里显示字符。
液晶模块初始化的时候必须要先设置它的显示模式,在液晶模块显示字符的时候光标不需要人工操作,它是左右移动的。
在每一次输入指令之前都先要判断液晶模块是不是处于忙的情况下,就可以进行显示。
在1602液晶模块之内的字符发生存储器中,字符的种类有:
英文字母的大小写与阿拉伯数字以及常用的一些符号和日文等等种类字符,这些字符都有自己的固定代码。
(3)指令说明
①初始化设置
表2.10LCD1602初始化
指令码
功能
0
0
1
1
1
0
0
0
设置16×2字符,5×7点阵,8位数据接口
0
0
0
0
1
D
C
B
D=1D=0时分别是开关关显示
C=1C=0时分别是显示与不显示光标
B=1B=0时光标的亮与不亮
0
0
0
0
0
1
N
S
N=1地址加一,S=1整屏显示将会向左移
N=0,地址加一,S=0当写入一个字符,整屏显示不移动
②数据控制
可以通过控制器来访问ARM。
③数据指针
表2.11数据指针
指令码
功能
80H+地址码
设置数据地址指针
④其他设置
表2.12设置及功能
指令码
功能
01H
显示清屏:
1.数据指针清零
2.所有显示清零
02H
显示回车:
1.数据指针清零
(4)初始化过程
延时15ms,写指令38H。
延时5ms,写指令38H
延时5ms,写指令38H
写指令38H:
写指令08H,显示关闭。
写指令0CH:
显示开、及光标设置,写指令01H:
显示清屏。
3系统硬件设计
3.1硬件总体设计思路
在进行本设计时可按照数字体温计特点及要求,本设计所注重是设计一款功耗比较低,成本相对便宜及电路简易,方便携带以及用起来方便的体温计,本设计用处比较广泛,可用于家庭测量人体体温也可以用于医院。
此设计硬件设计我们选用的一些相关芯片是完全符合该设计所要达到的要求的,它能够精确的测温值,它的显示温度在一位小数点以及精度是可达到0.0625oC。
本设计总体设计简单介绍:
通过单片机处理所测的温度信号,在LCD1602显示,当温度超过设计要求温值时,蜂鸣器就会发出警报。
按键可以起到复位的作用再次进行操作。
硬件设计总体原理图如图3.1所示:
图3.1系统原理图
3.2单片机时钟电路与复位电路设计
时钟电路与复位电路原理图如图3.2所示
图3.2时钟电路原理图
3.2.1时钟电路设计
51单片机产生时钟信号可分为内外部时钟的方法。
根据设计要求,本设计选用的是内部时钟的方法。
我们将在单片机XTAL1与XTAL2引脚外接上晶振,这两个电容器起到了稳定频率与快速起振的作用,电容值5-30pF,此设计选用的是22pF。
晶振CYS频率要求不能大于12MHZ,所以本设计用的是12MHZ晶振。
在晶振频率是12MHZ时机器周期就是1us[7]。
3.2.2复位电路设计
此设计选用的是上电复位电路。
在此设计做实验的时候上电复位接通电源,单片机就会自动实现复位操作。
在图3.2电路中上电的时候RST引脚就会获得得高电平,电容C1在不断的充电的情况下RST引脚的高电平就慢慢的下降。
RST引脚高电平只需要保持2个机器周期,单片机就能进行复位操作。
本设计复位电路中R1采用10K欧姆,C3采用10uF[8]。
3.3温度传感设计模块
DS18B20VCC端接入电源GND端接地,并且DQ数据通讯端接的是单片机的P3.7口并联上拉电阻。
因为DS18B20内部集成了A/D转换电路及放大器两个部分,所以此设计中温度传感模块只要将传感器与单片机的管脚连接起来,然后把采集得到的温度信号传送至单片机进行处理就可以完成温度传感。
原理如图3.3:
图3.3温度传感模块原图理
3.4显示模块设计
LCD1602是可以用电阻的大小的调节来调整亮度的,要设置液晶的背光可以