一、主要功能
本项目使用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();//系统功能控制
}
}
四、实验现象