心率血压测量仪.docx

上传人:b****5 文档编号:4040074 上传时间:2022-11-27 格式:DOCX 页数:20 大小:250.77KB
下载 相关 举报
心率血压测量仪.docx_第1页
第1页 / 共20页
心率血压测量仪.docx_第2页
第2页 / 共20页
心率血压测量仪.docx_第3页
第3页 / 共20页
心率血压测量仪.docx_第4页
第4页 / 共20页
心率血压测量仪.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

心率血压测量仪.docx

《心率血压测量仪.docx》由会员分享,可在线阅读,更多相关《心率血压测量仪.docx(20页珍藏版)》请在冰豆网上搜索。

心率血压测量仪.docx

心率血压测量仪

目录

第1章引言1

第2章心率血压测量仪系统结构2

2.1心率血压测量仪的结构2

2.2工作原理3

第3章各单元硬件设计说明及计算方法6

3.1复位电路6

3.2时钟电路6

3.3脉搏检测、放大、整形部分7

3.4血压检测、放大、A/D转换部分8

3.5显示电路10

3.6AT89C51单片机控制电路11

第4章软件设计与说明12

4.1单片机主函数流程图12

4.2定时器中断函数流程图12

4.3外部中断函数流程图13

4.4显示函数流程图14

4.5软件说明14

第5章系统调试15

5.1系统调试说明15

5.2系统检测15

总结18

参考文献19

附录A系统总硬件原理图20

附录B程序清单21

第1章引言

在科学技术高速发展的同时使得社会竞争更趋激烈,人们的生活节奏更快,工作和生活压力随之加剧,亚健康状态广泛存在于白领阶层。

同时,广大白领阶层对健康的要求越来越高,并且需要在对自己身体状态有一定了解的同时,要求医疗装置检测的耗时少,使用方便,检测结果数据可靠。

血压在生物医学测量中是一种常用而重要的指标。

世界上出现比较完整的血压测量仪器已有一百年的历史。

近年来随着科学技术的发展出现了各种新颖的血压测量仪器,特别是电子血压仪的出现,使血压测量变得非常方便。

我们利用光电式脉搏传感器及压力传感器,检测人手指的血压信号,并利用AT89C51单片机进行控制和信号采集,将人体血压和心率等测量值自动显示出来,达到了方便、快捷、准确地测量血压的目的。

制成的心率血压测量仪样机性能良好,结构简单,有较好的应用和推广价值。

 

第2章心率血压测量仪系统结构

血压脉搏测量仪的设计,必须是通过采集人体血压、脉搏变化引起的一些生物信号,然后把生物信号转化为物理信号,使得这些变化的物理信号能够表达人体的血压、脉搏变化,最后要得出血压值和每分钟的脉搏次数,就需要通过相应的硬件电路及芯片来处理物理变化并存储脉搏次数和血压值。

在硬件设计中一般的物理信号就是电压变化,有了这个系统的设计思路,本课题就此开始实施。

2.1心率血压测量仪的结构

心率血压测量仪是利用光电传感器和压力传感器作为变换原件,把采集到的用于检测脉搏跳动的红外光和血压信号转换成电信号,用电子仪表进行测量和显示的装置。

本系统的组成包括光电传感器和压力传感器、信号处理、单片机电路、数码显示、电源等部分。

1.光电传感器和压力传感器

光电传感器即将非电量(红外光)转换成电量的转换元件,它由红外发射二极管和接收三极管组成,它可以将接收到的红外光按一定的函数关系(通常是线性关系)转换成便于测量的物理量(如电压、电流或频率等)输出。

压力传感器即将非电量(压力)转换成电量的转换元件,它由膜片在压力作用下的变形引起力敏电桥与压力成比例的应变,使电桥四臂的电阻发生变化,产生于压力成正比的输出电压。

2.信号处理

即处理光电传感器采集到的低频信号的模拟电路(包括放大、滤波、整形等)和处理压力传感器采集到的信号(包括放大、A/D转换等)。

3.单片机电路

即利用单片机自身的定时中断计数功能对输入的脉冲电平进行运算得出心率(包括AT89C51、外部晶振、外部中断等)和血压。

4.数码显示

即把单片机计算得出的结果用8位LED数码管静态扫描来显示,便于直接准确无误的读出数据。

5.电源

即向光电传感器和压力传感器、信号处理、单片机提供的电源,可以是5V-9V的交流或直流的稳压电源。

