【Proteus仿真】【STM32单片机】STM32脉搏血氧仪

文章目录

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


一、功能简介

系统运行后,LCD1604液晶显示心率、血氧和温度、时间日期;
如果心率、血氧超限则报警;蓝牙实时传输数据;


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据显示
void sys_data_show(void)
{u8 buf[5];static u8 cnt=0;while(1){//日期时间显示buf[0]=gDS1302_TIME[6]/16+0x30;//年buf[1]=gDS1302_TIME[6]%16+0x30;buf[2]='\0';lcd1604_show_string(2,0,buf);buf[0]=gDS1302_TIME[4]/16+0x30;//月buf[1]=gDS1302_TIME[4]%16+0x30;buf[2]='\0';lcd1604_show_string(5,0,buf);buf[0]=gDS1302_TIME[3]/16+0x30;//日buf[1]=gDS1302_TIME[3]%16+0x30;buf[2]='\0';lcd1604_show_string(8,0,buf);buf[0]=gDS1302_TIME[5]%16+0x30-1;//星期buf[1]='\0';lcd1604_show_string(15,0,buf);buf[0]=gDS1302_TIME[2]/16+0x30;//时buf[1]=gDS1302_TIME[2]%16+0x30;buf[2]='\0';lcd1604_show_string(0,1,buf);buf[0]=gDS1302_TIME[1]/16+0x30;//分buf[1]=gDS1302_TIME[1]%16+0x30;buf[2]='\0';lcd1604_show_string(3,1,buf);buf[0]=gDS1302_TIME[0]/16+0x30;//秒buf[1]=gDS1302_TIME[0]%16+0x30;buf[2]='\0';lcd1604_show_string(6,1,buf);//温度显示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(11,1,buf);//心率显示lcd1604_show_nums(6,2,sys_ctrl.heart,3,0);//血氧显示lcd1604_show_nums(4,3,sys_ctrl.oxy,3,0);//蓝牙传输数据cnt++;if(cnt%10==0){UART_SendString("\r\n日期:");buf[0]=gDS1302_TIME[6]/16+0x30;//年buf[1]=gDS1302_TIME[6]%16+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString("年");buf[0]=gDS1302_TIME[4]/16+0x30;//月buf[1]=gDS1302_TIME[4]%16+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString("月");buf[0]=gDS1302_TIME[3]/16+0x30;//日buf[1]=gDS1302_TIME[3]%16+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString("日  ");UART_SendString("星期");buf[0]=gDS1302_TIME[5]%16+0x30-1;//星期buf[1]='\0';UART_SendString(buf);UART_SendString("\r\n时间:");buf[0]=gDS1302_TIME[2]/16+0x30;//时buf[1]=gDS1302_TIME[2]%16+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString(":");buf[0]=gDS1302_TIME[1]/16+0x30;//分buf[1]=gDS1302_TIME[1]%16+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString(":");buf[0]=gDS1302_TIME[0]/16+0x30;//秒buf[1]=gDS1302_TIME[0]%16+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString("\r\n");//温度UART_SendString("温度:");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);UART_SendString("°C");//心率UART_SendString("\r\n心率:");buf[0]=sys_ctrl.heart/100+0x30;buf[1]=sys_ctrl.heart%100/10+0x30;buf[2]=sys_ctrl.heart%100%10+0x30;buf[3]='\0';UART_SendString(buf);//血氧UART_SendString("\r\n血氧:");buf[0]=sys_ctrl.oxy/100+0x30;buf[1]=sys_ctrl.oxy%100/10+0x30;buf[2]=sys_ctrl.oxy%100%10+0x30;buf[3]='\0';UART_SendString(buf);UART_SendString("\r\n");}break;			}
}//应用控制系统
void appdemo_show(void)
{u8 i=10;sys_parm_init();//系统参数初始化BEEP_Init();pcf8591_init();DS1302_GPIO_Init();
//	DS1302_Init();lcd1604_init();//LCD1602初始化//读取温度数据,等待稳定while(i--){//温度获取sys_ctrl.temp=DS18B20_GetTemperture()*10;delay_ms(100);		}USART1_Init(9600);sys_open_show();//系统初始界面显示while(1){sys_data_set();//系统数据设置sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_fun_ctrl();//系统功能控制		}
}

三、实验现象

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

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


联系作者

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

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

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

相关文章

24个Docker常见问题处理技巧

1.Docker 迁移存储目录 默认情况系统会将 Docker 容器存放在 var/lib/docker 目录下 [问题起因] 今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现 /var/lib/docker这个目录特别大。 由上述原因,我们都知…

模式分类与“组件协作模式”

1. GOF-23 模式分类 从目的来看: 创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。结构型(Structural)模式&#…

Vue中如何进行跨域处理

Vue中的跨域请求处理:解决前端开发中的常见问题 跨域请求是前端开发中常见的问题之一。Vue.js是一款流行的前端框架,如何在Vue中处理跨域请求是每个Vue开发者都需要了解的重要课题。本文将深入探讨什么是跨域请求,为什么它会出现&#xff0c…

linux下特定usb设备的权限设置

文章目录 背景查找资料解决方案 背景 目前我在Ubuntu下使用一个USB热成像摄像头,通过调用它的sdk进行图像的采集以及获取对应像素点的温度。假设我现在的测试程序名称为MyApp。 当我用下面的命令运行时,程序是正常运行且能从热成像仪采集图像 sudo ./M…

华为OD机试 - 特异性双端队列(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》。 刷的越多…

Vue-cli搭建SPA项目

前言 Vue CLI(Vue Command Line Interface)是一个用于快速搭建基于Vue.js的前端项目的工具。它是Vue.js官方提供的一个脚手架工具,旨在简化Vue.js项目的开发过程。Vue CLI提供了一些强大的功能,帮助开发者轻松创建、开发和构建Vu…

Verilog:$readmemb和$readmemh系统函数的使用与其中的初始化地址相关问题(详细细节)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 $readmemb和$readmemh两个系统函数用于将文件中的数据加载到存储器或者被称为数组的memory中。首先给出他们的语法的BNF范式,有关BNF范式的内容可以在…

Merge之后,还没有Push,如何回滚

Merge之后,还没有Push,如何回滚 Merge之后,还没有Push,如何回滚 1:代码操作: 1:git log 查看git执行历史记录 GIT所有的执行记录会以倒叙呈现;最上面的就是需要回滚的merge序列号&a…

爬虫 — Scrapy 框架(一)

目录 一、介绍1、同步与异步2、阻塞与非阻塞 二、工作流程三、项目结构1、安装2、项目文件夹2.1、方式一2.2、方式二 3、创建项目4、项目文件组成4.1、piders/__ init __.py4.2、spiders/demo.py4.3、__ init __.py4.4、items.py4.5、middlewares.py4.6、pipelines.py4.7、sett…

芯科蓝牙BG27开发笔记9-蓝牙温控器例程阅读

源码: https://download.csdn.net/download/hxkrrzq/88353283 以上源码都是官方资源,可以自行gitbub下载(参见之前笔记) 蓝牙广播格式化 之前的笔记中广播数据是直接使用的十六进制字符串,关于这32bytes数据的格式化…

【Linux】系统编程线程互斥与同步(C++)

目录 【1】线程互斥 【1.1】进程线程间的互斥相关背景概念 【1.2】互斥量mutex 【1.3】互斥量实现原理探究 【1.4】RAII的加锁风格 【2】可重入VS线程安全 【2.1】概念 【2.2】常见的线程不安全的情况 【2.3】常见的线程安全的情况 【2.4】常见不可重入的情况 【2.5…

Linux之ASCII码表查询tools(五十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…