性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

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

10種軟件濾波方法的示例程序(JKRL)文章編號(hào):541----加入日期:2003-8-18
      『關(guān)閉窗口』
      10種軟件濾波方法的示例程序(JKRL)

        假定從8位AD中讀取數(shù)據(jù)(如果是更高位的AD可定義數(shù)據(jù)類(lèi)型為int),子程序?yàn)間et_ad();

        1、限副濾波
        /*  A值可根據(jù)實(shí)際情況調(diào)整
            value為有效值,new_value為當(dāng)前采樣值  
            濾波程序返回有效的實(shí)際值  */
        #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值可根據(jù)實(shí)際情況調(diào)整
            排序采用冒泡法*/
        #define N  11

        char filter()
        {
           char value_buf[N];
           char count,i,j,temp;
           for ( count=0;count           {
              value_buf[count] = get_ad();
              delay();
           }
           for (j=0;j           {
              for (i=0;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、算術(shù)平均濾波法
        /*
        */

        #define N 12

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

        4、遞推平均濾波法(又稱(chēng)滑動(dòng)平均濾波法)
        /*
        */
        #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              sum = value_buf[count];
           return (char)(sum/N);
        }

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

        char filter()
        {
           char count,i,j;
           char value_buf[N];
           int  sum=0;
           for  (count=0;count           {
              value_buf[count] = get_ad();
              delay();
           }
           for (j=0;j           {
              for (i=0;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              sum += value[count];
           return (char)(sum/(N-2));
        }

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

        7、一階滯后濾波法
        /* 為加快程序處理速度假定基數(shù)為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、加權(quán)遞推平均濾波法
        /* coe數(shù)組為加權(quán)系數(shù)表,存在程序存儲(chǔ)區(qū).*/

        #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           {
              value_buf[count] = get_ad();
              delay();
           }
           for (count=0,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、限幅消抖濾波法
        /*
        */
        略 參考子程序1、9
全部回復(fù)(11)
正序查看
倒序查看
2005-02-06 00:28
咱沒(méi)人回復(fù)啊!!!
0
回復(fù)
liupingtj
LV.4
3
2005-02-16 09:33
頂!為搞單片機(jī)的同志加油!
0
回復(fù)
sundsp
LV.3
4
2005-02-22 14:29
頂!!!!!!!!!!!!!!!!!
0
回復(fù)
jsbhhqy
LV.5
5
2005-04-07 11:24
@liupingtj
頂!為搞單片機(jī)的同志加油!
哥哥們好樣的,小弟支持你們!!
0
回復(fù)
2005-05-18 12:25
支持!無(wú)私的奉獻(xiàn)  哈
0
回復(fù)
2005-05-21 16:53
相當(dāng)?shù)牟诲e(cuò),多謝樓主分享.支持你.
0
回復(fù)
2005-07-20 21:13
支持,很有實(shí)際意義!
0
回復(fù)
zl8864
LV.6
9
2005-08-21 19:37
10方法用C語(yǔ)言寫(xiě),不如寫(xiě)出10種方案來(lái)讓大家看看,因?yàn)閱纹N類(lèi)太多了,各人用不同的語(yǔ)言來(lái)編著的.我就只會(huì)用匯編語(yǔ)言來(lái)寫(xiě),能用軟件來(lái)濾波是非常好的,如開(kāi)關(guān)電源輸出用了大成本的濾波電抗電容,若能用軟件解決是非常好的,能說(shuō)出方案來(lái)嗎?謝謝
0
回復(fù)
rrrrr1234
LV.3
10
2005-08-22 20:44
@zl8864
10方法用C語(yǔ)言寫(xiě),不如寫(xiě)出10種方案來(lái)讓大家看看,因?yàn)閱纹N類(lèi)太多了,各人用不同的語(yǔ)言來(lái)編著的.我就只會(huì)用匯編語(yǔ)言來(lái)寫(xiě),能用軟件來(lái)濾波是非常好的,如開(kāi)關(guān)電源輸出用了大成本的濾波電抗電容,若能用軟件解決是非常好的,能說(shuō)出方案來(lái)嗎?謝謝
兄弟說(shuō)得太好了,其實(shí)很多時(shí)候我們需要的不是源程序,而是作者的思路,這樣才能真正的提高我們自己的水平!
0
回復(fù)
action19821
LV.3
11
2005-08-25 12:25
非常經(jīng)典的程序
支持
0
回復(fù)
nihaohong
LV.4
12
2005-08-26 12:26
不要太相信軟件濾波,軟件操作都是有滯后的,用硬件濾波可以減少軟件的開(kāi)銷(xiāo).
0
回復(fù)
發(fā)