参考文献
[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.
[9] 李林功,吴飞青,王兵,丁晓.单片机原理及应用[M].北京:机械工业出版社,2007.8,63—128.
[10] 程光,赵崇侃.指动脉搏波光电传感器的研制[J].南京医学院学报,1991年第11卷第4期,329—330.
[11] Analog Device.ADuC841_2_3_a data sheet[M].Analog Device 2003,20—45. [12] J.C.Candy and G.C.Temes.Oversampling
Methods for Data
Conversion[M].IEEE Pacific Rim conference on Communications,Computers and Signal Processing,May 1991,9-10.
[13] Oversampling Techniques Using theTMS320C24x Family[M].Literature Number:SPRA461 Texas Instruments Europe,June 1998,5-20.
[14] John D.Ryder Electronic Fundamentals and Applications[M].1983,1-24.
30
[15] Accelerated C++[M].Practical Programming by Example Pearson Eduction 4-1,2006,12-34.
31
附 录
参考程序
脉搏测量仪的信号采集、处理、显示的程序 #include
#define TIMER0_HIGHT 0xDC //设置定时器0工作方式1自动装载初值,定时10ms,Fosc=11.059200MHZ #define TIMER0_LOW 0x00 sbit keyin = P3^1;
//按键输入
bit starttest; //启动测脉搏标志 uint16 cnt10ms; //10ms计数器 uint8 cnt1s; //1秒计数器
uint8 Pulsecnt; //脉搏次数,计数器 uint8 Pulsenum; //上次测试脉搏的次数
uint8 codeDispCode[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳数码管段码表 void Init_Extint(void); void TimerInitProc(); void initvar();
void Init_System(void);
void Display(uint8 chose_dat, uint8 dat);
void ShowDisp(uint8 tPulsenum, uint8 tPulsecnt, uint8 tcnt1s); void DelayMs(uint8 Ms); void main() {
Init_System(); //初始化
32
}
while(1) { }
ShowDisp(Pulsenum, Pulsecnt, cnt1s); //显示
/*******************************************************************************
* 函 数 名: Exti0_interrupt
* 函数功能: /INT0引脚下降沿进入中断 * 入口参数: 无 * 返 回: 无
*******************************************************************************/
void Ext0_interrupt(void) interrupt 0 { }
/******************************************************************** 函数功能:定时器/计数器0中断处理 入口参数:null 返 回:null 备 注:null
********************************************************************/ void Timer0IntProc() interrupt 1 {
TH0 = TIMER0_HIGHT; //设置定时器0高字节初值 if(starttest == 1) { }
Pulsecnt++; //来一次中断脉搏计数器加1
//处在测试状态
33
}
TL0 = TIMER0_LOW; //设置定时器0低字节初值 if(++cnt10ms == 100) { }
if(keyin == 0) { }
if(starttest == 1) //处在测试状态 { } else { }
starttest = 1; cnt10ms = 0;
//不在测试状态,开始新的一次测试
cnt10ms = 0; cnt1s = 0; Pulsecnt = 0;
//复位测试值,重新开始测试
//检测按键
cnt10ms = 0; if(starttest == 1) { }
if(++cnt1s == 60) { }
starttest = 0; //一次检测完毕,等待下一次检测 Pulsenum = Pulsecnt; //保存测得脉搏值
//一分钟时间到 //处在测试状态 //1s计时到
/////////////////////////End of Timer0IntProc//////////////////////// void Init_Extint(void)
34