lcd12864.lst

来自「用proteus模拟仿真实现俄罗期方块游戏」· LST 代码 · 共 250 行 · 第 1/2 页

LST
250
字号
C51 COMPILER V8.05a   LCD12864                                                             09/09/2007 10:45:04 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          #include "LCDShowMap.h"
  14          
  15          #define RST P2_0
  16          #define E P2_1
  17          #define RW P2_2
  18          #define DI P2_3
  19          #define CS1 P2_5
  20          #define CS2     P2_4
  21          #define LCDPORT P0
  22          
  23          #define BUSYSTATUS P0_7                           //忙状态位。
  24          
  25          #define LCDSTARTROW 0xC0                          //设置起始行指令。
  26          #define LCDPAGE 0xB8                              //设置页指令。
  27          #define LCDLINE 0x40                              //设置列指令。
  28          
  29          
  30          //*************************************************************************************************
  31          //*                                                                                                                                                                                               *
  32          //*                      ********************************读忙标志位*********************************              *
  33          //*                                                                                                                                                                                               *
  34          //*************************************************************************************************
  35          bit bCheckBusy()
  36          {
  37   1              LCDPORT=0xFF;
  38   1              RW=1;
  39   1              DI=0;
  40   1              E=1;
  41   1              E=0;
  42   1              return BUSYSTATUS; 
  43   1      }
  44          
  45          //*************************************************************************************************
  46          //*                                                                                                                                                                                               *
  47          //*                      ********************************写数据*********************************                          *
  48          //*                                                                                                                                                                                               *
  49          //*************************************************************************************************
  50          void vWriteData(unsigned char ucData)
  51          {
  52   1              while(bCheckBusy());
  53   1              LCDPORT=0xFF;
  54   1      
C51 COMPILER V8.05a   LCD12864                                                             09/09/2007 10:45:04 PAGE 2   

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

⌨️ 快捷键说明

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