lcd12864.lst

来自「点阵LCD显示应用,LCD12864驱动程序的演示程序」· LST 代码 · 共 204 行

LST
204
字号
C51 COMPILER V8.05a   LCD12864                                                             08/24/2007 15:13:14 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\LCD12864.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\LCD1
                    -2864.lst) OBJECT(LCD12864.obj)

line level    source

   1          //*************************************************************************************************
   2          //*                                                                                                                                                                                               *
   3          //*                      ******************************LCD12864驱动程序**************************                         *
   4          //*                                                                                                                                                                                               *
   5          //*************************************************************************************************
   6          
   7          //*************************************************************************************************
   8          //*                                                                                                                                                                                               *
   9          //*                      ******************************头文件及宏定义**************************                           *
  10          //*                                                                                                                                                                                               *
  11          //*************************************************************************************************
  12          #include <at89x51.h>
  13          
  14          #define RST P2_0
  15          #define E P2_1
  16          #define RW P2_2
  17          #define DI P2_3
  18          #define CS1 P2_5
  19          #define CS2     P2_4
  20          #define LCDPORT P0
  21          
  22          
  23          #define BUSYSTATUS P0_7                           //忙状态位。
  24          //#define DISONSTATUS P0_5                        //显示开关状态位。
  25          //#define RSTSTATUS P0_4                          //复位状态位。
  26          
  27          
  28          #define LCDSTARTROW 0xC0                          //设置起始行指令。
  29          #define LCDPAGE 0xB8                              //设置页指令。
  30          #define LCDLINE 0x40                              //设置列指令。
  31          
  32          
  33          
  34          //*************************************************************************************************
  35          //*                                                                                                                                                                                               *
  36          //*                      ********************************读忙标志位*********************************              *
  37          //*                                                                                                                                                                                               *
  38          //*************************************************************************************************
  39          bit bCheckBusy()
  40          {
  41   1              LCDPORT=0xFF;
  42   1              RW=1;
  43   1              DI=0;
  44   1              E=1;
  45   1              E=0;
  46   1              return BUSYSTATUS; 
  47   1      }
  48          
  49          //*************************************************************************************************
  50          //*                                                                                                                                                                                               *
  51          //*                      ********************************控制器选择*********************************              *
  52          //*                                                                                                                                                                                               *
  53          //*************************************************************************************************
  54          void vChipSelect(unsigned char ucCS1,unsigned char ucCS2)
C51 COMPILER V8.05a   LCD12864                                                             08/24/2007 15:13:14 PAGE 2   

  55          {
  56   1              CS1=ucCS1;
  57   1              CS2=ucCS2;
  58   1      }
  59          
  60          //*************************************************************************************************
  61          //*                                                                                                                                                                                               *
  62          //*                      ********************************写数据*********************************                          *
  63          //*                                                                                                                                                                                               *
  64          //*************************************************************************************************
  65          void vWriteData(unsigned char ucData)
  66          {
  67   1              while(bCheckBusy());
  68   1              LCDPORT=0xFF;
  69   1      
  70   1              RW=0;
  71   1              DI=1;
  72   1              LCDPORT=ucData;
  73   1              E=1;
  74   1              E=0;
  75   1      }
  76          
  77          //*************************************************************************************************
  78          //*                                                                                                                                                                                               *
  79          //*                      ********************************写指令*********************************                          *
  80          //*                                                                                                                                                                                               *
  81          //*************************************************************************************************
  82          void vWriteCMD(unsigned char ucCMD)
  83          {
  84   1              while(bCheckBusy());
  85   1              LCDPORT=0xFF;
  86   1      
  87   1              RW=0;
  88   1              DI=0;
  89   1              LCDPORT=ucCMD;
  90   1              E=1;
  91   1              E=0;
  92   1      }
  93          
  94          //*************************************************************************************************
  95          //*                                                                                                                                                                                               *
  96          //*                      ********************************指令辅助函数*********************************            *
  97          //*                                                                                                                                                                                               *
  98          //*************************************************************************************************
  99          
 100          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 101          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<LCD初始化函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 102          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 103          void vLCDInitialize()
 104          {
 105   1              CS1=1;
 106   1              CS2=1;
 107   1              vWriteCMD(0x38);                //8位形式,两行字符。
 108   1              vWriteCMD(0x0F);                //开显示。
 109   1              vWriteCMD(0x01);                //清屏。
 110   1              vWriteCMD(0x06);                //画面不动,光标右移。
 111   1      }
 112          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 113          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置起始行>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 114          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 115          void vSetStartRow(unsigned char ucStartRow)
 116          {
C51 COMPILER V8.05a   LCD12864                                                             08/24/2007 15:13:14 PAGE 3   

 117   1              vWriteCMD(LCDSTARTROW+ucStartRow);
 118   1      }
 119          
 120          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 121          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置页>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 122          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 123          void vSetPage(unsigned char ucPage)
 124          {
 125   1              vWriteCMD(LCDPAGE+ucPage);
 126   1      }
 127          
 128          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 129          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置列>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 130          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 131          void vSetLine(unsigned char ucLine)
 132          {
 133   1              vWriteCMD(LCDLINE+ucLine);
 134   1      }
 135          
 136          
 137          //*************************************************************************************************
 138          //*                                                                                                                                                                                               *
 139          //*                      ********************************高级函数***********************************              *
 140          //*                                                                                                                                                                                               *
 141          //*************************************************************************************************
 142          
 143          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 144          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置位置>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 145          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 146          void vSetPosition(unsigned char ucChipSelect,unsigned char ucPage,unsigned char ucLine)
 147          {                                                                                                                //取值范围:
 148   1              switch(ucChipSelect)                                                             //ucChipSelect:0~255;
 149   1                      {                                                                                                //ucPage:0~7;
 150   2                      case 1:CS1=1;CS2=0;break;                                                //ucLine:0~63。
 151   2                      case 2:CS1=0;CS2=1;break;
 152   2                      default:CS1=1;CS2=1;
 153   2                      }
 154   1              vSetPage(ucPage);
 155   1              vSetLine(ucLine);
 156   1      }
 157          
 158          
 159          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 160          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<在指定位置显示一个汉字>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 161          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 162          void vShowOneChin(unsigned char ucRow,unsigned char ucOrder,unsigned char *ucaChinMap)
 163          {                                                                                                                 //取值范围:
 164   1              unsigned char ucCount;                                                            //ucRow:0~3;
 165   1                                                                                                                        //ucOrder:0~7。
 166   1              vSetPosition(ucOrder/4+1,ucRow*2,ucOrder%4*16);
 167   1              for(ucCount=0;ucCount<16;ucCount++)
 168   1                      vWriteData(*(ucaChinMap+ucCount));
 169   1              
 170   1              vSetPosition(ucOrder/4+1,ucRow*2+1,ucOrder%4*16);
 171   1              for(ucCount=16;ucCount<32;ucCount++)
 172   1                      vWriteData(*(ucaChinMap+ucCount));
 173   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    230    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V8.05a   LCD12864                                                             08/24/2007 15:13:14 PAGE 4   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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