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


一、功能简介

本项目使用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设计,视频分享,技术交流。

自动浇花灌溉系统是一种智能化的花园管理系统,可实现对植物的自动浇水和灌溉。该设计基于STM32单片机,并利用Proteus仿真软件进行模拟。 在该系统中,STM32单片机作为主控制器,通过传感器检测土壤湿度、光照强度和温度等信息,然后根据预设的参数来判断是否需要进行浇水或灌溉。若土壤湿度低于设定阈值,系统将自动打开电磁阀,开始进行浇水或灌溉。 在Proteus仿真软件中,可以通过连接电路图和编写相应的程序来实现系统功能。通过模拟传感器读取数据,将相关数据传输给STM32单片机,然后进行相关计算和控制。将相应的控制信号输出至电磁阀,实现自动浇水或灌溉功能。 此外,还可以在Proteus仿真软件中添加显示屏模块,用于实时显示传感器数据和系统状态。通过与STM32单片机的通信,将数据传输到显示屏上,使用户可以随时监测植物的生长环境和系统工作状态。 通过Proteus仿真,可以对自动浇花灌溉系统设计进行测试和优化。可以模拟不同的环境条件和传感器数据,验证系统的稳定性和可靠性。同时,还可以进行不同的参数调整和算法优化,以提高系统的效率和节省水资源的使用。 总之,基于STM32单片机Proteus仿真软件的自动浇花灌溉系统设计可以实现对植物的智能管理和高效浇水灌溉,提高植物的生长质量和节约水资源的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值