|
(1)算术平均滤波程序,调用读取数据子函数get_ad()。
#define N 12
#define uchar unsigned char
/********************************
函数名称: uchar filter()
功能 :算术平均滤波程序
入口参数:无
返回值 :sum/N
********************************/
uchar filter()
{
int sum = 0;
for (count=0; count<N; count++)
{
sum + = get ad ();
delay (); //调用延时子程序
}
return (char)(sum/N);
}
(2) 程序判断滤波程序,调用读取数据子程序get_ad()。
#define A 10
char value;
/********************************
函数名称: char filter ()
功能 :程序判断滤波程序
说明 :A值可根据实际情况调整,value为有效值,new_value为当前采样值,滤波程序返回有效的
实际值
入口参数:无
返回值 :value or new_value
********************************/
char filter ()
{
char new_value;
new_value = get_ad();
if ((new_value - value > A ) || ( value - new_value > A )
return( value);
return (new_value);
}
(3) 滑动平均滤波法C语言程序, 调用读取数据子程序get_ad()。
#define N 12
char value_buf[N];
char i=0;
/********************************
函数名称: char filter ()
功能 :滑动平均滤波法C语言程序
入口参数:无
返回值 :sum/N
********************************/
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);
}
(4)中值平均滤波法C语言程序,调用读取数据子函数get_ad()。
#define N 12
/********************************
函数名称: char filter ()
功能 :中值平均滤波法C语言程序
入口参数:无
返回值 :sum/(N-2)
********************************/
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>value_buf[i+1] )
{
temp = value_buf;
value_buf = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
for(count=1;count<N-1;count++)
sum += value[count];
return (char)(sum/(N-2));
}
(5)中位值滤波法,N值可根据实际情况调整,排序采用冒泡法。
#define N 11
/********************************
函数名称: char filter ()
功能 :中位值滤波法C语言程序
入口参数:无
返回值 :alue_buf((N-1)/2)
********************************/
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);
}
|
|