基于51单片机人体脉搏测量仪的设计与实现.docx
- 文档编号:3740445
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:20
- 大小:451.36KB
基于51单片机人体脉搏测量仪的设计与实现.docx
《基于51单片机人体脉搏测量仪的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于51单片机人体脉搏测量仪的设计与实现.docx(20页珍藏版)》请在冰豆网上搜索。
基于51单片机人体脉搏测量仪的设计与实现
1绪论
1.1研究背景及意义
脉象诊断已经在我国存在有几千多年历史了,就是我国传统中医必须研究的对象,由于传统医学采用的相关手段,对病人进行的病情诊断,病情的诊断会因为病人或者医者的影响,就会导致测量的准确度问题。
现代科技发展的步步提高,生命学和信息学的联系是越来越紧密了,出现了许多样式各异的脉搏测量仪器,尤其是电子式的脉搏测量仪现世,让平时在测量脉搏时很便捷了。
使诊断更加精确、治疗能够更加完善。
现如今已经有很多人慢慢认识到,在日常中绿色健康的生活方式,以及对相关疾病防治的重要性。
在检测人体脉搏信号的领域里,当今世界上已有许多的先进的知识体系,在当今医学技术里面,人体心血管健康能进行无创检测的方法和仪器不断涌现。
研究一种无害的而且实用的测量仪器,使愈来愈多的人关心自己的心血管健康状态,能够在心血管疾病的还处于轻度状态时,进行快一步的发现,而且还能够平时的生活中进行预防。
采用光电传感技术,实现光电法提取指尖脉搏信息,送入控制芯片进行计数并在显示设备上显示脉搏技术,制成的脉搏测量仪器性能良好,结构简单,在脉诊方面具有一定的应用和推广实效。
1.2脉搏测量仪的研究现状
在日新月异的医疗学中,检测脉搏跳动,来获得患者的身体健康状态的电子科技医疗器件是越来越多了。
脉搏信号是显示出身体健康状况的渠道,检测脉搏信号的仪器在传统检测中有它的优势所在。
在研究脉搏系统期间,对许多已经出现在网络、市场上的脉搏仪器进行了调查,发现网络、市场上有许多较高的效率,而且比较精确的测量产品,在仔细调查后,发现其中的许多仪器都存在部分不足,所以就没有把其设计的路线和解决其中问题的设计方案应用到大范围的电子产品生产方面去,也就没有大规模的应用到医学领域中去。
比如有些脉搏测量仪器还是比较高效且精确的,但是在物价高涨现代社会,产品的价格是非常高的,在普通消费者比较多的情况下,是不能承受的。
有的医疗测量仪器需要比较严格的检测环境,才能检测出人体的脉搏信号,如此要求严格的测量环境,根本不能在平常的消费者当中所处的条件里准确测量。
此外有的仪器是在操作的过程当中,因为操作过程比较繁琐,所以就无法推广并当作产品进行广泛销售。
根据走访调查,了解到现如今还有许多经济比较落后的地方都是采取听诊来进行测量的,没有相对比较便宜且准确的仪器所代替。
1998年01月朱国富等做的袖珍式动脉脉搏波监测仪是基于单片微机8098作为控制器,利用光电式传感器采集信号[1]。
2005年09月刘文等设计了利用51系列单片机开发指脉采集系统,实现对人体的脉搏数据采集、存储、报警等功能[2]。
该系统成本低,实用性强。
2011年10月将为等设计了基于32位CMOS单片机的人体脉搏波形测量仪,实现了在LCD上直接显示出脉搏波形,该体系基本达到了仪器的测量精度,而且系统的响应速度方面得到了提升了[3],系统有良好准确度,使用便捷,耗材低。
2015年2月李宏恩等设计了以AT89C51单片机为核心,将光电传感器采集到信号经过电路处理后输入到AT89C51内,利用单片机内部的定时器来计算时间,然后将脉冲的次数进行累加,就可以计算出脉搏每分钟的跳动次数[4]。
1.3研究的主要内容
用STC89C52单片机作为系统设计的核心控制和处理单元,并且用红外传感器ST188对人体的脉搏信号进行采集,接下来把脉搏信号经相关电路放大、滤波、整形,进行A/D转换,输入给单片机系统进行处理,运用软件和硬件的处理技术实现对脉搏信号比较准确的测量,设计出指尖放在ST188的表面上,系统能够在2到5秒钟内测出脉搏在1分钟的跳动数据,并显示在1608液晶屏上,可以设置脉搏测量仪测量脉搏信号的的上下限,报警模块会根据设置进行蜂鸣报警。
2脉搏测量仪的设计方案
在脉搏测量仪的设计中,信号的采集和获取是关键。
在设计的过程中,脉搏信号可以无误、有效、真实地采集,那么设计就可以顺利的进行。
动脉信号极弱,振幅非常有限,难于进行采集和获取。
生物的各部分的生理信号都是相互干扰、相互影响,在这种情况下,脉搏信号就会受到噪声的干扰。
脉搏信号的频率是很低的,正常人每分钟的脉搏跳动次数在60到100之间,频率在1Hz到1.67Hz,平均在70次左右。
能够选择合理的传感器来对脉搏信号进行测量,才能够获得无误、有效、真实地采集,才能完整而又准确的反映一个人的身体活动的生理信息,设计的脉搏仪才能正常且高效地工作。
采用红外传感器进行对脉搏信号的采集,光电系统通常是指能够敏感到紫外光至红外光的光能量,并将这个光能量变换成电信号的器件。
光电式传感器测量比较微小的位移变化有非常明显的作用,而且红外传感器对材料、电路模块控制以及光电管的特性要求是相对要高的。
光电式检测信号是使用红外传感器测试出血脉中流动时对光的透过率、反射率不同,就将收到的信号进行光电转换。
选择ST188传感器对信号进行采集是最合适的。
选择STC89C52单片机系统,该设计的的可靠性可以得到提升,而且简化电路的设计,从而使系统耗材减少。
显示模块选择LCD液晶显示屏,因为液晶显示屏的信息量大,使用的寿命相关的长,而且能够在低压的情况下驱动。
LCD具有的独特的优点特性,对信息的显示效果也是非常好的,而且控制方面也比较简便使用等等。
蜂鸣器模块采用蜂鸣器在超过上限低于下限时报警,并添加一个蜂鸣器开关。
按键功能由4个按键开关组成,用于对单片机的复位,设置上下限,数值加,数值减。
电源模块是采用的DC电源插座,还有自锁开关实现对系统的断电续电,并保护系统。
硬件电路设计框图如图2-1所示。
图2-1硬件电路设计框图
3硬件电路设计与实现
硬件电路的设计也是实现系统功能的重要部分,由主控制模块进行系统控制,LCD模块进行数据的显示,传感器进行脉搏的采集,运放电路进行数据的处理,按键电路进行数据的调节以及系统的复位,蜂鸣电路进行异常报警,电源电路是为系统提供工作电压。
硬件电路如图3-1所示。
图3-1硬件电路原理图
3.1主控制模块
STC89C52单片机可以让开发者通过计算机的并行端口或者串行端口直接将可执行文件烧写到单片机中,这样就可以在开发板上进行仿真,在电路设计中,单片机的每个引脚的功能都要充分实现,图3-2为STC89C52的引脚图。
图3-2STC89C52RC引脚图
电源引脚:
40引脚为VCC引脚,连接5V的电源,20引脚为GND引脚,必须接地。
那么第40引脚就直接接到电源的正极[5]。
输入/输出端口:
如图3-2,40引脚的下一个是第39引脚,是P0的起始引脚,直到第32脚这8个脚是P0;1引脚到8引脚为P1;21到28引脚为P2;10引脚到17引脚为P3;39引脚、1引脚、21引脚、10引脚就是4个Port的开始引脚,因此把这四个引脚称为输入/输出端口。
能连接各个辅助电路实现硬件的连接,如显示电路,按键电路,蜂鸣器电路等。
P3口:
①可以作为输入/输出口,外接输入/输出设备;②作为第二功能使用。
P0作为I/O口输出时,输出低电平为0输出高电平为高组态,就是说P0不能真正的输出高电平,如果要为所接的负载提供电流,就一定要用到上拉电阻。
复位引脚:
所有的微处理都需要复位的动作,复位引脚是9引脚,接高电平超过2个机器周期,即可产生复位动作。
频率引脚:
18引脚、19引脚是时钟脉冲引脚,连接震荡电路。
存储器引脚:
31引脚是存取外部存储器使能引脚,设计中只使用内部存储器,因此就把使能引脚直接接到电源正极[5]。
外部存储器引脚:
因为用到的是内部存储器,所以29引脚、30引脚就使用悬空。
3.2信号采集与处理模块设计
3.2.1ST188红外光电传感器
信号采集用的是反射式红外光电传感器,由红外发光二极管和红外光敏三极管构成。
A_K为发射管;C_E为接收管。
电路图如图3-3所示。
图3-3ST188传感器电路图
3.2.2双运算放大器LM358P
LM358P内部有两个独立的、高增益、内部频率补偿的双运算放大器,1引脚、2引脚、3引脚为第一极运算放大通道,运放的1引脚是OUT端,运放的2引脚是反相INT端,运放的3引脚是同相INT端;5、6、7引脚为另一运放通道,7引脚是输出端,6引脚是反相输入端,5引脚是同相输入端;8引脚接VCC;4引脚是接地或负电源[6]。
LM358P的引脚结构如图3-4所示。
图3-4LM358的引脚结构
3.2.3信号采集电路
打开电源后,发光二极管发射红外光照射到血管上,其中的部分光信号经过血管反射被光敏三极管所接收且转换成电信号送至测量处理电路,测出血管中血液流动状态[7]。
血管中的血液流动平滑时,发射出去的光经过反射,接收管收到的发射光没有幅度上的大变化,采集电路就没有信号输出;当血管受压血液不流动时,传感器也无输出信号;只有当血管受到了压力的作用时,血管里面的血液就会根据压力的作用产生断续,反射光也跟着之产生改变,就会让接收管电流发生变化,因此传感器就会输出脉搏信号。
激励电阻R4选择470欧姆是基于红外接收管所考虑的,传感器输出的脉冲信号是非常微弱的低频信号,脉搏数是50次/分为0.78Hz,200次/分为3.33Hz。
脉搏采集电路如图3-5所示。
图3-5脉搏采集电路
3.2.4信号处理电路
经过传感器的输出信号是低频信号而且还伴有干扰信号,信号经R5和C4滤除高频干扰,再由耦合电容C5、C6加到放大输入端,电容的作用传递电流信号,进入运算放大器电路处理后变为电压信号既脉冲信号,信号要经过两级放大,即滤波放大和整形放大,经过滤波放大后的信号还是不规则的脉冲信号,而且还有低频信号的干扰,就必须利用整形电路进行处理[9]。
R9为反馈电阻,运放电路中选第二级作为滞回电压比较器,处于开环状态,电压增益很大,目的是进一步提高电路的抗干扰能力,而且还在LM358P的输出端XL连接一个作为系统工作状态的发光二极管。
信号处理电路如图3-6所示。
图3-6信号处理电路
3.3显示模块
LCD1602是因为在显示屏要显示的数据是16X2,就是可以显示出两行数据,上下两行都可以显示16个字符和数字,LCD1602显示模块有标准的16脚接口。
接口如下:
第1引脚GND是的;第2引脚为VCC是接5V电源正极;第3引脚,V0是LCD1602的液晶显示器对比度调整端,接VCC时对比度是最弱的,接GND时对比度是最高的,在使用时如果对比度过高[10],会因为响应速度原因使图像发生模糊,所以在使用时用R2接VCC和R1接地调整对比度;第4脚RS为选择,高电平1时选择、低电平0时选择;第5脚RW为读写信号线,高低电平时分别进行读操作和写操作;第6脚,EN端为使能端,高电平时读取信息,负跳变时执行指令;第7脚与第14脚,D0到D7是8位双向数据端,在LCD的7到14脚与单片机的32到39引脚之间要用到排阻103,P0口做输出口时,只有接上拉电阻才能有高电平输出。
;第15脚与第16脚,或背灯电源,15脚背光正极就接VCC,16脚背光负极就接地。
LCD1602与单片机接口电路如图3-7所示。
图3-7LCD显示电路
3.4键盘电路模块
因为I/O口足够用,键盘设计采用线性键盘,三个引脚通过按键接地,有程序控制扫描。
K2、K3、K4按键分别接到单片机的P10、P11、P12上;K2是设置上下限,按一次显示设置下限,按第二次显示设置上限,按K3进行数值加,按K4进行数值减,以便在超出限制时有报警提示。
键盘电路如图3-8所示。
图3-8键盘电路
3.5时钟电路
时钟电路如图3-9所示,时钟电路就是振荡电路,在单片机系统的第18、19引脚上外接一个12MHz的晶振,是为了给单片机系统提供工作频率[11]。
振荡电路是由两个30pF的电容和一个12MHz的晶振组成,单片机系统的工作周期通过计算是1us。
图3-9时钟电路
3.6复位电路
系统上电后单片机进入工作状态,开始的=测量工作,如果需要复位,那么按下弹片K1开关,系统再次进入稳定的工作状态,重新开始测量。
如果在测量时手指离开过传感器,那么就需要进行复位。
C1电容的作用是:
上电自动复位作用。
复位电路如图3-10所示。
图3-10复位电路
3.7报警电路
在单片机的24引脚连接一个蜂鸣器,在测量脉搏的过程中,根据设置的上下限,当脉搏大于上限M次/分钟或小于下限N次/分钟[12],蜂鸣器进行报警。
有时候会因为干扰导致蜂鸣器长时间报警,加一个开关进行控制。
三极管的作用:
因为从单片机端口输出的信号较小,如果直接接上蜂鸣器,可能会由于电流能力太小,蜂鸣器并不能正常工作,且会不发出声响,所以增加一个三极管对输出信号进行放大,增大功率来驱动蜂鸣器[13]。
如图3-11所示。
图3-11报警电路
3.8电源模块
VCC接一个DC插座,和一个自锁开关S1,使用时用USB电源线接入USB端口,DC插头插入DC插座进行供电。
STC89C52RC的工作电压在5V电压下,电源电路图如图3-12所示。
图3-12电源电路
4系统软件部分设计
4.1主程序设计
主程序是程序的中心部分,能够调用子程序,系统主程序控制单片机系统按预定的运行,它是单片机系统程序的框架。
系统上电后,对系统进行初始化,LCD显示并打开定时器,进入循环,开始扫描按键程序,再显示出来,再次扫描按键程序,结束程序。
程序流程图如图4-1所示。
图4-1主程序流程图
主程序:
voidmain()//主函数
{
InitLcd();
Tim_Init();
lcd_1602_word(0x80,16,"PulseRate:
");//初始化显示
TR0=1;
TR1=1;//打开定时器
while
(1)//进入循环
{
if(Key_Change)//有按键按下并已经得出键值
{
Key_Change=0;//将按键使能变量清零,等待下次按键按下
View_Change=1;
switch(Key_Value)//判断键值
}
if(View_Change)//显示变量
{
View_Change=0;//变量清零
if(stop==0)//脉搏正常时
{
if(View_Data[0]==0x30)//最高位为0时不显示
View_Data[0]='';
}
else//脉搏不正常(计数超过5000,也就是两次信号时间超过5s)不显示数据
{
View_Data[0]='';
View_Data[1]='';
View_Data[2]='';
}
switch(View_Con)//显示函数
}
}
}
4.2中断程序
定时器服务程序,定时器中初始化,定时10ms;有定时中断产生,无信号时返回到定时中断;有信号输入时,Maibo_Con就+1,当Maibo_Con不是大于等于3时,返回到定时中断;当Maibo_Con是大于等于3时,信号输入就保持了30ms,说明是脉搏信号;如果是第一个脉搏信号那么返回到定时中断继续检测第二个脉冲信号;是第二次脉冲信号是就计算两次脉冲信号的时间差,从而得到1分钟的脉搏数;在显示模块上进行显示出来。
流程如图4-2所示。
图4-2中断程序流程图
中断程序:
voidTime1()interrupt3//定时器1服务函数
{
staticucharKey_Con,Maibo_Con;
TH1=0xd8;//10ms
TL1=0xf0;//重新赋初值
switch(Key_Con)//无按键按下时此值为0
{
case0:
//每10ms扫描此处
{
.................
}
case1:
//10ms后二次进入中断后扫描此处(Key_Con为1)
{
..............
}
case2:
//20ms后检测按键
{
.........
}
}
switch(Maibo_Con)//此处与上面按键的检测类似
{
case0:
//默认Maibo_Con是为0的
{
........
}
..........
case4:
{
...........
}
}
}
4.3显示模块
开始,声明变量和函数,显示初始化,进行扫描键盘,判断是否有按键按下,有5ms延迟函数,显示内容,LCD1602显示模块如图4-3所示:
图4-3显示模块流程图
显示子程序:
voidlcd_1602_word(ucharAdress_Com,ucharNum_Adat,uchar*Adress_Data)
{
uchara=0;
ucharData_Word;
LCD_WriteCom(Adress_Com);//选中地址
for(a=0;a { Data_Word=*Adress_Data;//读取字符串数据 LCD_WriteData(Data_Word);//显示字符串 Adress_Data++;//显示地址加一 } } /***************1602函数*******************/ voidLCD_WriteData(ucharLCD_1602_DATA)/********LCD1602数据写入***********/ { delay5ms();//操作前短暂延时,保证信号稳定 LCD_E=0; LCD_RS=1; LCD_RW=0; _nop_(); LCD_E=1; LCD_DATA=LCD_1602_DATA; LCD_E=0; LCD_RS=0; } /********LCD1602命令写入***********/ voidLCD_WriteCom(ucharLCD_1602_COM) { delay5ms();//操作前短暂延时,保证信号稳定 LCD_E=0; LCD_RS=0; LCD_RW=0; _nop_(); LCD_E=1; LCD_DATA=LCD_1602_COM; LCD_E=0; LCD_RS=0; } voidInitLcd()//初始化液晶函数 { delay5ms(); delay5ms(); LCD_WriteCom(0x38);//displaymode LCD_WriteCom(0x38);//displaymode LCD_WriteCom(0x38);//displaymode LCD_WriteCom(0x06);//显示光标移动位置 LCD_WriteCom(0x0c);//显示开及光标设置 LCD_WriteCom(0x01);//显示清屏 delay5ms(); delay5ms(); } 5脉搏仪测试与结果分析 5.1程序调试 设计的程序编写使用的是Keil4软件,调试过程如下: 在Keil4里面的Project下新建一个项目;在工程文件中新建一个file文件,将程序输入进去后并保存为.c文件,设置时钟脉冲频率为12MHz,在Output下,勾选产生16进制数文件,即.hex文件;对程序进行编译零错误后,就完成了程序的开发,将生成的.hex文件烧写到STC89C52单片机中。 程序编译结果如图5-1所示。 图5-1程序编译结果 5.2脉搏测量仪原理图调试 在AltiumDesigner软件中进行原理图绘制和调试,在元件库里面找到相关器件,在工作界面进行绘制。 在完成原理图的连线后,应仔细检查接线是否到位,用Compile进行编译,检查出原理图绘制的错误,修改里面的错误,直到整体电路都符合电气特性。 5.3脉搏测量仪在Proteus的仿真 绘制完原理图后,按照电路原理图在ProteusProfessional软件做仿真图。 按照原理图在ProteusProfessional中选择相应的电子元件,排布好电子元器件的位置对电路进行连线,连接完后进行检查无误后,将在Keil4中编译生成的.hex文件导入ProteusProfessional单片机中对电路进行仿真。 仿真图如图5-2所示。 图5-2仿真图 在本次的原理仿真当中,因为只需要进行单片机处理部分的仿真,所以输入端选择了波形发生器,利用波形发生器产生不相同的频率的方波来取代脉搏波信号。 为了测试其性能,将给单片机不同大小频率的方波信号。 5.4PCB排版布线及硬件焊接 完成调试仿真后按照原理图来完成PCB板的绘制,在AltiumDesigner软件中绘制的PCB图,将PCB文件发给PCB制作厂家,制作好的PCB如5-3所示。 接下来按照原理图将元器件焊接到制作好的电路板上,并完成实物的制作,实物如图5-4所示。 图5-3PCB布线 图5-4脉搏测量仪 5.5测试数据与结果分析 将焊接好的实物,进行实际的检测,测试方案是: 对同一个人同一时间进行不同的方式进行测量。 脉搏测量仪是在2s内计算出人体的脉搏数值,如果数值在接下来的几秒内一直变化,那么就要等变化不大时出现的数值时,就是人体1分钟的脉搏次数了;而听诊器测量脉搏的次数则是要用到1分钟,所以在检测中安排了多次检测,部分测试结果如表5-1所示。 表5-1部分测试结果 测试 次序 听诊器测到的数据(次/分) 脉搏测量仪示值(次/分) 两者之间相差 1 73 77 4 2 76 79 3 3 72 74 2 4 77 78 1 5 70 69 1 6 80 80 0 从表5-5中结果分析,在实际测量中,用听诊器测量的数据与脉搏测量仪检测到的的数据会出现误差,这个是在检测同一个人的脉搏的实时数据,出现的误差最大为4,最小为0,因为脉搏仪在短时间内就得到了数据,听诊器还要测满1分钟,在这段时间内,会出现人体的生理变化,脉搏会忽慢忽快,导致了误差的产生。 可以在表5-5中看出,误差保持在0到4之间,这个误差范围是可以允许的,因此本系统基本达到设计要求。 6总结与分析 基于单片机的脉搏测量仪系统容易进行操作使用,其响应速度和精度相对较好,应用广泛,具有实际意义。 脉搏测量的极为特殊性,比如血脉的振动幅度小,大多数会受到其他信号的干预,造成需要的信号难以采集和获取,或者无法保证采集获取到的脉搏信号的准确可靠性,而且脉搏信号的处理过程是比较麻烦和复杂的,所以在每个模块的设计中,都应该小心仔细,全面考虑,确保每一部分电路的正确性。 系统可工作在直流电压为5V伏左右,工作电流为100mA左右;系统在通电后,将手指放在红外传感器上,等待测试2s到5s可检测到人体的信号,并在液晶屏上显示出来。 这次设计因为时间比较紧,还有就是本人掌握的知识有限,在本次设计中存在很多不足,而且系统的测试能力有限。 本设计的整体设计方案相对于以前已有的设计来说,改进和提高的幅度也不是很大,有一定的局限性。 现如今电子器件的日新月异,在设计各个电路模块时,能有更为方便
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 人体 脉搏 测量仪 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)