基于STC89C52单片机的心率检测系统设计与实现

2021-10-05 12:48赵光晶张友浩徐梦瑶
智能计算机与应用 2021年5期
关键词:子程序滤波按键

赵光晶,赵 鸣,张友浩,徐梦瑶

(上海工程技术大学 航空运输学院,上海201620)

0 引 言

心率是体现血液循环机能的重要生理指标,如果能稳定地记录这项数据,可以及时有效预防心血管疾病,测量的数值在日后的问诊过程中也能起重要作用。本设计的目的就是让用户可以便捷测量自身心率。本设计的中心控制单元选择STC89C52,利用人体指腹血液透光性不一样的特性,让传感器接收不同信号从而间接测量人体心率,传感器和液晶显示器对接显示心率数据,功耗低且稳定,方便日常生活的使用。

1 心率检测系统设计

本设计硬件电路的控制核心选用的是单片机STC89C52,通过光电传感器、信号采集电路、键盘电路、显示电路以及报警电路实现对人体心率的稳定测量。心率检测系统的组成如图1所示。

图1 心率检测系统组成Fig.1 Composition of heart rate detection system

单片机STC89C52是设计的核心部分,可以实现算法;传感器电路使用ST188用于心率采集;信号采集电路将收集到的心率信号通过传感器转换为合适的电信号;键盘电路用于上下阈值的设定以及开关和复位等;LCD1602显示电路用于显示实测心率数值及阈值;报警电路用于超过阈值触发报警。

2 主要电路硬件设计

2.1 STC89C52单片机电路

本设计采用的是宏晶产生的单时钟/机器周期的8位单片机STC89C52,拥有MCS-51的内核[1]。具体的单片机管脚功能见表1。

表1 单片机管脚功能Tab.1 Single chip microcompute pin function

2.2 传感器电路

本设计中的传感器部分选用了红外光电转换器,因为在同一个红外光照射下的动脉血液充盈的透光性不同,所以采集到的光电信号也不同。本设计选用型号为ST188的传感器。选择330 Ω和20 KΩ的电阻,外部提供一个+5 V电源。将手指的指腹置于发送端和接收端之间,光电二极管会因为心率不断发生变化而采集到不同时刻的信号[3]。具体电路连接如图2所示。

图2 传感器连接原理电路图Fig.2 The connection principle circuit diagram of the sensor

2.3 信号采集电路

信号采集模块就是将收集到的心率信号通过传感器转换为合适的电信号,但是由于人体心率是比较微弱的,所以一般采集到的心率信号也比较小,再加上外界的噪声干扰,波形比较杂乱,很难从中提取出有用信号,所以经传感器收集到的心率信号需要再次经过放大、整形以及滤波才能得到所要求的信号。一系列电路系统框图如图3所示。

图3 信号采集电路系统框图Fig.3 Block diagram of signal acquisition circuit system

2.3.1 放大滤波电路

由于人体的脉搏信号即心率信号非常微小,直接测量可能数值不准确,在电路中也可能伴有干扰信号影响测量数值,因此本设计要采用LM358对接收的信号进行放大和滤波。LM358的内部是由2个增益较高、相互独立并且对频率具有补偿作用的运放构成的,可以放大电压信号,内部双运放的本质是2个电压比较器,当输入电压IN1>IN2时,正输入端的电压较高,输出高电平VCC;当输入电压IN2>IN1时,负输入端的电压较高,输出低电平0 V。

滤波电路分为低通、高通、带通和带阻滤波器。人体心率信号比较微弱,需筛选特定频率范围内的信号,因此选用3个电阻3个电容将高通和低通滤波器串联成一个带通滤波器,只让测量所需要的这一频段信号通过并且抑制此频段外其它信号,放大滤波电路具体设计如图4所示。

图4 放大滤波电路图Fig.4 Circuit diagram of amplifying and filtering

2.3.2 整形电路

虽然经过了放大和滤波后的信号变得更易于测量,但存在低频的干扰和不规则的脉冲信号还会影响测量,为了解决这一问题,就需要对电路再加一个滞回比较器来进行一个整形的处理,为了节约成本,可以直接选用一个双运算放大器元器件LM358。此元器件的内部由2个电压比较器构成,波形整形电路如图5所示。

