您的位置:首页 > 其它

工程应用标准示范程序:将一个ADC采样值转换为ASCII码

2017-06-03 16:27 253 查看
// 将一个采样值,由指数表示的数转换为ASCII码,并输出ASCII码及字符的长度。如:2252*10^(-2)  输出为22.52  5位

// 这个函数是不能测负数的。

/******************************************************************************

*函数功能:

*   NumToAscii: 将输入数转换为10进制表示的ASCII码。

*参数列表:

*   Exponent: 输入数的10的指数。

*   Number: ASCII码长度,即字符串长度。

*   Buffer: 缓存区。

*内部变量:

*   jx:

*   ix:

*   ArrayTemp[8]:

*   NumberTemp:

*函数返回值:

*   No: 转换后的位数。

short 为2字节,16位,表示范围为-32767 -- 32767  (32位)

*******************************************************************************/

#include <stdio.h>

unsigned char NumToAscii(short Number,char Exponent,unsigned char *Buffer);

int main()

{

unsigned char array[255] = {0};

unsigned char result = 0;

result = NumToAscii(240,-1,array);

printf("%d\n",result);  /* char length*/

printf("%s\n",array);

return 0;

}

unsigned char NumToAscii(short Number,char Exponent,unsigned char *Buffer)

{

unsigned char No = 0;

char jx = 0,ix;

unsigned char ArrayTemp[8];

unsigned int NumberTemp;

if((Number==0)||(Number!=0 && Exponent<-6))

{

*Buffer='0';

No=1;

}

else

{

NumberTemp=(unsigned int)Number;

for(ix = 0; ix < Exponent; ix++)

{

if(NumberTemp <= 9999999)

NumberTemp = NumberTemp * 10;

else

NumberTemp = 99999999;

}

while (NumberTemp > 0 || Exponent < 0)

{

ix = NumberTemp%10;

NumberTemp = NumberTemp/10;

ArrayTemp[jx] = ix + 0x30; // 0--9 的ASCII码是48 -- 57 ;在,而0x30 = 48

jx++;

Exponent++;

if(Exponent == 0)

{

ArrayTemp[jx] = '.';

jx++;

if(NumberTemp == 0)

{

ArrayTemp[jx] = '0';

jx++;

}

}

}

No = 0;

jx--;

while (jx >= 0)

{

*(Buffer + No) = ArrayTemp[jx];

No++;

jx--;

}

}

return(No);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ARM 应用 ascii
相关文章推荐