阮承治,俞 晴,俞志强,许真华
(武夷学院 机电工程学院,福建 武夷山 354300)
目前随着电子信息与计算机技术的发展,人们对健康的重视程度越来越高,特别是心率的实时监测和步行的步数记录。传统的心率检测方式是通过医务工作者用听诊器来获取病人的心率,该设备需要医务工作者与患者的配合,其缺点是携带不方便,实时性不强,已经难以满足人们对心率监测的要求。目前已广泛应用的运动手环等电子设备可实时对步数进行记录,但该设备往往缺乏心率数据的监测,功能相对单调[1-2]。因此,迫切需要设计一款简易的可测心率与计步的电子装置。
面对上述问题,本设计中结合可测心率、可计步、可调节电子时钟等功能,设计并制作一款采用单片机STC89C51为核心的电子设备[3]。该控制器主要有电子时钟模块、心率模块[4]、计步模块,系统界面采用LCD1602液晶显示屏可将实时时间、当前心率、当前步数等信息通过按键切换,并通过显示屏实时显示。通过对本电子装置的设计,能达到自行检测心率,查询时间,查看当前步数的功能。
本系统主要由单片机为核心的控制模块组成,由USB设备为单片机提供直流电源。本系统的主要作用为检测心率和计步功能。单片机控制模块由独立按键,报警器,LCD1602显示屏,心率,计步,电子时钟等七个子模块构成[5]。系统总体设计方案如图1所示。
图1 系统总体设计Fig.1 Overall design of the system
系统的设计主要是由单片机主控系统组成。单片机主控系统是由独立按键,报警器,LCD1602显示屏,电子时钟模块、心率检测模块、计步模块等7个部分电路构成。
该最小系统主要是由复位电路、时钟振荡电路等构成,并由USB接口提供直流电源支持单片机的正常运行。单片机最小系统设计如图2所示。
图2 单片机的最小系统Fig.2 MCU minimum system
根据设计的最小系统,RST引脚接收到两个机器周期以上的高电平信号,STC89C51单片机实现复位功能。本设计采用的是12MHz晶振,按钮复位电路。
2.2.1 LCD显示电路
LCD显示屏的D0到D7与单片机P0口相连,LCD显示屏EN口与单片机P3.4口相连,RS与P3.5相连。可以通过变阻器RV1改变LCD显示屏的显示对比度,LCD显示模块如图3所示。
图3 LCD显示模块Fig.3 LCD display module
2.2.2 独立按键模块电路
独立按键模块如图4所示,采用独立键盘,键盘按下时,相应的I/O口电平由高变低,检测按键是否被按下。4个独立按键与单片机P1.0—P1.3口相连。
图4 独立按键模块Fig.4 Independent key module
2.2.3 报警模块电路
蜂鸣器在准点报时产生报警声,LED在秒钟为偶数时或者功能键被按下时亮。蜂鸣器与单片机P2.2口相连,LED灯与单片机P2.3口相连,报警模块电路如图5所示。
图5 报警模块Fig.5 Alarm module
2.2.4 心率传感器
本设备选购的心率传感器,它是通过按压光电式心率传感器实现血液对绿外光的吸收,将检测到的光强变化量转化为电信号,经过接口传送到达处理器部分。当处理器处理完毕之后,由LCD1602液晶显示屏显示出心率值BPM,以达到心率检测的目的[6-7]。
2.2.5 三轴加速度传感器
从图6中可以看到,LSM303芯片与外围器件通过一条I2C总线实现通信功能,此芯片连接简单,周边所需器件少。I2C总线采用一条数据线(SDA)和一条时钟线(SCL)完成数据的传输及外围器件的扩展。
图6 加速度传感器LSM303外围电路Fig.6 Acceleration sensor LSM303 peripheral circuit
当设备经过上电初始化后系统自动开始运行时钟模块与计步模块,此时当使用者第1次按键时,在LCD1602液晶显示屏上显示存储在寄存器内的时间数据;第2次按键时,开始检测心率并在检测完毕后在显示屏上显示心率数;第3次按键时,中断心率程序并且在显示屏上显示存储在寄存器内的步数数据进行显示步数的功能。主程序流程图如图7所示。
图7 主程序流程图Fig.7 Main program flow chart
3.2.1 电子时钟模块程序设计
主程序进行初始化后便开始运行该模块。首先定义各项参数以及初始化各相关模块,调用数据处理程序,然后将数据实时存储在寄存器中,判断是否有按键按下,若有按键按下则调用数据显示到LCD显示屏上。计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。调时程序用于调整分钟、小时、星期、日、月、年。主要由主函数组成通过对相关子程序的调用。实现了对时间的设置和修改、LCD显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。电子时钟程序流程图如图8所示。
图8 电子时钟程序流程图Fig.8 Flow chart of electronic clock program
3.2.2 心率检测模块程序设计
该子模块由主程序激活,在主程序发出信号后,初始化各模块并开始检测心率,在采集到数据并且处理完数据后在显示屏上显示心率数。若在这过程中主程序发出中断指令则立即中断运行该子模块[8]。心率程序流程图如图9所示。
图9 心率检测模块程序流程图Fig.9 Heart rate detection module program flow chart
3.2.3 计步模块程序设计
主程序进行初始化后便开始运行该模块。首先定义各项参数以及初始化各相关模块,调用数据处理程序,然后将数据实时存储在寄存器中,判断是否有按键按下,若有按键按下则调用数据显示到LCD显示屏上[9]。判断时间是否过了1 d,若是过了1 d则归零步数,达到每天更新步数总数的功能。计步程序流程图如图10所示。
图10 计步程序流程图Fig.10 Flow chart of step-counting program
为了验证电子时钟的代码是否描述正确,依据代码利用Protues8.0做仿真电路图。仿真电路如图11所示。仿真结果:可以正确显示年,月,日,星期,还有时分秒。
在仿真电路中,通过自动模式仿真,可以发现LCD显示屏可以正常显示仿真结果。本次仿真实验结果表明:该电子时钟模块的软件能够满足设计需求。
图11 仿真电路图Fig.11 Simulated circuit diagram
将各模块连接于开发板上,每个模块连接完成后,需要逐一对其模块功能进行调试,以及对出现的故障进行排除。制作并调试通过后的实物如图12所示。
图12 实物图Fig.12 Physical map
首先对心率模块进行测试,将心率传感器贴于手腕处,模拟佩戴手环时测量心率的情况,利用独立按键将设备调至测试心率的模式。测量结果如图13所示,其中心率为73。经过对照测量,此数据符合系统设计要求。
图13 心率模块调试图Fig.13 Heart rate module debugging diagram
再测试计步模块,将设备系在测试者手腕上经行走动,模拟佩戴手环时记录步数的情况。使用独立按键将设备调至LCD显示屏显示步数的界面,测量结果如图14所示。从测试结果看,设备记录的步数数据符合设计要求。
图14 计步模块调试图Fig.14 Step-counting module debugging diagram
设计利用STC89C51单片机为主控芯片,结合可测心率、可计步、可调节电子时钟等功能,利用心率传感器对人体心率进行采集,并使用三轴加速度传感器对步数进行统计,可实现心率和计步的基本功能。本设计的系统在一个装置上集成了可测心率、可计步、可调节电子时钟等功能。测试结果表明该系统的工作原理能基本满足设计需求,可满足快速测试健康指数的需求。