【Proteus仿真】【STM32单片机】便携式血糖仪

news2025/1/15 11:10:21

文章目录

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


一、功能简介

系统运行后,LCD1602显示开机界面信息,当按下K1键开始测量,步进电机运行启动针头采血,然后检测血糖值显示在屏幕上;如果血糖高于上限,显示血糖高;如果低于下限,显示血糖低,阈值范围内,显示正常;


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/



//系统数据显示
void sys_data_show(void)
{
	u8 buf[5];
	while(1)
	{
		if(sys_ctrl.over==1)//测量结束
		{
			//血糖显示
			buf[0]=sys_ctrl.blood/100+0x30;
			buf[1]=sys_ctrl.blood%100/10+0x30;
			buf[2]='.';
			buf[3]=sys_ctrl.blood%100%10+0x30;
			buf[4]='\0';
			lcd1602_show_string(6,0,buf);
		}

		break;			
	}
}

//系统数据设置
void sys_data_set(void)
{
	u8 key=0;
	
	key=KEY_Scan(0);
	//测量
	if(key==KEY1_PRESS)
	{
		sys_ctrl.over=0;
		sys_data_show_start();//系统开机界面显示
		//采血
		step_motor_28BYJ48_send_pulse(4,0,STEPMOTOR_MAXSPEED,3,1);//探针伸出
		delay_ms(500);
		step_motor_28BYJ48_send_pulse(4,1,STEPMOTOR_MAXSPEED,3,1);//探针收回
		sys_ctrl.over=1;
	}
}

//系统功能控制
void sys_fun_ctrl(void)
{
	if(sys_ctrl.over==1)//测量结束
	{
		//如果血糖高于上限
		if(sys_ctrl.blood>BLOOD_MAX)lcd1602_show_string(7,1,"High  ");
		else if(sys_ctrl.blood<BLOOD_MIN)lcd1602_show_string(7,1,"Low   ");
		else lcd1602_show_string(7,1,"Normal");
	}
}

//应用控制系统
void appdemo_show(void)
{
	sys_parm_init();//系统参数初始化
	KEY_Init();
	pcf8591_init();
	step_motor_gpio_init();
	lcd1602_init();//LCD1602初始化
	sys_open_show();//系统初始界面显示

	while(1)
	{
		sys_data_get();//系统数据获取
		sys_data_show();//系统数据显示
		sys_data_set();//系统数据设置
		sys_fun_ctrl();//系统功能控制		
	}
}



三、实验现象

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

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


联系作者

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

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

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

相关文章

Upload-labs十六和十七关

目录 第十六关第十七关 第十六关 直接上传php文件判断限制方式&#xff1a; 同第十五关白名单限制 第十六关源码&#xff1a; 代码逻辑判断了后缀名、content-type&#xff0c;以及利用imagecreatefromgif判断是否为gif图片&#xff0c;最后再做了一次二次渲染 第71行检测…

计算机网络第四章——网络层(中)

提示&#xff1a;待到山花烂漫时&#xff0c;她在丛中笑。 文章目录 需要加头加尾&#xff0c;其中头部最重要的就是加了IP地址和MAC地址&#xff08;也就是逻辑地址和物理地址&#xff09;集线器物理层设备&#xff0c;交换机是物理链路层的设备&#xff0c;如上图路由器左边就…

Vue使用ts的枚举类型

vue项目中要使用ts的枚举类型需要为script标签的lang属性添加ts属性值 <script lang"ts" setup></script > 首先要声明一下&#xff08;我这里是声明了一个名称一个颜色&#xff09;&#xff1a; 接下来是页面中的标签使用&#xff08;用的是element表格…

Linux系统编程--IO系统调用

文章目录 一、I/O系统调用1.open() 打开文件1.1 所需基础知识1.2. open() 详解1.3 示例代码 2.read() 读取文件2.1.基础知识2.2.read() 详解2.3. 读入所有字节 3.write() 写文件3.1. 基础背景知识3.2.write() 详解3.3.示例代码3.4.注意点3.4.1.同步IO1. fsync() 和fdatasync()2…

MySQL高可用搭建方案之(MMM)

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 注意&#xff1a;这篇转载文章&#xff0c;非原创 首发博客地址 原文地址 前言 MySQL的高可用有很多种&#xff0c;有我们经常说的MMM架构、MHA架构、…

内网隧道代理技术(二十三)之 DNS隧道反弹Shell

DNS隧道反弹Shell DNS隧道 DNS协议是一种请求、应答协议,也是一种可用于应用层的隧道技术。DNS隧道的工作原理很简单,在进行DNS查询时,如果查询的域名不在DNS服务器本机缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器,那么依靠DNS协议…

标准C库IO函数和Linux系统IO函数

