假定从
8
位
AD
中读取数据(如果是更高位的
AD
可定义数据类型为
int
)
,
子程序为
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
{
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
、算术平均滤波法