MAX114的采样代码

来源:互联网 发布:趣学python编程 pdf 编辑:程序博客网 时间:2024/06/16 08:39

长这么大第一次写博客,嵌入式类的分享分享。。。。。。。

void Ad-test()

{

char str[20];

union MAX114_result                               //共用体(与结构体类似)

{       

U32 MAX114_All;

U8 Tempswbc[4];

}Ad_Data;

}

U32 i=0,m1=0;

U32 wbc_width,AD_Number,signal_stop;

AD_wbc_Data=0;

rPDATF &=0xffef;                            //CS置地,选中该ADC芯片

rpDATA=0x0;                 //选中地址管脚

rpDATC &=~(1<<10) ;             //低电平  const0

while(1)                                        // while((m1<Max_AD_number))
        {
     rPDATA=0x0;                           //仍然选中AIN0采样口,即WBC口,gpa8.gpa9//     
 rPDATF&=0x0ffb;                       //wr        //即WRAD置低,写模式//    
     rPDATF|=0x04;                         //wr         
     Ad_Data.TempsWBC[0]=((rPDATE/8)+(rPDATD&0x0e0));    ////////////WBC的采样数据,除以8相当于右移3位,和外围电路连接不一样//////////////


        //======================细胞核血小板阈值判断程序========================
                  // if(AD_Wbc_Data>=Max_AD_number1)break;     //如果超过了最大计数值,则退出
                   if(AD_Wbc_Data>=100) break; 
                  //  Uart_Printf("33333333\n");
                  //  Uart_Printf("%d\n",AD_Wbc_Data); 
            if(Ad_Data.TempsWBC[0]>15)            //////////// 白细胞阈值判断,15 ///////////////
           {
         WBC_Ad[AD_Wbc_Data]=Ad_Data.TempsWBC[0];      //WBC_Ad[]是白细胞数据寄存器数组,将采样的白细胞数据存到寄存器里
         AD_Wbc_Data++;                                //WBC_Ad[]是白细胞数据寄存器自加
         WBC_Width++;
         AD_Number++;
      //   Uart_Printf("%d\n",AD_Wbc_Data); 
         
         if((AD_Number>=2)&&(m1==0))   //此处为延时作用,相当于等待峰值保持
         {
            
           rPDATA=0x0100; 
   rPDATF&=0x0ffb;//wr
   rPDATF|=0x04;//wr
                   Peak_WBC[AD_times]=((rPDATE/8)+(rPDATD&0x0e0)) ;//读峰值采样函数,暂不判断是不是粒子
                   AD_Number=0;
                   m1=1;
                   rPDATC |= (1<<10);   //高电平复位信号,const0
         
         }
         
           }
           else 
          {
        if(WBC_Ad[AD_Wbc_Data-1]>0)        //白细胞阈值过小的则看作为0来保存     
        {
        
              rPDATC &= ~(1<<10);   //低电平,const0
      WBC_Ad[AD_Wbc_Data]=0; 
      AD_Wbc_Data++;  
      Signal_Stop=1; 
      m1=0;
      rPDATC &= ~(1<<10);   //低电平,const0
      
        }
          }
          
           if(Signal_Stop==1)
           {
           
            if(( WBC_Width>=3)&&(WBC_Width<30))   //判断是否是粒子,是peak_wbc保存自加,不是则不自加,下次会覆盖peak_wbc
            {
                 
                   AD_times++;                          //峰值点个数
            }
           
            Signal_Stop=0;
            WBC_Width=0;
           
           }
         
                
        }
                
     //           Uart_Printf("%d\n",AD_times);    
       key_beep();
   rPDATF|=0x10;                   //GPF4脚,连接ADC的CS口,ADC采样芯片失能,即停止ADC采样
  
//   Uart_Printf("采样点 %d\n",AD_Wbc_Data); 
  for(i=0;i<AD_Wbc_Data;i++)
  {
  
//        Uart_Printf(" %d\n", WBC_Ad[i]);
          
  }
  
   Uart_Printf("峰值数 %d\n",AD_times);
//    
   for(i=0; i<AD_times; i++)
  {
       
//        Uart_Printf(" %d\n", Peak_WBC[i]);
       
  }
        
}  


0 0
原创粉丝点击