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

📄 filter.c

📁 这是运行在AVR 单片机 mega48上的一个温度测量程序
💻 C
字号:
#include"main.h"
#include"filter.h"



uint   filter(uint  tem)
{   
  	static  uint     dat[10]            ;
  	static  uint     sum  , average     ;
  	static  uint     big1 ,big2         ;
	static  uchar    i , j              ;
	static  uint     value              ;
	j += 1       ;
	if(j >= 20)
	  	j = 20   ;
	if(abs(tem - average) >5 && j >= 15)
	  	tem = average ;
//	else
//	{	
	  	value = tem ;
		big1   = dat[9] ;
		dat[9] = dat[8] ;
		dat[8] = dat[7] ;
		dat[7] = dat[6] ;
		dat[6] = dat[5] ;
		dat[5] = dat[4] ;
		dat[4] = dat[3] ;
		dat[3] = dat[2] ;
		dat[2] = dat[1] ;
		dat[1] = dat[0] ;
		dat[0] = value ;
//	}
	
	for(i = 9; i < 10; i --)        //选出最大的一个  
	{
		if(dat[i] > big1)
		{
			big1 = dat[i] ;
			big2 = i ;
		}
	}
	
	sum = dat[9] + dat[8] +dat[7] +dat[6] +dat[5] +dat[4] +dat[3] +dat[2] +dat[1] +dat[0] - dat[big2];
	average = sum/9 ;
	return (average) ;	

}


		  	
		
/*
        j += 1 ;
		if(j >11)
			j = 12 ;
		big1   = dat[9] ;
		dat[9] = dat[8] ;
		dat[8] = dat[7] ;
		dat[7] = dat[6] ;
		dat[6] = dat[5] ;
		dat[5] = dat[4] ;
		dat[4] = dat[3] ;
		dat[3] = dat[2] ;
		dat[2] = dat[1] ;
		dat[1] = dat[0] ;
		dat[0] = temp ;
	
	//	display(data_ykong ) ;
		for(m = 9;  m < 10  ; m --)  
		{
			if(dat[m] > big1)
			{
			  	big1 = dat[m] ;
				big2 = m ;
			}
		}
		if(j >11)   
		{
			j = 12 ;
			sum1 = dat[9] + dat[8] +dat[7] +dat[6] +dat[5] +dat[4] +dat[3] +dat[2] +dat[1] +dat[0] - dat[big2];
			average1 = sum1 / 9 ;
	//		average1 = 1;
			for(i = 0 ; i<10 ;i++ )  
			{
				if( (dat[i] - average1 ) > 20 )
				{
					dat[i] = average1 ;
				}
				
			}
			sum2 = dat[9] + dat[8] +dat[7] +dat[6] +dat[5] +dat[4] +dat[3] +dat[2] +dat[1] +dat[0] - dat[big2];
			average2 = sum2 / 9 ;
*/				
		


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -