四川航天职业技术学院电子科技协会

你想更加了解电子科技协会吗?你想亲眼目睹电子科技协会成员们的优秀作品吗?你想加入电子科技协会吗?欢迎您来明志楼的116实验室参观交流
当前位置: 主页 > 技术交流 > 51单片机 >

51单片机设计智能脉搏仪报告

时间:2014-04-25 12:54来源:电子科技协会 作者:周伦 点击:
基于单片机的智能脉搏测试仪设计 摘要 脉搏测量仪在我们的日常生活中已经得到了非常广泛的应用。为了提高脉搏测量仪的 简便性和精确度,本课题设计 了一种基于51单片机的脉搏测量仪。系统 以 AT89C51 单片机为核心,利用光电传感器采集信号,通过硬件电路整

 

基于单片机的智能脉搏测试仪设计
摘要
脉搏测量仪在我们的日常生活中已经得到了非常广泛的应用。为了提高脉搏测量仪的简便性和精确度,本课题设计了一种基于51单片机的脉搏测量仪。系统AT89C51单片机为核心,利用光电传感器采集信号,通过硬件电路整形放大后,实现单片机对脉搏的累加计数。系统运行中能显示脉搏次数,系统停止运行时,能够显示总的脉搏次数。经测试,系统工作正常,能准确达到设计要求。
关键词:脉搏计数  AT89C51单片机 光电传感器
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Abstract
Pulse measuring instrument has been widely used in our daily life. In order to increase its simplicity and accuracy, this subject designs one system based on single-chip microcomputer . The system takes the AT89C51 microcontroller as the core, uses the optical sensor to collect signals. After shaping and enlarging by hardware circuits, the microcontroller can make the pulse accumulated counting. The system can display the time of the pulse during operation. It can also show the total number when it stops. After testing, the system works well and meets the design requirementsaccurately.
KeywordsPulse counting AT89C51 single-chip microcomputer Photoelectric sensor
 
 
 
 
 
 
 
 
 
 
 
1概述
1.1 选题的背景和意义
    脉搏携带有丰富的人体健康状况的信息,医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数,方法是用手按在病人腕部的动脉上,根据脉搏的跳动进行计数。为了节省时间,一般不会作1分钟的测量,通常是测量10秒钟时间内心跳的数,再把结果乘以6即得到每分钟的心跳数,即使这样做还是比较费时,而且精度也不高。为了提高脉搏测量的精确与速度,多种脉搏测量仪被运用到医学上来,从而开辟了一条全新的医学诊断方法。
1.2 应用现状
目前脉搏测量仪在多个领域被广泛应用,除了应用于医学领域,如无创心血管功能检测、妊高症检测、中医脉象、脉率检测等等,商业应用也不断拓展,如运动、健身器材中的心率测试都用到了技术先进的脉搏测量仪。
 
2脉搏测量系统结构
2.1 光电脉搏测量仪的结构组成
光电脉搏测量仪是利用光电传感器作为变换原件,把采集到的用于检测脉搏跳动的红外光转换成电信号,用电子仪表进行测量和显示的装置。本系统的组成包括光电传感器、信号处理、单片机电路、数码显示、电源等部分。
(1)光电传感器
即将非电量(红外光)转换成电量的转换元件,它由红外发射二极管和接收三极管组成,它可以将接收到的红外光按一定的函数关系(通常是线性关系)转换成便于测量的物理量(如电压、电流或频率等)输出。
(2)信号处理
即处理光电传感器采集到的低频信号的模拟电路(包括放大、整形等)。
(3)单片机电路
即利用单片机自身的定时中断计数功能对输入的脉冲电平进行运算得出心率(包括AT89C51、外部晶振、外部中断等)。
(4)数码显示
即把单片机计算得出的结果用8位LED数码管显示,便于直接准确无误的读出数据。
(5)电源
即向光电传感器、信号处理、单片机供电的电源,可以是5V的交流或直流的稳压电源。
2.2工作原理
本设计采用单片机AT89C51为控制核心,实现脉搏测量仪的基本测量功能。脉搏测量仪硬件框图如下图2.2所示:

外部中断信号
光电传感器
低通放大器
比较和整形
单片机
AT89C51
数码显示电路
外部晶振

