您现在的位置是:首页 >学无止境 >基于51单片机的脉搏测量仪设计与实现网站首页学无止境
基于51单片机的脉搏测量仪设计与实现
目录
前言
本设计为基于51单片机的脉搏测量仪,部分内容参考网络资料,如有侵权请及时联系博主删除。
一、设计背景
在中医四诊(望﹑闻﹑问﹑切)中,脉诊占有非常重要的位置。脉诊是我国传统医学中最具特色的一项诊断方法,其历史悠久,内容丰富,是中医“整体观念”﹑“辨证论证”的基本精神的体现与应用。脉搏携带有丰富的人体健康状况的信息,自公元三世纪我国最早的脉学专著《脉经》问世以来,脉学理诊作为“绿色无创”诊断的手段和方法得到了中外人士的关注。但由于中医是靠手指获取脉搏信息,虽然脉诊具有简便﹑无创﹑无痛的特点易为患者接受,然而在长期的医疗实践中也暴露出一些缺陷。首先,切脉单凭医生手指感觉辨别脉象的特征,受到感觉﹑经验和表述的限制,并且难免存在许多主观臆断因素,影响了对脉象判断的规化。其次,这种用手指切脉的技巧很难掌握。再则,感知的脉象无法记录和保存影响了对脉象机理的研究。脉诊的这种定性化和主观性大大影响了其精度与可行性,成为中医脉诊应用﹑发展和交流中的制约因素。为了将传统的中医药学发扬光大,促进脉诊的应用和发展,必须与现代科技相结合,实现更科学﹑客观的诊断。
医院的护士每天都要给住院的病人把脉记录病人每分钟脉搏数的方法是用手按在病人腕部的动脉上,根据脉搏的跳动进行计数。为了节省时间,一般不会作1分钟的测量,通常是测量10秒钟时间心跳的数,再把结果乘以6即得到每分钟的心跳数,即使这样做还是比较费时,而且精度也不高。因此,开发出一款功能强大的脉搏测量仪是非常有意义的。
二、系统功能
本课题设计的脉搏测量仪,控制单元选择STC15F2K60S2单片机,传感器选择反射式光电对管ST188,利用人体指腹血液透光性不一样的特性,让传感器接收不同信号从而间接测量人体脉搏,OLED12864液晶显示器实时显示脉搏数据,使用STC15F2K60S2芯片内部EEPROM实现数据存储功能,将之前测得的数值存储起来,与新测得的脉搏进行对比,便于观察出人体脉搏的变化。用LabVIEW设计上位机软件,将采集到的信号通过串口发送到上位机,实时显示测量的脉搏波形。脉搏超标提醒装置选择蜂鸣器,提醒脉搏过高或过低。具体功能如下所示:
- 使用反射式光电传感器ST188,实现对人体的脉搏测量,显示分辨率为1bpm;
- 计量时,测量结果与信号发生器设置的信号相对误差小于5%;
- 采用OLED12864显示测量结果;
- 使用STC15F2K60S2芯片内部EEPROM实现数据存储功能,并能够显示存储的数据。
- 具有与PC端的通信功能;
- 设计labview软件显示测量的脉搏波形;
- 具有超标(脉搏过低或过高)提醒功能。
三、系统硬件设计
3.1 总体方案设计
总体方案设计如图3.1所示。由于使用的单片机芯片中包含存储器EEPROM、AD转换器以及时钟电路,设计的硬件电路主要分为七个部分。
3.2 信号采集电路设计
反射式光电对管ST188在进行正常工作时,检测的信号为光反射信号,经过模块外部放大、整形、滤波等处理,最终输出模拟信号。由于本次设计采用STC15F2K60S2芯片为主控制,通过检测IO口低电平存在的时间并结合换算关系可实现脉搏的计算。如下图3.2所示为信号采集电路,主要包括低通滤波、信号放大、波形整形等三部分所构成,信号放大和波形整形通过双运算放大器LM358实现。
3.3 报警电路设计
本次设计的报警系统设计采用有源蜂鸣器实现报警电路,当检测到脉搏值不在阈值范围内时,单片机控制报警电路实现报警。如下图3.3为报警电路设计图。采用S8550 PNP三极管的开关作用控制蜂鸣器的开关,并拥有放大信号的作用。
如图中所示,BUZZR为蜂鸣器元件,Q1为S8550三极管,三极管的发射极接到蜂鸣器,通过基极的电平状态从而控制三极管的开关,三极管基极限流电阻接到单片机的P0^4引脚,通过单片机输出高低电平从而控制蜂鸣器。其原理如下:当单片机的P0^4输出低电平时,三极管集电极导通,蜂鸣器负极接地,从而蜂鸣器发出声响;当P0^4输出高电平时,三极管集电极处于截止状态,蜂鸣器没有电压从而不发出声音。
3.4 下载电路
如图3.4所示的下载电路。VCC引脚为正电源输入端,需要外接0.1uF退耦电容C6,接电脑的5V供电。V3引脚外接0.01uF退耦电容C3。XI/XO引脚接晶振12MHz,电容取22pF。TXD/RXD分别接单片机的RX和TX,用作数据通信。
CH340芯片的发送引脚TXD上接一个反向二极管,然后再连接到对端IC。在接收引脚上加一个限流电阻来防止对端IC对CH340倒灌电流。通过反向二极管的原理是:在CH340发送数据时,发送高电平时二极管截止,但是由于对端RXD默认上拉也是高电平不会有采样问题,而发送低电平时二极管导通,对端RXD接收到低电平,因此可以正常通讯。并防止了CH340的TXD发送引脚将电流倒灌到对端IC。通过限流电阻的原理是:倒灌电流导致芯片工作甚至闩锁效应,是由于引脚电流过大超过了芯片设计时容忍的上限导致芯片内部电路出现异常,因此加一个限流电阻。
3.5 电源电路设计
本设计对电源要求不是很高,基本的USB 5V或者四节1.5V干电池供电即可完成,本设计采用USB电源线供电,如下图3.5为本设计的电源接口及开关控制电路图。1脚接到开关控制脚,通过开关U3控制电源的通断,输出到VCC为系统供电,VCC为5V。2、3脚接CH340的UD+和UD-,用于USB转串口通信。4脚接GND。
3.6 OLED显示设计
采用低功耗的0.96寸OLED显示屏,OLED即有机发光二极管(Organic Light-Emitting Diode)。该OLED具有轻薄、低功耗的特点,在MP3等播放器上被广泛应用,由于其低功耗的,在其他可穿戴式产品上也相继被使用。
OLED具有多种驱动方式,常用的方式主要有SPI和IIC驱动,本设计采用IIC接口的方式,IIC只需要两根数据线即可驱动显示,使用原理简单。该模块内部不带任何字符,在显示字符、数字、汉字时都需要制作字库,因此可以显示各图案。如下图3.6所示为OLED显示电路。该模块具有4个引脚,VCC接电源5V供电,GND接地线,3脚接IIC的 SCL,4脚接IIC的 SDA。
3.7 键盘电路
本设计采用三个独立式按键实现阈值调整、界面切换功能。三个按键分为设置加键、设置减键、切换键。设置加键是用来对报警阈值进行设置加,设置减键是用来对报警阈值进行设置减。界面切换键可实现对上下限阈值调整界面进行切换。
下图中3.7为键盘电路设计图,图中三个个按键一端接公共端GND,另一端分别接单片机的I/O。三个按键接口分别接单片机的P0^1、P0^2、P0^3引脚,当单片机的相应引脚检测到低电平时,说明该引脚被触发,从而实现相应的动作。
四、系统软件设计
4.1 系统主程序设计
首先进行系统初始化,系统初始化包括液晶初始化配置、定时器初始化以及串口初始化。接下来进入主程序循环。主程序循环系统中主要是脉搏信号的实时采集。利用定时器2实现脉搏脉冲信号的捕获,检测两次脉冲的间隔时间,定时器0实现有效脉搏信号的计数,最终通过计算得到实际的脉搏值,将得出的脉搏值存储在EEPROM中。利用AD开始采集原始脉搏波形并通过串口上传到Labview上位机。同时键盘子程序实时扫描,检测到切换键按下时,会切换显示;在阈值界面设置状态下,设置按键按下时上限阈值或下限阈值会相应增加减。系统的软件程序框图如下图4.1所示。
4.2 脉搏采集子程序设计
设计采用检测两次脉搏信号脉冲间隔时间计算脉搏,在采集脉搏时,其具体步骤如下:首先是初始化定时器0、2,分别定时1ms、10ms中断,之后进入循环。在循环中,如果脉搏脉冲信号存在30ms以上,在定时器1中断开始脉搏计数,同时在定时器0中断排除脉搏测量不稳定的情况,最后通过脉搏算法算出其脉搏值,在OLED上显示出来,其流程图如下图4.2所示。
4.3 键盘程序设计
按键在本系统中主要起到阈值调整、切换界面等功能。按键工作流程如下:首先在正常工作状态下,按下切换键,进入设置上下限阈值界面,OLED显示脉搏测量值、上下限阈值,通过设置加键、设置减键实现上下限阈值的调整。设置完成后最后按下切换键会回到初始界面,具体流程图如下图4.3所示。
4.4 OLED显示程序设计
本次设计采用OLED屏作为显示器,本次选用的是IIC接口,四针的OLED,通过IIC实现驱动OLED,使用方式非常简单。由上一章节可知,OLED的SDA、SCL分别接STC15F2K60S2的P2^7、P2^6,通过软件模拟IIC驱动。IIC接口包括IIC起始信号、IIC停止信号、IIC读数据、IIC写数据、IIC响应信号和非响应信号。以下为OLED读取显示数据流程图,首先进行初始化配置,初始化IIC,然后配置指令。接下来进入显示数据工作中,首先确定显示显示为坐标,然后显示字体大小等信息,然后写入显示数据。其流程图如下图4.3所示 。
4.5 AD采集脉搏波程序设计
本次设计采用STC15F2K60S2内部8通道10位高速ADC,速度可达30万次/秒,3路PWM还可当3路D/A使用。其使用方式非常简单,不需作为A/D使用的P1口可继续作为IO口使用(建议只作为输入)。需作为A/D使用的口需先将P1ASF特殊功能寄存器中的相应位置为‘1’,将相应的口设置为模拟功能,接着在配置ADC控制寄存器、ADC转换结果调整寄存器以及ADC转换结果寄存器即可。以下为AD采集脉搏波程序设计流程图,首先选择AD转换通道,开启AD转换。接下来获取AD采样结果即可。其流程图如下图4.5所示。
4.6 数据存储程序设计
本次设计采用STC15F2K60S2内部大容量EEPROM,其与程序空间是分开的,擦写次数在10万次以上,可分为若干扇区,每个扇区512字节。使用时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同扇区。在不同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的。以下为数据存储程序设计流程图,首先进行EEPROM初始化,然后写数据前擦除扇区。接下来写入存储数据即可。其流程图如下图4.6所示。
五、实物测试
通过对本次课题设计的系统设计和硬件电路设计,最终做出电路板,将电路各个模块进行焊接。在焊接时应该注意先后顺序,先焊接电路模块,将电路接口和电源开关焊接好后,接通电源。接下来利用万用表测试各个电源点是否正常,测试正常后进入下一步的焊接。焊接顺序按照先焊接电源和主控制单片机部分,先焊接小元件再焊接大元件的方式,最终焊接完成图样如下图5.1所示。
在系统板在开机后,正常运行时,OLED第三行会显示“欢迎使用”2秒,然后自动刷新显示心率、EEPROM存储心率值等。如下图5.2所示为系统开机界面和数据显示主界面图。在主界面下实时显示该系统的心率、EEPROM存储心率值等数据。如图所示,心率值通过心率传感器ST188采集心率,当没有进行心率测量时,屏幕第一行显示“0”,第二行显示EEPROM存储心率值。如图第一行显示心率为0,未进行心率测量,第二行显示上一次断电前最后一次测量EEPROM存储心率值51。
在主界面上实时显示,可通过按键实现其他功能,按下切换键时,OLED将切换到阈值显示界面,由于OLED大小关系,故而选择分屏显示。显示界面显示心率测量值、上下限阈值、EPROM存储心率值等信息,如下图5.3所示为上下限阈值显示界面图。第一行显示心率测量值,当没有进行心率测量时,屏幕第一行显示“0”,第二行显示上/下限阈值,第三行显示EEPROM存储心率值。
通过按键进行上下限阈值调整时,需要先按下设置键进入调整界面,如下图5.4所示为上下限阈值调整界面图。第一行显示心率测量值,第一行显示“0”,第二行显示上/下限阈值,第三行显示EEPROM存储心率值。图上所示,此时分别正在下限阈值和上限阈值,通过设置加、设置减键进行上下调整,按一次设置键自动化后退到下一个参数的设置,最后设置完分之后再次按下设置键,将自动保存设置好的时间并退出设置界面自动进入主界面。
总结
本次设计顺利完成所有要求,但美中不足的是ST188焊接处出了问题,导致设计整体不够美观,当然本人水平有限,设计有所缺陷,欢迎各位小伙伴在评论区交流指正!设计源码、PCB原理图、设计报告见下百度网盘链接:
链接:https://pan.baidu.com/s/1pbsC4rZsHcywS5LAlzyhyg
提取码:tqam
创作不易,还请各位多多支持!