2.2工作原理

本设计采用AT89C51单片机为控制核心,实现心率血压测量仪的基本测量功能。

心率血压测量仪硬件框图如下图2.1所示。

 

图2.1心率血压测量仪的工作原理

 

当手指放在红外线发射二极管和接收二极管中间,随着心脏的跳动,血管中血液的流量将发生变换。

由于手指放在光的传递路径中,血管中血液饱和程度的变化将引起光的强度发生变化,因此和心跳的节拍相对应,红外接收二极管的电流也跟着改变,这就导致红外接收二极管输出脉冲信号。

该信号经放大、滤波、整形后输出,输出的脉冲信号作为单片机的外部中断信号。

单片机电路对输入的脉冲信号进行计算处理后把结果送到数码管显示。

血压有两种,一是收缩压:

是当心脏收缩把血液打到血管所测得的血压,二是舒张压:

是心脏在不收缩所得的压力。

当袖带的压力等于血压时,血液开始可以流通而产生所谓的袖带声,这时候也就是收缩压,必须开始从这里做记录,直到最后当袖带声没有的时候,此点即为舒张压。

根据气袖在减压过程中,其压力振荡波的振幅变化包络线来判定血压的。

目前比较一致的看法是当气袖压力振荡波的振幅最大的时候,气袖的压力是动脉的平均压。

动脉的收缩压对应于振幅包络线的第一个拐点,舒张压对应于包络线的第二个拐点。

收缩压判断的确定:

通常采用最大的振幅法,即在放气过程中脉搏波振幅度包络线的上升段,当某一个脉搏波的幅度

之比

时,就认为此时对应的气袖压力为收缩压。

(2-1)

舒张压判断的确定:

也是用最大的振幅法来判定,不过是在脉搏波振幅包络线的下降段,当某一个脉搏波的幅度

之比

时,就认为此时对应的气袖压力为舒张压。

(2-2)

 

血压信号以及收缩舒张压的位置如图2.2所示。

图2.2血压交直流信号及收缩压和舒张压位置

先找出最大振幅值Amax,在往前找幅值为0.5Amax的瞬态位置对应血压直流分量即为收缩压,往后找幅值为0.8Amax的瞬态位置对应血压直流分量即为舒张压,将计算出的收缩压和舒张压结果输出至数码管显示。

 

第3章各单元硬件设计说明及计算方法

3.1复位电路

时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位(如图3.1所示)。

图3.1复位电路

3.2时钟电路

电容C1和C2可以帮助起振,这里C1和C2分别取30pF和30pF,晶振采用12MHz(如图3.2所示)。

图3.2时钟电路

3.3脉搏检测、放大、整形部分

输入级选用光电式传感器拾取信号,由于光敏二极管的反向电流与光强呈线性关系,检测此电流即可得到脉搏的变化,1.5MΩ电阻为光电二极管的负载,将光电信号的电流变化转换成电压变化,其幅度随血液流动状态的变化而变化。

如图3.3所示,光电二极管选用暗电流较小的硅光敏二极管。

检测得到的脉搏信号需要进行滤波、放大、整形处理才可以计数。

由于脉搏信号频谱主要集中在20Hz以内,在此我们应用运算放大器构成同相交流放大电路,对直流信号无放大,由于反馈电容的存在可以滤除50Hz的工频干扰,使得20Hz以内低频信号顺利通过,并进行多级放大,再经过施密特触发器整形。

由于仿真软件Proteus的限制,我们在仿真时用信号发生器来代替脉搏检测电路,从而模拟脉搏进行仿真。

 

图3.3脉搏检测电路

3.4血压检测、放大、A/D转换部分

血压测量我们选用数字压力传感器ASDX001来检测,它的内部结构主要包括4部分:

①多路分配器;②模/数转换器;③微控控制;④模/数转换器。

如图3.4所示。

图3.4ASDX001内部结构图

ASDX001的外围引脚共有8个,其中5个为空脚。

工作电压为正5负。

脚引入正5负电压,

为数据输出脚,将所测量得到的数字电压信号传送到单片机的P1.0脚,ASDX001的地脚为GND脚,接地。

因此,这个电路连接十分简单,只需要将传感器的输出脚Vout连接到AT89C51单片机的1脚上即可。

如图3.5所示。

图3.5ASDX001与单片机的连接电路原理图

