基于单片机的脉搏测量仪的设计 下载本文

参考文献

1. 欧阳俊.基于BL-410 的指端脉搏波采集系统应用研究.2004.第11卷第2期 2. 韩文波.光电式脉搏波监测系统.长春光学精密机械学院学报.1999.第22卷第4期 3. 朱国富,廖明涛,王博亮.袖珍式脉搏波测量仪.电子技术应用.1998.第1期 4. 刘云丽,徐可欣等.微功耗光电式脉搏测量仪.电子测量技术.2005.第二期

5. 程咏梅,夏雅琴,尚岚.人体脉搏波信号检测系统.北京生物医学工程.2006.第25卷 6. 刘文,杨欣,张铠麟.基于AT89C2051单片机的指脉检测系统的研究.医疗装备.2005 7. 张毅坤.单片微型计算机原理及应用. 西安电子科技大学出版社. 1998.9第1版 8.任为民.电子技术基础课程设计. 中央广播电视大学出版社.1997年5月第1版 9. 朱月秀.单片机原理与应用.科学出版社.2004.2 10. 李世馨.模拟电子技术基础.高等教育出版社.2001.12 3

附录1

脉搏测量仪电路原理图

22

附录2

程序源代码

#include

unsigned char i,j,t,m,DelayTime,DispBuf[3]; unsigned int n,mb; unsigned char code

BitTab[3]={0xf7,0xef,0xdf}; //位驱动码 unsigned char code

DispTab[10]={0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x84};sbit P3_0=P3^0; void delay(DelayTime); main() //主程序 { TMOD=0x01; //定时器T0工作于方式1 TH0=0xec;

TL0=0x78; //T0定时时间为5ms IE=0X83; //开中断

IT0=1; //外部中断0为边沿触发方式 TR0=1; //开定时器T0 for( ) //脉搏指示灯控制

{ if(P3_0==0) { delay(200); P3_0=1;

}

}

}

external0() interrupt 0//外部中断服务程序

第23页

字形码 // { P3_0=0; //点亮指示灯 if(n==0) mb=0; else

mb=12000/n; //计算每分钟脉搏数 DispBuf[2]=mb; //取个位数 mb=mb/10;

DispBuf[1]=mb; //取十位数 DispBuf[0]=mb/10; //取百位数 n=0;

}

Timer0() interrupt 1 //定时中断服务程序 { TH0=0xec; TL0=0x78;

t=BitTab[j]; //取位值 P3=P3|0x38; //P3.3-P3.5送1

P3=P3&t; //P3.3-P3.5输出取出的位值 t=DispBuf[j]; //取出待显示的数 t=DispTab[t]; //取字形码 P1=t; //字型码由P3输出显示

j++; //j作为数码管的计数器,取值0-2,显示程序通过它确认显示哪个数码管 if(j==3) j=0; n++;

if(n==2000) //10秒钟测不到心率,n复位 n=0;

}

void delay(DelayTime)//延时子程序

24

{

for(;DelayTime>0;DelayTime--) { }

for(i=0;i<250;i++);

第25页