⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filter.c

📁 在STC51上开发的一个电子称程序 KEILUV3环境开发
💻 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 + -