【Proteus仿真】【STM32单片机】病床呼叫系统设计

news2024/9/25 22:38:34

文章目录

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


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602液晶、按键、蜂鸣器LED、双机通信等。
主要功能:
系统运行后,LCD1602显示开机界面,当从机病床按键按下,主机LCD1602显示说按病床号且蜂鸣器报警LED指示灯亮。此时主机中护士应答键按下,则清除本次病床号。当多床号键被按下,LCD1602依次顺序显示,此时主机中护士应答键被按下,按优先顺序依次处理,LED灭。如果按下清零键,则将所有呼叫信息清除。
主要功能:
1、从机6床位呼叫
2、主机LCD显示和应答
3、灯光报警提示
4、顺序排列处理


二、软件设计

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

*/




//系统参数控制
void sys_parm_ctrl(void)
{
	u8 key=0;
	static u8 cnt=0;

	while(1)
	{
		key=KEY_Scan(0);
		//如果护士应答,则清除本次呼叫
		if(key==KEY1_PRESS)
		{
			cnt++;
			//应答后床位号刷新显示,取消显示应答床位的ID
			switch(cnt)
			{
				case 1: lcd1602_show_num(2,0,' ',0);break;
				case 2: lcd1602_show_num(6,0,' ',0);break;
				case 3: lcd1602_show_num(10,0,' ',0);break;
				case 4: lcd1602_show_num(14,0,' ',0);break;
				case 5: lcd1602_show_num(2,1,' ',0);break;
				case 6: lcd1602_show_num(6,1,' ',0);break;
			}	
			sys_ctrl.cnt--;	
			if(sys_ctrl.cnt<=0)
			{
				sys_ctrl.cnt=0;
				cnt=0;
				LED0=1;//关闭呼叫指示灯	
			}
		}
		//清除所有病人呼叫
		else if(key==KEY2_PRESS)
		{
			cnt=0;
			sys_parm_init();//参数初始化
			LED0=1;//关闭呼叫指示灯	
			lcd1602_clear();
			lcd1602_show_string(0,0,"ID  ID  ID  ID ");
			lcd1602_show_string(0,1,"ID  ID  ");
		}

		break;
	}	
}

