📄 adj_cal.c
字号:
#include "global.h"
ulong s2_r=0,s2_ir=0;
ulong s3_r=0,s3_ir=0;
uint pi=0,pk=0;
uchar flg_n=0;
uint m2_ir,m1_ir,m2_r,m1_r;
ulong t1_ir[2];
ulong t2_ir;
uint d1_ir;
uint f_noise=0;
uint H2_ir=0;
uint m11_ir,m22_ir;
uint ir_rge;
uint pul_rte; //脉率
uint rg0_ir,rg0_r;
uint spo2;
uint t00_ir;
uint r_abj,ir_abj;
uint red_abj[10];
uint ired_abj[10];
uchar pj=0;
uint phh=0;
ulong S02_HH=0;
uint y01_ir,y01_r;
uint y_r[8],y_ir[8];
uint yy_r[3]={0,0,0};
uint yy_ir[3]={0,0,0};
uint x_r[13],x_ir[13];
uint ss_ir,ss_r;
//uint flg_rgn=0;
uchar flt_n=1;
uchar pd=0,p11=0;
uint AV_ir,AL_ir;
uint m33_ir[10];
uint s_m33;
uint trans_ir[2];
uchar pole=0;
void adj_cal(void)
{
uchar pc,pe,pf,p2;
if(flg_n==1)
{
adjust8402();
flg_n=0;
}
y01_r=red_avr[0]-19*(ble_r/20);
y01_ir=ired_avr[0]-19*(ble_ir/20);//基线调整
if((y01_ir<1000)&&(y01_r<1000))
{
y_r[pd] =y01_r;
y_ir[pd]=y01_ir;
pd++;
if(pd==8)
{
pd=0;
}
ss_ir=0;
ss_r=0;
for(pc=0;pc<8;pc++)
{
ss_ir+=y_ir[pc];
ss_r+=y_r[pc];
}
for(pe=12;pe>0;pe--)
{
x_r[pe] =x_r[pe-1] ;
x_ir[pe]=x_ir[pe-1];
}
x_ir[0] =ss_ir/8;
x_r[0]=ss_r/8;//滑动滤波结果
for(pf=2;pf>0;pf--)
{
yy_ir[pf]=yy_ir[pf-1];
yy_r[pf]=yy_r[pf-1];
}
yy_ir[0]=x_ir[0]+x_ir[12]+2*yy_ir[1]-2*x_ir[6]-yy_ir[2]; //低通滤波
yy_r[0]=x_r[0]+x_r[12]+2*yy_r[1]-2*x_r[6]-yy_r[2];
ir_abj=yy_ir[0]/flt_n;
r_abj=yy_r[0]/flt_n;
}
if((ired_avr[0]>2250)&&(ired_avr[0]<3500)&&(red_avr[0]>2250)&&(red_avr[0]<3500))
{
if((y_ir[0]<1000)&&(y_r[0]<1000))
{
cal_character(); //信号处理求最值、周期
if(ir_abj>m1_ir) //柱状图
{
pole=(ir_abj-m1_ir)/400;
if(pole==0)
{
t3= (t3&0xf0);
}
if(pole!=0)
{
if(pole>14)
{
pole=14;
}
t3= (t3&0xf0);
t3= (t3|pole);
}
}
if((d1_ir!=0)&&(d1_ir<6000)) //阈值,需实验确定,特别是心率高的时候
{
S02_HH+=d1_ir;
phh++;
}
pk++;
if(pk==240)
{
HH_ir=(uint)(S02_HH/phh);
phh=0;
S02_HH=0;
pk=0;
}
//TXBUF0=(HH_ir);
//while((UTCTL0&0X01)==0);
}
s2_r+=red_avr[0]; //每1秒基线自动更新一次
s2_ir+=ired_avr[0];
pi++;
if(pi==120)
{
ble_r=s2_r/120;
ble_ir=s2_ir/120;
pi=0;
s2_r=0;
s2_ir=0;
}
}
if((ired_avr[0]<2250)||(ired_avr[0]>3500)||(red_avr[0]<2250)||(red_avr[0]>3500))
{
f_noise++;
if(f_noise==120)
{
f_noise=0;
flg_n=1;
s2_r=0;
s2_ir=0;
pi=0;
pk=0;
}
}
/***************************容积图输出波形调整*************************************************/
if(ired_abj[0]>m1_ir)
{
m22_ir=ired_abj[0]-m1_ir; //基线调整
}
if(ired_abj[0]<=m1_ir)
{
m22_ir=0;
}
if(rg0_ir>100)
{
AV_ir=(uint)(rg0_ir/90);
m33_ir[p11]=(m22_ir/(1+AV_ir));
p11++;
}
if(rg0_ir<=100)
{
m33_ir[p11]=m22_ir;
p11++;
}
if(p11==10)
{
p11=0;
}
s_m33=0;
for(p2=0;p2<10;p2++)
{
s_m33+=m33_ir[p2];
}
m11_ir=(s_m33/10);
if(m11_ir>=126)
m11_ir=126;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -