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

📄 12864精简版.lst

📁 12864手机操作菜单
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   12864__简__                                                           11/12/2007 02:15:26 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 12864__简__
OBJECT MODULE PLACED IN 12864精简版.OBJ
COMPILER INVOKED BY: D:\keic51\C51\BIN\C51.EXE 12864精简版.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg51.h"
   2          #include "code.h"
   3          
   4          #define rs P20
   5          #define rw P21
   6          #define e P22
   7          #define cs1 P23
   8          #define cs2 P24
   9          #define lcd P0
  10          #define keydata P1
  11          
  12          sbit P20=P2^0;
  13          sbit P21=P2^1;
  14          sbit P22=P2^2;
  15          sbit P23=P2^3;
  16          sbit P24=P2^4;
  17          
  18          bit busy_bit=1;
  19          #define unchar unsigned char
  20          
  21          unchar i,j,k;
  22          
  23          
  24          void delay10ms(void)   //延时程序
  25          
  26          {
  27   1      
  28   1             
  29   1              for(j=3;j>0;j--)
  30   1      
  31   1              for(k=214;k>0;k--);
  32   1                      
  33   1      }
  34          
  35          char getkey()                          //按键判断
  36          {
  37   1      char i;
  38   1      keydata=0x0f;
  39   1      while(keydata==0x0f);          //判断有无按键按下,无则等待
  40   1      delay10ms();  //去抖动
  41   1      keydata=0xef;
  42   1      if(keydata==0xee) i=12;
  43   1      else if(keydata==0xed) i=8;
  44   1      else if(keydata==0xeb) i=4;
  45   1      else if(keydata==0xe7) i=0; 
  46   1      keydata=0xdf;
  47   1      if(keydata==0xde) i=13;
  48   1      else if(keydata==0xdd) i=9;
  49   1      else if(keydata==0xdb) i=5;
  50   1      else if(keydata==0xd7) i=1;
  51   1      keydata=0xbf;
  52   1      if(keydata==0xbe) i=14;
  53   1      else if(keydata==0xbd) i=10;
  54   1      else if(keydata==0xbb) i=6;
  55   1      else if(keydata==0xb7) i=2;
C51 COMPILER V7.06   12864__简__                                                           11/12/2007 02:15:26 PAGE 2   

  56   1      keydata=0x7f;
  57   1      if(keydata==0x7e) i=15;
  58   1      else if(keydata==0x7d) i=11;
  59   1      else if(keydata==0x7b) i=7;
  60   1      else if(keydata==0x77) i=3;
  61   1      delay10ms();     //去抖动
  62   1      keydata=0x0f;
  63   1      return(i);
  64   1      }
  65          
  66          void checkbusy(void)                       
  67          {
  68   1              unchar state=0;
  69   1      while(busy_bit)
  70   1         {
  71   2              lcd=0xFF;//空读操作
  72   2              rw=1;
  73   2              rs=0;
  74   2              e=1;
  75   2          e=1;
  76   2              e=0;
  77   2      
  78   2              lcd=0xFF;//再读才有效
  79   2              rw=1;
  80   2              rs=0;
  81   2              e=1;
  82   2              state=lcd;
  83   2              e=0;
  84   2              busy_bit=(bit)(state>>7);
  85   2         }
  86   1      }
  87          
  88          displayon()          //开显示
  89          {
  90   1      cs1=1;
  91   1      cs2=0;
  92   1      checkbusy();
  93   1      rw=0;
  94   1      rs=0;
  95   1      lcd=0x3f;
  96   1      e=1;
  97   1      e=0;
  98   1      
  99   1      cs1=0;
 100   1      cs2=1;
 101   1      checkbusy();
 102   1      rw=0;
 103   1      rs=0;
 104   1      lcd=0x3f;
 105   1      e=1;
 106   1      e=0;
 107   1      }
 108          
 109          displayoff()           //关显示
 110          {
 111   1      cs1=1;
 112   1      cs2=0;
 113   1      checkbusy();
 114   1      rw=0;
 115   1      rs=0;
 116   1      lcd=0x3e;
 117   1      e=1;
C51 COMPILER V7.06   12864__简__                                                           11/12/2007 02:15:26 PAGE 3   

 118   1      e=0;
 119   1      
 120   1      cs1=0;
 121   1      cs2=1;
 122   1      checkbusy();
 123   1      rw=0;
 124   1      rs=0;
 125   1      lcd=0x3e;
 126   1      e=1;
 127   1      e=0;
 128   1      }
 129          
 130          rwcmd(unchar cmd)                                 //写指令
 131          {
 132   1      checkbusy();
 133   1      rw=0;
 134   1      rs=0;
 135   1      lcd=cmd;
 136   1      e=1;
 137   1      e=0;
 138   1      }
 139          
 140          rwdata(unchar displaydata)                 //写数据
 141          {
 142   1      checkbusy();
 143   1      rw=0;
 144   1      rs=1;
 145   1      lcd=displaydata;
 146   1      e=1;
 147   1      e=0;
 148   1      }
 149          
 150          
 151          
 152          void addresswrite(unchar x,unchar y)             //写地址函数
 153          {
 154   1      unchar unit;
 155   1      rwcmd(0x0c);                  //写z地址,一般z地址默认为0
 156   1      unit=x+0xb8;
 157   1      rwcmd(unit);                 //写x地址;
 158   1      unit=y+0x40;
 159   1      rwcmd(unit);                //写y地址
 160   1      }
 161          
 162          void display(unchar beginx,unchar endx,unchar beginy,unchar endy,unchar block,unchar p,unchar colour)     
             -        //反白显示
 163          {            //显示 行开始    行结束          列开始       列结束        块选择     数组   反白与否
 164   1      if(block==1) {cs1=0;cs2=1;}
 165   1      if(block==2) {cs1=1;cs2=0;}
 166   1      
 167   1      
 168   1      for(i=beginx;i<endx;i++)
 169   1      {
 170   2      addresswrite(i,beginy);
 171   2      for(j=beginy;j<endy;j++)
 172   2      {
 173   3      if(colour==1)
 174   3      switch(p)
 175   3      {             
 176   4      case 1:rwdata(~character1[i][j]);break;
 177   4      case 2:rwdata(~character2[i][j]);break;
 178   4      case 3:rwdata(~character3[i][j]);break;
C51 COMPILER V7.06   12864__简__                                                           11/12/2007 02:15:26 PAGE 4   

 179   4      case 4:rwdata(~character4[i][j]);break;
 180   4      case 5:rwdata(~character5[i][j]);break;
 181   4      case 6:rwdata(~character6[i][j]);break;
 182   4      case 7:rwdata(~character7[i][j]);break;
 183   4      case 8:rwdata(~character8[i][j]);break;
 184   4      case 9:rwdata(~character9[i][j]);break;
 185   4      case 10:rwdata(~character10[i][j]);break;
 186   4      case 11:rwdata(~character11[i][j]);break;
 187   4      case 12:rwdata(~character12[i][j]);break;
 188   4      case 13:rwdata(~character13[i][j]);break;
 189   4      case 14:rwdata(~character14[i][j]);break;
 190   4      case 15:rwdata(~character15[i][j]);break;
 191   4      case 16:rwdata(~character16[i][j]);break;
 192   4      case 17:rwdata(~character17[i][j]);break;
 193   4      case 18:rwdata(~character18[i][j]);break;
 194   4      case 19:rwdata(~character19[i][j]);break;
 195   4      case 20:rwdata(~character20[i][j]);break;
 196   4      case 21:rwdata(~character21[i][j]);break;
 197   4      case 22:rwdata(~character22[i][j]);break;
 198   4      case 23:rwdata(~character23[i][j]);break;
 199   4      case 24:rwdata(~character24[i][j]);break;
 200   4      case 25:rwdata(~character25[i][j]);break;
 201   4      case 26:rwdata(~character26[i][j]);break;
 202   4      case 27:rwdata(~character27[i][j]);break;
 203   4      case 28:rwdata(~character28[i][j]);break;
 204   4      default:break;
 205   4      }
 206   3      else if(colour==0)
 207   3      switch(p)
 208   3      { 
 209   4      case 1:rwdata(character1[i][j]);break;
 210   4      case 2:rwdata(character2[i][j]);break;
 211   4      case 3:rwdata(character3[i][j]);break;
 212   4      case 4:rwdata(character4[i][j]);break;
 213   4      case 5:rwdata(character5[i][j]);break;
 214   4      case 6:rwdata(character6[i][j]);break;
 215   4      case 7:rwdata(character7[i][j]);break;
 216   4      case 8:rwdata(character8[i][j]);break;
 217   4      case 9:rwdata(character9[i][j]);break;
 218   4      case 10:rwdata(character10[i][j]);break;
 219   4      case 11:rwdata(character11[i][j]);break;
 220   4      case 12:rwdata(character12[i][j]);break;
 221   4      case 13:rwdata(character13[i][j]);break;
 222   4      case 14:rwdata(character14[i][j]);break;
 223   4      case 15:rwdata(character15[i][j]);break;
 224   4      case 16:rwdata(character16[i][j]);break;
 225   4      case 17:rwdata(character17[i][j]);break;
 226   4      case 18:rwdata(character18[i][j]);break;
 227   4      case 19:rwdata(character19[i][j]);break;
 228   4      case 20:rwdata(character20[i][j]);break;
 229   4      case 21:rwdata(character21[i][j]);break;
 230   4      case 22:rwdata(character22[i][j]);break;
 231   4      case 23:rwdata(character23[i][j]);break;
 232   4      case 24:rwdata(character24[i][j]);break;
 233   4      case 25:rwdata(character25[i][j]);break;
 234   4      case 26:rwdata(character26[i][j]);break;
 235   4      }
 236   3      }
 237   2      }
 238   1      }
 239          /*********************menufunction*************************/
 240          
C51 COMPILER V7.06   12864__简__                                                           11/12/2007 02:15:26 PAGE 5   

 241          void menufunction(unchar floor,unchar menu)
 242          {
 243   1      /***************************显示层菜单**************************/
 244   1      switch(menu)
 245   1      {
 246   2      case 1: 
 247   2      {
 248   3      display(0,8,0,64,1,3,0);
 249   3      display(0,8,0,64,2,4,0);
 250   3      } break;
 251   2      case 2: 
 252   2      {
 253   3      display(0,8,0,64,1,5,0);
 254   3      display(0,8,0,64,2,6,0);
 255   3      } break;
 256   2      case 3:
 257   2      {
 258   3      display(0,8,0,64,1,7,0);
 259   3      display(0,8,0,64,2,8,0);
 260   3      } break;
 261   2      case 4:

⌨️ 快捷键说明

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