图2.2 脉搏测量仪的工作原理
当手指放在红外线发射二极管和接收三极管中间,随着心脏的跳动,血管中血液的流量将发生变换。由于手指放在光的传递路径中,血管中血液饱和程度的变化将引起光的强度发生变化,因此和心跳的节拍相对应,红外接收三极管的电流也跟着改变,这就导致红外接收三极管输出脉冲信号。该信号经放大、滤波、整形后输出,输出的脉冲信号作为单片机的外部中断信号。单片机电路对输入的脉冲信号进行计算处理后把结果送到数码管显示。
2.3光电脉搏测量仪的特点
与传统的脉搏测量仪相比,光电式脉搏测量仪具有以下特点:
(1) 测量的探测部分不侵入机体,不造成机体创伤,通常在体外。
(2) 传感器可重复使用且速度快,精度高。
(3) 测试的适用电压为5V的直流电压。
(4) 稳定性好、磨损小、寿命长、维修方便。
(5) 由于结构简单,因此体积小、重量轻、性价比优越。
  
3硬件系统
3.1 单片机控制器
本系统基于51系列单片机来实现,因为系统没有其它高标准的要求,我们最终选择了AT89C51这种通用的单片机来实现系统设计。
3.1.1 AT89C51 的特点
(1)与MCS-51产品指令系统完全兼容
(2)4k字节可重擦写Flash闪速存储器
(3)1000次擦写周期
(4)全静态操作:OHz--24MHz
(5)三级加密程序存储器
(6)128*8字节内部RAM
(7)32个可编程I/O口线
(8)2个16位定时/计数器
(9)6个中断源
(10)可编程串行UART通道
(11)低功耗空闲和掉电模式
3.1.2 AT89C51 的结构
此次设计所使用的AT89C51 的封装形式是DIP40。如图3.1.2 所示。
图3.1.2 AT89C51 的封装形式
3.2脉搏信号采集
目前脉搏波检测系统有以下几种检测方法:光电容积脉搏波法、液体耦合腔脉搏传感器、压阻式脉搏传感器以及应变式脉搏传感器。近年来, 光电检测技术在临床医学应用中发展很快, 这主要是由于光能避开强烈的电磁干扰, 具有很高的绝缘性, 且可非侵入地检测病人各种症状信息,具有结构简单、无损伤、精度高、可重复好等优点。
3.2.1光电传感器的原理
根据朗伯一比尔(Lamber—Beer)定律,物质在一定波长处的吸光度和他的浓度成正比。当恒定波长的光照射到人体组织上时,通过人体组织吸收、反射衰减后,测量到的光强将在一定程度上反映了被照射部位组织的结构特征。脉搏主要由人体动脉舒张和收缩产生的,在人体指尖组织中的动脉成分含量高,而且指尖厚度相对其他人体组织而言比较薄,透过手指后检测到的光强相对较大,因此光电式脉搏传感器的测量部位通常在人体指尖。
手指组织可以分成皮肤、肌肉、骨骼等非血液组织和血液组织,其中非血液组织的光吸收量是恒定的,而在血液中,静脉血的搏动相对于动脉血是十分微弱的,可以忽略。因此可以认为光透过手指后的变化仅由动脉血的充盈而引起的,那么在恒定波长的光源照射下,通过检测透过手指的光强将可以间接测量到人体的脉搏信号。
3.2.2光电传感器的结构
传感器由红外发光二级管和红外接收三极管组成。采用GaAs红外发光二极管作为光源时,可基本抑制由呼吸运动造成的脉搏波曲线的漂移。红外接收三极管在红外光的照射下能产生电能,它的特性是将光信号转换为电信号。在本设计中,红外接收三极管和红外发射二极管相对摆放以获得最佳的指向特性。
从光源发出的光除被手指组织吸收以外,一部分由血液漫反射返回,其余部分透射出来。光电式脉搏传感器按照光的接收方式可分为透射式和反射式2种。其中透射式的发射光源与光敏接收器件的距离相等并且对称布置,接收的是透射光,这种方法可较好地反映出心律的时间关系。因此本系统采用了指套式的透射型光电传感器, 实现了光电隔离,减少了对后级模拟电路的干扰。结构如图3.2所示。
图3.2.2 透射式光电传感器
3.2.3 光电传感器检测原理
检测原理是: 随着心脏的搏动,人体组织半透明度随之改变。当血液送到人体组织时,组织的半透明度减小,当血液流回心脏,组织半透明度则增大;这种现象在人体组织较薄的手指尖、耳垂等部位最为明显。因此本设计将红外发光二极管产生的红外线照射到人体的手指部位,经过手指组织的反射和衰减由装在该部位旁边的光敏三管来接收其透射光并把它转换成电信号。由于手指动脉血在血液循环过程中呈周期性的脉动变化,所以它对光的反射和衰减也是周期性脉动的, 于是红外接收三极管输出信号的变化也就反映了动脉血的脉动变化。故只要把此电信号转换成脉冲并进行整形、计数和显示,即可实时的测出脉搏的次数。
3.2.4信号采集电路
图3.2.4是脉搏信号的采集电路,U3是红外发射和接收装置,由于红外发射二极管中的电流越大,发射角度越小,产生的发射强度就越大,所以对R21阻值的选取要求较高。R21选择270Ω同时也是基于红外接收三极管感应红外光灵敏度考虑的。R21过大,通过红外发射二极管的电流偏小,红外接收三极管无法区别有脉搏和无脉搏时的信号。反之,R21过小,通过的电流偏大,红外接收三极管也不能准确地辨别有脉搏和无脉搏时的信号。当手指离开传感器或检测到较强的干扰光线时,输入端的直流电压会出现很大变化,为了使它不致泄露到输入端而造成错误指示,用C8、C9串联组成的双极性耦合电容把它隔断。但该传感器输出信号的频率很低,如当脉搏只有为50次/分钟时,只有0.78Hz,200次/分钟时也只有3.33Hz,因此信号首先经R22、C10滤波以滤除高频干扰,再由耦合电容C8、C9加到线性放大输入端。
图3.2.4 信号采集电路
3.3信号放大整形
3.3.1脉搏信号介绍
由于光电传感器所输出的信号波源强度比较弱,且为类似于正弦波波形,如图3.3.1所示,所以对信号进行放大整形处理,使其以较强方波形式输出。
图3.3.1 脉搏仿真信号正弦波
3.3.2 放大整形电路
3.3.2 放大整形电路
3.3.3为正弦信号通过放大整形电路之后得到的方型波。
3.3.3整形后的方波
3.3.4为脉搏信号在放大整形前后的对比。
3.3.4 脉搏信号对比
3.4单片机处理电路
如图3.4所示,本部分运用了ATMEL公司的89C51单片机作为核心元件,在这里运用单片机能更快更准确地对数据进行运算,而且可以根据实际情况进行
编程,所用外围元件少,轻巧省电,故障率低。
来自传感和整形输出电路的脉冲电平输入单片机89C51的P3.5/T1引脚,单片机设为下降沿中断触发模式,故每次脉冲下降沿到达时触发单片机产生中断并进行计数,来一个脉冲脉搏次数就加一;定时器中断主要完成十秒钟的定时功能。单片机对十秒钟内的脉冲次数进行累加并进行计算得出所测人一分钟的脉搏次数,通过P0、P2口把测量过程和结果送到数码管显示出来。
图3.4 单片机处理电路
3.5 显示电路
3.5.1 LED 使用
由于静态显示占用资源较多,而动态显示方式是指一位一位地轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。通过调整电流和时间参数,可以既保证亮度,又保证显示。故LED动态显示更加适合本设计,所以就采用此方法。
   
