⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.lst

📁 Keil c工程
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   03/16/2004 21:21:41 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\out\LCD.obj
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE c\LCD.C BROWSE INTVECTOR(0XC000) DEBUG OBJECTEXTEND PRINT(.\l
                    -st\LCD.lst) OBJECT(.\out\LCD.obj)

stmt level    source

   1          
   2          #ifdef HY_12864B
              
              #include "..\h\globle.h"
              #include "..\h\lcd.h"
              
              extern void RESET(void);
              extern void INITIAL(void);
              extern void CLEARPAGE(byte);
              extern void ROLL(byte);
              extern void CHAR_PR(byte,byte,byte); 
              
              byte        PROMPT_X;                   //当前光标横坐标
              byte            PROMPT_Y;                       //当前光标纵坐标(0-7)
              byte        V_PROMPT_Y;         //虚拟当前光标纵坐标(0--0xff)
              //word      V_PROMPT_Y;         //虚拟当前光标纵坐标(0--0xffff)
              
              byte    BACKSPACECODE;
              
              byte            CHAR_WIDTH=16;          //输出字符的宽度
              byte            CHAR_HEIGHTH=16;                //输出字符的高度
              
              /*
              void LcdReset(void)
              {
              RESET();
              }
              */
              
              void LcdInit(void)
              {
              INITIAL();
              PROMPT_X=0;
              PROMPT_Y=0;
              V_PROMPT_Y=0;
              }
              
              void LcdClearLine(byte line)
              {
              CLEARPAGE(line);
              }
              
              void LcdClearAll(void)
              {
              byte i;
              for(i=0;i<8;i++)
              CLEARPAGE(i);
              }
              
              void LcdRoll(byte pixels)                                               //每次卷动pixels像素
              {
              
              ROLL(PROMPT_Y*8+pixels);
              }
C51 COMPILER V7.06   LCD                                                                   03/16/2004 21:21:41 PAGE 2   

              
              byte LcdPutOne(byte x,byte y,byte code0)                //输出一个字符,(x,y)为坐标,y是行号
              {
              
              CHAR_PR(x,y,code0);
              
              return(code0);
              }
              
              void NextLine(void)
              {
              byte  i,line;
              line=CHAR_HEIGHTH/8;
              
                              PROMPT_X=0;
                              V_PROMPT_Y+=line;
                              PROMPT_Y+=line;
                              if(PROMPT_Y>=TOTAL_PAGES)  PROMPT_Y-=8;
                              if(V_PROMPT_Y>=TOTAL_PAGES)
                      {
                                      LcdRoll(CHAR_HEIGHTH);                  //如果超出范围则自动卷动屏幕
                                  for(i=0;i<line;i++)
                                      LcdClearLine(PROMPT_Y+i);               //并将不应该出现的行清楚
                              }
              
              }
              
              void BackSpace(void)
              {
              PROMPT_X-=CHAR_WIDTH;
              if(PROMPT_X>=0x80) PROMPT_X=0;          //只能在本行有效
                                              
              LcdPutOne(PROMPT_X,PROMPT_Y,BACKSPACECODE);
              }
              
              /*
              void SuperBackSpace(void)
              {
              byte k;
              
              PROMPT_X-=CHAR_WIDTH;
              if(PROMPT_X>=0x80) 
                      {                       
                  k=V_PROMPT_Y;               //此段代替上一行代码,可以清除上一行显示,不建议使用
                      V_PROMPT_Y-=CHAR_HEIGHTH/8;                             
                      if(k<V_PROMPT_Y) V_PROMPT_Y=k;
                      PROMPT_Y=V_PROMPT_Y%8;
                  }                           
              LcdPutOne(PROMPT_X,PROMPT_Y,BACKSPACECODE);
              }
              */
              
              byte LcdPutChar(byte charcode)
              {
              
              if(charcode==LR ) NextLine();                                           //遇到回车符则换行
              else
                {
                       if(charcode<0x40)              {CHAR_WIDTH=8;CHAR_HEIGHTH=16;BACKSPACECODE=BACKSPACECODE8_16;} 
                       else if(charcode<0x80) {CHAR_WIDTH=6;CHAR_HEIGHTH=8;BACKSPACECODE=BACKSPACECODE8_8;} //CHAR_WIDTH=8;
                       else if(charcode<0xd0) {CHAR_WIDTH=16;CHAR_HEIGHTH=16;BACKSPACECODE=BACKSPACECODE16_16;}
                       else if(charcode<0xe0) {CHAR_WIDTH=24;CHAR_HEIGHTH=24;BACKSPACECODE=0xdf;}
C51 COMPILER V7.06   LCD                                                                   03/16/2004 21:21:41 PAGE 3   

                       else if(charcode<0xf0) {CHAR_WIDTH=32;CHAR_HEIGHTH=32;BACKSPACECODE=0xef;}
                       else if(charcode<0xfd) {CHAR_WIDTH=12;CHAR_HEIGHTH=16;BACKSPACECODE=BACKSPACECODE12_16;}
                   //else 
               
                       if(charcode==BACKSPACE) BackSpace();                           //退一格
                       else
                         {
                                if((PROMPT_X+CHAR_WIDTH)>TOTAL_X_PIXELS) NextLine();  //如果右边超出显示范围则从下一行显示,或卷页 
                                 LcdPutOne(PROMPT_X,PROMPT_Y,charcode);
                              PROMPT_X+=CHAR_WIDTH;
                     }//else BACKSPACE
              
                 }//else  LR
              return(charcode);
              }
              
              void Display(byte *string)                      //从当前坐标处开始输出字符串,具有自动换行、退格功能,能够自动卷动屏幕          
              {
              byte i=0;
              byte charcode;
              
              while((charcode=*(string+i))!=STRING_END) 
                  {
                  LcdPutChar(charcode);
                      i++;
                      
                 }            //while
              
              }
              
              
              void DisplayNumber(word number)         //number为要显示的数字
              {
              byte NumDisplay[5];
              byte i,*string;
              bit rtn=0;
              
                      NumDisplay[0]=number/10000;                     //最高位
                      number-=NumDisplay[0]*10000;
              
                      NumDisplay[1]=number/1000;
                      number-=NumDisplay[1]*1000;
              
                      NumDisplay[2]=number/100;
                      number-=NumDisplay[2]*100;
              
                      NumDisplay[3]=number/10;
                      number-=NumDisplay[3]*10;
              
                      NumDisplay[4]=number;
              
                      string=NumDisplay;
                      
              for(i=0;(i<5)&&(rtn==0);i++)                    //寻找第一个不为0的数字位置//保证至少输出一个数字
                      {
                       if(*(string+i)!=0) rtn=1;
                              
                      }
              
              
              for(i-=1;i<5;i++)
                      {
C51 COMPILER V7.06   LCD                                                                   03/16/2004 21:21:41 PAGE 4   

                        LcdPutChar(*(string+i));
                  }
              
              }
              
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   ----    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -