第1章概述随着科学技术的发展,脉搏测量技术也越来越先进,对脉搏的测量精度也越来越高,国内外先后研制了不同类型的脉搏测量仪,而其中关键是对脉搏传感器的研究。
起初用于体育测量的脉搏测试集中在对接触式传感器的研究,利用此类传感器所研制的指脉、耳脉等测量仪各有其优缺点。
指脉测量比较方便、简单,但因为手指上的汗腺较多,指夹常年使用,污染可能会使测量灵敏度下降:耳脉测量比较干净,传感器使用环境污染少,容易维护。
但因耳脉较弱,尤其是当季节变化时,所测信号受环境温度影响明显,造成测量结果不准确[3]。
过去在医院临床监护和日常中老年保健中出现的日常监护仪器,如便携式电子血压计,可以完成脉搏的测量,但是这种便携式电子血压计利用微型气泵加压橡胶气囊,每次测量都需要一个加压和减压的过程,存在体积庞大、加减压过程会有不适、脉搏检测的精确度低等缺点。
近年来国内外致力于开发无创非接触式的传感器,这类传感器的重要特征是测量的探测部分不侵入机体,不造成机体创伤,能够自动消除仪表自身系统的误差,测量精度高,通常在体外,尤其是在体表间接测量人体的生理和生化参数。
其中光电式脉搏传感器是根据光电容积法制成的脉搏传感器,通过对手指末端透光度的监测,间接检测出脉搏信号。
具有结构简单、无损伤、精度高、可重复使用等优点。
通过光电式脉搏传感器所研制的脉搏测量仪已经应用到临床医学等各个方面并收到了理想效果。
人体心室周期性的收缩和舒张导致主动脉的收缩和舒张,是血流压力以波的形式从主动脉根部开始沿着整个动脉系统传播,这种波成为脉搏波[4]。
从脉搏波中提取人体的心理病理信息作为临床诊断和治疗的依据,历来都受到中外医学界的重视。
脉搏波所呈现出的形态(波形)、强度(波幅)、速率(波速)和节律(周期)等方面的综合信息,在很大程度上反映出人体心血管系统中许多生理病理的血流特征,因此对脉搏波采集和处理具有很高的医学价值和应用前景[5]。
但人体的生物信号多属于强噪声背景下的低频的弱信号, 脉搏波信号更是低频微弱的非电生理信号,因此必需经过放大和后级滤波以满足采集的要求。
第2章总体设计思想2.1基本原理脉搏波所呈现出来的形态、强度、速率和节律等方面的综合信息,能反映出人体心血管系统中许多生理疾病的血流特征。
本系统采用STC89S51单片机为核心而制作的一种实用型脉搏测量仪。
采用HK-2000A 集成化脉搏传感器作为传感器对人体的脉搏心率警醒数据采集。
得到的信号送入STC89S51单片机进行处理。
单片机将采集到的脉搏心率在数码管上实时显示出来,同时还设置了脉搏测量仪的上下限报警电路。
本文首先描述本设计的整体思路,然后介绍各个部分设计中的细节问题,最后提出一些完善本设计的改进意见。
从脉搏波中提取人体的生理病理信息作为临床诊断和治疗的依据,历来都受到中外医学界的重视。
几乎世界上所有的民族都用过“摸脉”作为诊断疾病的手段。
脉搏波所呈现出的形态(波形)、强度(波幅)、速率(波速)和节律(周期)等方面的综合信息,在很大程度上反映出人体心血管系统中许多生理病理的血流特征,因此对脉搏波采集和处理具有很高的医学价值和应用前景。
2.2 设计框图本设计中,采用HK-2000A 集成化脉搏传感器,HK-2000A 集成化脉搏传感器采用高度集成化工艺将力敏元件(PVDF压电膜)、灵敏度温度补偿元件、感温元件、信号调理电路集成在传感器内。
压电式原理采集信号,模拟信号输出,输出同步于脉搏波动的脉冲信号,脉搏波动一次输出一正脉冲。
该产品可用于脉率检测,如运动、健身器材设备中的心率测试。
单片机只需要对脉搏信号的波动频率进行测量、计算和显示,对单片机的要求不是很高。
而对51单片机,本人比较熟悉,所以,本设计中选择51单片机作为信息处理中心。
设计出来的系统是可以设定报警的范围的。
对显示部分采用以下方案:采用数码管。
数码管具有功耗小、轻薄短小无辐射危险,简单方便等特点。
根据以上分析,结合器件和设备等因素,确定如下方案:1. 采用STC89C51单片机作为控制器,分别对输入、显示、信号的处理和控制。
2. 传感器部分采用光HK-2000A 集成化脉搏传感器,该器件结构简单、可靠性高、抗干扰能力强。
3. 显示用数码管显示实时脉搏数和蜂鸣器报警上下限数值。
系统的基本框图如下图2.1所示:脉搏传感器电路STC89C51单片机处理电路数码管显示电路蜂鸣器报警电路震荡电路图2.1 基本框图第3章设计步骤和调试过程3.1 总体设计电路3.1.1单片机处理电路图3.1 单片机处理电路STC89 C51单片机STC89C51系列单片机是宏晶科技推出的新一代超强抗干扰、高速、低功耗的单片机,指令代码与传统8051单片机完全兼容。
3.1.2 单片机复位电路图3.2 单片机复位电路图时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位。
3.1.3 脉搏传感器电路图3.3 脉搏传感器接收电路3.1.4 报警电路图3.4 LED灯与蜂鸣器电路根据医学数据,人体脉搏正常在60到120之间,当数码管所显示的示数大于120时LED红灯亮,蜂鸣器响应报警;示数小于60时LED黄灯亮,蜂鸣器响应报警;示数大于120时小于60时,LED绿灯亮,蜂鸣器不响。
因为单片机的端口输出电流能力低,无法直接驱动那些器件,故增加三极管加大功率,驱动蜂鸣器工作。
3.2 模块设计和相应模块程序3.2.1 程序设计在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。
把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程序的阅读性和可靠性,使程序的结构层次一目了然。
应用系统的程序由包含多个模块的主程序和各种子程序组成。
各程序模块都要完成一个明确的任务,实现某个具体的功能,在具体需要时调用相应的模块即可。
这里采用顺序结构,通过对按键的扫描,判断要实现什么功能。
图3.5 程序流程图3.2.2 主程序源代码设计源程序的编写有多种语言,经过对原理的分析和自身的实际情况本课程设采用C语言编写,其主要程序代码如下:/* 初始化函数 /void init(){t=0;TMOD=0x11; //定时器0,1的定时方式1都打开 TH1=-5000/256; //定时器1定时5msTL1=-5000%256;TH0=0x3c; //定时器0定时50msTL0=0xb0;EA=1; // 开总中断ET1=1; //开定时器1中断TR1=1; //开定时器1TR0=1; //开定时器0ET0=1; //开定时器0中断IT0=1; //下降沿促发EX0=1; //开中断0}3.3实验调试结果由仿真图可知,该程序可以实现任务书中所要求的脉搏检测的功能,包括常人脉搏、婴儿脉搏及老人脉搏三部分,并通过数码管显示其脉搏。
为了实现脉搏测量重复性,特别设置单片机复位按键和测试复位按键。
同时方便观察脉搏次数变化,采用动态扫描显示的方式,使用共阳极数码管,可以随时方便观察脉搏跳动变化。
当测试结束时,增加的报警功能,起到对病人进行预警作用,当3种灯任何一种灯亮起时,即表示测试结束。
当然本次脉搏测量仪还有很多改进地方,比如HK-2000A 集成化脉搏传感器对微弱跳动特别敏感,在测量时,手腕手指手掌等身体移动都会影响测量,因此在测量时需要防止其他部位移动。
总结通过这次课程设计,加强了我动手、思考和解决问题的能力。
我觉得做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有时问题老是弄不懂,做完设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
比如单片机管脚用途,平时看课本,这次看了,下次就忘了,主要是因为没有动手实践过吧!认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
在内容设计方面,比较深入的学习了单片机方面的知识,补充了自己知识上的不足,更重要的是给自己找到了一个新的发展方向。
参考文献[1] 刘云丽,徐可欣等.微功耗光电式脉搏测量仪.电子测量技术.2005.第二期[2] 李世馨.模拟电子技术基础.高等教育出版社.2001.12 3[3] 朱国富,廖明涛,王博亮.袖珍式脉搏波测量仪.电子技术应用.1998.第1期[4] 欧阳俊.基于BL-410 的指端脉搏波采集系统应用研究.2004.第11卷第2期[5] 程咏梅,夏雅琴,尚岚.人体脉搏波信号检测系统.北京生物医学工程.2006.第25卷[6] 任为民.电子技术基础课程设计. 中央广播电视大学出版社.1997年5月第1版[7] 张毅坤.单片微型计算机原理及应用. 西安电子科技大学出版社. 1998.9第1版[8] 刘文,杨欣,张铠麟.基于AT89C2051单片机的指脉检测系统的研究.医疗装备.2005[9] 朱月秀.单片机原理与应用.科学出版社.2004.2[10] 韩文波.光电式脉搏波监测系统.长春光学精密机械学院学报.1999.第22卷第4期附录1 仿真电路图附录2 PCB电路板附录3 程序实现程序如下:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar i=0xfe;//显示位选初值uchar ge,shi,bai;uint count =887;//脉搏次数uint t;uchar disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管编码sbit P0_0=P0^0; //黄灯sbit P0_1=P0^1; //红灯sbit P0_2=P0^2; //绿灯sbit P2_4=P2^4; //按键//sbit P3_2=P3^2;sbit P3_6=P2^3; //蜂鸣器bit BELL=0; //响铃标志/**************************************//* //* 软件延时函数 //* //**************************************/void delay10ms(void){uchar i,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}/**************************************//* //* 显示函数 //* //**************************************/void display(uchar i,uchar number){P2=i;P1=disp[number];}/**************************************/ /* //* 定时器0中断处理函数 / /* 用于定时一分钟 / /**************************************/ void timer0(void) interrupt 1{TH0=0x3c;TL0=0xb0;t++;if(t==1200){EA=0;t=0;bai=count/100;shi=(count%100)/10;ge= (count%100)%10;if(count<60)//设置最低值{P0_0=0;P3_6=0;BELL=1;}else if(count>120) //设置最高值{P0_1=0;P3_6=0;BELL=1;}elseP0_2=0;EA=1;TR0=0; //开定时器0ET0=0; //开定时器0中断EX0=0; //开外部中断}}/**************************************//* //* 定时器1中断处理函数 //* //**************************************/void timer1_int(void) interrupt 3{TH1=-5000/256;TL1=-5000%256;bai=count/100; //提取三位数字shi=(count%100)/10;ge= (count%100)%10;switch(i)//选择数码管位{case 0xfe: display(i,ge);break;case 0xfd: display(i,shi);break;case 0xfb: display(i,bai);break;}i=i<<1; //流水效果i=i|0x01;if(i==0xf7) //右移三位后置初值i=0xfe;if(BELL) //蜂鸣器响{P3_6=0;}}/**************************************//* //* 初始化函数 //* //**************************************/void init(){t=0;TMOD=0x11; //定时器0,1的定时方式1都打开 TH1=-5000/256; //定时器1定时5msTL1=-5000%256;TH0=0x3c; //定时器0定时50msTL0=0xb0;EA=1; // 开总中断ET1=1; //开定时器1中断TR1=1; //开定时器1TR0=1; //开定时器0ET0=1; //开定时器0中断IT0=1; //下降沿促发EX0=1; //开中断0}/**************************************//* //* 按键软件处理函数 //* //**************************************/void key(){if(P2_4==0){delay10ms();delay10ms();if(P2_4==0){// TR0=1; //开定时器0// ET0=1; //开定时器0中断// EX0=1; //开外部中断init();count=0; //显示清零BELL=0;P0=0xff;}while(P2_4==0); //等待按键释放,如果键未释放则一直在此等待。