PIC MICROs:如何在单独的字符数组中转换浮点值

PIC MICROs : How to convert a float in separate characters array?

本文关键字:数组 转换 字符 MICROs 单独 PIC      更新时间:2023-10-16

我从ADC读取和转换中得到一个浮点var,我需要在7段显示器中单独显示数字,这就是为什么我需要单独显示数字。

浮动var=12.34;//我需要一种转换的方法

int rb[1,2,3,4];//进入这个

如果是int,那么使用divisions和mod会很容易,但我认为这必须是一种更优雅的方式。不是吗?

欢迎任何帮助。

感谢收看

首先,您需要将浮点转换为字符串,因为您没有告诉我们使用的是哪种编译器,我假设是C30,这里有ftoa的代码(将浮点转换成字符串)。如果你正在使用另一个像C18这样的编译器,看看他们的论坛,有很多实现(或者只是将一个转换为C30)。

unsigned char floatAsString[32];
ftoa(var, floatAsString);

接下来,你需要创建你的数组,你需要检查浮点是否有小数,或者是否跳过小数点:

int len;
if((int)var == var)
    len = strlen(floatAsString);
else
    len = strlen(floatAsString) - 1;

然后,最后可以填充一个int数组;

int theArray[len];
unsigned char tmpBuffer[2];
tmpBuffer[1] = '';
int j;
int i;
unsigned char foundDot;
for(j = 0; j < len; j++)
{
    if(foundDot)
        i = j - 1;
    else
        i = j;
    unsigned char theChar = floatAsString[j];
    if(theChar == '.')
    {
        foundDot = 1;
        continue;
    }
    tmpBuffer[0] = theChar;
    theArray[i] = atoi(tmpBuffer);
}