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

📄 lcd12864.lst

📁 Please carefully read the many features of your package and then write the specific function (at lea
💻 LST
字号:
C51 COMPILER V8.05a   LCD12864                                                             08/28/2007 12:29:09 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          //*************************************************************************************************
  40          bit bCheckBusy()
  41          {
  42   1              LCDPORT=0xFF;
  43   1              RW=1;
  44   1              DI=0;
  45   1              E=1;
  46   1              E=0;
  47   1              return BUSYSTATUS; 
  48   1      }
  49          
  50          //*************************************************************************************************
  51          //*                                                                                                                                                                                               *
  52          //*                      ********************************写数据*********************************                          *
  53          //*                                                                                                                                                                                               *
  54          //*************************************************************************************************
C51 COMPILER V8.05a   LCD12864                                                             08/28/2007 12:29:09 PAGE 2   

  55          void vWriteData(unsigned char ucData)
  56          {
  57   1              while(bCheckBusy());
  58   1              LCDPORT=0xFF;
  59   1      
  60   1              RW=0;
  61   1              DI=1;
  62   1              LCDPORT=ucData;
  63   1              E=1;
  64   1              E=0;
  65   1      }
  66          
  67          //*************************************************************************************************
  68          //*                                                                                                                                                                                               *
  69          //*                      ********************************写指令*********************************                          *
  70          //*                                                                                                                                                                                               *
  71          //*************************************************************************************************
  72          void vWriteCMD(unsigned char ucCMD)
  73          {
  74   1              while(bCheckBusy());
  75   1              LCDPORT=0xFF;
  76   1      
  77   1              RW=0;
  78   1              DI=0;
  79   1              LCDPORT=ucCMD;
  80   1              E=1;
  81   1              E=0;
  82   1      }
  83          
  84          //*************************************************************************************************
  85          //*                                                                                                                                                                                               *
  86          //*                      ********************************LCD初始化函数*******************************             *
  87          //*                                                                                                                                                                                               *
  88          //*************************************************************************************************
  89          void vLCDInitialize()
  90          {
  91   1              CS1=1;
  92   1              CS2=1;
  93   1              vWriteCMD(0x38);                //8位形式,两行字符。
  94   1              vWriteCMD(0x0F);                //开显示。
  95   1              vWriteCMD(0x01);                //清屏。
  96   1              vWriteCMD(0x06);                //画面不动,光标右移。
  97   1              vWriteCMD(LCDSTARTROW); //设置起始行。
  98   1      }
  99          
 100          //*************************************************************************************************
 101          //*                                                                                                                                                                                               *
 102          //*                      ******************************显示自定义行*********************************              *
 103          //*                                                                                                                                                                                               *
 104          //*************************************************************************************************
 105          //在8×128的格子里显示自定义长度的一行
 106          void vShowCustomRow(unsigned char ucPage,unsigned char ucLine,unsigned char ucWidth,unsigned char *ucaRow)
 107          {
 108   1              unsigned char ucCount;                             //取值范围:ucPage:0~7;ucLine:0~127;
 109   1              if(ucLine<64)                                              //ucWidth:0~127;ucLine+ucWidth<1128。
 110   1                      {
 111   2                      CS1=1;
 112   2                      CS2=0;
 113   2                      vWriteCMD(LCDPAGE+ucPage);
 114   2                      vWriteCMD(LCDLINE+ucLine);
 115   2                      if((ucLine+ucWidth)<64)
 116   2                              {
C51 COMPILER V8.05a   LCD12864                                                             08/28/2007 12:29:09 PAGE 3   

 117   3                              for(ucCount=0;ucCount<ucWidth;ucCount++)
 118   3                                      vWriteData(*(ucaRow+ucCount));
 119   3                              }
 120   2                      else
 121   2                              {
 122   3                              for(ucCount=0;ucCount<64-ucLine;ucCount++)
 123   3                                      vWriteData(*(ucaRow+ucCount));
 124   3      
 125   3                              CS1=0;
 126   3                              CS2=1;
 127   3                              vWriteCMD(LCDPAGE+ucPage);
 128   3                              vWriteCMD(LCDLINE);
 129   3                              for(ucCount=64-ucLine;ucCount<ucWidth;ucCount++)
 130   3                                      vWriteData(*(ucaRow+ucCount));
 131   3                              }
 132   2                      }
 133   1              else
 134   1                      {
 135   2                      CS1=0;
 136   2                      CS2=1;
 137   2                      vWriteCMD(LCDPAGE+ucPage);
 138   2                      vWriteCMD(LCDLINE+ucLine-64);
 139   2                      for(ucCount=0;ucCount<ucWidth;ucCount++)
 140   2                              vWriteData(*(ucaRow+ucCount));
 141   2                      }
 142   1      }
 143          //*************************************************************************************************
 144          //*                                                                                                                                                                                               *
 145          //*                      *****************************汉字显示函数***********************************             *
 146          //*                                                                                                                                                                                               *
 147          //*************************************************************************************************
 148          //此函数将16×16汉字显示在8×128的格子里。
 149          void vShowOneChin(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaChinMap)
 150          {
 151   1              vShowCustomRow(ucPage,ucLine,16,ucaChinMap);
 152   1              vShowCustomRow(ucPage+1,ucLine,16,ucaChinMap+16);
 153   1      
 154   1      }
 155          //*************************************************************************************************
 156          //*                                                                                                                                                                                               *
 157          //*                      *****************************字符显示函数***********************************             *
 158          //*                                                                                                                                                                                               *
 159          //*************************************************************************************************
 160          //此函数将8×16字符显示在8×128的格子里。
 161          void vShowOneChar(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaCharMap)
 162          {
 163   1              vShowCustomRow(ucPage,ucLine,8,ucaCharMap);
 164   1              vShowCustomRow(ucPage+1,ucLine,8,ucaCharMap+8);
 165   1      
 166   1      }
 167          
 168          
 169          //*************************************************************************************************
 170          //*                                                                                                                                                                                               *
 171          //*                      **********************************显示图片***********************************            *
 172          //*                                                                                                                                                                                               *
 173          //*************************************************************************************************
 174          void vShowGraph(unsigned char ucPage,unsigned char ucLine,unsigned char ucWidth,unsigned char ucHigh,unsig
             -ned char * ucaGraph)
 175          {
 176   1              unsigned char ucCount;
 177   1              for(ucCount=0;ucCount<ucHigh;ucCount++)
C51 COMPILER V8.05a   LCD12864                                                             08/28/2007 12:29:09 PAGE 4   

 178   1                      vShowCustomRow(ucPage+ucCount,ucLine,ucWidth,ucaGraph+ucCount*ucWidth);
 179   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    390    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      23
   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 + -