【Proteus仿真】【STM32单片机】血压心率血氧体温蓝牙

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

系统运行后,LCD1604液晶显示心率、血氧、血压和体温,及其阈值;可通过K3键进入阈值设置模式,K1和K2加减调节,K4确定;当检测心率、血氧、血压和体温任意超限则蜂鸣器报警;
同时系统会将数据通过蓝牙传输出去;


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据获取
void sys_data_get(void)
{static u8 i=0;while(1){i++;//间隔采集温度if(i%5==0){sys_ctrl.temp=DS18B20_GetTemperture()*10;//放大10倍,保留小数点后1位	}//获取血氧sys_ctrl.oxy=pcf8591_read_adcvalue(0);sys_ctrl.oxy=pcf8591_read_adcvalue(0);sys_ctrl.oxy=cal_map(sys_ctrl.oxy,0,255,0,150);//获取高低压sys_ctrl.xy_hval=pcf8591_read_adcvalue(1);sys_ctrl.xy_hval=pcf8591_read_adcvalue(1);sys_ctrl.xy_lval=pcf8591_read_adcvalue(2);sys_ctrl.xy_lval=pcf8591_read_adcvalue(2);break;}	
}//系统数据显示
void sys_data_show(void)
{u8 buf[5];static u8 i=0;while(1){//正常模式if(sys_ctrl.mode==0){//温度显示buf[0]=sys_ctrl.temp/100+0x30;buf[1]=sys_ctrl.temp%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temp%100%10+0x30;buf[4]='\0';lcd1604_show_string(3,0,buf);//心率显示if(sys_ctrl.sta==1){sys_ctrl.sta=0;sys_ctrl.cnt=0;lcd1604_show_nums(3,1,sys_ctrl.heart,3,0);EXTI_Sta(1);//打开计数}//血氧显示lcd1604_show_nums(3,2,sys_ctrl.oxy,3,0);//血压低显示lcd1604_show_nums(4,3,sys_ctrl.xy_lval,3,0);//血压高显示lcd1604_show_nums(13,3,sys_ctrl.xy_hval,3,0);//温度阈值显示buf[0]=sys_ctrl.temph/100+0x30;buf[1]=sys_ctrl.temph%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temph%100%10+0x30;buf[4]='\0';lcd1604_show_string(11,0,buf);//心率阈值显示lcd1604_show_nums(9,1,sys_ctrl.heartl,3,0);lcd1604_show_nums(13,1,sys_ctrl.hearth,3,0);//血氧阈值显示lcd1604_show_nums(9,2,sys_ctrl.oxyl,3,0);lcd1604_show_nums(13,2,sys_ctrl.oxyh,3,0);//蓝牙传输数据i++;if(i%4==0){printf("\r\n体温:");buf[0]=sys_ctrl.temp/100+0x30;buf[1]=sys_ctrl.temp%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temp%100%10+0x30;buf[4]='\0';UART_SendString(buf);printf("\r\n");printf("心率:%d\r\n",sys_ctrl.heart);printf("血氧:%d\r\n",sys_ctrl.oxy);printf("血压低:%d\r\n",sys_ctrl.xy_lval);printf("血压高:%d\r\n",sys_ctrl.xy_hval);}}//设置阈值下,数字闪烁提示switch(sys_ctrl.mode){case 1://温度阈值lcd1604_show_string(11,0,"    ");delay_ms(50);buf[0]=sys_ctrl.temph/100+0x30;buf[1]=sys_ctrl.temph%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temph%100%10+0x30;buf[4]='\0';lcd1604_show_string(11,0,buf);break;case 2://心率下限lcd1604_show_string(9,1,"   ");delay_ms(50);lcd1604_show_nums(9,1,sys_ctrl.heartl,3,0);break;case 3://心率上限lcd1604_show_string(13,1,"   ");delay_ms(50);lcd1604_show_nums(13,1,sys_ctrl.hearth,3,0);break;case 4://血氧下限lcd1604_show_string(9,2,"   ");delay_ms(50);lcd1604_show_nums(9,2,sys_ctrl.oxyl,3,0);break;case 5://血氧上限lcd1604_show_string(13,2,"   ");delay_ms(50);lcd1604_show_nums(13,2,sys_ctrl.oxyh,3,0);break;}break;			}
}//系统功能控制
void sys_fun_ctrl(void)
{//正常模式if(sys_ctrl.mode==0){//如果温度、血氧、心率、血压超限,蜂鸣器报警if(sys_ctrl.temp>sys_ctrl.temph || sys_ctrl.heart>sys_ctrl.hearth || sys_ctrl.heart<sys_ctrl.heartl|| sys_ctrl.oxy>sys_ctrl.oxyh || sys_ctrl.oxy<sys_ctrl.oxyl|| sys_ctrl.xy_hval>XY_HVAL1 || sys_ctrl.xy_hval<XY_HVAL2|| sys_ctrl.xy_lval>XY_LVAL1 || sys_ctrl.xy_lval<XY_LVAL2){beep_alarm(2,2000);}}
}//应用控制系统
void appdemo_show(void)
{u8 i=10;sys_parm_init();//系统参数初始化KEY_Init();BEEP_Init();pcf8591_init();My_EXTI_Init();TIM2_Init(100,800-1);USART1_Init(9600);//等待数据稳定while(i--){//读取温值sys_ctrl.temp=DS18B20_GetTemperture()*10;delay_ms(100);}lcd1604_init();//LCD1604初始化sys_open_show();//系统初始界面显示EXTI_Sta(1);//打开计数while(1){sys_data_set();//系统数据设置sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_fun_ctrl();//系统功能控制		}
}//定时器2中断
void TIM2_IRQHandler(void)
{static u8 i=0;if(TIM_GetITStatus(TIM2,TIM_IT_Update)){i++;if(i>=100)//间隔1S{i=0;EXTI_Sta(0);//关闭计数TIM_Cmd(TIM2,DISABLE);//关闭定时器sys_ctrl.sta=1;sys_ctrl.heart=sys_ctrl.cnt;}}TIM_ClearITPendingBit(TIM2,TIM_IT_Update);	
}//外部中断函数
void EXTI15_10_IRQHandler(void)
{if(EXTI_GetITStatus(EXTI_Line14)==1){if(sys_ctrl.cnt==0)TIM_Cmd(TIM2,ENABLE);//打开定时器sys_ctrl.cnt++;}EXTI_ClearITPendingBit(EXTI_Line14);
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/74674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 多重启动grub2详解

https://www.gnu.org/software/grub/manual/grub/grub.pdf

Linux C进程间通信(IPC)

概述 每个进程有独立的进程空间&#xff1a; 好处————安全 缺点&#xff1a;开销大&#xff08;独立的地址空间&#xff09;&#xff1b;进程的通信更加困难&#xff08;对其他进程的操作开销也大&#xff09; 广义上的进程间通信&#xff1a; A进程写给文件/数据库&am…

Python测试框架 Pytest —— mock使用(pytest-mock)

pytest-mock 安装&#xff1a;pip install pytest-mock 这里的mock和unittest的mock基本上都是一样的&#xff0c;唯一的区别在于pytest.mock需要导入mock对象的详细路径。 # weateher_r.py class Mock_weather():def weather(self):天气接口passdef weather_result(self):模…

【算法训练-链表 七】【排序】:链表排序、链表的奇偶重排、重排链表

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【链表的排序】&#xff0c;使用【链表】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&am…

光栅和矢量图像处理:Graphics Mill 11.4.1 Crack

Graphics Mill 是适用于 .NET 和 ASP.NET 开发人员的最强大的成像工具集。它允许用户轻松向 .NET 应用程序添加复杂的光栅和矢量图像处理功能。 光栅图形 加载和保存 JPEG、PNG 和另外 8 种图像格式 调整大小、裁剪、自动修复、色度键和 30 多种其他图像操作 可处理任何尺寸&am…

Blender--》页面布局及基本操作讲解

接下来我会在three.js专栏中分享关于3D建模知识的文章&#xff0c;如果学习three朋友并且想了解和学习3D建模&#xff0c;欢迎关注本专栏&#xff0c;关于这款3D建模软件blender的安装&#xff0c;我在前面的文章已经讲解过了&#xff0c;如果不了解的朋友可以去考考古&#xf…

现货黄金代理好吗?

做黄金代理这个职业好吗&#xff1f;从目前的市场现状来看&#xff0c;其实做黄金代理很不错的。在股票市场中&#xff0c;投资者只能通过买涨进盈利&#xff0c;所以当市场行情不好的时候&#xff0c;股票经纪人的业务将很难展开&#xff0c;而现货黄金投资者不一样&#xff0…

腾讯云服务器CVM标准型S5性能测评和租用费用

腾讯云服务器CVM标准型S5实例具有稳定的计算性能&#xff0c;CVM 2核2G S5活动优惠价格280.8元一年自带1M带宽&#xff0c;15个月313.2元、2核4G配置748.2元15个月&#xff0c;CPU内存配置还可以选择4核8G、8核16G等配置&#xff0c;公网带宽可选1M、3M、5M或10M&#xff0c;百…

Vue中对于指令的介绍

Vue指令 文章目录 Vue指令1、介绍2、指令介绍2.1、v-html2.2、v-show和v-if3.2、v-else 和 v-else-if3.3、v-on3.4、v-bind3.5、v-for3.6、v-for 中的key3.7、v-model 3、指令修饰符3.1、 按键修饰符3.2、 监听v-model修饰符3.3、 事件修饰符 1、介绍 Vue 会根据不同的【指令】…

龙迅LT86102UX HDMI一进二出,支持分辨率4K60HZ

龙迅LT86102UXE 1. 描述 龙迅LT86102UX HDMI2.0 分路器具有符合 HDMI2.0/1.4 规范的 1&#xff1a;2 分路器、最大 6Gbps 高速数据速率、自适应均衡 RX 输入和预强调的 TX 输出&#xff0c;支持长电缆应用&#xff0c;板载无 XTAL&#xff0c;可节省 BOM 成本。 LT86102UX HDM…

Vue 3 基础(二)基础 1

API 参考 1、创建一个 Vue 应用 1.1 应用实例 每个 Vue 应用都是通过 createApp 函数创建一个新的 应用实例&#xff1a; import { createApp } from vueconst app createApp({/* 根组件选项 */ })1.2 根组件 我们传入 createApp 的对象实际上是一个组件&#xff0c;每个…

哈希表的实现(哈希捅)

今天是哈希表的实现&#xff0c;哈希表也是一种数据结构&#xff0c;我个人认为还是比较简单的&#xff0c;先给大家看看我 的实现代码吧&#xff0c;如下&#xff1a; #pragma once #include <iostream> #include <set> #include <map> #include <vecto…

MySQL主从分离读写复制

在高负载的生产环境里&#xff0c;把数据库进行读写分离&#xff0c;能显著提高系统的性能。下面对MySQL的进行读写分离。 试验环境 A机&#xff1a;IP:192.168.0.1 mysql版本&#xff1a;mysql-5.6.4,主数据服务器&#xff08;只写操作&#xff09; B机&#xff1a;IP:192.…

网管实战⑼:配置华为S5720交换机

配置好汇聚交换机后&#xff0c;需要根据单位情况配置具体的接入交换机。 自从2019年12月底配置好交换机后&#xff0c;基本上都没有怎么操作交换机了。那时候使用的是H3C交换机&#xff0c;主要是H3C S7706、H3C S5120、H3C S5130、H3C S5500、H3C S3600等型号的交换机&#x…

Kafka3.0.0版本——消费者(自动提交 offset)

目录 一、自动提交offset的相关参数二、消费者&#xff08;自动提交 offset&#xff09;代码示例 一、自动提交offset的相关参数 官网文档 参数解释 参数描述enable.auto.commi默认值为 true&#xff0c;消费者会自动周期性地向服务器提交偏移量。auto.commit.interval.ms如果…

Ubuntu终端指令

目录 目录 一、基本指令 1.命令行提示符 2.切换用户 3.修改密码 4.查看当前目录下的文件 5.修改文件权限---chmod 6.cd 切换路径 7.touch 8.cat 9.echo 10.mkdir 11. rm/rmdir 二、在线下载软件 1.更新软件源 2.更新软件列表 3.下载软件 三、离线安装软件 1. …

车载软件架构——基础软件供应商开发工具链(一)

车载软件架构——基础软件供应商&开发工具链(一) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己…

Qt包含文件不存在问题解决 QNetworkAccessManager

这里用到了Qt的网络模块&#xff0c;在.pro中添加了 QT network 但是添加 #include <QNetworkAccessManager> 会报错说找不到&#xff0c;可以通过在项目上右键执行qmake后&#xff0c;直接#include <QNetworkAccessManager>就不会报错了&#xff1a;

MLC-LLM 部署RWKV World系列模型实战(3B模型Mac M2解码可达26tokens/s)

0x0. 前言 我的 ChatRWKV 学习笔记和使用指南 这篇文章是学习RWKV的第一步&#xff0c;然后学习了一下之后决定自己应该做一些什么。所以就在RWKV社区看到了这个将RWKV World系列模型通过MLC-LLM部署在各种硬件平台的需求&#xff0c;然后我就开始了解MLC-LLM的编译部署流程和…

搭建自己的OCR服务,第一步:选择合适的开源OCR项目

一、OCR是什么&#xff1f; 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;是指对文本资料的图像文件进行分析识别处理&#xff0c;获取文字及版面信息的过程。 亦即将图像中的文字进行识别&#xff0c;并以文本的形式返回。 二、OCR的基本流程 1…