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

📄 glcd.lst

📁 门禁控制器源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   GLCD                                                                  09/14/2005 15:20:56 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE GLCD
OBJECT MODULE PLACED IN Glcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Glcd.c LARGE OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include "Global.h"
   3          #include "Hzlib.h"
   4          
   5          ///////////////////////////////////////////////////////////////////////////////
   6          // 内部存储区变量       0~128字节 直接寻址
   7          // 全局变量定义
   8          extern data  uchar u8CursorX;                   // 光标X坐标列
   9          extern data  uchar u8CursorY;                   // 光标Y坐标行
  10          extern data  uchar cs;                                  // 显示片选
  11          
  12          extern bdata bit reverse;                               // LCD底色显示控制
  13          
  14          //////////////////////////////////////////////////////////////////////////////
  15          // LCD定位,列、行
  16          ///////////////////////////////////////////////////////////////////////////////
  17          void GLCD_Locate (uchar u8Column, uchar u8Line)
  18          {
  19   1              u8CursorX = u8Column;
  20   1              u8CursorY = u8Line;
  21   1      }
  22          
  23          ///////////////////////////////////////////////////////////////////////////////
  24          // LCD延时
  25          ///////////////////////////////////////////////////////////////////////////////
  26          void LcdDelay(uchar u32Duration)
  27          {
  28   1              idata uchar i;
  29   1      
  30   1              for(i=0;i<u32Duration;i++);
  31   1      }
  32          
  33          ///////////////////////////////////////////////////////////////////////////////
  34          // 写指令
  35          ///////////////////////////////////////////////////////////////////////////////
  36          void wcmd(uchar cmd)
  37          {
  38   1              E=0;
  39   1              RS=0;
  40   1              RW=0;
  41   1              E=1;
  42   1              P0=cmd;
  43   1              E=0;
  44   1      }
  45          
  46          ///////////////////////////////////////////////////////////////////////////////
  47          // 写数据
  48          ///////////////////////////////////////////////////////////////////////////////
  49          void wdat(uchar dat)
  50          {
  51   1              E=0;
  52   1              RS=1;
  53   1              RW=0;
  54   1              E=1;
  55   1              P0=dat;
C51 COMPILER V7.07   GLCD                                                                  09/14/2005 15:20:56 PAGE 2   

  56   1              E=0;
  57   1      }
  58          
  59          ///////////////////////////////////////////////////////////////////////////////
  60          // 输出左屏指令
  61          ///////////////////////////////////////////////////////////////////////////////
  62          void OutLI(uchar i)
  63          {
  64   1              CS1=1;          // 左屏片选
  65   1              CS2=0;
  66   1              wcmd(i);        // 写指令
  67   1      }
  68          
  69          ///////////////////////////////////////////////////////////////////////////////
  70          // 输出左屏数据
  71          ///////////////////////////////////////////////////////////////////////////////
  72          void OutLD(uchar i)
  73          {
  74   1              CS1=1;          // 左屏片选
  75   1              CS2=0;
  76   1              wdat(i);        // 写数据
  77   1      }
  78          
  79          ///////////////////////////////////////////////////////////////////////////////
  80          // 输出右屏指令
  81          ///////////////////////////////////////////////////////////////////////////////
  82          void OutRI(uchar i)
  83          {
  84   1              CS1=0;
  85   1              CS2=1;          // 右屏片选
  86   1              wcmd(i);        // 写指令
  87   1      }
  88          
  89          ///////////////////////////////////////////////////////////////////////////////
  90          // 输出右屏数据
  91          ///////////////////////////////////////////////////////////////////////////////
  92          void OutRD(uchar i)
  93          {
  94   1              CS1=0;
  95   1              CS2=1;          // 右屏片选
  96   1              wdat(i);        // 写数据
  97   1      }
  98          
  99          ///////////////////////////////////////////////////////////////////////////////
 100          // 判断LCD控制器是否忙
 101          ///////////////////////////////////////////////////////////////////////////////
 102          void LcdWaitBusy (unsigned char u8LcdSide)
 103          {
 104   1              u8LcdSide=u8LcdSide;
 105   1              LcdDelay(5);
 106   1      }
 107          
 108          ///////////////////////////////////////////////////////////////////////////////
 109          // 向LCD控制器写指令
 110          ///////////////////////////////////////////////////////////////////////////////
 111          void LcdInstructionWrite (uchar u8Instruction,uchar u8LcdSide)
 112          {
 113   1              LcdWaitBusy (u8LcdSide);        // 如果忙就等待
 114   1      
 115   1              if(u8LcdSide==RIGHT)
 116   1              {
 117   2                      OutRI(u8Instruction);   // 写右屏指令
C51 COMPILER V7.07   GLCD                                                                  09/14/2005 15:20:56 PAGE 3   

 118   2          }
 119   1              else if(u8LcdSide==LEFT)
 120   1              {
 121   2              OutLI(u8Instruction);   // 写左屏指令
 122   2              }
 123   1      }
 124          
 125          ///////////////////////////////////////////////////////////////////////////////
 126          // 向LCD控制器写数据
 127          ///////////////////////////////////////////////////////////////////////////////
 128          void LcdDataWrite (uchar u8Data,uchar u8LcdSide)
 129          {
 130   1              LcdWaitBusy (u8LcdSide);        // 如果忙就等待
 131   1      
 132   1              if(u8LcdSide == LEFT)
 133   1              {
 134   2                      OutLD(u8Data);                  // 写左屏数据
 135   2          }
 136   1              else if(u8LcdSide == RIGHT)
 137   1              {
 138   2              OutRD(u8Data);                  // 写左屏数据
 139   2              }
 140   1      }
 141          
 142          ///////////////////////////////////////////////////////////////////////////////
 143          // 清LCD屏幕
 144          //
 145          // LCD分8页
 146          ///////////////////////////////////////////////////////////////////////////////
 147          void GLCD_ClearScreen ()
 148          {       
 149   1              idata uchar u8Page=0;
 150   1              idata uchar u8Column=0;
 151   1      
 152   1          OutLI(START_LINE);
 153   1              OutLI(X_ADRESS);
 154   1              OutLI(Y_ADRESS);
 155   1              OutLI(DISPLAY_ON);
 156   1              OutRI(START_LINE);
 157   1              OutRI(X_ADRESS);
 158   1              OutRI(Y_ADRESS);
 159   1              OutRI(DISPLAY_ON);
 160   1      
 161   1              for(u8Page=0;u8Page<8;u8Page++) 
 162   1              {               
 163   2                      LcdInstructionWrite(X_ADRESS|u8Page,LEFT);      // 设置页号
 164   2                      LcdInstructionWrite(Y_ADRESS,LEFT);                     // 设置列号
 165   2      
 166   2                      for(u8Column=0;u8Column<64;u8Column++)
 167   2                      {
 168   3                              LcdDataWrite(0X00,LEFT);
 169   3                      }
 170   2      
 171   2                      LcdInstructionWrite(X_ADRESS|u8Page,RIGHT);     // 设置页号
 172   2                      LcdInstructionWrite(Y_ADRESS,RIGHT);            // 设置列号
 173   2      
 174   2                      for(u8Column=0;u8Column<64;u8Column++)
 175   2                      {
 176   3                              LcdDataWrite(0X00,RIGHT);
 177   3                      }
 178   2              }
 179   1      }
C51 COMPILER V7.07   GLCD                                                                  09/14/2005 15:20:56 PAGE 4   

 180          
 181          ///////////////////////////////////////////////////////////////////////////////
 182          // LCD控制器初始化
 183          ///////////////////////////////////////////////////////////////////////////////
 184          void GLCD_LcdInit()     
 185          {               
 186   1              OutLI(START_LINE);              // 起始行
 187   1              OutLI(X_ADRESS);
 188   1              OutLI(Y_ADRESS);
 189   1              OutLI(DISPLAY_ON);
 190   1              OutRI(START_LINE);
 191   1              OutRI(X_ADRESS);
 192   1              OutRI(Y_ADRESS);
 193   1              OutRI(DISPLAY_ON);

⌨️ 快捷键说明

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