图3.10 数码管显示电路
3.5.2 脉搏测量仪电路原理图
图3.5.2 电路原理图
4软件系统
4.1 主程序流程
系统主程序控制单片机系统按预定的操作方式运行, 它是单片机系统程序的框架。系统上电后,对系统进行初始化。初始化程序主要完成对单片机内专用寄存器、定时器工作方式及各端口的工作状态的设定。系统初始化之后, 进行定时器中断、外部中断、显示等工作,不同的外部硬件控制不同的子程序。流程如图4.1所示。
 
图 4.1 主程序流程图
4.2 定时器中断程序流程
定时器中断服务程序由十秒钟计时、按键检测等部分组成。当定时器中断开始执行后,对十秒钟开始计时,50ms计时到之后继续检测下50ms,直到10s到了再停止并保存测得的脉搏次数。同时可以对按键进行检测,只要复位测试值就可以重新开始测试。主要完成一分钟的定时功能和保存测得的脉搏次数。流程如图4.2所示。
图 4.2 定时器中断程序流程图
IE=0x8A;
    TMOD=0x51;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    while (1)
    {
       if(K1==0)
       {
       Delay(10);
       if (K1==0)
       {
       TR1=TR0=1;
       }
       }
       else
       {
       for(i=0;i<5;i++)
       {
       P2=DSY_BIT[i];
       P0=DSY_CODE[Disp_Buffer[i]];
       Delay(2);
       }     
}
}
 
