⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cal_range.c

📁 医疗电子,血氧浓度测量模块原程序,采用430 单片机.
💻 C
字号:
#include "global.h"
uint rge_ir[3],rge_r[3];
uint t_ir[3];
uint T_rise[2]={0,0}; 
uint t02_ir;
uint pul[8];
uint pul02[2];
uint th_rt01,th_rt02;  //上升时间阈值
uint th1_t01,th1_t02,th2_t01,th2_t02;  //周期阈值
uint t002_ir[4];
uchar p5=0;
uint s_t002;
uchar t3;
uint min_ir[3],min_r[3];
uint dc_ir,dc_r;
uchar ps=0;

uchar pole_flg=0;


void cal_range(void)
{
  uint st_ir,s_pul,sge_ir,sge_r;
  uint sdc_ir,sdc_r;
  uint pn,ps2;
  uchar p6;
           
  if(T_rise[0]==0)
    {
      T_rise[0]=t_rise;      
    }
  if(T_rise[0]!=0)
    {
     th_rt01=(9*T_rise[0])/10;
     th_rt02=(11*T_rise[0])/10;
     if((th_rt01<t_rise)&&(t_rise<th_rt02))
        {
          T_rise[1]=T_rise[0];                
          T_rise[0]=t_rise;
          if(t_ir[0]==0)
            {
             t_ir[0]=t00_ir;
             rge_ir[0]=m00_ir;
             rge_r[0]=m00_r;
             
            // min_ir[0]=m2_ir;
            // min_r[0]=m2_r;       
            }
          if((t_ir[0]!=0)&&(t_ir[1]==0))
            {
             th1_t01=(9*t_ir[0])/10;
             th1_t02=(11*t_ir[0])/10;
             if((25<t00_ir)&&(t00_ir<300)&&(th1_t01<t00_ir)&&(t00_ir<th1_t02))
               {
                t_ir[1]=t_ir[0];
                rge_ir[1]=rge_ir[0];
                rge_r[1]=rge_r[0];
                
               // min_ir[1]=min_ir[0];
               // min_r[1]=min_r[0];
                
                t_ir[0]=t00_ir;
                rge_ir[0]=m00_ir;
                rge_r[0]=m00_r;
                
                //min_ir[0]=m2_ir;
                //min_r[0]=m2_r;
               }
             if((25>t00_ir)||(t00_ir>300)||(t00_ir<th1_t01)||(t00_ir>th1_t02))
               {                
                t_ir[0]=t00_ir;
                rge_ir[0]=m00_ir;
                rge_r[0]=m00_r;
               // min_ir[0]=m2_ir;
               // min_r[0]=m2_r;
               }                   
            }
          if(t_ir[1]!=0)
            {
             th2_t01=(9*t_ir[0])/10;
             th2_t02=(11*t_ir[0])/10;
             if((25<t00_ir)&&(t00_ir<300)&&(th2_t01<t00_ir)&&(t00_ir<th2_t02))
               {
                t_ir[2]=t_ir[1];
                rge_ir[2]=rge_ir[1];
                rge_r[2]=rge_r[1];
               // min_ir[2]=min_ir[1];
               // min_r[2]=min_r[1];
                
                t_ir[1]=t_ir[0];
                rge_ir[1]=rge_ir[0];
                rge_r[1]=rge_r[0];
               // min_ir[1]=min_ir[0];
              //  min_r[1]=min_r[0];
                
                t_ir[0]=t00_ir;
                rge_ir[0]=m00_ir;
                rge_r[0]=m00_r;
               // min_ir[0]=m2_ir;
               // min_r[0]=m2_r;
                
                
               
                if((20<rge_r[0]<10000)&&(20<rge_r[1]<10000)&&(20<rge_r[2]<10000))
                  {
                    if((20<rge_ir[0]<10000)&&(20<rge_ir[1]<10000)&&(20<rge_ir[2]<10000))
                      {
                        if(((8*(rge_ir[0]/10))<rge_ir[1])&&(rge_ir[1]<(12*(rge_ir[0]/10)))&&((8*(rge_ir[1]/10))<rge_ir[2])&&(rge_ir[2]<(12*(rge_ir[1]/10))))
                          {
                            sge_ir=0;
                            sge_r=0;
                            //sdc_ir=0;
                            //sdc_r=0;
                            for(pn=0;pn<3;pn++)
                              {
                                sge_ir+=rge_ir[pn];
                                sge_r+=rge_r[pn];
                                //sdc_ir+=min_ir[pn];
                                //sdc_r+=min_r[pn];
                              }
                            rg0_ir=sge_ir/3;
                            rg0_r=sge_r/3;
                           // dc_ir=sdc_ir/3;
                            //dc_r=sdc_r/3;                                                      
                            cal_spo2();
                            
                            st_ir=0;
                            for(pn=0;pn<3;pn++)
                              {
                                st_ir+=t_ir[pn];
                              }
                            t002_ir[p5]=st_ir/3;
                            p5++;
                            if(p5==4)
                              {
                                p5=0;
                              }
                            if(t002_ir[3]!=0)
                              {
                                s_t002=0;
                                for(p6=0;p6<4;p6++)
                                 {
                                   s_t002+=t002_ir[p6];
                                 }
                                t02_ir=s_t002/4; 
                              }
                                            
                           if((25<t02_ir)&&(t02_ir<300))
                            {                                                   
                              pul[ps]=7200/t02_ir; 
                              ps++;
                              if(ps==8)
                                {
                                  ps=0;
                                }
                              if(pul[7]==0)
                                {                                                                                                                                 
                                  pul_rte=7200/t02_ir;     //求脉率 
                                  if(pul_rte<=127)
                                    {
                                      t3=(t3&0xbf);
                                    }
                                  
                                  if(pul_rte>127)
                                   {
                                     t3=(t3|0x40);
                                   }                                                                
                                }
                              if(pul[7]!=0)
                                {
                                   s_pul=0;
                                   for(ps2=0;ps2<8;ps2++)
                                     {
                                       s_pul+=pul[ps2];
                                     }                                                                                                   
                                   pul_rte=s_pul/8;     //求脉率 
                                   if(pul_rte<=127)
                                     {
                                       t3=(t3&0xbf);
                                     }                                  
                                   if(pul_rte>127)
                                     {
                                       t3=(t3|0x40);
                                     }                                                                
                                }
                            }                           
                          
                          
                          }
                      }
                  }
               }         
            if((25>t00_ir)||(t00_ir>300)||(t00_ir<th2_t01)||(t00_ir>th2_t02))
              {                
                T_rise[1]=T_rise[0];
                T_rise[0]=t_rise;              
                
                    
                t_ir[2]=0;
                t_ir[1]=0;
                t_ir[0]=0; 
                
                rge_ir[2]=0;
                rge_r[2]=0;
                rge_ir[1]=0;
                rge_r[1]=0;
                rge_ir[0]=0;
                rge_r[0]=0;
                
                //min_ir[2]=0;
                //min_ir[1]=0;
                //min_ir[0]=0;
                //min_r[2]=0;
               // min_r[1]=0;
               // min_r[0]=0;
              } 
           }          
        }
      if((t_rise<th_rt01)||(t_rise>th_rt02))
        { 
          T_rise[0]=t_rise;                           
          T_rise[1]=0;
                    
          t_ir[2]=0;
          t_ir[1]=0;
          t_ir[0]=0; 
                
          rge_ir[2]=0;
          rge_r[2]=0;
          rge_ir[1]=0;
          rge_r[1]=0;
          rge_ir[0]=0;
          rge_r[0]=0;
          
          //min_ir[2]=0;
          //min_ir[1]=0;
          //min_ir[0]=0;
          //min_r[2]=0;
          //min_r[1]=0;
          //min_r[0]=0;
        }
    }
}
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -