基于STM32单片机的心率计
功能描述:
由 STM32FC103单片机最小系统+Pulse Sensor心率采集模块 +OLED显示模块组成
1、采用STM32FC103单片机为主控制器
2、采用心率传感器PulseSensor测量心率。
3、OLED显示测得的心率值。
4、仿真中心率传感器用波形发生器和按键两种方式模拟,可用开关切换。
注意:proteus8.11以上版本才能打开 心率测量误差±1
视频演示链接:
6、基于STM32单片机的心率计(仅测心率)(OLED显示)
仿真图:
程序源码:
#include "delay.h"
#include "OLED_I2C.h"
#include "pulsesensor.h"
#include "stdio.h"
#include "stdlib.h"
extern unsigned int cnt;
int main(void)
{
unsigned char Heart = 0; //心率值
unsigned char buf[18];
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
OLED_Init(); //OLED初始化操作
OLED_CLS(); //OLED清除屏幕
OLED_ShowCN(16*0,0,0);
OLED_ShowCN(16*1,0,1);
OLED_ShowStr(16*2,0,"STM32",2);
OLED_ShowCN(16*4+8,0,3);
OLED_ShowCN(16*5+8,0,4);
OLED_ShowCN(16*6+8,0,5);
OLED_ShowCN(16*0,2,3);
OLED_ShowCN(16*1,2,4);
TIM3_Int_Init(11,7285); //定时 按照正常计算发现数值偏大 这里作为微调使仿真中更加准确
EXTIX_Init(); //外部中断初始化
while(1)
{
Heart = Pulsesensor_Read(); //获取心率值
sprintf((char *)buf,(const char *)":%3d/min",Heart);
OLED_ShowStr(16*2,2,buf,2);
sprintf((char *)buf,(const char *)"IBI:%4dms",cnt);
OLED_ShowStr(0,4,buf,2);
}
}
软件免费下载地址:
1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包
链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w
提取码:2756
3、KEIL5 MDK软件(STM32开发软件)
链接:https://pan.baidu.com/s/1t3eY-3yRdTa7jZMlijq_jg
提取码:ab58
代码下载: