基于51单片机WIFI心率计脉搏体温测量仪APP设计

1 系统功能介绍

本设计基于 STC89C52 单片机,结合 脉搏传感器、温度传感器 DS18B20、LCD1602 液晶显示器、WiFi 模块 等外设,构建了一个 WiFi 心率计脉搏体温测量仪 APP 系统。系统能够实现对人体心率与体温的实时采集、处理、显示和远程上传,既可作为个人健康监测设备,也可扩展应用于家庭健康管理和远程医疗监护场景。

系统主要功能如下:

  1. LCD 实时显示:LCD1602 的第一行显示系统设计信息,第二行实时显示心率和温度数据。
  2. 心率测量:用户将手指轻放在脉搏传感器上,单片机采集传感器的脉搏波动信号并计算心率。
  3. 体温测量:系统通过 DS18B20 温度传感器实时获取人体温度,并与心率一同显示在 LCD1602 上。
  4. 数据上传:系统通过 WiFi 模块(ESP8266)将心率与体温数据实时传输至手机 APP,实现远程监控与数据存储。

该系统不仅实现了心率与体温的基本测量,还通过无线网络扩展了远程应用的可能性,具备良好的实用性与拓展性。


2 系统电路设计

整个系统由 单片机最小系统电路、脉搏传感器电路、温度传感器 DS18B20 电路、LCD1602 显示电路、WiFi 模块电路、电源电路 等组成。

2.1 单片机最小系统电路

  • 核心控制器:STC89C52 单片机作为系统的中央处理单元,负责心率信号采集、温度测量、数据处理、LCD 驱动以及 WiFi 数据上传。

  • 最小系统:包括复位电路、时钟电路和电源电路。

    • 时钟一般采用 11.0592 MHz 晶振,保证串口通信的波特率精度。
    • 复位电路由上拉电阻和电容构成,保证上电复位可靠性。
  • I/O 资源分配

    • 定时器和外部中断用于心率信号采集;
    • 单总线接口用于温度传感器 DS18B20;
    • P0/P2 口控制 LCD1602;
    • 串口 UART 控制 WiFi 模块。

2.2 脉搏传感器电路

  • 工作原理:脉搏传感器利用光电容积脉搏波原理,检测手指血液流量变化。心脏收缩和舒张时,指尖血液容量变化,引起透射光或反射光变化,进而产生与脉搏同步的波动信号。
  • 信号采集:传感器输出模拟电压信号,经放大和滤波后送入单片机的外部中断口。
  • 作用:每次检测到脉搏信号的有效上升沿/下降沿,单片机计数,从而计算心率。

2.3 温度传感器 DS18B20 电路

  • 传感器类型:DS18B20 为数字温度传感器,采用单总线协议。
  • 优点:测温范围宽(-55℃~~+125℃)、分辨率可选(9~~12 位)、无需外接 ADC。
  • 接口方式:单线接口连接至单片机 I/O 口,单片机通过时序控制获取温度数据。

2.4 LCD1602 显示电路

  • 显示原理:LCD1602 为字符型液晶,可显示 2 行,每行 16 个字符。

  • 功能实现

    • 第一行显示系统提示信息,如“Heart&Temp”;
    • 第二行实时显示心率和体温,例如 “H:075 T:36.5”。

2.5 WiFi 模块电路

  • 选用模块:ESP8266 WiFi 模块,通过串口通信与单片机连接。
  • 作用:负责将心率与体温数据上传至手机 APP。
  • 通信协议:常用 AT 指令配置,单片机通过 UART 发送数据,模块再将数据通过 TCP/UDP 上传至服务器或 APP。

2.6 电源电路

  • 供电方式:系统采用 5V 电源,部分器件需要 3.3V(如 ESP8266),通过 AMS1117-3.3 稳压芯片提供稳定电源。
  • 电源指示:使用 LED 指示电路工作状态。

3 系统程序设计

程序部分采用 模块化设计,分为:主程序、心率测量程序、温度测量程序、LCD 显示程序、WiFi 通信程序 等。

3.1 主程序框架

#include <reg52.h>
#include "lcd1602.h"
#include "ds18b20.h"
#include "uart.h"
#include "pulse.h"

