基于51单片机的医用血压测量仪设计案例

控制/MCU

1865人已加入

描述

一、主要功能

本项目使用Proteus8.12仿真51单片机控制器,使用OLED12864液晶模块、PCF8591 AD模块、按键、电机等。

主要功能:

系统运行后,OLED显示开机显示界面。可通过K1键开始测量血压,气泵阀开启,一段时间后停止,开始测量高压和低压,并将测量值显示在OLED,并且显示当前血压状态。

主要功能如下:

(1)OLED显示血压;

(2)血压高压测量你;

(3)血压低压测量;

(4)血压状态显示。

二、硬件资源

51单片机核心模块、OLED12864液晶模块、按键、电机模块、PCF8591 AD模块。

三、软件设计

/*

//定义结构体

_sys_ctrl sys_ctrl;

//系统参数设置

void sys_parm_set(void)

{

//开始/停止

while(KEY1==1);

//清除高压显示值

OLED_ShowString(48,3," ",16);

//清除低压显示值

OLED_ShowString(48,6," ",16);

//清除血压状态

OLED_ShowString(16*6,6," ",16);

if(KEY1==0)

{

delay_ms(10);

if(KEY1==0)

{

QPF_PIN=0;//开启气泵

sys_ctrl.flag=1;

delay_ms(1000);

QPF_PIN=1;//关闭气泵

}

}

}

//系统数据显示

void sys_data_show(void)

{

u8 buf[4];

while(1)

{

//采集高压值显示

buf[0]=sys_ctrl.xy_hval/100+0x30;

if(buf[0]==0x30)buf[0]=' ';

buf[1]=sys_ctrl.xy_hval%100/10+0x30;

buf[2]=sys_ctrl.xy_hval%100%10+0x30;

buf[3]='�';

OLED_ShowString(48,3,buf,16);

//采集低压值显示

buf[0]=sys_ctrl.xy_lval/100+0x30;

if(buf[0]==0x30)buf[0]=' ';

buf[1]=sys_ctrl.xy_lval%100/10+0x30;

buf[2]=sys_ctrl.xy_lval%100%10+0x30;

buf[3]='�';

OLED_ShowString(48,6,buf,16);

break;

}

}

//系统功能控制

void sys_fun_ctrl(void)

{

//如果检测高压值高于血压高值1,或者检测低压值高于血压高值2,血压高

if(sys_ctrl.xy_hval>=XY_HVAL1 || sys_ctrl.xy_lval>=XY_HVAL2)

{

OLED_ShowCHinese(16*7,6,5);//高

}

//如果检测高压值低于血压低值1,或者检测低压值低于血压低值2,血压低

if(sys_ctrl.xy_hval<=XY_LVAL1 || sys_ctrl.xy_lval<=XY_LVAL2)

{

OLED_ShowCHinese(16*7,6,6);//低

}

//如果检测高压值低于血压高值1,并且高于血压高值2

//如果检测低压值低于血压低值1,并且高于血压低值2

if(sys_ctrl.xy_hvalXY_HVAL2 &&

sys_ctrl.xy_lvalXY_LVAL2)

{

OLED_ShowCHinese(16*6,6,7);//正常

OLED_ShowCHinese(16*7,6,8);

}

}

//应用控制系统

void appdemo_show(void)

{

sys_parm_init();//系统参数初始化

OLED_Init();

sys_open_show();//系统开机显示

while(1)

{

sys_parm_set();//系统参数设置

sys_data_get();//系统数据采集

sys_data_show();//系统数据显示

sys_fun_ctrl();//系统功能控制

}

}

四、实验现象

控制器

控制器

控制器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分