当前位置: 首页 > web >正文

基于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;    // 开启外部中断0EA = 1;     // 总中断开
}void External_Int0(void) interrupt 0
{pulseCount++;
}unsigned int Get_HeartRate(void)
{unsigned int bpm = 0;// 假设1分钟统计脉冲数, 实际可缩短时间窗口再折算bpm = pulseCount * 6;  // 10秒统计后乘以6pulseCount = 0;return bpm;
}

3.3 温度测量程序(DS18B20)

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

float DS18B20_ReadTemp(void)
{int temp;float t;DS18B20_Start();DS18B20_WriteByte(0xCC); // 跳过ROMDS18B20_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;  // 串口模式1TMOD |= 0x20; // 定时器1方式2TH1 = 0xFD;   // 波特率9600TL1 = 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. 可扩展性强:后续可增加血氧、血压等传感器,进一步扩展健康监测范围。

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

http://www.xdnf.cn/news/18251.html

相关文章:

  • 加密资产投资的六种策略:稳定币合规后的 Web3 投资和 RWA
  • RabbitMQ ,消息进入死信交换机
  • React diff Vue diff介绍
  • 嵌入式学习硬件I.MX6ULL(五)按键 中断 GIC OCP原则
  • 云原生:重塑软件世界的技术浪潮与编程语言选择
  • 【每天学点‘音视频’】前向纠错 和 漏包重传
  • Flask 入门详解:从零开始构建 Web 应用
  • Linux中基于Centos7使用lamp架构搭建个人论坛(wordpress)
  • Dify web前端源码本地部署详细教程
  • 软件测试覆盖率:真相与实践
  • 【论文阅读69】-DeepHGNN复杂分层结构下的预测
  • Mybatis执行sql流程(一)
  • Dijkstra和多层图 0
  • Linux 系统(如 Ubuntu / CentOS)阿里云虚拟机(ECS)上部署 Bitnami LAMP
  • 自定义ViewPage2滑动切换效果
  • docker compose再阿里云上无法使用的问题
  • MQTT(轻量级消息中间件)基本使用指南
  • MySQL 函数大赏:聚合、日期、字符串等函数剖析
  • 用户认证与应用控制技术
  • DevExtreme Angular UI控件更新:引入全新严格类型配置组件
  • Tmux Xftp及Xshell的服务器使用方法
  • 黑马java八股文全集
  • 实时视频延迟优化实战:RTSP与RTMP播放器哪个延迟更低?
  • Python 项目里的数据清理工作(数据清洗步骤应用)
  • 《算法导论》第 27 章 - 多线程算法
  • K8S集群环境搭建(一)
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • ——分治——
  • 腾讯开源:视频生成框架Hunyuan-GameCraft
  • MySQL数据库初识