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

📄 lcm_drive.lst

📁 DP_51PRO实验仪图形液晶显示实验。先在屏幕上的随机位置显示随机数字(0--9)
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   LCM_DRIVE                                                             09/17/2004 11:31:15 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE LCM_DRIVE
OBJECT MODULE PLACED IN LCM_DRIVE.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE LCM_DRIVE.c OPTIMIZE(2,SPEED) BROWSE DEFINE(MONITOR51) DEBUG OBJECTEXTEND

line level    source

   1          /***********************************************************************
   2          * 文件名:LCM_DRIVE.C
   3          * 功能:图形液晶TG12864B-2驱动程序。
   4          * 说明:在LCM_DRIVE.H文件中定义了LCM操作地址,左半屏的写命令操作地址为2004H,写
   5          *      数据操作地址为2005H,右半屏的写命令操作地址为2000H,写数据操作地址为2001H;
   6          *      由于GRAPHICS.C中使用了disp_buf作为作图缓冲区,所以LCM_WriteByte()、LCM_
   7          *      DispFill()均要更新disp_buf。
   8          ***********************************************************************/
   9          #include  "CONFIG.H"
  10          
  11          /* LCM复位控制脚定义 */
  12          sbit    LCM_RST         = P1^0;                 
  13          
  14          /***********************************************************************
  15          * 名称:LCM_Wr1Command()
  16          * 功能:写命令子程序,所选屏为左半屏(CS1)。
  17          * 入口参数:command     要写入LCM的命令字
  18          ***********************************************************************/
  19          #define LCM_Wr1Command(command)         LCMCS1W_COM = command
  20          
  21          /***********************************************************************
  22          * 名称:LCM_Wr2Command()
  23          * 功能:写命令子程序,所选屏为右半屏(CS2)。
  24          * 入口参数:command     要写入LCM的命令字
  25          ***********************************************************************/
  26          #define LCM_Wr2Command(command)         LCMCS2W_COM = command
  27          
  28          /***********************************************************************
  29          * 名称:LCM_Wr1Data()
  30          * 功能:写数据子程序,所选屏为左半屏(CS1)。
  31          * 入口参数:wrdata      要写入LCM的数据
  32          ***********************************************************************/
  33          #define LCM_Wr1Data(wrdata)             LCMCS1W_DAT = wrdata
  34          
  35          /***********************************************************************
  36          * 名称:LCM_Wr2Data()
  37          * 功能:写数据子程序,所选屏为右半屏(CS2)。
  38          * 入口参数:wrdata      要写入LCM的数据
  39          ***********************************************************************/
  40          #define LCM_Wr2Data(wrdata)             LCMCS2W_DAT = wrdata
  41          
  42          
  43          /***********************************************************************
  44          * 名称:LCM_DispIni()
  45          * 功能:LCM显示初始化。使能显示,设置显示起始行为0并清屏。
  46          * 入口参数:无
  47          * 出口参数:无
  48          ***********************************************************************/
  49          void  LCM_DispIni(void)
  50          {  uint16  i;
  51   1      
  52   1         LCM_RST = 0;                         // 复位驱动芯片
  53   1         for(i=0; i<500; i++);
  54   1         LCM_RST = 1;    
  55   1      
C51 COMPILER V7.09   LCM_DRIVE                                                             09/17/2004 11:31:15 PAGE 2   

  56   1         LCM_Wr1Command(LCM_DISPON);          // 打开显示
  57   1         LCM_Wr1Command(LCM_STARTROW);        // 设置显示起始行为0
  58   1         LCM_Wr2Command(LCM_DISPON);  
  59   1         LCM_Wr2Command(LCM_STARTROW);                
  60   1         LCM_DispClr();                       // 清屏
  61   1              
  62   1         LCM_Wr1Command(LCM_ADDRSTRY+0);      // 设置页(行)地址
  63   1         LCM_Wr1Command(LCM_ADDRSTRX+0);      // 设置列地址,即列
  64   1         LCM_Wr2Command(LCM_ADDRSTRY+0);
  65   1         LCM_Wr2Command(LCM_ADDRSTRX+0);
  66   1      }
  67          
  68          
  69          /***********************************************************************
  70          * 名称:LCM_WriteByte()
  71          * 功能:向指定点写数据(一字节)。
  72          * 入口参数:x           x坐标值(0-127)
  73          *          y            y坐标值(0-63)
  74          *          wrdata       所要写的数据
  75          * 出口参数:无
  76          * 说明:会更新disp_buf相应存储单元
  77          ***********************************************************************/
  78          void  LCM_WriteByte(uint8 x, uint8 y, uint8 wrdata) 
  79          {  x = x&0x7f;                          // 参数过滤
  80   1         y = y&0x3f;
  81   1         
  82   1         y = y>>3;
  83   1         disp_buf[y][x] = wrdata;
  84   1         if(x<64)                             // 选择液晶控制芯片(即CS1--控制前64个点,CS2--控制后64个点)
  85   1         {  LCM_Wr1Command(LCM_ADDRSTRX+x);   // 设置当前列地址,即x坐标
  86   2            LCM_Wr1Command(LCM_ADDRSTRY+y);   // 设置当前页地址,即y坐标
  87   2            for(x=0; x<5; x++);               // 短延时
  88   2            LCM_Wr1Data(wrdata);
  89   2         }
  90   1         else
  91   1         {  x = x-64;                         // 调整x变量值
  92   2            LCM_Wr2Command(LCM_ADDRSTRX+x);   
  93   2            LCM_Wr2Command(LCM_ADDRSTRY+y);   
  94   2            for(x=0; x<5; x++);
  95   2            LCM_Wr2Data(wrdata);
  96   2         }
  97   1      }
  98          
  99          
 100          /***********************************************************************
 101          * 名称:LCM_DispFill()
 102          * 功能:向显示屏填充数据
 103          * 入口参数:filldata    要写入LCM的填充数据
 104          * 出口参数:无
 105          * 说明:会更新disp_buf相应存储单元
 106          ***********************************************************************/
 107          void  LCM_DispFill(uint8 filldata)
 108          {  uint8  x, y;
 109   1              
 110   1         LCM_Wr1Command(LCM_STARTROW);        // 设置显示起始行为0
 111   1         LCM_Wr2Command(LCM_STARTROW);        
 112   1      
 113   1         for(y=0; y<8; y++)
 114   1         {  LCM_Wr1Command(LCM_ADDRSTRY+y);   // 设置页(行)地址
 115   2            LCM_Wr1Command(LCM_ADDRSTRX);     // 设置列地址
 116   2            LCM_Wr2Command(LCM_ADDRSTRY+y);
 117   2            LCM_Wr2Command(LCM_ADDRSTRX);
C51 COMPILER V7.09   LCM_DRIVE                                                             09/17/2004 11:31:15 PAGE 3   

 118   2         
 119   2            for(x=0; x<64; x++)
 120   2            {  LCM_Wr1Data(filldata);
 121   3               LCM_Wr2Data(filldata);
 122   3               disp_buf[y][x] = filldata;
 123   3               disp_buf[y][x+64] = filldata;
 124   3            } 
 125   2         }
 126   1      }
 127          
 128          
 129          /* ASCII码对应的点阵数据表 */
 130          uint8 code  ASCII_TAB20[80] = { 0x00, 0x00, 0x00, 0x00, 0x00,
 131                                          0x00, 0x00, 0x9e, 0x00, 0x00,
 132                                          0x00, 0x0e, 0x00, 0x0e, 0x00,
 133                                          0x28, 0xfe, 0x28, 0xfe, 0x28,
 134                                          0x48, 0x54, 0xfe, 0x54, 0x24,
 135                                          0x46, 0x26, 0x10, 0xc8, 0xc4,
 136                                          0x6c, 0x92, 0xaa, 0x44, 0xa0,
 137                                          0x00, 0x0a, 0x06, 0x00, 0x00,
 138                                          0x00, 0x38, 0x44, 0x82, 0x00,
 139                                          0x00, 0x82, 0x44, 0x38, 0x00,
 140                                          0x28, 0x10, 0x7c, 0x10, 0x28,
 141                                          0x10, 0x10, 0x7c, 0x10, 0x10,
 142                                          0x00, 0xa0, 0x60, 0x00, 0x00,
 143                                          0x10, 0x10, 0x10, 0x10, 0x10,
 144                                          0x00, 0xc0, 0xc0, 0x00, 0x00,
 145                                          0x40, 0x20, 0x10, 0x08, 0x04
 146                                         };
 147          
 148          uint8 code  ASCII_TAB30[80] = { 0x7C, 0xA2, 0x92, 0x8A, 0x7C,                   
 149                                          0x00, 0x84, 0xFE, 0x80, 0x00,
 150                                          0x84, 0xC2, 0xA2, 0x92, 0x8C,                   
 151                                          0x42, 0x82, 0x8A, 0x96, 0x62,                   
 152                                          0x30, 0x28, 0x24, 0xFE, 0x20,           
 153                                          0x4E, 0x8A, 0x8A, 0x8A, 0x72,                   
 154                                          0x78, 0x94, 0x92, 0x92, 0x60,                   
 155                                          0x02, 0xE2, 0x12, 0x0A, 0x06,                   
 156                                          0x6C, 0x92, 0x92, 0x92, 0x6C,                   
 157                                          0x0C, 0x92, 0x92, 0x52, 0x3C,                   
 158                                          0x00, 0x6C, 0x6C, 0x00, 0x00,                   
 159                                          0x00, 0xAC, 0x6C, 0x00, 0x00,                   
 160                                          0x10, 0x28, 0x44, 0x82, 0x00,                   
 161                                          0x28, 0x28, 0x28, 0x28, 0x28,                   
 162                                          0x00, 0x82, 0x44, 0x28, 0x10,                   
 163                                          0x04, 0x02, 0xA2, 0x12, 0x0C
 164                                         };                       
 165          
 166          uint8 code  ASCII_TAB40[80] = { 0x64, 0x92, 0xF2, 0x82, 0x7C,                   
 167                                          0xFC, 0x22, 0x22, 0x22, 0xFC,                   
 168                                          0xFE, 0x92, 0x92, 0x92, 0x6C,                   
 169                                          0x7C, 0x82, 0x82, 0x82, 0x44,                   
 170                                          0xFE, 0x82, 0x82, 0x44, 0x38,           
 171                                          0xFE, 0x92, 0x92, 0x92, 0x82,           
 172                                          0xFE, 0x12, 0x12, 0x12, 0x02,                   
 173                                          0x7C, 0x82, 0x92, 0x92, 0xF4,                   
 174                                          0xFE, 0x10, 0x10, 0x10, 0xFE,           
 175                                          0x00, 0x82, 0xFE, 0x82, 0x00,           
 176                                          0x40, 0x80, 0x82, 0x7E, 0x02,                   
 177                                          0xFE, 0x10, 0x28, 0x44, 0x82,                   
 178                                          0xFE, 0x80, 0x80, 0x80, 0x80,           
 179                                          0xFE, 0x04, 0x18, 0x04, 0xFE,                   

⌨️ 快捷键说明

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