//系统数据显示
void sys_data_show(void)
{
	while(1)
	{	
		//病房有键按下
		if(sys_ctrl.sta==0)
		{
			//按照按下顺序LCD显示床位号
			switch(sys_ctrl.cnt)
			{
				case 1: lcd1602_show_num(2,0,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
				case 2: lcd1602_show_num(6,0,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
				case 3: lcd1602_show_num(10,0,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
				case 4: lcd1602_show_num(14,0,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
				case 5: lcd1602_show_num(2,1,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
				case 6: lcd1602_show_num(6,1,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
				case 7: lcd1602_show_num(10,1,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
				case 8: lcd1602_show_num(14,1,USART1_RX_BUF[sys_ctrl.cnt-1],1);break;
			}
			beep_alarm(20,1000);//蜂鸣器响
			sys_ctrl.sta=1;			
		}

		break;
	}
}

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

	while(1)
	{
		sys_data_show();//系统数据显示
		sys_parm_ctrl();//系统参数控制		
	}
}

/*******************************************************************************
* 函 数 名         : USART1_IRQHandler
* 函数功能		   : USART1中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void USART1_IRQHandler(void)                	//串口1中断服务程序
{
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断
	{
		LED0=0;//打开呼叫指示灯
		if(sys_ctrl.cnt<ID_MAX)
		{
			USART1_RX_BUF[sys_ctrl.cnt]=USART_ReceiveData(USART1)-0x30;
			//连续两次相同键视为一次有效
			if(sys_ctrl.cnt>=1)
				if(USART1_RX_BUF[sys_ctrl.cnt]==USART1_RX_BUF[sys_ctrl.cnt-1])
					sys_ctrl.cnt-=1;
			sys_ctrl.cnt++;
		}	
		sys_ctrl.sta=0;			   		 
	} 
}



三、实验现象

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

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


联系作者

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

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

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

相关文章

ExoPlayer架构详解与源码分析(4)——整体架构

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

0-1背包理论基础详解

0-1背包问题&#xff1a;有 n 种物品&#xff0c;每种物品只有1个&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 图片来自&#xff1a;代码随想录 0-1背包问题举例&#xff1a; 题目描述&#xff1a; 使用二维dp数组解决背包问题 动规五部曲&#xff1a; dp[i][j…

智能工厂MES系统,终端设备支持手机、PDA、工业平板、PC

一、开源项目简介 源计划智能工厂MES系统(开源版) 功能包括销售管理&#xff0c;仓库管理&#xff0c;生产管理&#xff0c;质量管理&#xff0c;设备管理&#xff0c;条码追溯&#xff0c;财务管理&#xff0c;系统集成&#xff0c;移动端APP。 二、开源协议 使用GPL-3.0开…

【python海洋专题十四】读取多个盐度nc数据画盐度季节变化图

本期内容 读取多个盐度文件&#xff1b;拼接数据在画盐度的季节分布图Part01. 使用数据 IAP 网格盐度数据集 数据详细介绍&#xff1a; 见文件附件&#xff1a; pages/file/dl?fid378649712527544320 全球温盐格点数据.pdf IAP_Global_ocean_gridded_product.pdf 全球温…

Android多线程学习:线程池(一)

一、概念 线程池&#xff1a;创建并维护一定数量的空闲线程&#xff0c;当有需要执行的任务&#xff0c;就交付给线程池中的一个线程&#xff0c;任务执行结束后&#xff0c;该线程也不会死亡&#xff0c;而是回到线程池中重新变为空闲状态。 线程池优点&#xff1a; 1、重用…

Linux系列---【查看mac地址】

查看mac地址命令 查看所有网卡命令 nmcli connection show 查看物理网卡mac地址 ifconfig 删除网卡 nmcli connection delete virbr0 禁用libvirtd.service systemctl disable libvirtd.service 启用libvirtd.service systemctl enable libvirtd.service

使用css 与 js 两种方式实现导航栏吸顶效果

position的属性我们一般认为有 position:absolute postion: relative position:static position:fixed position:inherit; position:initial; position:unset; 但是我最近发现了一个定位position:sticky 这个可以称为粘性定位。 这个粘性定位的元素会始终在那个位置 <st…

firefox的主题文件位置在哪?记录以防遗忘

这篇文章写点轻松的 最近找到了一个自己喜欢的firefox主题,很想把主题的背景图片找到,所以找了下主题文件所在位置 我的firefox版本:版本: 118.0.1 (64 位)主题名称: Sora Kawai 我的位置在 C:\Users\mizuhokaga\AppData\Roaming\Mozilla\Firefox\Profiles\w0e4e24v.default…

可视大盘 + 健康分机制,火山引擎 DataLeap 为企业降低资源优化门槛!

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 随着数仓及研发技术团队维护的数据量大、资源使用量大、成本越高、优化压力越大。如何主动发现无效或低效使用的资源&#xff0c;并且可以周期性高效的进行主动治理…

js 气泡上升和鼠标点击事件

效果图 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title><style>bod…

银河麒麟服务器x86安装ntp客户端,并配置成功可以同步时间

脚本 # 安装ntp客户端 sudo dnf install chrony # 配置 pool 2.centos.pool.ntp.org iburst给这一行加注释 sudo sed -i s/^pool 2.centos.pool.ntp.org iburst/#&/ /etc/chrony.conf # 添加3个阿里云NTP服务器 # echo -e "server ntp1.aliyun.com iburst\nserver nt…

安卓 kotlin-supportFragmentManager报红

如果你继承baseActivity 请查看 是不是继承 AppCompatActivity

全网都在找的python+requests接口自动化测试框架实例详解教程

前言 Python是一种功能强大的编程语言&#xff0c;它可以用于自动化测试&#xff0c;特别是接口自动化测试。许多Python库都可以用于接口自动化测试&#xff0c;其中requests库是其中最受欢迎的库之一。 requests库可以用于发送HTTP请求并获取服务器响应&#xff0c;从而轻松…

java案例21:学生管理系统

思路&#xff1a; 编写一个学生管理系统&#xff0c; 实现对学生信息的添加、删除、修改和查询功能。首页&#xff1a; 用于显示系统的所有操作&#xff0c;并根据用户在控制台的输入选择需要使用的功能查询功能&#xff1a; 用户选择后&#xff0c;在控制台打印所有学生信息添…

阿里云服务器公网带宽多少钱1M?

阿里云服务器公网带宽计费模式按固定带宽”计费多少钱1M&#xff1f;地域不同带宽价格不同&#xff0c;北京、杭州、深圳等大陆地域价格是23元/Mbps每月&#xff0c;中国香港1M带宽价格是30元一个月&#xff0c;美国硅谷是30元一个月&#xff0c;日本东京1M带宽是25元一个月&am…

爬虫Python

文章目录 基本数据类型bytes类型python数据类型转换 python运算符&#xff08;必会&#xff01;&#xff01;&#xff01;&#xff09;python数字数学函数&#xff08;必会&#xff01;&#xff01;&#xff01;&#xff09;随机数函数三角函数&#xff08;简&#xff09;数字常…

c++视觉处理---均值滤波

均值滤波 cv::blur()函数是OpenCV中用于应用均值滤波的函数。均值滤波是一种简单的平滑技术&#xff0c;它计算每个像素周围像素的平均值&#xff0c;并用该平均值替代原始像素值。这有助于降低图像中的噪声&#xff0c;并可以模糊图像的细节。 以下是cv::blur()函数的基本用…

记一次 .NET某账本软件 非托管泄露分析

一&#xff1a;背景 1. 讲故事 中秋国庆长假结束&#xff0c;哈哈&#xff0c;在老家拍了很多的短视频&#xff0c;有兴趣的可以上B站观看&#xff1a;https://space.bilibili.com/409524162 &#xff0c;今天继续给大家分享各种奇奇怪怪的.NET生产事故&#xff0c;希望能帮助…

c++视觉处理---高斯滤波

高斯滤波处理 高斯滤波是一种常用的平滑滤波方法&#xff0c;它使用高斯函数的权重来平滑图像。高斯滤波通常用于去除噪声并保留图像中的细节。在OpenCV中&#xff0c;可以使用cv::GaussianBlur()函数来应用高斯滤波。 以下是cv::GaussianBlur()函数的基本用法&#xff1a; …

区块链技术的飞跃: 2023年的数字革命

随着时代的推进和技术的不断创新&#xff0c;2023年成为区块链技术飞跃发展的一年。区块链&#xff0c;一个曾经只是数字货币领域的技术&#xff0c;现在已经逐渐渗透到各个行业&#xff0c;成为推动数字经济发展的重要力量。在这个数字革命的时代&#xff0c;我们探讨区块链技…