您的位置 首页 技术

单片机常用函数(滤波、字符处理等)

//函数名:filter//功能描述:平均值滤波//输入参数://intiput:要滤波的数据//intbuf[]:滤波缓存数组指针//uint*count:滤波计数器指…


//函数名: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==========================================

//==============================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===========================================

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/266844.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部