4.3 INT中断程序流程
外部中断服务程序完成对外部信号的测量和计算。外部中断采用边沿触发的方式,当处于测量状态的时候,来一个脉冲脉搏次数就加一,由单片机内部定时器控制十秒钟,并通过计算得出一分钟内的脉搏次数。流程如图4.3所示。
图 4.3 INT中断程序流程图
外部下降沿触发子程序:
IE=0x8A;
    TMOD=0x51;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    while (1)
    {
       if(K1==0)
       {
       Delay(10);
       if (K1==0)
       {
       TR1=TR0=1;
       }
       }
 
Tmp=TH1*256+TL1;
4.4 显示程序流程
从中断程序中取得结果后,先显示上次的脉搏次数,经过10ms的延时后再返回。流程如图4.4所示。
 
图 4.4 显示程序流程图
Tmp=TH1*256+TL1;
Disp_Buffer[4]=Tmp*6/10000;
Disp_Buffer[3]=Tmp*6/1000%10;
Disp_Buffer[2]=Tmp*6/100%10;
Disp_Buffer[1]=Tmp*6%100/10;
Disp_Buffer[0]=Tmp*6%10;
TH1=TL1=0;
 
4.5 软件说明
本程序采用C语言,程序的可读性非常好。
程序中对前一次测量的脉搏数据进行了自动保存,并且用数码显示。
程序在执行过程若发现有干扰则忽略该干扰而不显示,进一步减少读入数据的误差。
4.6测量仪使用方法
测量仪通电后,数码管全部显示0。把手轻轻置于右下角的传感器中,以稍微有压迫感为宜,这时很快就可以看到红色发光二极管会伴随你的脉搏而闪烁,让你直观的看到自己脉搏跳动的速度,按下复位键后单片机和显示部分开始工作,单片机立刻开始计数,同时数码管显示出你的心率,非常方便。如果偶尔出现不稳的情况,可按复位键对系统进行复位。
 
5总结与展望
本设计主要是51单片机在脉搏测试系统中的应用。重点介绍了单片机的最小系统,通过单片机最小系统实现了脉搏的测量系统,由光电传感器采集到脉冲信号,经过信号的放大、滤波和整形电路将输出的信号通过单片机的外部中断获取并最终在数码管上显示。利用单片机自身的定时中断、外部中断、计数等功能,不仅能显示出此次脉搏测量的次数,还能自动储存这个数据。本次所设计的测量仪系统实现简单、功能稳定、使用方便,应用广泛,具有实际意义。
希望通过将来的学习可以设计出功能更优越、抗干扰能力更强大的脉搏测量仪器以及更有助于人类健康的医疗仪器。
 
6致谢
     感谢老师一直以来的辛勤授课,使我们能了解智能医学仪器的相关知识。希望今后会有充裕的时间来更全面的学习此课程。
 


[1] 欧阳俊,谢定等.基于BL-410 的指端脉搏波采集系统应用研究[J].实用预防医学,2004,第11卷第2期,2—4.
[2] 韩文波,曹维国,张精慧.光电式脉搏波监测系统[J].长春光学精密机械学院学报,1999,第22卷第4期,2.
[3] 朱国富,廖明涛,王博亮.袖珍式脉搏波测量仪[J].电子技术应用,1998,第1期,1—3.
[4] 刘云丽,徐可欣等.微功耗光电式脉搏测量仪[J].电子测量技术,2005,第2期,2—5.
[5] 程咏梅,夏雅琴,尚岚.人体脉搏波信号检测系统[J].北京生物医学工程,2006,第25卷第5期,1—3.
[6] 刘文,杨欣,张铠麟.基于AT89C2051单片机的指脉检测系统的研究[J].医疗装备,2005,第9期,2—14.
[7] 郁道银,谈恒英.工程光学[M].机械工业出版社,1998年11月,279—281.
[8]张福学.传感器应用及其电路精选(下册) [M].北京:机械工业出版社,122—134.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
附录
C语言程序:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code DSY_CODE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar Disp_Buffer[]={0,0,0,0,0};
uchar code DSY_BIT[]={0xFE,0xFD,0xFB,0xF7,0xEF};
uchar Count=0;
sbit K1=P1^0;
void Delay(uchar x)
{
       uchar i;
       while (x--) for (i=0;i<120;i++);
}
void main()
{
       uchar i;
       IE=0x8A;
       TMOD=0x51;
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       while (1)
       {
              if(K1==0)
              {
              Delay(10);
              if (K1==0)
              {
              TR1=TR0=1;
              }
              }
              else
              {
              for(i=0;i<5;i++)
              {
              P2=DSY_BIT[i];
              P0=DSY_CODE[Disp_Buffer[i]];
              Delay(2);
              }           
}
}
}
void INT_T0() interrupt 1
{
       uint Tmp;
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       if(++Count==200)
       {
              TR1=TR0=0;
              Count=0;
              Tmp=TH1*256+TL1;
              Disp_Buffer[4]=Tmp*6/10000;
              Disp_Buffer[3]=Tmp*6/1000%10;
              Disp_Buffer[2]=Tmp*6/100%10;
              Disp_Buffer[1]=Tmp*6%100/10;
              Disp_Buffer[0]=Tmp*6%10;
              TH1=TL1=0;
 
       }
}
 
 
 
(责任编辑:电子科技协会)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片