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

📄 lcd12864.lst

📁 刚刚传错了
💻 LST
字号:
C51 COMPILER V6.23a  LCD12864                                                              10/02/2007 16:57:17 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE c文件\LCD12864.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\LCD128
                    -64.lst) OBJECT(LCD12864.obj) 

stmt level    source

   1          //*************************************************************************************************
   2          //*                                                                                                                                                                                               *
   3          //*                      ******************************LCD12864驱动程序**************************                         *
   4          //*                                                                                                                                                                                               *
   5          //*************************************************************************************************
   6          
   7          //*************************************************************************************************
   8          //*                                                                                                                                                                                               *
   9          //*                      ******************************头文件及宏定义**************************                           *
  10          //*                                                                                                                                                                                               *
  11          //*************************************************************************************************
  12          #include <reg52.h>
  13          #define LCDPORT P1
  14          sbit    E= P3^7;
  15          sbit    RW= P3^6;
  16          sbit    DI= P3^5;
  17          sbit    CS1= P3^3;
  18          sbit    CS2= P3^4;
  19          sbit BUSYSTATUS= P1^7;                            //忙状态位。
  20          //#define DISONSTATUS P0_5                        //显示开关状态位。
  21          //#define RSTSTATUS P0_4                          //复位状态位。
  22          #define LCDSTARTROW 0xC0                          //设置起始行指令。
  23          #define LCDPAGE 0xB8                              //设置页指令。
  24          #define LCDLINE 0x40                              //设置列指令。
  25          
  26          
  27          
  28          
  29          //*************************************************************************************************
  30          //*                                                                                                                                                                                               *
  31          //*                      ********************************读忙标志位*********************************              *
  32          //*                                                                                                                                                                                               *
  33          //*************************************************************************************************
  34          bit bCheckBusy()
  35          {
  36   1              LCDPORT=0x00;
  37   1              RW=1;
  38   1              DI=0;
  39   1              E=1;
  40   1              E=0;
  41   1              return BUSYSTATUS; 
  42   1      }
  43          
  44          //*************************************************************************************************
  45          //*                                                                                                                                                                                               *
  46          //*                      ********************************写数据*********************************                          *
  47          //*                                                                                                                                                                                               *
  48          //*************************************************************************************************
  49          void vWriteData(unsigned char ucData)
  50          {
  51   1              while(bCheckBusy());
  52   1              LCDPORT=0x00;
  53   1      
  54   1              RW=0;
C51 COMPILER V6.23a  LCD12864                                                              10/02/2007 16:57:17 PAGE 2   

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

 117   3      
 118   3                              CS1=0;
 119   3                              CS2=1;
 120   3                              vWriteCMD(LCDPAGE+ucPage);
 121   3                              vWriteCMD(LCDLINE);
 122   3                              for(ucCount=64-ucLine;ucCount<ucWidth;ucCount++)
 123   3                                      vWriteData(*(ucaRow+ucCount));
 124   3                              }
 125   2                      }
 126   1              else
 127   1                      {
 128   2                      CS1=0;
 129   2                      CS2=1;
 130   2                      vWriteCMD(LCDPAGE+ucPage);
 131   2                      vWriteCMD(LCDLINE+ucLine-64);
 132   2                      for(ucCount=0;ucCount<ucWidth;ucCount++)
 133   2                              vWriteData(*(ucaRow+ucCount));
 134   2                      }
 135   1      }
 136          //*************************************************************************************************
 137          //*                                                                                                                                                                                               *
 138          //*                      *****************************汉字显示函数***********************************             *
 139          //*                                                                                                                                                                                               *
 140          //*************************************************************************************************
 141          //此函数将16×16汉字显示在8×128的格子里。
 142          void vShowOneChin(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaChinMap)
 143          {
 144   1              vShowCustomRow(ucPage,ucLine,16,ucaChinMap);
 145   1              vShowCustomRow(ucPage+1,ucLine,16,ucaChinMap+16);
 146   1      
 147   1      }
 148          //*************************************************************************************************
 149          //*                                                                                                                                                                                               *
 150          //*                      *****************************字符显示函数***********************************             *
 151          //*                                                                                                                                                                                               *
 152          //*************************************************************************************************
 153          //此函数将8×16字符显示在8×128的格子里。
 154          void vShowOneChar(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaCharMap)
 155          {
 156   1              vShowCustomRow(ucPage,ucLine,8,ucaCharMap);
 157   1              vShowCustomRow(ucPage+1,ucLine,8,ucaCharMap+8);
 158   1      
 159   1      }
 160          //*************************************************************************************************
 161          //*                                                                                                                                                                                               *
 162          //*                      *****************************清屏函数***********************************                     *
 163          //*                                                                                                                                                                                               *
 164          //*************************************************************************************************//此函

⌨️ 快捷键说明

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