由于仿真软件Proteus的限制,在实际的仿真过程中我们使用电位器和ADC0804构成血压检测电路来进行模拟仿真,即代替数字压力传感器ASDX001来进行仿真,其原理和数字压力传感器ASDX001相似。

如图3.6所示。

 

图3.6由电位器与ADC0804构成的血压检测电路

3.5显示电路

显示电路由一个4位的共阳极LED数码管组成4位显示,用它来循环显示心率、收缩压、舒张压的值。

而用三个发光二极管来表示数码管所显示值的状态。

单片机的P1口控制显示字型,P2口控制显示字位。

显示电路如图3.7所示。

图3.7显示电路

3.6AT89C51单片机控制电路

本系统基于51系列单片机来实现,因为系统没有其它高标准的要求,我们最终选择了AT89C51通用的比较普通单片机来实现系统设计。

AT89C51单片机在本系统中主要是处理计算输入的心率、血压信号并输出其结果。

其电路接线图如图3.8所示。

图3.8AT89C51单片机电路接线图

第4章软件设计与说明

4.1单片机主函数流程图

系统主程序控制单片机系统按预定的操作方式运行,它是单片机系统程序的框架。

系统上电后,对系统进行初始化。

初始化程序主要完成对单片机内专用寄存器、定时器工作方式及各端口的工作状态的设定。

系统初始化之后,进行定时器中断、外部中断、显示等工作,不同的外部硬件控制不同的子程序。

流程如图4.1所示。

 

图4.1主函数流程图

4.2定时器中断函数流程图

定时器中断服务程序为5ms计时。

每5ms采集血压一次(即模数转换一次并计算收缩压和舒张压)和计算在下一个外部中断信号到来时总共有多少个5ms从而计算出脉搏的次数。

其定时器流程如图4.2所示。

 

图4.2定时器中断函数流程图

4.3外部中断函数流程图

外部中断服务程序完成对外部信号的响应和脉搏的计算。

外部中断采用是边沿触发的方式。

其流程如图4.3所示。

 

图4.3外部中断函数流程图

4.4显示函数流程图

显示程序包括显示脉搏次数、收缩压和舒张压。

从中断程序中取得结果后,先显示脉搏次数,经过一段的延时后再显示收缩压的值,再经过一段的延时后再显示舒张压的值,并循环轮流显示。

其流程如图4.4所示。

 

图4.4显示函数流程图

4.5软件说明

本程序采用C语言编写,程序的可读性非常好,使用Proteus仿真。

第5章系统调试

5.1系统调试说明

调试主要方法和技巧:

程序调试采用KEIL软件在电脑上实现,从而对源程序进行预期目标的执行运作,从而使得整个程序达到与设计需求功能一致,通过对程序的跟踪、断点、查看变量、更改数值,从内部仿真出源程序执行步骤,从而保证程序的可靠运行,在本次设计中,主要调试单片机控制部分、数码管点亮部分和模数转换电路部分。

根据系统设计方案,本系统的调试可分为两大部分:

心率部分和血压部分。

前面我们已经说过由于仿真软件Proteus的限制,心率部分我们采用信号发生器(方波)来进行仿真,而对于血压部分我们用电位器和ADC0804构成血压检测电路进行仿真,所以仿真时我们可以调节信号发生器和调节电位器来模拟心率和血压的测量,从而使系统的功能得以实现。

5.2系统检测

5.2.1心率测量

系统上电后调节信号发生器(如图5.1所示)的频率,当频率为1Hz时测得的心率(即脉搏)为60次且脉搏指示灯亮,如图5.2所示。

图5.1信号发生器

图5.2频率为1Hz时的心率(脉搏)数

5.2.2收缩压测量

调节电位器RV1模拟仿真血压(收缩压)检测,测得收缩压为128,且收缩压指示灯亮,其结果如图5.3所示。

图5.3测得的收缩压数值

5.2.3舒张压测量

调节电位器RV1模拟仿真血压(舒张压)检测,测得舒张压为80,且舒张压指示灯亮,其结果如图5.4所示。

图5.4测得的舒张压数值

 

总结

本设计主要是51单片机在心率血压测试系统中的应用。

重点介绍了单片机的最小系统,通过单片机最小系统实现了心率血压的测量系统,由光电传感器和压力传感器分别采集到脉搏信号和血压信号,人体脉搏信号经过放大、滤波和整形电路处理后通过单片机的采集处理并最终在数码管上显示,而人体血压信号则经过放大、模数转换后通过单片机的采集处理并最终在LED数码管上显示。

