我不能使用这些函数将整数写入LCD:它在屏幕上显示奇怪的东西 我刚刚添加了下面的功能!请检查一下 我添加了所需的一切
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]);
}
}
答案 0 :(得分:1)
我认为该函数是为16位整数编写的,其最大值为65535(5位 - 与str []的长度相同)。你给它6位数值,当它尝试写入str [5]时首先超出字符串,然后产生j = -1。
我的建议是使用较小的整数(仅限16位),或者编写另一个函数,就像你向我们展示的函数一样,为更大的值做同样的事情。
最后,我不知道if(val&lt; 0)LCDData(&#39; - &#39;)是否真的能够正常工作,因为你覆盖了&#39; val&#39;在第一个while循环中。
答案 1 :(得分:0)
使用itoa功能。这将帮助您将整数转换为字符串并在lcd上显示。祝你好运!