实用型脉搏心率体温计设计.docx
《实用型脉搏心率体温计设计.docx》由会员分享,可在线阅读,更多相关《实用型脉搏心率体温计设计.docx(21页珍藏版)》请在冰豆网上搜索。
实用型脉搏心率体温计设计
学号:
0909121084
2011—2012学年第一学期
《单片机原理及接口技术》
课程设计报告
题目:
实用型脉搏心率、体温计设计
专业:
电子信息工程
班级:
09电信2班
姓名:
尹兵
指导教师:
周珍艮
成绩:
电气工程系
2011年12月24日
课程设计任务书
一.设计目的
本设计采用AT89S52作为核心控制器件,控制并接收和处理DS18B20传回的数据,把得到的温度值存储在指定单元等待显示;接着T1口接收到整形电路传过来的电压信号,遇到第一次下降沿启动T0计时器计时,遇到第二次下降沿关闭T0计数器,经处理后得到实际时间间隔,再经过单片机处理得到脉搏次数并存储在指定单元等待显示;最后AT89S52控制数码管先显示温度再显示脉搏次数具有极高的研究价值
二、设计任务
设计并制作一台具有实时检测脉搏心率和体温的实用型脉搏心率、体温计。
图实用型脉搏心率计示意图
三、具体要求
1、能够测量人体1分钟的脉搏心率数,并以数字显示;
2、测量脉搏心率范围:
50-180次/分,数据刷新时间〈3秒;
3、具有体温检测功能,测量体温范围为350C-450C,并以数字显示,示数分辨率0.10C。
4、设置脉搏心率上下限,具有超限报警功能。
5、具有语音报数功能。
实用型脉搏心率、体温计设计
摘要
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本设计采用AT89S52作为核心控制器件,控制并接收和处理DS18B20传回的数据,把得到的温度值存储在指定单元等待显示;接着T1口接收到整形电路传过来的电压信号,遇到第一次下降沿启动T0计时器计时,遇到第二次下降沿关闭T0计数器,经处理后得到实际时间间隔,再经过单片机处理得到脉搏次数并存储在指定单元等待显示;最后AT89S52控制数码管先显示温度再显示脉搏次数;然后重复上述步骤。
经测试本设计可以正常显示体温,但也有不足之处。
关键词:
AT89S52单片机;脉搏计;DS18B20;
正文
1引言
随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。
在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术和脉搏测量技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的身体健康与自身的体温和脉搏息息相关。
本设计采用AT89S52作为核心控制器件,控制并接收和处理DS18B20传回的数据,把得到的温度值存储在指定单元等待显示;接着T1口接收到整形电路传过来的电压信号,遇到第一次下降沿启动T0计时器计时,遇到第二次下降沿关闭T0计数器,经处理后得到实际时间间隔,再经过单片机处理得到脉搏次数并存储在指定单元等待显示;最后AT89S52控制数码管先显示温度再显示脉搏次数具有极高的研究价值。
2设计要求
2.1硬件电路部分
1)完成AT89S52最小系统焊接(晶振电路,上电复位电路等);
2)利用单片机I/O口方式控制数码管显示数据,驱动用74ls04;
3)完成脉搏波形采集电路的焊接;
2.2程序设计
1)掌握单片机与四位数码管之间接口电路的设计方法及编程;
2)完成主程序的设计及对应的子程序设计;
3)完成总调试;
4)本设计最后显示“温度度数和脉搏次数”。
3方案设计
3.1总体设计
总体设计框图如图3-1所示
图3-1系统电路框图
从理论上说,四位数码管可以显示0--F的数字和字母,只要段码输入合适就可以得到我们想要的结果。
由于所有位的段选码由一个I/O口控制,因此要使每位显示不同的字符,必须采用扫描显示方式,即每一时刻选通一个显示位。
同时段选控制I/O口输出要显示字符对应的段选码,使该位显示相应的字符。
显示一段时间后,再选通下一显示位。
特点:
每一时刻只能选择一位,如此便可将温度及脉搏次数显示出来。
3.2系统硬件选择及模块分析
由图3-1可知此次设计的硬件选择如下:
AT89S52最小系统、电源、74LS04、4位7段共阳极LED数码管,18B20,LM324,电容,电阻等一些单片机外围应用电路组成。
其中的LED驱动是LED显示设计的关键部分,驱动电路设计的好坏直接关系到LED显示的亮度、稳定度等重要指标。
LED数码管的数据传输方式主要有串行和并行两种。
日前普遍采用并行控制技术,实现起来容易简单。
采用这种方式的驱动IC种类较少,可减少显示单元的数据传输驱动元件,从而提高整个系统的可靠性和性价比,具体工程实现也较为容易。
LED数码管实现显示信息的刷新技术有动态扫描和静态锁存两种方式。
LED动态显示就是将所有显示位的段选线并联在一起,由一个8位I/O口控制,而位选线则由其他的I/O口控制,实现各位的分时选通,利用人眼的反应时间差达到显示目的。
静态显示方式就是把每一位数码管分别控制让其同时显示不通的内容,其特点:
每块显示器件都处于选通状态,只要控制显示位的段选码,就可显示出相应的字符,每一位都可独立显示,在同一时刻每一位显示的字符可以不同。
静态显示方式的缺点:
需要N×8根I/O口线,占用的I/O资源较多;显示位比较多时,硬件线路比较复杂,成本增加。
本次设计中LED的驱动是采用74ls04实现的。
(1)18B20资料及测温电路
TO-92封装的DS18B20的引脚排列见图3-2,其引脚功能描述见下:
采用DALLAS公司温度传感器DS18B20,这个芯片的显著优点是与单片机的接口简单,该温度传感器为单总线技术, 测量温度范围为-55℃~+125℃,在-10℃~+8℃5范围内,DS18B20可以程序设定9~12位的分辨率,精度为±0.5℃。
DS18B20内部结构主要由四部分组成:
4位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;图3-2
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
DS18B20的测温原理是器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。
其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。
采用寄生电源供电方式时VDD端接地。
由于单线制只有一根线,因此发送接口必须是三态的。
系统对DS18B20的各种操作按协议进行。
操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
另一种是寄生电源供电方式,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
本设计中DS18B20采用电源供电方式,此时它的1脚接地,2脚作为信号线,3脚接电源。
如图3-3图3-3
(2)LM324资料及以其为核心的整形电路
LM324系列运算放大器是价格便宜的带差动输入功能的四运算放大器。
单电源下,电压范围是3.0V~32V或16V.
LM324的特点:
短跑保护输出,真差动输入级,可单电源工作:
3V~32V,低偏置电流:
最大100nA(LM324A)每封装含四个运算放大器,具有内部补偿的功能,共模范围扩展到负电源,行业标准的引脚排列,输入端具有静电保护功能。
本设计的脉搏采集大致有三种。
第一种,利用吸附电极这是心电图仪采用的方法;第二种,声学检测,但在运动时无法完成检测;第三种,光学检测此次设计采用的是光学检测,其原理是:
人体组织的半透明性随心跳做周期性变化,心脏收缩时人体组织的透明度较低,舒张时较高,因此可以利用这一点;光源用红外LED,检测器件用一红外光敏管,它们构成一混合光栅,将它们接到人体多少有些透明的地方如手指和耳廓,即可检测。
此时还需要将其波形整形成单片机可识别的电压以便单片机计数。
C1和R2构成的低通滤波器用来抑制正在处理的高频分量,双极性耦合电容C2、C3之值与低频相适应,还起到隔直流的作用,第一个运放用做线性放大,其上边的电容和电阻组成低通滤波器进一步抑制干扰,第二个运放负责将上一个运放的输出信号转换成纯净的矩形波,再经过第三个运放后就得到单片机可识别的信号。
整形电路图(如图3-4)
图3-4
(3)AT89C51资料
51系列是指是兼容Intel公司51指令集的单片机系列的统名称。
这里所提到的AT89C51就是51系列的一种,它与AT89S52完全兼容,因此以它为例也完全可以让我们了解AT89S52。
它是一种带4KB闪存可擦可编程只读存储器(FalshProgrammableandErasableReadOnlyMemory,FPEROM)的低电压、高性能CMOS型8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
其外形及管脚如3-5所示图3-5
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,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的一些特殊功能口,如下表所示:
P3.0RXD(串行输入口)P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
(4)最小系统介绍:
电源供电模块(如图3-6):
对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。
51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,图3-6电源模块电路51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。
此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。
电源电路中接入了电源指示LED,图中R11为LED的限流电阻。
S1为电源开关。
图3-7为复位电路:
图3-7
单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。
单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。
当复位电平持续两个机器周期以上时复位有效。
复位电平的持续时间必须大于单片机的两个机器周期。
具体数值可以由RC电路计算出时间常数。
复位电路由按键复位和上电复位两部分组成。
1)上电复位:
AT89S52系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。
2)按键复位:
按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
图3-8振荡电路
图3-8
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。
如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
AT89S52使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。
3.3软件部分
(1)流程图(如图3-9)图3-9
主程序的主要功能是温度,脉搏的显示、读出并处理DS18B20的测量的当前温度值,其程序流程如图所示。
(2)源程序清单见附录
3.4硬件电路实现
(1)电路仿真图原理图(如图3-10)
图3-10
(2)脉搏采集整形电路(如图3-11)
图3-11
4系统测试分析
本设计最后的结果是:
不能检测到脉搏但其它设计目的都已达到,经过测试证明程序是可行的,设计思路的方向也是正确的,而且在测体温方面优于传统的体温计。
经过反复的测试和研究最终得到以下结论(如下表所示),该结论是通过与他人做的温度计比较,还有和体温计比较(体温计和温度传感器都是拿在手里所以要比实际体温低一些如表4-1),经过比较本次体温计的设计还是比较成功的。
在设计中出现的许多以前未曾遇到的问题为我增加了很多实际经验,相信这些经验在以后的工作实践中会发挥巨大的作用。
较为遗憾的是由于本人水平有限没有添加报警功能以及其它一些提示功能,没有充分利用单片机资源。
毕业后我会努力实现所有功能。
玻璃体温计读数
33.1
33.4
33.6
33.0
34.0
我的电子体温计
33.0
33.5
33.5
33.1
33.9
别人的电子测温计
33.2
33.7
33.8
33.4
33.6
表4-1
5结束语
本次设计结束了,在这次设计中,我清楚的认识到了实践和理论和结合相结合的重要性。
在此次设计中通过查阅大量的相关资料,详细了解了LED的发光原理、18B20使用方法和LM324的用途及工作原理,了解了LED的现状。
通过这次毕业设计,重新复习并进一步学习了MCS-51;熟练掌握了WORD软件的使用。
进一步提高了自己在实际设计过程中研究问题、发现问题、解决问题的能力。
但是从中也存在不足之处:
对知识的积累还不够,有些问题自己不能够独立解决,对实验操作还要进一步熟练,只有这样才能让自己在不断的学习中提高自己。
附录
编译、装载、连续运行程序,显示模块应循环显示脉搏、温度。
程序源代码:
DQEQUP3.7
WENDU_LEQU29H;用于保存读出温度的低字节
WENDU_HEQU28H;用于保存读出温度的高字节
XIAOSHUEQU27H;用于保存温度的小数部分
ZHENGSHUEQU26H;用于保存整数部分
BIAOZHIBIT50H;18B20检查位1为存在,0为不存在
dhequ60h
dlequ61h
chequ62h
clequ63h
org0000h
ljmpstart
org000bh
ljmpits
org100h
start:
movsp,#60h
setbtr0
setbtr1
setbea
movth0,#3ch
movtl0,#0afh
movtmod,#51h
ljmpmain
its:
inc65h
movth0,#3ch
movtl0,#0afh
reti
main:
LCALLDUWEN
LCALLZHENGHE
LCALLBCD
MOV50H,#00H
MAIBO:
mov69h,#02h
mov68h,#0ffh
mov65h,#00h
mov64h,#00
movth0,#3ch
movtl0,#0afh
setbet0
movtl1,#00h
movth1,#00h
loop:
mova,tl1
cjnea,#1,loop
clra
loop1:
mova,65h
cjnea,#0c8h,l01
ljmpreturn
l01:
mova,tl1
cjnea,#2,l01
cplet0
cplet1
mov66h,th0
mov67h,tl0
clrc
mova,65h
movb,#50
mulab
movch,b
movcl,a
clrc
mova,67h
subba,#0afh
mov67h,a
jncdx1
dec66h
dx1:
mova,66h
subba,#3ch
mov66h,a
clrc
mova,cl
adda,66h
movcl,a
clrc;除法,得到脉搏次数
movdh,#0eah
movdl,#60h
d1:
mova,dh
subba,ch
movdh,a
jcd4
inc64h
clrc
mova,dl
subba,cl
movdl,a
jncd3
decdh
d3:
sjmpd1
d4:
clra
mova,64h
movb,#100
divab
mov54h,a
mova,b
movb,#10
divab
mov55h,a
mov56h,b
return:
lcalldisp
ajmpmain
DUWEN:
SETBDQ
ACALLFUWEI
JBBIAOZHI,CUNZAI
RET
CUNZAI:
MOVA,#0CCH
ACALLXIE
MOVA,#44H
ACALLXIE
ACALLTIME1
ACALLFUWEI
MOVA,#0CCH
ACALLXIE
MOVA,#0BEH
ACALLXIE
ACALLDUSHU
NOP
RET
FUWEI:
SETBDQ
NOP
CLRDQ
MOVR0,#3
INTE:
MOVR1,#107
KK1:
DJNZR1,KK1
DJNZR0,INTE
SETBDQ
NOP
NOP
NOP
MOVR0,#25
INTE1:
JNBDQ,INTE2
DJNZR0,INTE1
AJMPINTE3
INTE2:
SETBBIAOZHI
NOP
AJMPINTE4
INTE3:
CLRBIAOZHI
AJMPINTE5
INTE4:
MOVR0,#120
KK:
DJNZR0,KK
INTE5:
SETBDQ
RET
XIE:
MOVR2,#8