【proteus仿真】基于STM32单片机的心率检测设计(仿真图+程序)

前言
现在便携式健康监测设备越来越普及,心率、体温是最基础的两项生理指标。本次基于 STM32F103C8T6 单片机,在 Proteus 中完成仿真设计,实现心率采集、体温测量、OLED 显示、超限声光报警功能,适合单片机课程设计、毕设入门学习。
一、系统整体方案
本系统以STM32F103C8T6作为主控芯片,外设包含:PCF8591 模数采集、脉搏心率传感器、DS18B20 温度传感器、I2C‑OLED12864 显示屏、蜂鸣器、红色报警指示灯。
- 心率信号:模拟脉搏信号送入 PCF8591 进行 AD 转换,单片机处理计算心率值;
- 体温信号:DS18B20 数字温度传感器采集人体温度;
- 显示:OLED 屏幕实时刷新温度、心率以及心率正常参考区间;
- 报警:当心率超出 60‑100 正常范围,蜂鸣器鸣叫 + 红灯点亮做声光报警。
Proteus 电路原理图
二、硬件模块讲解
1. STM32F103C8T6 主控
STM32F103C8T6 是整个系统核心,处理 AD 采样、温度读取、数据计算、屏幕驱动、报警输出。
- PB3、PB4:I2C 接口,驱动 PCF8591;
- PB15:DS18B20 温度传感器数据引脚;
- PA14:控制报警 LED 灯;
- PA15:三极管驱动蜂鸣器,实现报警发声。
2. PCF8591 模数转换模块
PCF8591 是 I2C 接口的 4 路 8 位 ADC 芯片。本设计中,脉搏模拟信号接入 AIN3 通道,将模拟脉搏信号转换成数字量给到 STM32。
I2C 引脚:SCL 接 PB3,SDA 接 PB4。
3. 心率采集模块
仿真内部使用电位器模拟脉搏传感器输出的波动电压信号。手指按压脉搏传感器时,电压随心跳周期性变化;单片机读取 PCF8591 的 AD 数值,检测波形波峰,统计单位时间波峰数量,换算得到每分钟心率 BPM。
4. DS18B20 体温检测
DS18B20 是单总线数字温度传感器,只需要一根 IO 口就可以完成通信,采集环境 / 人体体温,测温精度高,电路简单。数据引脚接 PB15。
5. OLED12864(I2C)显示屏
I2C 接口 OLED 屏幕,用来可视化输出:
温度:36
心率:85
60‑100
实时展示当前体温、实测心率,同时标注正常心率参考范围 60‑100 次 / 分钟。
6. 声光报警电路
- 报警 LED:PA14 引脚,高电平点亮;
- 蜂鸣器:PA15 经过 8050NPN 三极管驱动,三极管放大电流驱动蜂鸣器; 逻辑:当计算出的心率>100 或者<60,就触发红灯亮 + 蜂鸣器响,提示心率异常。
三、系统工作逻辑
- 系统上电初始化:I2C、PCF8591、DS18B20、OLED、GPIO 初始化;
- 循环读取 DS18B20,获取温度数值;
- 通过 PCF8591 不断采集脉搏 AD 数据,做简单滤波,检测心跳波峰,计算心率;
- 将温度、心率数据刷新打印到 OLED 屏幕;
- 判断心率是否在 60~100 区间,超出阈值则开启蜂鸣器和 LED 报警;在正常区间,关闭报警。
仿真中电位器 RV2 旋转可以模拟脉搏跳动信号,观察心率数值变化,人为制造异常心率,测试报警效果。
四、开发踩坑总结
- PCF8591 采集波动大:原始 AD 数据噪声大,需要做滑动平均滤波,否则心率跳变严重;
- DS18B20 时序问题:单总线对时序严格,延时不对会读取到错误温度;
- 蜂鸣器不响:8050 三极管注意基极限流电阻,IO 输出高电平三极管导通蜂鸣器工作;
- 心率算法难点:需要做波峰检测,要设置阈值过滤噪声干扰,不能简单判断 AD 大小,否则误判心跳;
- I2C OLED 注意地址,硬件 I2C 或者软件 I2C 都可以,注意引脚不要冲突。
五、拓展改进方向
- 外接真正的光电脉搏传感器,替换仿真电位器,做实物版本;
- 增加按键,修改心率报警阈值;
- 添加 RTC 实时时钟,保存历史体温心率数据;
- 增加串口,把数据上传电脑或者蓝牙模块,手机查看数据。
小结
这个 STM32 心率体温监测项目,覆盖 I2C 通信、ADC 采集、单总线传感器、显示驱动、阈值报警,非常适合练手。Proteus 仿真可以快速验证逻辑,之后再移植到实物硬件上。
通过网盘分享的文件:仿真文件获取.zip
链接: https://pan.baidu.com/s/1V5zzxbpHc_fRqfGIzSdLfg?pwd=6666 提取码: 6666
更多推荐


所有评论(0)