久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機軟件濾波方法

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年11月29日   【字體:


 10種軟件濾波方法的示例程序

 假定從8位AD中讀取數據(如果是更高位的AD可定義數據類型為int), AD采的返回給 get_ad();函數.

1、限副濾波
/*  A值可根據實際情況調整
    value為有效值,new_value為當前采樣值 
    濾波程序返回有效的實際值  */
#define A 10

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   if ( ( new_value - value > A ) || ( value - new_value > A )
      return value;
   return new_value;
        
}

2、中位值濾波法
/*  N值可根據實際情況調整
    排序采用冒泡法*/
#define N  11

char filter()
{
   char value_buf[N];
   char count,i,j,temp;
   for ( count=0;count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf[i]>value_buf[i+1] )
         {
            temp = value_buf[i];
            value_buf[i] = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   return value_buf[(N-1)/2];
}    

3、算術平均濾波法

#define N 12

char filter()
{
   int  sum = 0;
   for ( count=0;count<N;count++)
   {
      sum + = get_ad();
      delay();
   }
   return (char)(sum/N);
}

4、遞推平均濾波法(又稱滑動平均濾波法)
#define N 12

char value_buf[N];
char i=0;

char filter()
{
   char count;
   int  sum=0;
   value_buf[i++] = get_ad();
   if ( i == N )   i = 0;
   for ( count=0;count<N,count++)
      sum = value_buf[count];
   return (char)(sum/N);
}

5、中位值平均濾波法(又稱防脈沖干擾平均濾波法)
#define N 12

char filter()
{
   char count,i,j;
   char value_buf[N];
   int  sum=0;
   for  (count=0;count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (j=0;j<N-1;j++)
   {
      for (i=0;i<N-j;i++)
      {
         if ( value_buf[i]>value_buf[i+1] )
         {
            temp = value_buf[i];
            value_buf[i] = value_buf[i+1];
             value_buf[i+1] = temp;
         }
      }
   }
   for(count=1;count<N-1;count++)
      sum += value[count];
   return (char)(sum/(N-2));
}

6、限幅平均濾波法
/*
*/ 
略 參考子程序1、3

7、一階滯后濾波法
/* 為加快程序處理速度假定基數為100,a=0~100 */

#define a 50

char value;

char filter()
{
   char  new_value;
   new_value = get_ad();
   return (100-a)*value + a*new_value;
}

8、加權遞推平均濾波法
/* coe數組為加權系數表,存在程序存儲區。*/

#define N 12

char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;

char filter()
{
   char count;
   char value_buf[N];
   int  sum=0;
   for (count=0,count<N;count++)
   {
      value_buf[count] = get_ad();
      delay();
   }
   for (count=0,count<N;count++)
      sum += value_buf[count]*coe[count];
   return (char)(sum/sum_coe);
}

9、消抖濾波法

#define N 12

char filter()
{
   char count=0;
   char new_value;
   new_value = get_ad();
   while (value !=new_value);
   {
      count++;
      if (count>=N)   return new_value;
       delay();
      new_value = get_ad();
   }
   return value;   
}

10、限幅消抖濾波法
/*
*/
 

關閉窗口

相關文章

主站蜘蛛池模板: 激情欧美一区二区三区中文字幕 | 人妖无码 | 成人免费在线观看视频 | 亚洲视频中文字幕 | 亚洲午夜精品久久久久久app | 久久爆操 | 国产免费观看一区 | 一区二区在线不卡 | 中文字幕一区二区三区精彩视频 | 91精品国产综合久久久久 | 国产一区二区精品在线观看 | 久久久久久久久99精品 | 日韩精品1区2区3区 成人黄页在线观看 | 精品欧美一区二区三区 | 日韩精品亚洲专区在线观看 | 亚洲成人免费av | 亚洲激情一级片 | 久久精品亚洲欧美日韩久久 | 成人亚洲网站 | 国产在线播 | 久久免费精彩视频 | 一区二区三区在线免费观看 | 亚洲网在线 | 成人在线h | 亚洲精品影院 | 韩日一区二区 | 欧美不卡视频一区发布 | 国产性网 | 日本久久久久久 | 国产精品亚洲精品日韩已方 | 日韩中文字幕在线观看 | 亚洲国产一区视频 | 久久99精品久久久久久国产越南 | 日日操夜夜操天天操 | 天天搞天天操 | 亚洲一区在线播放 | 久久69精品久久久久久久电影好 | 亚洲欧洲视频 | 日韩av啪啪网站大全免费观看 | 婷婷国产一区 | 成人在线一区二区 |