基于51单片机的心率测量报警( proteus仿真+程序+设计报告+原理图+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0103

1. 主要功能:

基于51单片机心率脉搏检测系统:

采用51单片机作为主控制器,采集心率脉搏电路信号并转化为心率显示在LCD1602显示屏,心率测量范围:20-180 BPM。

1.假定测出的脉搏数<60 BPM,测量心率不正常,则屏幕将显示“low rate”

2.如果脉搏60-100 BPM,如果检测率正常,则屏幕将显示“very good”

3.假定测出的脉搏数在100-180 BPM,心率过高,则屏幕将显示“high rate ”

4.其他数值:error(异常)

5.检测两个脉冲间的时间空隙是否是有效的数值,

6.心率检测电路具有信号检测→放大→整形→滤波→隔离作用。

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

img

资料下载链接:

通过网盘分享的文件:KEY_S0103

链接: https://pan.baidu.com/s/1m_EAbTRUFsjkO-GcDBxPDw?pwd=d5rn

提取码: d5rn

以下为本设计资料展示图:

2. 讲解视频:

讲解视频主要包含仿真运行讲解

3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后LCD1602液晶第一行显示状态信息:

very good:心率正常(60-100 BPM)

low rate:心率过低(<60 BPM)

high rate:心率过高(>100 BPM)

error:异常心率

no signal:无信号输入

第二行显示检测到的到的心率脉搏数。

img

通过调整信号发生器的值改变心率检测信号,如下图修改为2HZ,对应心率为118,误差2BPM,心率过高显示high rate。

img

4. 原理图

有原理图

img

5. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

img

/ 定时器中断服务函数 - 1ms中断
void Timer0() interrupt 1
{
    完整代码见文章下载链接
    u8 i;
    u32 sum = 0;
    u8 current_key_state;
    
    // 重新装载定时器
    TH0 = 0xFC;
    TL0 = 0x18;
    
    // 时间计数
    time_ms++;
    current_time++;
    
    // 边沿检测 - 检测上升沿
    current_key_state = key;
    
    // 上升沿检测:上次为低电平,当前为高电平
    if((key_last_state == 0) && (current_key_state == 1))
    {
        // 计算脉冲周期(单位:ms)
        if(last_pulse_time > 0)
        {
            pulse_period = current_time - last_pulse_time;
            
            // 放宽有效性检查范围:周期在250ms-3000ms之间(对应心率20-240BPM)
            if((pulse_period >= 250) && (pulse_period <= 3000))
            {
                // 计算瞬时心率:60000ms / 周期(ms)
                u16 instant_hr = 60000 / pulse_period;
                
                // 滑动平均滤波
                for(i = 0; i < 9; i++)
                    shu[i] = shu[i + 1];
                shu[9] = instant_hr;
                
                // 计算平均值
                sum = 0;
                for(i = 0; i < 10; i++)
                    sum += shu[i];
                heart_rate = sum / 10;
                
                valid_measurement = 1;
                calibrate_sensor();
                
                // 更新显示 - 移除范围限制,允许显示所有心率值
                disp[6] = heart_rate / 100 + 0x30;
                disp[7] = (heart_rate % 100) / 10 + 0x30;
                disp[8] = heart_rate % 10 + 0x30;
                write_string(2, 3, disp);
                
                // 心率状态评估 - 调整评估范围
                if((heart_rate >= 60) && (heart_rate <= 100))
                {
                    flag = 0;
                    write_string(1, 3, "very good   ");
                }
                else if(heart_rate > 0 && heart_rate < 60)
                {
                    write_string(1, 3, "low rate    ");
                    flag = 1;  // 心率过低报警
                }
                else if(heart_rate > 100 && heart_rate <= 180)
                {
                    write_string(1, 3, "high rate   ");
                    flag = 1;  // 心率过高报警
                }
                else
                {
                    write_string(1, 3, "error       ");
                    flag = 1;  // 异常心率报警
                }
            }
        }
        
        // 更新上次脉冲时间
        last_pulse_time = current_time;
    }
    
    // 保存当前按键状态
    key_last_state = current_key_state;
    
    // 超时处理:如果3秒内没有检测到脉冲,显示0并重置测量
    if((current_time - last_pulse_time) > 3000)
    {
        // 显示心率为0
        disp[6] = '0';
        disp[7] = '0';
        disp[8] = '0';
        write_string(2, 3, disp);
        write_string(1, 3, "no signal   ");
        
        last_pulse_time = 0;
        valid_measurement = 0;
        heart_rate = 0;
        flag = 1;  // 无信号报警
    }
}

// 手动校准函数
void calibrate_sensor(void)
{
    // 应用校准因子
    heart_rate = (heart_rate * calibration_factor) / 100;
}

6. 设计报告

7530字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

随着社会经济的快速发展和国民生活水平的显著提高,人们对于健康管理的重视程度日益提升,健康监测已成为现代生活中不可或缺的重要组成部分。心率作为评估人体心血管功能的核心生理指标,不仅能够实时反映心脏的工作状态,更能为多种疾病的早期预警提供重要参考依据。传统的心率监测设备,如医用级心电监护仪,虽然测量精度较高,但普遍存在价格昂贵、体积庞大、操作复杂等局限性,难以满足普通家庭日常健康监测的需求。这种供需矛盾催生了对于便携式、低成本、智能化健康监测设备的迫切需求。

在此背景下,基于嵌入式系统技术开发的家用级健康监测设备展现出巨大潜力。这类设备能够突破传统医疗设备的局限,实现随时随地的健康监测,让健康管理真正融入日常生活。特别是对于中老年人群、心血管疾病高危人群以及健身爱好者而言,便携式心率监测设备能够提供持续、便捷的健康状态跟踪,为预防保健和疾病管理提供有力支持。

7. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、程序代码注释

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、原理图

8、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接:

通过网盘分享的文件:KEY_S0103

链接: https://pan.baidu.com/s/1m_EAbTRUFsjkO-GcDBxPDw?pwd=d5rn

提取码: d5rn

更多资源 点击下方链接:

https://docs.qq.com/sheet/DS0xIa0llTmtNakRW