热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

算术滤波子涵数

  • 1星
  • 2014-11-10
  • 118.88KB
  • 需要1积分
  • 0次下载
标签: 算术滤波子涵数

算术滤波子涵数

#define  N  8

/*********************    算术滤波子涵数    ***********************

*  名称:  Float_Value  filter_valve(void)

*  功能:  滤波子涵数

*  调用: X_Read();

*  返回值:  平均数

*****************************************************************/

Float_Value  filter_valve(void)

{

unsigned  char  i  ,  j  ,  count;

float  xdata  valve_buf[N];

float  xdata  sum  =  0  ,  temp;

/****************    采样  N  次  ******************/

for(count=0  ;  count  <  N  ;  count++)

{PCA0CPH2  =  0x0E;      //  喂狗

valve_buf[count]  =  X_Read(); 

}

/*****************    冒泡排序  ******************/

for(j  =  0  ;  j  <  N  -  1  ;  j++)

  {

  for(i  =  0  ;  i  <  N  -  j  ;  i++)

  {PCA0CPH2  =  0x0E;      //  喂狗

    if(valve_buf[i]  >  valve_buf[i  +  1])

    {PCA0CPH2  =  0x0E;      //  喂狗

temp  =  valve_buf[i];

valve_buf[i]  =  valve_buf[i  +  1];

valve_buf[i  +  1]  =  temp;

    }

  }

  }

/***********  减去两个最大    减去两个最小  累加  **********/

for(count  =  2  ;  count  <  N  -  2  ;  count++)

  {PCA0CPH2  =  0x0E;      //  喂狗

    sum  +=  valve_buf[count];

  }

/****************      平均后反回    *********************/

return  (sum  /  (N  -  3));

}

/************    单通道启动检测函数  ************* 

*  名称:  X_Read();Y_Read();Z_Read();

*  说明:  单通道启动

*  功能:  检测数据读取

*  调用:  中断  ADC0_ISR

*  输入:  无

*  返回值:  X_Scale  ,  Y_Scale  ,  Z_Scale  ;

*********************X*************************/

long  X_Read(void) //  V

{

ADC0CN    =  Gain_x;  //  增益设置  ==    x

ADC0MUX  =  0x01;  //  0x08;  检测通道差动配置

if  (ADC0MD  ==  0x80){ADC0MD  =  0x82;};

EIE1  =  0x08;        //  开启  ADC_ISR 

while(AD0BUSY)PCA0CPH2  =  0x0E;  //  喂狗

return(rawValue.result);

}

展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×