void LCD_displaychar(unsigned int x,unsigned char y,unsigned char *dat)//X为行,Y为列 { unsigned int address; if(x==0) { x=0x80; }else if(x==1) { x=0x90; }else if(x==2) { x=0x88; }else if(x==3) { x=0x98; } address=x+y; write_cmd(address); while(*dat!='\0') { write_dat(*dat++); } }void DisplayNumber(uchar X, uchar Y, unsigned long number, uchar length) { char array[length + 1]; uchar i; array[length] = 0; for (i = length; i > 0; i--) { array[i - 1] = number % 10 + '0'; number /= 10; } for (i = length; i >= 0; i--) { if (array[i] == '0') { array[i] = ' '; } else { break; } } LCD_displaychar(X, Y, array); } DisplayNumber(1, 1, 0, 7);为啥会出现警告
时间: 2024-04-14 08:26:00 浏览: 30
根据你提供的代码,出现警告的原因是因为你在 `DisplayNumber` 函数中将 `char` 类型的数组 `array` 传递给 `LCD_displaychar` 函数,但是 `LCD_displaychar` 函数参数中的类型是 `unsigned char*`。
警告可能是由于不匹配的类型造成的,可以尝试将 `array` 数组的类型改为 `unsigned char`。
以下是修正后的代码示例:
```c
void DisplayNumber(uchar X, uchar Y, unsigned long number, uchar length)
{
unsigned char array[length + 1];
uchar i;
array[length] = 0;
for (i = length; i > 0; i--)
{
array[i - 1] = number % 10 + '0';
number /= 10;
}
for (i = length; i >= 0; i--)
{
if (array[i] == '0')
{
array[i] = ' ';
}
else
{
break;
}
}
LCD_displaychar(X, Y, array);
}
DisplayNumber(1, 1, 0, 7);
```
通过以上修正,现在应该可以消除警告并正确显示七个零。
如果你还有其他问题,请随时提问。