基于STM32F103单片机的无线病床呼叫系统

文章目录[隐藏]

系统功能设计

(末尾附文件)

本系统由STM32单片机最小系统、LED指示灯、2档拨动开关、蜂鸣器报警、蓝牙模块组成。
1、手机APP和stm32设备上蓝牙模块进行连接。
2、三个拨动开关分别代表3个床位呼叫开关(1-3床位),开关拨上去,则相应的指示灯闪烁报警,同时蜂鸣器鸣叫报警。开关拨下,则蜂鸣器不鸣叫,LED灯也不闪烁。同时,系统将通过蓝牙模块实现病人和医护人员之间信息的传递。医护人员的手机可以实时接收床位的相关报警信息。

2档拨动开关
在这里插入图片描述

LED信号指示灯电路设计
在这里插入图片描述

STM32F103C8T6单片机核心板:
USB供电接口,复位按键 开关按键
在这里插入图片描述
合理优秀的布局布线:
在这里插入图片描述

部分代码设计

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
#include "key.h"
#include "usart.h"	
#include <string.h>

unsigned char delay20msFlag = 0;

unsigned char BufTab[10]; //串口数据暂存
unsigned char Count;	   //串口数据计数
unsigned char UartBusy=0;  //判断忙碌
unsigned char ReadFlag=0;//读取标志
unsigned char sendDataFlag=0;	//发送数据标志
u8 rebackFalg= 0; //数据返回标志
u8 MesCount=0;	//发送内容计数

unsigned char roomFlag0 = 0; //房间标志
unsigned char roomFlag1 = 0;
unsigned char roomFlag2 = 0;


unsigned char i ;

int main(void)
 {	
	delay_init();	    	 //延时函数初始化
	NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	LED_Init();		  	//初始化与LED连接的硬件接?
	KEY_Init();
	uart_init(4800);//初始化串口//**All notes can be deleted and modified**//
	TIM3_Int_Init(499,7199);//10Khz的计数频率,计数到500为50ms 
	delay_ms(50); 

	buzzer = 0 ;//关闭led及蜂鸣器
	led0 = 1;
	led1 = 1;
	led2 = 1;
	 
	while(1)
	{  
			if(key0 == 0)		//开关是否拨动
			{
				roomFlag0  = 0;	//该房间是否警报标志
			}
			else
			{
				roomFlag0  = 1; //该房间是否警报标志 清空
			}

			if(key1 == 0)		//开关是否拨动
			{
				roomFlag1  = 0;	//该房间是否警报标志
			}
			else
			{
				roomFlag1  = 1; //该房间是否警报标志 清空
			}

			if(key2 == 0)		//开关是否拨动
			{
				roomFlag2  = 0;	//该房间是否警报标志
			}
			else
			{
				roomFlag2  = 1; //该房间是否警报标志 清空
			}
			
			if(delay20msFlag ==1 )//定时更新显示情况
			{
				delay20msFlag = 0;
				if(roomFlag2==0) {led2 = !led2;}//闪烁led灯
				else {led2 = 1;}
				
				if(roomFlag1==0) {led1 = !led1;}	//闪烁led灯
				else {led1 = 1;}
				
				if(roomFlag0==0) {led0 = !led0;}//闪烁led灯
				else {led0 = 1;}
				
				if((roomFlag0 == 0)||(roomFlag1 == 0)||(roomFlag2 == 0))
				{buzzer = !buzzer;}				//有任何异常报警
				else
				{buzzer 	= 0 ;}//取消报警	
				Count++;
				if(Count>=5)
				{
					Count = 0;
				if(roomFlag2==0) 
				{printf("1#Dangerous!\n");}			//蓝牙发送危险信息
				else 
				{printf("1#Normal!\n");}//蓝牙发送正常信息
				
				if(roomFlag1==0) 
				{printf("2#Dangerous!\n");}	//蓝牙发送危险信息
				else 
				{printf("2#Normal!\n");}//蓝牙发送正常信息
				
				if(roomFlag0==0) 
				{printf("3#Dangerous!\n");}//蓝牙发送危险信息
				else 
				{printf("3#Normal!\n");}		//蓝牙发送正常信息		
				}
			}
			
	}
}
 

附:http://www.jh-tec.cn/archives/7151

.

版权声明:本文为CSDN博主「weixin_46018613」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46018613/article/details/122290133

系统功能设计

(末尾附文件)

