📄 filter.c
字号:
#include "hardware.h"
#include "uart.h"
#include "lcd1621.h"
extern ulong ReadCs5460 (uchar command_);
ulong GetCode(void)
{
ulong idata sum1=0;
sum1=ReadCs5460(0x0e);
return (sum1);
}
//去极值平均
ulong GetAvr(void)
{
uchar idata i,j,k,cnt1;
ulong idata data2,temp;
ulong idata data1[10];
for(i=0;i<10;i++)
{
data1[i]=GetCode();
}
for(j=0;j<10;j++)
{
for(k=0;k<10-j;k++)
{
if(data1[k]>data1[k+1])
{
temp=data1[k];
data1[k]=data1[k+1];
data1[k+1]=temp;
}
}
}
for(cnt1=1;cnt1<9;cnt1++)
{
data2+=data1[cnt1];
}
data2/=8;
return data2;
}
//滑动分组滤波
#define N 16
ulong PushOut()
{
ulong idata value_buf[N];
uchar i=0;
uchar count;
ulong sum=0;
value_buf[i++]=GetAvr();
if(i == N)
i = 0;
for( count=0;count<N;count++)
sum += value_buf[count];
sum /= N;
return sum;
}
//得到滤波后AD值
void GetResult()
{
ulong result;
//ulong zzz=0;
result = PushOut();
//result-= 2344;
//result = result*500/2725;
DispResult(result);
ShowK();
//ShowG();
//ShowHi();
Prints("G.W. : ");
PrintResult(result);
Prints(" Kg");
Prints("\r\n");
//PrintEnter();
/*
delay10ms();
xxxz[0] = (result / 65536);
xxxz[1] = (result % 65536 / 256);
xxxz[2] = (result % 256);
Write24c02(xxxz,0x01,3);
delay10ms();
Read24c02(xxxz,0x01,3);
zzz = (xxxz[0]*65536 + xxxz[1]*256 + xxxz[2]);
PrintEnter();
PrintEnter();
PrintResult(zzz);
PrintEnter(); PrintEnter(); PrintEnter();
*/
}
/*
void GetResult(void)
{
ulong idata data_record[8];
ulong idata data_temp[8];
uchar idata i;
uchar idata j;
ulong temp;
ulong temp1;
uchar count;
uchar cnt1;
uchar cnt2;
ulong sum_record=0;
ulong sum_temp=0;
temp=GetAvr(); //取第一个平均值
for(count=0;count<8;count++)
{
temp1=GetAvr();
if(temp1!=temp)
{
data_temp[i++]=temp1; //有变化存临时组
if(i==4) //临时组滑动滤波
{i=0;}
for(cnt1=0;cnt1<4;cnt1++)
sum_temp+=data_temp[cnt1];
DispResult((ulong)(sum_temp/4));
temp1=0;
}
else data_record[j++]=temp1; //无变化存现有组
if(j==4) //现有组滑动滤波
{j=0;}
for(cnt2=0;cnt2<4;cnt2++)
sum_record+=data_record[cnt2];
DispResult((ulong)(sum_record/4));
temp1=0;
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -