【单片机毕业设计】【mcuclub-dz-013】基于单片机的血压测量仪系统设计

最近设计了一个项目基于单片机的血压测量仪系统设计,与大家分享一下: 一、基本介绍 项目名:血压测量仪 项目编号:mcuclub-dz-013 单片机:STC89C52 功能简介: 1、通过血压计模块检测血压,分为收缩压和舒张压 2、通过按键可设置正常的收缩压和舒张压阈值(

    最近设计了一个项目基于单片机的血压测量仪系统设计,与大家分享一下:

一、基本介绍

项目名:血压测量仪
项目编号:mcuclub-dz-013
单片机:STC89C52
功能简介:
1、通过血压计模块检测血压,分为收缩压和舒张压
2、通过按键可设置正常的收缩压和舒张压阈值(收缩压在90-140mmHg、舒张压在60-90mmHg)
3、通过语音播报测量数据,并提示收缩压和舒张压是否正常
4、通过LCD1602显示收缩压和舒张压
5、通过蓝牙模块获取测量数据,并提示收缩压和舒张压是否正常

二、51实物图

单片机型号:STC89C52

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

  三、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 四、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

  五、系统框图

本课题血压检测仪,硬件采用六部分组成,第一部分是按键模块,用户通过按键进行界面的切换及其高血压及其低血压值的设置;第二部分是血压监测模块,通过该模块监测血压值;第三部分是供电模块,给整个系统进行供电;第四部分LCD1602液晶显示模块,将监测的血压和设置的血压进行显示;第五部分是语音播报模块,播报监测的血压数据及其当前血压是否正常;第六部分是蓝牙模块,通过该模块,用户可以通过手机查看当前监测的血压值。。

 六、软件设计流程

 

系统的主流程图如图4-2所示。在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,单片机通过扫描按键是否按下,监测到按键按下,执行对应的处理,如切换界面,设置收缩压和舒张压;然后进入第二个函数监测函数,通过调用收缩压和舒张压的函数获取当前的收缩压和舒张压;然后进入第三个函数显示函数,不同的显示界面,显示不同的内容;最后进入第四个函数,处理函数,正常范围内蓝牙发送收缩压数值,语音播报收缩压正常,异常范围内蓝牙发送收缩压数值,语音播报收缩压异常,正常范围内蓝牙发送舒张压数值,语音播报舒张压正常,异常范围内蓝牙发送舒张压数值,语音播报舒张压异常。

  七、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

*******处理函数
*****/
void Manage_function(void)
{
	if(flag_display == 0)                 											 		//测量界面
	{
		if(flag_blood == 0)																						//测量收缩压
		{
			if(flag_play_shrink == 1)																		//收缩压测量完成
			{
				if(shrink_value < shrink_max && shrink_value > shrink_min) //正常范围内蓝牙发送收缩压数值,语音播报收缩压正常
				{
					sprintf(send_buf,"收缩压:%dmmHg\r\n",shrink_value);		
					Uart1_Sent_Str(send_buf);																							
					Uart2_Sent_Str("收缩压正\xfd常");
					Delay_function(1000);
					flag_play_shrink = 0;
					flag_play_diastole = 0;
					flag_blood = 1;
				}
				else																											//异常范围内蓝牙发送收缩压数值,语音播报收缩压异常
				{
					sprintf(send_buf,"收缩压:%dmmHg\r\n",shrink_value);		
					Uart1_Sent_Str(send_buf);
					Uart2_Sent_Str("收缩压异常");
					Delay_function(1000);
					flag_play_shrink = 0;
					flag_play_diastole = 0;
					flag_blood = 1;
				}		
			}
		}
		else																													//测量舒张压
		{		
			if(flag_play_diastole == 1)																	//舒张压测量完成
			{
				if(diastole_value < diastole_max && diastole_value > diastole_min)
				{
					sprintf(send_buf,"舒张压:%dmmHg\r\n",diastole_value);		//正常范围内蓝牙发送舒张压数值,语音播报舒张压正常
					Uart1_Sent_Str(send_buf);
					Uart2_Sent_Str("舒张压正\xfd常");
					Delay_function(1000);
					flag_play_diastole = 0;
					flag_play_shrink = 0;
					diastole_value = 0;
					flag_blood = 0;
				}
				else
				{
					sprintf(send_buf,"舒张压:%dmmHg\r\n",diastole_value);		//异常范围内蓝牙发送舒张压数值,语音播报舒张压异常
					Uart1_Sent_Str(send_buf);
					Uart2_Sent_Str("舒张压异常");
					Delay_function(1000);					
					flag_play_diastole = 0;
					flag_play_shrink = 0;
					diastole_value = 0;
					flag_blood = 0;
				}		
			}
		}
	}
}

知秋君
上一篇 2024-07-21 18:36
下一篇 2024-07-21 18:02

相关推荐