【问题标题】:I want to print a multidimensional char array on an lcd in c51 (Keil)我想在 c51 (Keil) 的液晶显示器上打印一个多维字符数组
【发布时间】:2014-03-02 13:17:12
【问题描述】:

(数组初始化为一堆字符)

当我使数组变大时,我也收到一条错误消息“数据段太大”。如何将数组从“CODE”复制到“XDATA”?还是这不是问题?

编辑:另外,当我以这种方式调用函数时,lcd 会跳过数组中的元素 [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    
}

【问题讨论】:

    标签: c multidimensional-array lcd keil c51


    【解决方案1】:

    我认为问题是由于 char * ptr2.try unsigned char * 代替 char *

    【讨论】:

      【解决方案2】:

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

      unsigned char xdata variable;
      

      编辑:另外,当我以这种方式调用函数时,lcd 会跳过数组中的元素 [i] [] 并打印下一个元素 [i]。

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

      【讨论】:

        猜你喜欢
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 2016-11-28
        • 2022-11-16
        • 1970-01-01
        • 1970-01-01
        • 2019-10-24
        • 1970-01-01
        相关资源
        最近更新 更多