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

📄 t6963.lst

📁 液晶6963模块 240*64,外接PS2键盘,多级菜单.这是我工作中的一个程序,有兴趣的可以看
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   T6963                                                                 01/11/2005 11:05:28 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE T6963
OBJECT MODULE PLACED IN T6963.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE T6963.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <REG52.h>
   2          #include "T6963.h"
   3          #include "ZK.h"
   4          #include <stdarg.h>
   5          #include <stdio.h>
   6          
   7          #include <absacc.h>
   8          
   9          
  10          #define D12_DATA 0xf002
  11          #define D12_COMMAND 0xf003
  12          #define inportb(X) *((unsigned char xdata *) X)
  13          #define outportb(X,Y) *((unsigned char xdata *) X) = Y
  14          /**************************************
  15                       T6963驱动程序
  16           *************************************/
  17          
  18          #define  LCMDW  XBYTE[0x9000]   /*定义数据口*/
  19          #define  LCMCW  XBYTE[0x9001]    /*定义指令口*/
  20          
  21           // 状态位STA1,STA0判断(读写指令和读写数据) 
  22            #define RWCheck(){ uchar i; for(i=10;i>0;i--)  { if((LCMCW & 0x03) == 0x03)  break;}}
  23          // 状态位ST2判断(数据自动读状态)
  24            #define AutoRCheck(){ uchar i; for(i=10;i>0;i--)  { if((LCMCW & 0x04) == 0x04)  break;}}
  25          // 状态位ST3判断(数据自动写状态)
  26            #define AutoWCheck(){ uchar i; for(i=10;i>0;i--)  { if((LCMCW & 0x08) == 0x08)  break;}}
  27          
  28          /*      控制指令        */
  29          #define ctrl(command) { RWCheck(); LCMCW= command; }
  30          /*      写数据  */
  31          #define write(dat ) { RWCheck(); LCMDW=dat; }
  32          /*      自动写  */
  33          #define autowrite(dat) { AutoWCheck();LCMDW=dat;}
  34          
  35          /*      显示图形和文本  */
  36          void disp(unsigned char d) {    /*显示*/
  37   1              write(d);ctrl(0xc0);
  38   1      }
  39          /*      设定图形x,y值*/
  40          
  41          void ag(unsigned char x,unsigned char y) {      /*地址*/
  42   1              unsigned int xy;
  43   1              //xy=y;
  44   1              //xy=xy*16+x+256;
  45   1              xy=y*30+x;
  46   1      write(xy);
  47   1      write((unsigned char)(xy>>8));
  48   1      ctrl(0x24);
  49   1              //write(xy&0xff);write(xy/256);ctrl(0x24);
  50   1      }
  51          
  52          /*      点亮一点        */
  53          
  54          void setb(unsigned char d) {
  55   1              ctrl(0xf8|d);
C51 COMPILER V7.07   T6963                                                                 01/11/2005 11:05:28 PAGE 2   

  56   1      }
  57          
  58          /*      x,y处显示光标   */
  59          
  60          void ab(unsigned char x,unsigned char y) {              /*光标*/
  61   1              ctrl(0x9f);     /*光标开*/
  62   1              write(x);write(y);ctrl(0x21);
  63   1      }
  64          /*      取消光标        */
  65          
  66          void noab(void) {       
  67   1              ctrl(0x9c);     
  68   1      }
  69          
  70          /*      lcd初始化       */
  71          void T6963_init(void) {
  72   1              unsigned int i;
  73   1              write(0x0);write(0x08);ctrl(0x40);      /*文本首址,与图形区域分开*/
  74   1              write(16);write(0x0);ctrl(0x41);        /*文本区域*/
  75   1              write(0x0);write(0x0);ctrl(0x42);       /*图形首址*/
  76   1              write(30);write(0x0);ctrl(0x43);        /*图形区域*/
  77   1              ctrl(0x81);     /*显示方式*/
  78   1              ctrl(0x9f);     /*显示开关*/
  79   1              ctrl(0xa1);     /*光标形状*/
  80   1              write(0);write(0);ctrl(0x24);
  81   1              ctrl(0xb0);     /*自动写方式*/
  82   1              //for (i=0;i<((240*64/8)*2);i++)
  83   1              for (i=0;i<(0x1000);i++)//清除图形和文本区
  84   1                      autowrite(0x0);
  85   1              ctrl(0xb2);/*结束自动写方式     */
  86   1      }
  87          
  88          /*      显示8*12点阵英文字母,反白       */
  89          void da(uchar x,uchar y,uchar n,bit un) {
  90   1              unsigned char i;
  91   1              unsigned char k;
  92   1          if(n < 0x20)
  93   1              n = 0x1f;// 未找到该字
  94   1              k=n-0x1f;
  95   1              for (i=0;i<16;i++)
  96   1              {       ag(x,y*8+i);
  97   2                      if((i<2)||(i>13))
  98   2                      {       if (un==0) disp(0x00); 
  99   3                              else disp(255-0x00);
 100   3                      }
 101   2                      else
 102   2                      {       if (un==0)
 103   3                                      disp(ASC_MSK[k*12+i-2]);
 104   3                              else
 105   3                                      disp(255-ASC_MSK[k*12+i-2]);
 106   3                       }
 107   2              }
 108   1      }
 109          
 110          
 111          /*      显示8*16点阵数字,反白   */
 112          /*void dn(uchar x,uchar y,uchar n,bit un) {
 113                  unsigned char i;
 114                  unsigned char k=n;
 115                  for (i=0;i<16;i++) {
 116                          ag(x,y*8+i);
 117                          if (un==0) disp(Num0_9[k*16+i]); else disp(255-Num0_9[k*16+i]);
C51 COMPILER V7.07   T6963                                                                 01/11/2005 11:05:28 PAGE 3   

 118                  }
 119                  if ((++x)>=30) {
 120                          x=0;
 121                          y+=2;
 122                          if (y>=8) y=0;
 123                  }
 124          }
 125          */
 126          /*      显示8*12点阵数字,反白   */
 127          void dn(uchar x,uchar y,uchar n,bit un) {
 128   1              unsigned char i;
 129   1              unsigned char k=n;
 130   1              for (i=0;i<16;i++) 
 131   1              {   ag(x,y*8+i);
 132   2                      if((i<2)||(i>13))
 133   2                      {       if (un==0) disp(0x00); 
 134   3                              else disp(255-0x00);
 135   3                      }
 136   2                      else
 137   2                      {       if (un==0)
 138   3                                      disp(Num0_9[k*12+i-2]);
 139   3                              else
 140   3                                      disp(255-Num0_9[k*12+i-2]);
 141   3                      }
 142   2              }
 143   1      
 144   1      }
 145          
 146          
 147          
 148          //16*16
 149          /*void hzx(uchar x,uchar y,uchar n,bit un) {
 150                  unsigned char i,j;
 151                  unsigned int k=n;
 152                  for (i=0;i<16;i++) {
 153                          for (j=0;j<2;j++) {
 154                                  ag(j+x,y*8+i);
 155                                  if (un==1) disp(hz[k*32+i*2+j]); 
 156                                  else disp(255-hz[k*32+i*2+j]);
 157                          }
 158                  }
 159          
 160          }*/
 161          
 162          
 163          //16*12 汉字显示
 164          void hzx(uchar x,uchar y,uchar n,bit un) {
 165   1              unsigned char i,j;
 166   1              unsigned char k=n;
 167   1              for (i=0;i<16;i++) {
 168   2                      for (j=0;j<2;j++) {
 169   3                              ag(j+x,y*8+i);
 170   3                              if((i<2)||(i>13))
 171   3                              {       if (un==0) disp(0x00); 
 172   4                                      else disp(255-0x00);
 173   4                              }
 174   3                              else
 175   3                              {       if (un==0) disp(hz[k*24+i*2+j-4]); 
 176   4                                      else disp(255-hz[k*24+i*2+j-4]);
 177   4                              }
 178   3                      }
 179   2              }
C51 COMPILER V7.07   T6963                                                                 01/11/2005 11:05:28 PAGE 4   

 180   1      }
 181          //16*14     //显示特殊符号
 182          void hzx1(uchar x,uchar y,uchar n,bit un) {
 183   1              unsigned char i,j;
 184   1              unsigned char k=n;
 185   1              for (i=0;i<16;i++) {
 186   2                      for (j=0;j<2;j++) {
 187   3                              ag(j+x,y*8+i);
 188   3                              if(i<2)
 189   3                              {       if (un==0) disp(0x00); 
 190   4                                      else disp(255-0x00);
 191   4                              }
 192   3                              else
 193   3                              {
 194   4                                      if (un==0) disp(fot2[k*28+i*2+j-4]); 
 195   4                                      else disp(255-fot2[k*28+i*2+j-4]);
 196   4                              }                                       
 197   3                      }
 198   2              }
 199   1      }
 200          void xsch(uchar x,uchar y,uchar n,bit un) 
 201          {       if(n>=1)
 202   1                      hzx1(x,y,7,un);
 203   1              else 
 204   1                      hzx1(x,y,6,un);
 205   1      }
 206          void xsok(uchar x,uchar y,uchar n,bit un) 
 207          {       if(n>=1)
 208   1                      hzx1(x,y,4,un);

⌨️ 快捷键说明

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