平均滤波函数c语言单片机,单片机常用函数(滤波、字符处理等)

//函数名: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://www.eepw.com.cn/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] =\0;//加上字符串结束标志

p=str+iSize-1;//将P指针指向字符串结束标志之前

for(;p-s>0;p--,s++)//将字符串中存储的数调头

{

*s^=*p;

*p^=*s;

*s^=*p;

}

// 返回指针字符串大小

return iSize;

}

//==============================End ftostr===========================================

//==============================Start itostr=========================================

/*

// 函数名:itostr

// 输入参数:待转换数字,存放字符串

// 描述:将整型数据转换为字符串

// 返回值:字符串大小

*/

//===================================================================================

int itostr(int iNum,char str[])

{

int iSize=0;

char isnegative=0;

char *p=str;//做换向时用的指针

char *s=str;//做换向时用的指针

if(iNum<0)

{

isnegative=1;

iNum=0-iNum;

}

if(iNum==0)

str[iSize++]=0;

while(iNum>0)

{

str[iSize++]=iNum%10+0;//对10取余并变为ASCII码

iNum=iNum/10;//对10取商

}

if(isnegative)

str[iSize++]=-;

str[iSize]=\0;

p=str+iSize-1;//将P指针指向字符串结束标志之前

for(;p-s>0;p--,s++)//将字符串中存储的数调头

{

*s^=*p;

*p^=*s;

*s^=*p;

}

// 返回指针字符串大小

return iSize;

}

//==============================End itostr===========================================

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值