利用单片机自身的定时中断、外部中断、计数等功能,实现对心率血压的测量。

为了更好的进行心率血压测量仪的设计,我认真地收集有关资料,并做好相关的整理和阅读,为这次的设计做好充分的准备。

同时,通过查阅资料使我了解了更多的医学知识和开阔了我的知识视野。

虽然此次课程设计的时间不是很长,只有两周的时间但通过本次设计,使得我对单片机有了更新一步的理性的认知和感性的触及,不光在硬件上,使得我对其有实体的接触,比方说,在LED数码管的共阴共阳的连接方法和对其编码的注意。

这些更使得我在软件方面,对其灵活掌控,有了深入的体会,在课堂上,对于编程讲述的都是汇编基础语言,然而,在本次设计我运用的却是两年未用的C语言,在通过查找些许资料后,使我有了温故知新的感触,尤其是程序在控制和调用之间的关系,让我更为觉得一个程序如何巧妙合理的设计会使得设计工作更为简单容易。

最后,感谢老师的精心指导,使我能够完成这次课程设计。

 

参考文献

【1】《单片微型计算机技术》刘国荣编机械工业出版社

【2】《单片微型计算机原理、应用及接口技术》张迎新编国防工业出版社

【3】《单片机实用系统设计技术》房小翠编国防工业出版社

【4】《单片机应用系统设计》何立民编北航出版社

【5】《单片机原理及接口技术曹琳琳编国防科技大学出版社

【6】《新概念51C语言教程》郭天祥编著电子工业出版社

 

附录A系统总硬件原理图

 

附录B程序清单

程序清单:

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

ucharcodeLED_W[3]={0x08,0x04,0x02};

ucharssy[3],szy[3],mb[3];

uintgetdata,getdata1,n,MBO;

uchara,i,k;

sbitmb_led=P3^0;

sbitssy_led=P3^1;

sbitszy_led=P3^3;

sbitwr=P3^6;

sbitrd=P3^7;

voiddelay(uintz)//延时z毫秒

{

uintt1,y;

for(t1=z;t1>0;t1--)

for(y=110;y>0;y--);

}

voidxinlv()//脉搏的显示函数

{

mb_led=0;

for(a=150;a>0;a--)

{

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

{

P2=LED_W[i];

k=mb[i];

P1=table[k];

delay(5);

}

}

mb_led=1;

}

 

voidxueya_ssy()//收缩压的显示函数

{

ssy_led=0;

for(a=150;a>0;a--)

{

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

{

P2=LED_W[i];

k=ssy[i];

P1=table[k];

delay(5);

}

}

ssy_led=1;

}

 

voidxueya_szy()//舒张压的显示函数

{

szy_led=0;

for(a=150;a>0;a--)

{

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

{

P2=LED_W[i];

k=szy[i];

P1=table[k];

delay(5);

}

}

szy_led=1;

}

 

voiddisplay()//显示子函数

{

xinlv();

xueya_ssy();

xueya_szy();

}

 

voidadswap()//模数转换子程序

{

wr=1;//启动转换

wr=0;

wr=1;

rd=0;

//getdata=XBYTE[0xB000];//存放转换结果,看成收缩压

getdata=P0;

rd=1;

getdata1=(int)getdata/1.6;//设收缩压是舒张压的1.6倍,存放舒张压

ssy[0]=getdata%10;//个位

getdata=getdata/10;

ssy[1]=getdata%10;//十位

ssy[2]=getdata/10;//百位

 

szy[0]=getdata1%10;//个位

getdata1=getdata1/10;

szy[1]=getdata1%10;//十位

szy[2]=getdata1/10;//百位

}

voidmain()

{

TMOD=0x01;//定时器T0工作于方式1

TH0=0xec;

TL0=0x78;//T0定时时间为5ms

IE=0X83;//开中断

IT0=1;//外部中断0为边沿触发方式

TR0=1;//开定时器T0

P2=0X00;//关所有位显示

while

(1)

{

display();

}

}

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

{

if(n==0)

MBO=0;

else

MBO=12000/n;//计算每分钟脉搏数

mb[0]=MBO%10;//取个位数

MBO=MBO/10;

mb[1]=MBO%10;//取十位数

mb[2]=MBO/10;//取百位数

n=0;

}

Timer0()interrupt1//定时中断服务程序

{

TH0=0xec;

TL0=0x78;

n=n+1;

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

{n=0;}

adswap();

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1