0

我无法使用这些函数将整数写入 LCD :S 它在屏幕上显示了一些奇怪的东西我刚刚添加了下面的函数!!!请帮我检查一下我添加了所有需要的东西

    my_delay(1000);
        LCDWriteStringXY(0,0,"Welcome..");
        my_delay(1000);
        LCDWriteStringXY(0,0,"Welcome...");
        my_delay(1000);
            LCDClear();
            LCDWriteStringXY(4,0,"Testing");
            LCDGotoXY(2,1);

            int m=952520;
            LCDWriteInt(m,6);//I can not write it!!!

void LCDWriteInt(int val,unsigned int field_length)
{


    char str[5]={0,0,0,0,0};
    int i=4,j=0;
    while(val)
    {
    str[i]=val%10;
    val=val/10;
    i--;
    }
    if(field_length==-1)
        while(str[j]==0) j++;
    else
        j=5-field_length;

    if(val<0) LCDData('-');
    for(i=j;i<5;i++)
    {
    LCDData(48+str[i]);
    }
}
4

2 回答 2

1

我认为该函数是为 16 位整数编写的,其最大值为 65535(5 位 - 与 str[] 的长度相同)。你给它 6 位数的值,当它试图写入 str[5] 时,它首先超出字符串,然后产生 j = -1。

我的建议是要么使用较小的整数(仅限 16 位),要么编写另一个函数,就像你向我们展示的那样,对更大的值做同样的事情。

最后,我不知道 if(val<0) LCDData('-') 是否真的会正常工作,因为您在第一个 while 循环中覆盖了 'val'。

于 2013-04-17T17:33:49.283 回答
0

使用 itoa 函数。这将帮助您将整数转换为字符串并在液晶显示器上显示。祝你好运!

于 2014-08-31T14:31:23.213 回答