unsigned int heartRate = 0;
float temperature = 0;

void main()
{
    LCD_Init();
    UART_Init();
    DS18B20_Init();
    Pulse_Init();

    LCD_ShowString(0,0,"Heart&Temp Sys");
    
    while(1)
    {
        heartRate = Get_HeartRate();
        temperature = DS18B20_ReadTemp();
        
        LCD_ShowString(1,0,"H:");
        LCD_ShowNum(1,2,heartRate,3);
        LCD_ShowString(1,6,"T:");
        LCD_ShowFloat(1,8,temperature,4,1);
        
        UART_SendData(heartRate, temperature);
    }
}

3.2 心率测量程序

心率通过外部中断捕获脉搏信号波形,根据一定时间内的脉冲数计算。

unsigned int pulseCount = 0;
unsigned int heartRate = 0;

void Pulse_Init(void)
{
    IT0 = 1;    // 外部中断0下降沿触发
    EX0 = 1;    // 开启外部中断0
    EA = 1;     // 总中断开
}

void External_Int0(void) interrupt 0
{
    pulseCount++;
}

unsigned int Get_HeartRate(void)
{
    unsigned int bpm = 0;
    // 假设1分钟统计脉冲数, 实际可缩短时间窗口再折算
    bpm = pulseCount * 6;  // 10秒统计后乘以6
    pulseCount = 0;
    return bpm;
}

3.3 温度测量程序(DS18B20)

通过单总线协议与 DS18B20 通信,读取温度并转换为浮点数。

float DS18B20_ReadTemp(void)
{
    int temp;
    float t;
    DS18B20_Start();
    DS18B20_WriteByte(0xCC); // 跳过ROM
    DS18B20_WriteByte(0x44); // 启动温度转换
    
    DelayMs(750); // 等待转换完成
    
    DS18B20_Start();
    DS18B20_WriteByte(0xCC);
    DS18B20_WriteByte(0xBE); // 读温度寄存器
    
    temp = DS18B20_ReadByte();
    temp |= DS18B20_ReadByte() << 8;
    
    t = temp * 0.0625; // DS18B20 分辨率 0.0625℃
    return t;
}

3.4 LCD 显示程序

void LCD_ShowFloat(unsigned char x, unsigned char y, float num, unsigned char len, unsigned char point)
{
    unsigned int temp = (unsigned int)(num * 10);
    LCD_ShowNum(x,y,temp/10,len-point);
    LCD_ShowString(x,y+len-point,".");
    LCD_ShowNum(x,y+len-point+1,temp%10,point);
}

3.5 WiFi 通信程序

单片机通过 UART 向 ESP8266 发送心率和温度数据。

void UART_Init(void)
{
    SCON = 0x50;  // 串口模式1
    TMOD |= 0x20; // 定时器1方式2
    TH1 = 0xFD;   // 波特率9600
    TL1 = 0xFD;
    TR1 = 1;
}

void UART_SendByte(unsigned char dat)
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}

void UART_SendData(unsigned int hr, float temp)
{
    char buffer[20];
    sprintf(buffer,"HR:%d T:%.1f\n",hr,temp);
    for(unsigned char i=0; buffer[i] != '\0'; i++)
    {
        UART_SendByte(buffer[i]);
    }
}

4 总结

本设计基于 STC89C52 单片机,实现了一个具备 心率与体温测量、LCD 显示和 WiFi 上传 功能的完整系统。其特点如下:

  1. 实时监测:能够同时获取心率和体温,适合日常健康管理。
  2. 数据可视化:LCD1602 直观显示当前心率和温度。
  3. 远程传输:通过 ESP8266 模块实现数据无线上传,支持手机 APP 端查看。
  4. 操作简便:使用者仅需将手指放在传感器上即可完成心率和温度采集。
  5. 可扩展性强:后续可增加血氧、血压等传感器,进一步扩展健康监测范围。

该系统在健康检测与远程医疗方面具有一定应用价值,同时也为学习 传感器应用、单片机控制、串口通信、无线数据传输 等技术提供了实践平台。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯小铭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值