本系统由STM32单片机最小系统、LED指示灯、2档拨动开关、蜂鸣器报警、蓝牙模块组成。
1、手机APP和stm32设备上蓝牙模块进行连接。
2、三个拨动开关分别代表3个床位呼叫开关(1-3床位),开关拨上去,则相应的指示灯闪烁报警,同时蜂鸣器鸣叫报警。开关拨下,则蜂鸣器不鸣叫,LED灯也不闪烁。同时,系统将通过蓝牙模块实现病人和医护人员之间信息的传递。医护人员的手机可以实时接收床位的相关报警信息。

2档拨动开关
在这里插入图片描述

LED信号指示灯电路设计
在这里插入图片描述

STM32F103C8T6单片机核心板:
USB供电接口,复位按键 开关按键
在这里插入图片描述
合理优秀的布局布线:
在这里插入图片描述

部分代码设计

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
#include "key.h"
#include "usart.h"	
#include <string.h>

unsigned char delay20msFlag = 0;

unsigned char BufTab[10]; //串口数据暂存
unsigned char Count;	   //串口数据计数
unsigned char UartBusy=0;  //判断忙碌
unsigned char ReadFlag=0;//读取标志
unsigned char sendDataFlag=0;	//发送数据标志
u8 rebackFalg= 0; //数据返回标志
u8 MesCount=0;	//发送内容计数

unsigned char roomFlag0 = 0; //房间标志
unsigned char roomFlag1 = 0;
unsigned char roomFlag2 = 0;


unsigned char i ;

int main(void)
 {	
	delay_init();	    	 //延时函数初始化
	NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	LED_Init();		  	//初始化与LED连接的硬件接?
	KEY_Init();
	uart_init(4800);//初始化串口//**All notes can be deleted and modified**//
	TIM3_Int_Init(499,7199);//10Khz的计数频率,计数到500为50ms 
	delay_ms(50); 

	buzzer = 0 ;//关闭led及蜂鸣器
	led0 = 1;
	led1 = 1;
	led2 = 1;
	 
	while(1)
	{  
			if(key0 == 0)		//开关是否拨动
			{
				roomFlag0  = 0;	//该房间是否警报标志
			}
			else
			{
				roomFlag0  = 1; //该房间是否警报标志 清空
			}

			if(key1 == 0)		//开关是否拨动
			{
				roomFlag1  = 0;	//该房间是否警报标志
			}
			else
			{
				roomFlag1  = 1; //该房间是否警报标志 清空
			}

			if(key2 == 0)		//开关是否拨动
			{
				roomFlag2  = 0;	//该房间是否警报标志
			}
			else
			{
				roomFlag2  = 1; //该房间是否警报标志 清空
			}
			
			if(delay20msFlag ==1 )//定时更新显示情况
			{
				delay20msFlag = 0;
				if(roomFlag2==0) {led2 = !led2;}//闪烁led灯
				else {led2 = 1;}
				
				if(roomFlag1==0) {led1 = !led1;}	//闪烁led灯
				else {led1 = 1;}
				
				if(roomFlag0==0) {led0 = !led0;}//闪烁led灯
				else {led0 = 1;}
				
				if((roomFlag0 == 0)||(roomFlag1 == 0)||(roomFlag2 == 0))
				{buzzer = !buzzer;}				//有任何异常报警
				else
				{buzzer 	= 0 ;}//取消报警	
				Count++;
				if(Count>=5)
				{
					Count = 0;
				if(roomFlag2==0) 
				{printf("1#Dangerous!\n");}			//蓝牙发送危险信息
				else 
				{printf("1#Normal!\n");}//蓝牙发送正常信息
				
				if(roomFlag1==0) 
				{printf("2#Dangerous!\n");}	//蓝牙发送危险信息
				else 
				{printf("2#Normal!\n");}//蓝牙发送正常信息
				
				if(roomFlag0==0) 
				{printf("3#Dangerous!\n");}//蓝牙发送危险信息
				else 
				{printf("3#Normal!\n");}		//蓝牙发送正常信息		
				}
			}
			
	}
}
 

附:http://www.jh-tec.cn/archives/7151

.

版权声明:本文为CSDN博主「weixin_46018613」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46018613/article/details/122290133

生成海报
点赞 0

weixin_46018613

我还没有学会写个人说明!

暂无评论

相关推荐

2021年终总结

年终总结 CSDN的评委好,各位同仁好! 2021年,我担任嵌入式软件开发工程师一职,具体汇报如下: 一、2021年度工作完成情况 在现有的TDOA定位基站和标签的基础上

Verilog实现按键消抖

Verilog实现按键消抖 一、简介 我们在进行按键的时候往往会发生抖动的现象。 通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地