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

📄 v9.lst

📁 RJ12864液晶显示 用模拟时序的方式实现了汉字在液晶上的滚动显示
💻 LST
字号:
C51 COMPILER V7.01  V9                                                                     02/27/2006 09:30:41 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE V9
OBJECT MODULE PLACED IN V9.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE V9.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include  "reg51.h"
   2          #include "math.h"
   3          #include "intrins.h"
   4          #include "absacc.h"
   5          #define uchar unsigned char
   6          
   7          //sbit elcd=P2^7;
   8          sbit rs=P3^0;
   9          sbit rw=P3^1;
  10          sbit elcd=P3^2;
  11          sbit cs1=P3^3;
  12          sbit cs2=P3^4;
  13          sbit rst=P3^5;
  14          
  15          #define datalcd P1   //p0口
  16          #define getdata DBYTE[0x30]
  17          //#define getdata1 XBYTE[0x3000]
  18          
  19          
  20          #define dispon  0x3f    //显示on
  21          #define dispoff 0x3e    //显示off
  22          #define lcdbusy 0x80    //LCD忙判断
  23          #define dispfirst 0xc0  //显示起始行
  24          
  25          uchar cbyte;
  26          
  27          
  28          void lcdinit(void);
  29          void delay(uchar);
  30          //void busy(void);
  31          //void lcdbusyR(void);
  32          void clr_screen(void);
  33          void writedata(uchar);
  34          //uchar readdata();
  35          void writecmd(uchar);
  36          //void Set_XY(uchar,uchar);
  37          
  38          uchar code guang[]={
  39          0x00,0x00,0xFC,0x44,0x54,0x54,0x7C,0x55,
  40          0xD6,0x54,0x7C,0x54,0x54,0x44,0x44,0x00,
  41          0x80,0x60,0x1F,0x80,0x9F,0x55,0x35,0x15,
  42          0x1F,0x15,0x15,0x35,0x5F,0x80,0x00,0x00
  43          };
  44          
  45          uchar code dong[]={
  46          0x00,0x08,0xE8,0xA8,0xA8,0xA8,0xA8,0xFF,
  47          0xA8,0xA8,0xA8,0xA8,0xE8,0x0C,0x08,0x00,
  48          0x00,0x40,0x23,0x12,0x0A,0x06,0x02,0xFF,
  49          0x02,0x06,0x0A,0x12,0x23,0x60,0x20,0x00
  50          };
  51          
  52          uchar code you[]={
  53          0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,
  54          0x24,0x24,0x24,0xF4,0x24,0x06,0x04,0x00,
  55          0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,
C51 COMPILER V7.01  V9                                                                     02/27/2006 09:30:41 PAGE 2   

  56          0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00
  57          };
  58          
  59          uchar code xian[]={
  60          0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFE,
  61          0x92,0x92,0x92,0x92,0xFF,0x02,0x00,0x00,
  62          0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF,
  63          0x42,0x24,0x08,0x14,0x22,0x61,0x20,0x00
  64          };
  65          
  66          uchar code gong[]={
  67          0x00,0x00,0x80,0x40,0x30,0x0C,0x00,0xC0,
  68          0x07,0x1A,0x20,0x40,0x80,0x80,0x80,0x00,
  69          0x01,0x01,0x20,0x70,0x28,0x24,0x23,0x20,
  70          0x20,0x28,0x30,0x60,0x00,0x01,0x00,0x00
  71          };
  72          
  73          uchar code si[]={
  74          0x10,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
  75          0xD2,0x9A,0x12,0x02,0xFF,0x02,0x00,0x00,
  76          0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,
  77          0x3F,0x00,0x40,0x80,0x7F,0x00,0x00,0x00
  78          };
  79          
  80          void main()
  81          {
  82   1      elcd=0;
  83   1      lcdinit();
  84   1      while(1)
  85   1      {
  86   2      uchar n;
  87   2      uchar i;
  88   2      for(i=63;i>0;i--)
  89   2      {
  90   3      writecmd(dispfirst+i);
  91   3      writecmd(0xb8);//第一页
  92   3      delay(100);
  93   3      writecmd(0x40);  //设置列地址,第一列
  94   3      cs1=1;cs2=0;
  95   3      for(n=0;n<16;n++)
  96   3      {
  97   4      writedata(guang[n]);
  98   4      delay(100);
  99   4      }
 100   3      
 101   3      writecmd(0xb9);//第二页
 102   3      delay(100);
 103   3      writecmd(0x40);  //设置列地址,第一列
 104   3      cs1=1;cs2=0;
 105   3      for(n=16;n<32;n++)
 106   3      {
 107   4      writedata(guang[n]);
 108   4      delay(100);
 109   4      }
 110   3      
 111   3      
 112   3      writecmd(0xb8);//第一页
 113   3      delay(100);
 114   3      writecmd(0x50);  //设置列地址,第17列
 115   3      cs1=1;cs2=0;
 116   3      for(n=0;n<16;n++)
 117   3      {
C51 COMPILER V7.01  V9                                                                     02/27/2006 09:30:41 PAGE 3   

 118   4      writedata(dong[n]);
 119   4      delay(100);
 120   4      }
 121   3      
 122   3      writecmd(0xb9);//第二页
 123   3      delay(100);
 124   3      writecmd(0x50);  //设置列地址,第17列
 125   3      cs1=1;cs2=0;
 126   3      for(n=16;n<32;n++)
 127   3      {
 128   4      writedata(dong[n]);
 129   4      delay(100);
 130   4      }
 131   3      
 132   3      
 133   3      writecmd(0xb8);//第一页
 134   3      delay(100);
 135   3      writecmd(0x60);  //设置列地址,第33列
 136   3      cs1=1;cs2=0;
 137   3      for(n=0;n<16;n++)
 138   3      {
 139   4      writedata(you[n]);
 140   4      delay(100);
 141   4      }
 142   3      
 143   3      writecmd(0xb9);//第二页
 144   3      delay(100);
 145   3      writecmd(0x60);  //设置列地址,第33列
 146   3      cs1=1;cs2=0;
 147   3      for(n=16;n<32;n++)
 148   3      {
 149   4      writedata(you[n]);
 150   4      delay(100);
 151   4      }
 152   3      
 153   3      
 154   3      writecmd(0xb8);//第一页
 155   3      delay(100);
 156   3      writecmd(0x70);  //设置列地址,第49列
 157   3      cs1=1;cs2=0;
 158   3      for(n=0;n<16;n++)
 159   3      {
 160   4      writedata(xian[n]);
 161   4      delay(100);
 162   4      }
 163   3      
 164   3      writecmd(0xb9);//第二页
 165   3      delay(100);
 166   3      writecmd(0x70);  //设置列地址,第49列
 167   3      cs1=1;cs2=0;
 168   3      for(n=16;n<32;n++)
 169   3      {
 170   4      writedata(xian[n]);
 171   4      delay(100);
 172   4      }
 173   3      
 174   3      writecmd(0xb8);//第一页
 175   3      delay(100);
 176   3      writecmd(0x40);  //设置列地址,第一列
 177   3      cs1=0;cs2=1;
 178   3      for(n=0;n<16;n++)
 179   3      {
C51 COMPILER V7.01  V9                                                                     02/27/2006 09:30:41 PAGE 4   

 180   4      writedata(gong[n]);
 181   4      delay(100);
 182   4      }
 183   3      
 184   3      writecmd(0xb9);//第二页
 185   3      delay(100);
 186   3      writecmd(0x40);  //设置列地址,第一列
 187   3      cs1=0;cs2=1;
 188   3      for(n=16;n<32;n++)
 189   3      {
 190   4      writedata(gong[n]);
 191   4      delay(100);
 192   4      }
 193   3      
 194   3      writecmd(0xb8);//第一页
 195   3      delay(100);
 196   3      writecmd(0x50);  //设置列地址,第17列
 197   3      cs1=0;cs2=1;
 198   3      for(n=0;n<16;n++)
 199   3      {
 200   4      writedata(si[n]);
 201   4      delay(100);
 202   4      }
 203   3      
 204   3      writecmd(0xb9);//第二页
 205   3      delay(100);
 206   3      writecmd(0x50);  //设置列地址,第17列
 207   3      cs1=0;cs2=1;
 208   3      for(n=16;n<32;n++)
 209   3      {
 210   4      writedata(si[n]);
 211   4      delay(100);
 212   4      }
 213   3      
 214   3      
 215   3      }
 216   2      }
 217   1      }
 218          
 219          /*
 220          void busy(void)
 221          {
 222          P1=0xff;
 223          while(1)
 224          {
 225          cs1=1;cs2=1;
 226          elcd=0;
 227          rs=0;
 228          rw=1;
 229          elcd=1;
 230          if(P1<0x80)break;
 231          elcd=0;
 232          }
 233          elcd=0;
 234          }
 235          
 236          /*
 237          void lcdbusyR(void)
 238          {  /*
 239          datalcd=0xff;
 240          cs1=0;cs2=1;
 241          rw=1;
C51 COMPILER V7.01  V9                                                                     02/27/2006 09:30:41 PAGE 5   

 242          rs=0;//elcd=0;
 243          _nop_();
 244          elcd=1;
 245          _nop_();_nop_();
 246          //elcd=0;
 247          getdata=datalcd;
 248          while(datalcd&lcdbusy);
 249          elcd=0;
 250          //
 251          P0=0xff;
 252          //rs=0;rw=1;
 253          
 254          }
 255          */
 256          
 257          void delay(uchar MS)
 258          {
 259   1      while(MS!=0)MS--;
 260   1      }
 261          
 262          
 263          void writecmd(uchar Reg_Code)
 264          {
 265   1      cs1=1;cs2=1;
 266   1      elcd=0;
 267   1       rs=0;
 268   1       rw=0;
 269   1       datalcd=Reg_Code;
 270   1      // elcd=0;
 271   1      // delay(10);
 272   1       elcd=1;
 273   1      // delay(10);
 274   1       elcd=0;
 275   1      }
 276          
 277          
 278          void writedata(uchar Disp_Data)
 279          {
 280   1       rs=1;
 281   1       rw=0;
 282   1       elcd=0;
 283   1       datalcd=Disp_Data;
 284   1      // elcd=0;
 285   1      // delay(10);
 286   1       elcd=1;
 287   1      // delay(10);
 288   1       elcd=0;
 289   1      }
 290          /*
 291          uchar readdata()
 292          {
 293          uchar Disp_Data;
 294          
 295          rs=1;
 296          rw=1;
 297          // datalcd=0xff;
 298           elcd=1;
 299           delay(5);
 300           Disp_Data=datalcd;
 301           elcd=0;
 302          //读第二次,第一次为虚读
 303          elcd=0;
C51 COMPILER V7.01  V9                                                                     02/27/2006 09:30:41 PAGE 6   

 304          rs=1;
 305          rw=1;
 306          // datalcd=0xf0;
 307           elcd=1;
 308           delay(10);
 309           Disp_Data=datalcd;
 310           elcd=0;
 311          
 312           return Disp_Data;
 313          }
 314          */
 315          void clr_screen()
 316          {
 317   1        uchar j,k;
 318   1      
 319   1        for(k=0;k<8;k++){
 320   2        writecmd(0xb8+k);
 321   2        writecmd(0x40);
 322   2        for(j=0;j<64;j++)
 323   2        {writedata(0x00);
 324   3        delay(1000);}
 325   2       }
 326   1      }
 327          
 328          
 329          
 330          void lcdinit(void)
 331          {
 332   1      rst=0;
 333   1      delay(1000);
 334   1      rst=1;
 335   1      _nop_();
 336   1      _nop_();
 337   1      
 338   1      
 339   1      //cs1=1;cs2=1;
 340   1      cbyte=dispon;
 341   1      writecmd(cbyte);
 342   1      //delay(10);
 343   1      
 344   1      
 345   1      cbyte=dispfirst; //显示起始行
 346   1      writecmd(cbyte);
 347   1      //delay(10);
 348   1      
 349   1      cs1=1;cs2=1;
 350   1      clr_screen();
 351   1      
 352   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    678    ----
   CONSTANT SIZE    =    192    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       2
   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 + -