AD采样的平均值滤波

基本问题:单片机ad采样,连续采样十次,对这十次数据取平均值。

注意:最开始的一次就是用当次的数据,以后每更新一个数据就取当前数据加上前九个数据,取平均。

先看代码:

static int _filter(int m)
{
  static int flag_first = 0, _buff[10], sum;
  const int _buff_max = 10;
  int i;
  
  if(flag_first == 0)
  {
    flag_first = 1;

    for(i = 0, sum = 0; i < _buff_max; i++)
    {
      _buff[i] = m;
      sum += _buff[i];
    }
    return m;
  }
  else
  {
    sum -= _buff[0];
    for(i = 0; i < (_buff_max - 1); i++)
    {
      _buff[i] = _buff[i + 1];
    }
    _buff[9] = m;
    sum += _buff[9];
    
    i = sum / 10.0;
    return i;
  }
}

前九次(不足十个数据),用第一个数据补。  

 

posted @ 2017-05-31 20:13  ->大胖子  阅读(3324)  评论(0编辑  收藏  举报