1 //1.限幅滤波法(又称程序判断滤波法)
2 /*
3 * description: 根据经验判断,确定两次采样允许的最大偏差值(设为A),4 * 每次检测到新值时判断:新值和旧值差值如果超过A,5 * 则用旧值,否则用新值6 * advantage: 能够克服因偶然因素引起的脉冲干扰7 * disadvantage: 无法抑制那种周期性的干扰,平滑度差8 */
9 /*A值可根据实际情况调整10 value为有效值,new_value为当前采样值11 滤波程序返回有效的实际值*/
12 #define A 10
13
14 charvalue;15
16 charfilter()17 {18 charnew_value;19 new_value =get_ad();20 if ( ( new_value - value > A ) || ( value - new_value >A )21 returnvalue;22 returnnew_value;23
24 }25
26
27 //2.中位值滤波法
28 /*
29 * description: 连续采样N次(N取奇数),把N次采样值按大小排列,30 * 取中间值为本次有效值31 * advantage: 能够有效克服偶然因素引起的波动干扰,32 * 对温度、液位等变化缓慢的被测参数有良好的滤波效果33 * disadvantage: 对流量、速度等快速变化的参数不宜34 */
35 /*N值可根据实际情况调整36 排序采用冒泡法*/
37 #define N 11
38
39 charfilter()40 {41 charvalue_buf[N];42 charcount,i,j,temp;43 for (