新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)常用函數(shù)(濾波、字符處理等)

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

        作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏

        //函數(shù)名:filter
        //功能描述:平均值濾波
        //輸入?yún)?shù):
        //int iput:要濾波的數(shù)據(jù)
        //int buf[]:濾波緩存數(shù)組指針
        //uint *count:濾波計(jì)數(shù)器指針
        //uint lenght:濾波深度
        //long int *sum:緩存數(shù)組中所有數(shù)據(jù)的和指針
        //返回值:濾波后的平均值
        //==================================================================================
        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.104case.com/article/201611/315879.htm

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

        //判斷是否為負(fù)數(shù)
        if(fNum<0)
        {
        isnegative=1;//設(shè)置負(fù)數(shù)標(biāo)志
        fNum=0-fNum;//將負(fù)數(shù)變?yōu)檎龜?shù)
        }

        i_predot=(unsigned long int)fNum;//將小數(shù)點(diǎn)之前的數(shù)變?yōu)檎麛?shù)
        f_afterdot=fNum-i_predot;//單獨(dú)取出小數(shù)點(diǎn)之后的數(shù)
        //根據(jù)設(shè)定的要保存的小數(shù)點(diǎn)后的位數(shù),將小數(shù)點(diǎn)后相應(yīng)的位數(shù)變到小數(shù)點(diǎn)之前
        for(n=dotsize;n>0;n--)
        {
        f_afterdot=f_afterdot*10;
        }
        i_afterdot=(unsigned long int)f_afterdot;//將小數(shù)點(diǎn)后相應(yīng)位數(shù)的數(shù)字變?yōu)檎麛?shù)

        //先將小數(shù)點(diǎn)后的數(shù)轉(zhuǎn)換為字符串
        n=dotsize;
        while(i_afterdot>0|n>0)
        {
        n--;
        str[iSize++]=i_afterdot%10+0;//對(duì)10取余并變?yōu)锳SCII碼
        i_afterdot=i_afterdot/10;//對(duì)10取商
        }
        str[iSize++] =.;//加上小數(shù)點(diǎn)
        //處理小數(shù)點(diǎn)前為0的情況。
        if(i_predot==0)
        str[iSize++]=0;
        //再將小數(shù)點(diǎn)前的數(shù)轉(zhuǎn)換為字符串
        while(i_predot>0)
        {
        str[iSize++]=i_predot%10+0;//對(duì)10取余并變?yōu)锳SCII碼
        i_predot=i_predot/10;//對(duì)10取商
        }

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

        主站蜘蛛池模板: 钟山县| 五家渠市| 江都市| 德格县| 申扎县| 全椒县| 丹凤县| 天津市| 金沙县| 秦安县| 广丰县| 监利县| 连江县| 将乐县| 兰溪市| 昌乐县| 鞍山市| 鄂尔多斯市| 张家口市| 本溪| 富宁县| 富阳市| 仙居县| 黑水县| 怀远县| 大理市| 休宁县| 武威市| 菏泽市| 涿州市| 海南省| 丹凤县| 调兵山市| 岑溪市| 岳普湖县| 黑山县| 濮阳市| 玛多县| 宁武县| 宁夏| 阳泉市|