单片机中常用滤波算法 限幅滤波算法: 将两次相邻的采样值相减,求出其增量的绝对值,与两次采样允许的最大差值A 进行比较。A 的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样值有效;否则取上次采样值做本次采样数据的样本。(用于处理变化缓慢的数据) #define A char data char filter_1() { char data_new; datanew = get_data(); if((datanew – data > A)||(data – datanew > A)) return data; return datanew; } 中值滤波算法: 对某一个参数连续采样N 次(N 为奇),然后排序(从小到大)再取中间值作为本次采样值。(去掉偶然因素引起的波动和采样器不稳定而引起的脉动干扰,要求变化缓慢) #define N 11 char filter_2() { char value_buf[N]; char count , i , j , temp; for(count=0;count value_buf[j]) { 交换两值; } } 算术平均滤波算法: 连续 N 次取样,算术平均,适用于对具有随机干扰的信号进行滤波; char filter_3() { int Sum=0; for(count =0;count