当我在实现这个流动字幕程序时,其中的LCD_ShowString(1,16,"Welcome to Chin")这个语句会因为LCD_ShowString这个自定义函数中循环不同而出现状况。
void main()
{
LCD_Init();
LCD_ShowChar(1,1,'A');
LCD_ShowString(1,3,"Hello");
LCD_ShowNumber(1,9,66,2);
LCD_ShowSignedNumber(1,12,-88,2);
LCD_ShowHexNum(2,1,0xA5,2);
LCD_ShowBinNumber(2,4,0x41,8);
LCD_ShowChar(2,13,0xdf);
LCD_ShowChar(2,14,'C');
LCD_ShowString(1,16,"Welcome to Chin");
while(1){
LCD_WriteCommand(0x18);
delay(500);
}
}
使用for循环时可以正常显示,
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String)
{
unsigned char i;
LCD_SetCursor(Line,Column);
for(i=0;String[i]!='\0';i++)
{
LCD_WriteData(String[i]);
}
}
但是使用while循环时Welcome to China这句变成了工←≡→。
void LCD_ShowString(unsigned char line,unsigned char column,unsigned char string[])
{
unsigned char i;
LCD_SetCursor(line,column);
while(string[i]!='\0'){
LCD_WriteData(string[i]);
i++;
}
}
当我让lcd1682只显示Welcome to Chin时,while循环的情况下又能正常显示,这是为什么。
unsigned char i;
可是 i 是未知數,而不是
unsigned char i = 0;