图5 波形整形电路Fig.5 Waveform shaping circuit

2.4 键盘电路

键盘电路共有5个按键,分别作为电源自锁开关、数据的复位以及独立设定阈值。按下按键时,负跳变会使INT1中断,再查询详细按键后触发相应功能。此结构不仅扩充了外部中断源,减少了CPU的工作负担,又能对按键进行实时处理。

2.5 LCD液晶显示器

显示电路是人机交互的核心,本设计选用本身即带有字库的5×7点阵LCD1602显示管,此显示管编写程序和外接电路较为简单,共有2行并且每一行能够显示16个字符。P1.2、P1.1、P1.0分别连接LCD的EN、R/W、RS,启动初始化清屏,接着将接口端的数据的位数设为8位,P0.0至P0.7与LCD1602的DB0到DB7分别相接[4]。

2.6 报警电路

蜂鸣器用于超限报警,若实时检测的脉搏数据不在设备设定的阈值范围内,则单片机驱动蜂鸣器发出鸣叫。注意蜂鸣器的长脚接+极,短脚接-极。因蜂鸣器正常工作时的工作电流较大,单片机的I/O口无法直接驱动,因此在电路中使用一个PNP型的三极管来放大电流。

3 系统软件设计

本系统软件设计包括主程序、液晶显示子程序、按键子程序、中断服务子程序等。主程序流程如图6所示。单片机上电后先进行初始化,清除一些参数的初值,等待用户按下对应的按键并进入对应的功能,当用户按下测量按键的时候,单片机根据用户按下的按键增加或减少范围,按键子程序流程如图7所示。按下按键后,单片机通过定时15 s测量人体的脉搏次数,再换算出对应的真实的脉搏次数在液晶屏幕上显示。液晶显示子程序先调用液晶自定义的字库,设置好DDRAM地址后在第一行显示,根据程序中的数据设置显示数据的首地址并设置循环量,在循环过程中不断的取字符代码直到终止,第二行的显示过程同第一行的显示过程一样,2行显示完毕后便结束子程序。

图6 主程序流程图Fig.6 Main program flow chart

图7 按键子程序流程图Fig.7 Key subroutine flow chart

4 系统调试

LCD显示模块调试:若能在显示模块显示初始化子程序的文字说明,则LCD写入命令或数据子程序无误;若不能,则需检查LCD显示模块的读写位和使能端位,以及变量是否与电路图所连接的端口一致。再检查是否在第一行显示当前测量值,如果在指示灯均匀闪烁的情况下测量值一直不变化,则需检查定时器中断服务子程序是否正常计数。

传感器模块调试:使用万用表测量R5 2端电压,若低于0.3 V,则更换更大阻值的R5;若高于0.6 V,则更换更小阻值的R5。

单片机模块调试:若30脚与地间电压是5 V,则检查单片机最小系统,最小系统包括晶振电路和复位电路,检查18、19脚是否接12 M晶振,分别调整电容与电阻的两脚接法,检查无误后再次测量30脚和地间电压。

5 结束语

本设计以STC89C52为控制核心,连接LCD1602液晶显示和LM358运放以及蜂鸣器,再加上各种电阻电容,实现了人体心率的计数及显示功能。此心率检测系统采用光电传感器直接外部接触式的测量方式,能够保证对人体心率信号测量的精确性和简便性,其使用简单,携带方便,价格低廉,具有广阔的市场前景。

猜你喜欢
子程序滤波按键
基于HP滤波与ARIMA-GARCH模型的柱塞泵泄漏量预测
基于改进自适应中值滤波的图像降噪方法*
非触勿动 秒治键盘误触
应用子程序车削梯形螺纹方法
在数控车床上加工软轴零件
基于非下采样剪切波变换与引导滤波结合的遥感图像增强
数控车床加工螺纹编程方法探讨
未来的笔
其实真的很简单教你轻松关闭WP8.1手机按键灯
计算器