C-我想在C51(KEIL)的LCD上打印一个多维字符阵列



(阵列用一堆字符进行了调整)

当我使数组更大时,我也会遇到一个错误。如何将数组从"代码"复制到" XDATA"?还是这不是问题?

编辑:另外,当我以这种方式调用功能时,lcd element [i] []在数组中并打印下一个元素[i]。

任何帮助我都会非常感谢。

  unsigned char piece [4] [8];   
  lcd_msg_write(piece[0]);  //rank     
  lcd_write(SecondLine);    
  lcd_msg_write(piece[1]);    
  lcd_write(SecondLine);    
  lcd_msg_write(piece[2]);  
  lcd_write(SecondLine);    
  lcd_msg_write(piece[3]);    
  lcd_write(SecondLine);
void lcd_msg_write(char * ptr2) 
{ 
   int x; 
   RS = 1;    
   for (x=0; x<8;x++)    
        lcd_write(*ptr2++);    //write till end of string reached 
   RS = 0;   
}
void lcd_write(unsigned char display_data)//LCD 1 {    
   EN = 1;    
   P0 = display_data;    
   EN = 0;    
   delay_5msec();   //delay to allow write operation to complete    
}

您可以将变量像这样放置到XDATA:

unsigned char xdata variable;

编辑:另外,当我以这种方式调用功能时,lcd element [i] []在数组中并打印下一个元素[i]。

如果我正确理解它,我想您的数组中有一些值,这就是为什么它可以跳过它。如果您显示实际输出(文本形式),我可以告诉您更多信息。但是至于代码正确性,一切都可以。它也可以是LCD的角色表,因此您写出一些不正确的字符,而LCD不支持或知道。

我认为问题是由于char * ptr2引起的。

最新更新