linux系统的io函数更加偏底层&#xff0c;更加建议使用C库的函数&#xff0c;效率较高&#xff08;有缓冲区&#xff09; 磁盘满了或者手动fflush或者关闭文件才会io一次&#xff0c;效率提高&#xff0c;但是linux没有缓冲区 主要通过file *fp指针操作文件&#xff0c;文件描…

COSCon'23 社区召集令

一年一度的开源盛会&#xff0c;COSCon23 第八届中国开源年会&#xff0c;将于10月28~29日&#xff0c;在四川成都市高新区菁蓉汇召开&#xff01;本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01; 三年新冠疫情没有将我们击垮&#xff0c;开源…

记录socket的使用 | TCP/IP协议下服务器与客户端之间传送数据 | java学习笔记

谨以此篇&#xff0c;记录TCP编程&#xff0c;方便日后查阅笔记 注意&#xff1a;用BufferedWriter write完后&#xff0c;一定要flush&#xff1b;否则字符不会进入流中。去看源码可知&#xff1a;真正将字符写入的不是write()&#xff0c;而是flush()。 服务器端代码&#…

运维学习之部署Alertmanager-0.24.0

参考《监控系统部署prometheus基本功能》先完成prometheus部署。 参考《运维学习之采集器 node_exporter 1.3.1安装并使用》安装node_exporter。 下载 nohup wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.ta…

SecureCRT ssh链接服务器

SecureCRT通过密钥进行SSH登录 说明&#xff1a; 一般的密码方式登录容易被密码暴力破解。所以一般我们会将 SSH 的端口设置为默认22以外的端口&#xff0c;或者禁用root账户登录。其实可以通过密钥登录这种方式来更好地保证安全。 密钥形式登录的原理是&#xff1a;利用密钥…

day34 集合总结

集合总结 一、概述 作用&#xff1a;存储对象的容器&#xff0c;代替数组的&#xff0c;使用更加的便捷 所处的位置&#xff1a;java.util 体系结构 二、Collection 内部的每一个元素都得是引用数据类型 常用方法 add(Object o) 添加元素 addAll(Collection c) 将指定集…

【LeetCode周赛】LeetCode第362场周赛

LeetCode第362场周赛 与车相交的点判断能否在给定时间到达单元格将石头分散到网格图的最少移动次数 与车相交的点 给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i&#xff0c;nums[i] [starti, endi] &#xff0c;其中 starti 是第 i…

讯飞星火认知大模型,多种应用一键体验整合

分享几个可以&#xff0c;直接可以使用的AI应用&#xff0c;依托于讯飞星火大模型实现的&#xff1b; 现在讯飞星火认知大模型&#xff0c;使用已经完全开放&#xff0c;可以直接使用&#xff1b; AI抖音商品种草文案 功能&#xff1a; 通过将商品信息输入到讯飞星火AI大模…

IntelliJ IDEA工具常用插件汇总

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;IntelliJ IDEA 、常用插件☀️每日 一言&#xff1a;人的一生其实都在偏见和走出偏见中度过 文章目录 一、前言二、Plugins1.Key Promoter X2.CodeGlance3.Git Integration&#xff1a;4.Markdow…

SpringBoot整合Mybatis-Plus(含自动配置分析)

目录 1. Mybatis-Plus介绍2. 创建Mysql表和添加测试数据3. 添加pom.xml依赖4. 自动配置分析5. 代码实现5.1 User类实现5.2 指定MapperScan扫描路径5.3 Mapper接口实现5.4 Service实现5.5 UserMapper测试 1. Mybatis-Plus介绍 Mybatis-Plus是一个Mybatis的增强工具&#xff0c;…

Rich Bowen: 无论你在创造什么,最终交付的是信任。

早在开源被我们称之为开源&#xff0c;Rich Bowen 就已经参与其中。作为 Apache 软件基金会的成员&#xff0c;Rich 目前担任董事会成员、会议副总裁。此外&#xff0c;他还是亚马逊云科技的开源策略师。这些多重角色赋予了他对开源的更广泛和深刻的理解。 在他于 2023 年 Com…

远程连接mysql报错“Host xxx is not allowed to connect to this MySQL server“解决办法

在一台服务器上安装了mysql后使用dbeaver远程连接不上报错&#xff1a; 可以看到&#xff0c;报错原因是不许远程连接到mysql服务器 所以&#xff0c;修改访问权限。 首先&#xff0c;进入mysql命令行&#xff0c;查看访问权限&#xff1a; use mysql; select user,host from…

【ProxySql】Mysql如何实现读写分离?看这一篇就够了

&#x1f332;其他工具对比 其实市面上有很多关于读写分离的优秀的工具&#xff0c;例如 工具优势劣势ProxySQL- 高性能的负载均衡和连接池管理- 支持MySQL和MariaDB- 灵活的配置和规则定义- 只支持MySQL和MariaDB数据库- 功能相对专注&#xff0c;适用性可能有限- 学习和配置…