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

📄 main2.lst

📁 不带字库LCD12864设计,在田老师的MINI51上测试
💻 LST
字号:
C51 COMPILER V8.02   MAIN2                                                                 12/22/2006 20:13:01 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN2
OBJECT MODULE PLACED IN main2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <absacc.h>
   3          
   4          /*常用操作命令和参数定义*/
   5          #define DISPON 0x3f      //显示开
   6          #define DISPOFF 0x3e     //显示关,参考指令表"显示开关设置"
   7          #define FIRSTROW 0xc0   //显示起始行设置,参考指令表,由LXBYTE[5..0]在0到63行选择
   8          #define SETY 0xb8               //Y方向,8页64行,参考指令表,由PXBYTE[2..0]在0到8页选择
   9          #define SETX 0x40               //X方向,半屏64列,参考指令表,由CXBYTE[5..0]在0到63列选择
  10          
  11          #define LLCD_CMD_WR     XBYTE[0xf2ff]
  12          #define LLCD_DAT_WR XBYTE[0xfaff]
  13          #define LLCD_CMD_RD XBYTE[0xf6ff]
  14          #define LLCD_DAT_RD XBYTE[0xfeff]
  15          #define RLCD_CMD_WR     XBYTE[0xf1ff]
  16          #define RLCD_DAT_WR XBYTE[0xf9ff]
  17          #define RLCD_CMD_RD XBYTE[0xf5ff]
  18          #define RLCD_DAT_RD XBYTE[0xfdff]
  19          
  20          /*一贞图片,宽度x高度=128x64*/
  21          code unsigned char logo[] =
  22          {
  23                  0xFF,0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  24                  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  25                  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  26                  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  27                  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  28                  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  29                  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  30                  0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xFF,0xFF,
  31                  0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  32                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x0C,0x0C,0x0E,0xCE,0xFE,0xFE,
  33                  0xFE,0x1E,0x06,0x06,0x06,0x06,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1C,
  34                  0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  35                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  36                  0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,
  37                  0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  38                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
  39                  0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  40                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xFE,0x7F,0x0F,0x03,
  41                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0xFF,0x0F,0x07,0x01,0x00,
  42                  0x00,0x80,0xE0,0xF0,0xF8,0xDC,0xFC,0x6E,0xEE,0xCE,0xCE,0x80,0x80,0x00,0x00,0x80,
  43                  0xF0,0xFE,0x7F,0x3F,0x18,0x0C,0x04,0x0C,0xFC,0xF8,0xC0,0x00,0x00,0x00,0x0E,0x9F,
  44                  0x9F,0xF9,0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFC,0xFF,0x0F,0x07,0x01,
  45                  0x00,0x00,0xC0,0xF8,0xFF,0x7F,0x3F,0x1C,0x0E,0x06,0x06,0x02,0x02,0x00,0x00,0x00,
  46                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
  47                  0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  48                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x00,0x00,0x00,
  49                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
  50                  0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x01,
  51                  0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x01,
  52                  0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,
  53                  0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  54                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
  55                  0xFF,0xFF,0x00,0x00,0x00,0xC0,0xE0,0x20,0x20,0x60,0x60,0x00,0x00,0xC0,0xE0,0xA0,
C51 COMPILER V8.02   MAIN2                                                                 12/22/2006 20:13:01 PAGE 2   

  56                  0xA0,0xE0,0xC0,0x00,0x00,0xC0,0xE0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0x20,0x20,0xF8,
  57                  0xF8,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0xFC,0x60,0x20,0xE0,
  58                  0xC0,0x00,0x04,0xFC,0xFC,0x20,0x20,0xE0,0xC0,0x00,0x20,0xE0,0xE0,0x60,0x20,0xE0,
  59                  0xC0,0x00,0x20,0xE0,0xE0,0x00,0x20,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  60                  0xC0,0xE0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0xC0,0xE0,0x20,0x24,0xFC,0xFC,0x00,0x20,
  61                  0xE0,0xE0,0x00,0x20,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0x20,
  62                  0x20,0x60,0x60,0x00,0x20,0xE0,0xE0,0x60,0x20,0xE0,0xC0,0x00,0x00,0x00,0xFF,0xFF,
  63                  0xFF,0xFF,0x00,0x00,0x00,0x03,0x07,0x04,0x04,0x06,0x02,0x00,0x00,0x03,0x07,0x04,
  64                  0x04,0x06,0x02,0x00,0x00,0x03,0x07,0x04,0x04,0x06,0x02,0x00,0x00,0x00,0x00,0x03,
  65                  0x07,0x04,0x04,0x00,0x00,0x06,0x06,0x06,0x00,0x00,0x04,0x07,0x07,0x04,0x04,0x07,
  66                  0x07,0x04,0x00,0x07,0x07,0x04,0x04,0x07,0x03,0x00,0x04,0x07,0x07,0x04,0x04,0x07,
  67                  0x07,0x04,0x00,0x03,0x07,0x04,0x04,0x07,0x07,0x04,0x00,0x06,0x06,0x06,0x00,0x00,
  68                  0x03,0x07,0x04,0x04,0x06,0x02,0x00,0x00,0x03,0x07,0x04,0x04,0x07,0x07,0x04,0x00,
  69                  0x03,0x07,0x04,0x04,0x07,0x07,0x04,0x00,0x06,0x06,0x06,0x00,0x00,0x03,0x07,0x04,
  70                  0x04,0x06,0x02,0x00,0x04,0x07,0x07,0x04,0x04,0x07,0x07,0x04,0x00,0x00,0xFF,0xFF,
  71                  0xFF,0xFF,0x00,0x00,0x00,0x00,0x04,0xFC,0x40,0x20,0x20,0xC0,0x00,0x00,0x40,0xA0,
  72                  0xA0,0x20,0x60,0x00,0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00,0x20,0x20,0xE4,0x00,
  73                  0x00,0x00,0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x20,0xE0,0x40,0x20,0x20,0xC0,0x00,
  74                  0x00,0x40,0xA0,0xA0,0x20,0x60,0x00,0x00,0x20,0x20,0xE4,0x00,0x00,0x00,0x20,0x20,
  75                  0xE0,0x40,0x20,0x20,0x00,0xF0,0x08,0xE4,0x14,0xF4,0x08,0xF0,0x00,0x08,0x08,0xFC,
  76                  0x00,0x00,0x00,0xF0,0x48,0x24,0x24,0x24,0xCC,0x00,0x00,0x18,0x04,0x24,0x24,0xD8,
  77                  0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x20,0x20,0x60,0x00,0x00,0xC0,0x20,0x20,
  78                  0x20,0xC0,0x00,0x20,0xE0,0x20,0xE0,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
  79                  0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC4,0xC7,0xC4,0xC0,0xC4,0xC7,0xC4,0xC0,0xC6,0xC4,
  80                  0xC4,0xC5,0xC2,0xC0,0xC0,0xC0,0xC0,0xC3,0xC4,0xC4,0xC0,0xC0,0xC4,0xC4,0xC7,0xC4,
  81                  0xC4,0xC0,0xC0,0xC2,0xC5,0xC4,0xC4,0xC7,0xC4,0xC4,0xC7,0xC4,0xC0,0xC4,0xC7,0xC4,
  82                  0xC0,0xC6,0xC4,0xC4,0xC5,0xC2,0xC0,0xC0,0xC4,0xC4,0xC7,0xC4,0xC4,0xC0,0xC4,0xC4,
  83                  0xC7,0xC4,0xC4,0xC0,0xC0,0xC1,0xC2,0xC5,0xC5,0xC4,0xC5,0xC2,0xC0,0xC4,0xC4,0xC7,
  84                  0xC4,0xC4,0xC0,0xC3,0xC4,0xC4,0xC4,0xC4,0xC3,0xC0,0xC0,0xC3,0xC4,0xC4,0xC4,0xC3,
  85                  0xC0,0xC0,0xC6,0xC6,0xC0,0xC0,0xC3,0xC4,0xC4,0xC4,0xC2,0xC0,0xC0,0xC3,0xC4,0xC4,
  86                  0xC4,0xC3,0xC0,0xC4,0xC7,0xC0,0xC7,0xC0,0xC7,0xC4,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF,
  87          };
  88          
  89          void delay(unsigned char timer);/*通用延时函数*/
  90          void check_busy(unsigned char);/*LCD忙检测*/
  91          void lcd_init(void);/*LCD初始化*/
  92          void lcd_cmd_wr(unsigned char, unsigned char);/*写命令*/
  93          void lcd_data_wr(unsigned char, unsigned char);/*写数据*/
  94          void lcd_bmp_wr(unsigned char *bmp);/*写一贞128×64点的图片显示*/
  95          void lcd_clr(void);/*数据清屏*/
  96          void lcd_mov_up();/*整屏向上循环移动*/
  97          
  98          /*主函数,显示一贞图片范例*/
  99          void main(void)
 100          {
 101   1              delay(50000);//适当延时,等待LCD复位
 102   1              lcd_init();
 103   1              lcd_bmp_wr(logo);//logo图片数据附后
 104   1              while(1)        
 105   1              {       
 106   2                      //整屏向上循环移动
 107   2                      //lcd_mov_up();
 108   2                      //lcd_clr();
 109   2                      delay(500); 
 110   2                      lcd_bmp_wr(logo);//logo图片数据附后
 111   2              }
 112   1      }
 113          
 114          /*LCD忙检测*/
 115          void check_busy(unsigned char right)
 116          {
 117   1              unsigned char temp;
C51 COMPILER V8.02   MAIN2                                                                 12/22/2006 20:13:01 PAGE 3   

 118   1              do
 119   1              {
 120   2                      if(right) temp=RLCD_CMD_RD;
 121   2                      else temp=LLCD_CMD_RD;          
 122   2                      temp = 0x7f;//仿真版不需要忙检测
 123   2              } 
 124   1              while(temp>>7==1);//检测D7是否为1,1表示LCD忙,如果忙,继续检测,直到空闲止
 125   1                
 126   1      }
 127          
 128          /*写命令*/
 129          void lcd_cmd_wr(unsigned char cmdcode, unsigned char right)
 130          {
 131   1              check_busy(right);
 132   1              if(right) RLCD_CMD_WR = cmdcode;
 133   1              else LLCD_CMD_WR = cmdcode;
 134   1      }
 135          
 136          /*LCD初始化*/
 137          void lcd_init(void)
 138          {
 139   1              lcd_cmd_wr(DISPON,0);           //开显示,0参数表示左屏
 140   1              lcd_cmd_wr(FIRSTROW,0);         //设定显示首列
 141   1              lcd_cmd_wr(SETY,0);                     //设定Y坐标
 142   1              lcd_cmd_wr(SETX,0);                     //设定X坐标
 143   1              lcd_cmd_wr(DISPON,1);           //1参数表示右屏
 144   1              lcd_cmd_wr(FIRSTROW,1);
 145   1              lcd_cmd_wr(SETY,1);
 146   1              lcd_cmd_wr(SETX,1);
 147   1      }
 148          
 149          /*写数据*/
 150          void lcd_data_wr(unsigned char dispdata, unsigned char right)
 151          {
 152   1              //check_busy(right);
 153   1              if(right) RLCD_DAT_WR = dispdata;
 154   1              else LLCD_DAT_WR = dispdata;
 155   1      }
 156          /*数据清屏*/
 157          void lcd_clr(void)
 158          {
 159   1              unsigned char i,j;
 160   1              for(i=0;i<8;i++)//共8页
 161   1              {
 162   2                      lcd_cmd_wr(SETY+i,0);
 163   2                      lcd_cmd_wr(SETX,0);
 164   2                      lcd_cmd_wr(SETY+i,1);
 165   2                      lcd_cmd_wr(SETX,1);
 166   2                      for(j=0;j<64;j++)//每页64列
 167   2                      {
 168   3                              lcd_data_wr(0,0);
 169   3                              lcd_data_wr(0,1);
 170   3                      }
 171   2              }
 172   1      }
 173          
 174          /*写一贞128×64点的图片显示*/
 175          void lcd_bmp_wr(unsigned char *bmp)
 176          {
 177   1              unsigned char i,j;
 178   1              for(i=0;i<8;i++)
 179   1              {
C51 COMPILER V8.02   MAIN2                                                                 12/22/2006 20:13:01 PAGE 4   

 180   2                      //页地址设定
 181   2                      lcd_cmd_wr(SETY+i,0);
 182   2                      lcd_cmd_wr(SETX,0);
 183   2                      lcd_cmd_wr(SETY+i,1);
 184   2                      lcd_cmd_wr(SETX,1);             
 185   2      
 186   2                      for(j=0;j<64;j++) 
 187   2                      {
 188   3                              lcd_data_wr(bmp[128*i+j],0);//左半屏
 189   3                              lcd_data_wr(bmp[128*i+j+64],1);//右半屏
 190   3                      }
 191   2                }
 192   1      }
 193          
 194          /*整屏向上循环移动*/
 195          void lcd_mov_up()
 196          {
 197   1              unsigned char i;
 198   1              for(i=0;i<64;i++)//64行循环
 199   1              {
 200   2              lcd_cmd_wr(FIRSTROW+i,0);
 201   2                      lcd_cmd_wr(FIRSTROW+i,1);
 202   2                      delay(500);//适当延时
 203   2              }
 204   1      }
 205          
 206          /*通用延时函数*/
 207          void delay(unsigned char timer)
 208          {
 209   1              unsigned char i;
 210   1              while(--timer)
 211   1              for(i=0;i<100;i++);
 212   1      }
 213          
 214          
 215          
 216          
 217          
 218          
 219          


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