久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機常用函數(濾波、字符處理等)

單片機常用函數(濾波、字符處理等)

作者: 時間:2016-11-18 來源:網絡 收藏

//函數名:filter
//功能描述:平均值濾波
//輸入參數:
//int iput:要濾波的數據
//int buf[]:濾波緩存數組指針
//uint *count:濾波計數器指針
//uint lenght:濾波深度
//long int *sum:緩存數組中所有數據的和指針
//返回值:濾波后的平均值
//==================================================================================
int filter(int iput,int buf[],uint *count,uint lenght,long int *sum)
{
int a=0;
int adtemp=0;
adtemp = buf[lenght-1];
for (a=lenght-1;a>0;a--)
{
buf[a]=buf[a-1];
}
buf[0]=iput;
if (*count*count=*count+1;
*sum=*sum+iput-adtemp;
return (int)(*sum/(*count));
}
//==============================End filter==========================================

本文引用地址:http://cqxgywz.com/article/201611/315879.htm

//==============================Start ftostr=========================================
/*
// 函數名:ftostr
// 輸入參數:待轉換數字,存放字符串,浮點小數后邊位數
// 描述:將浮點型數據轉換為字符串
// 返回值:字符串大小
*/
//===================================================================================
int ftostr(float fNum,char str[],int dotsize)
{
// 定義變量
int iSize=0;//記錄字符串長度的數
int n=0;//用作循環的臨時變量
char *p=str;//做換向時用的指針
char *s=str;//做換向時用的指針
char isnegative=0;//負數標志
unsigned long int i_predot;//小數點前的數
unsigned long int i_afterdot;//小數點后的數
float f_afterdot;//實數型的小數部分

//判斷是否為負數
if(fNum<0)
{
isnegative=1;//設置負數標志
fNum=0-fNum;//將負數變為正數
}

i_predot=(unsigned long int)fNum;//將小數點之前的數變為整數
f_afterdot=fNum-i_predot;//單獨取出小數點之后的數
//根據設定的要保存的小數點后的位數,將小數點后相應的位數變到小數點之前
for(n=dotsize;n>0;n--)
{
f_afterdot=f_afterdot*10;
}
i_afterdot=(unsigned long int)f_afterdot;//將小數點后相應位數的數字變為整數

//先將小數點后的數轉換為字符串
n=dotsize;
while(i_afterdot>0|n>0)
{
n--;
str[iSize++]=i_afterdot%10+0;//對10取余并變為ASCII碼
i_afterdot=i_afterdot/10;//對10取商
}
str[iSize++] =.;//加上小數點
//處理小數點前為0的情況。
if(i_predot==0)
str[iSize++]=0;
//再將小數點前的數轉換為字符串
while(i_predot>0)
{
str[iSize++]=i_predot%10+0;//對10取余并變為ASCII碼
i_predot=i_predot/10;//對10取商
}

if(isnegative==1)
str[iSize++]=-;//如果是負數,則在最后加上負號
str[iSize] =