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

📄 gt21l16s2w.lst

📁 GT21L16S2W汉字库芯片源代码
💻 LST
字号:
C51 COMPILER V8.08   GT21L16S2W                                                            11/07/2010 01:10:11 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          sbit CS=P1^0;
   3          sbit SCLK=P1^1;
   4          sbit SI=P1^2;
   5          sbit SO=P1^3;
   6          //--------------------------------------------------------------------------------
   7          // 仅限GT21L16S2W汉字库芯片使用,版权归上海集通数码科技有限责任公司所有。
   8          // 作者:朱和平 时间:2008-12-23 版本:VER1.0
   9          //--------------------------------------------------------------------------------
  10          //------------------------------------------------------
  11          //  在GT21L16S2W芯片中数据的地址 
  12          //------------------------------------------------------
  13          #define ASC0808D2HZ_ADDR ( 0x66c0  )            //7*8 ascii code
  14          #define ASC0812M2ZF_ADDR ( 0x66d40 )            //6*12 ascii code
  15          #define GBEX0816ZF_ADDR   243648                        //8*16 ascii code
  16          #define ZF1112B2ZF_ADDR  ( 0x3cf80 )            //12*12 12点字符 
  17          #define HZ1112B2HZ_ADDR  ( 0x3cf80+376*24 )     //12*12 12点汉字 
  18          #define CUTS1516ZF_ADDR  0x00                           //16*16 16点字符 
  19          #define JFLS1516HZ_ADDR  27072                          //16*16 16点汉字 
  20          
  21          //---------------------------------------------
  22          // 保留 
  23          //--------------------------------------------
  24          #define ASCII0507ZF_ADDR        245696
  25          #define ARIAL_16B0_ADDR         246464
  26          #define ARIAL_12B0_ADDR         422720
  27          #define SPAC1616_ADDR           425264
  28          #define GB2311ToUnicode_addr    (12032)
  29          #define UnicodeToGB2311_addr    (425328)
  30          //------------------------------------------------
  31          // 要显示的汉字的类型 
  32          //------------------------------------------------
  33          #define   TYPE_8        0 //8  点字符 
  34          #define   TYPE_12       1 //12 点汉字字符 
  35          #define   TYPE_16       2 //16 点汉字字符 
  36          //-------------------------------------------------
  37          // unsigned long  GB2312_Addr(unsigned char *ss,unsigned char type)
  38          //  函数说明:
  39          //      由汉字内码 SS[0] S[1] ......
  40          //              计算的在GT23L16S2W中的点阵数据地址 
  41          //  参数:
  42          //      ss              汉字GB2312内码指针 
  43          //              type    汉字类型 
  44          //  返回:
  45          //              汉字在芯片中的点阵数据起始地址 
  46          //--------------------------------------------------
  47          unsigned long  GB2312_Addr(unsigned char *ss,unsigned char type)
  48          {
  49   1              unsigned long temp = 0;
  50   1              unsigned char c1,c2;//c3,c4;
  51   1      
  52   1               if(ss[0]<0x80)         //ascii  半角字符 
  53   1                      {
  54   2                  if( ss[0] >= ' ' )  //判断是否大于“空格键 ” 0x20 
  55   2                                 temp = ss[0] - ' ';
C51 COMPILER V8.08   GT21L16S2W                                                            11/07/2010 01:10:11 PAGE 2   

  56   2                              if( type == TYPE_8 )        temp = temp*8  + ASC0808D2HZ_ADDR;                  //7*8 ascii code
  57   2                              else if( type == TYPE_12 )      temp = temp*12 + ASC0812M2ZF_ADDR;                      //6*12 ascii code
  58   2                              else if( type == TYPE_16 )      temp = temp*16 + GBEX0816ZF_ADDR;                       //8*16 ascii code
  59   2                      }
  60   1            else               //chinese tab zone
  61   1             {
  62   2                      c1=ss[0];
  63   2                      c2=ss[1];
  64   2                      //符号区,全角 
  65   2                      if(c1>=0xA1 && c1 <= 0xAB && c2>=0xa1)
  66   2                      {
  67   3                              if( type == TYPE_12 ) //16 点汉字字符 
  68   3                              {
  69   4                                      if( c1>=0xA1 && c1 <= 0xA3 && c2>=0xa1 )//ZF 272 ZONE
  70   4                                              temp = (c1 - 0xA1) * 94 + (c2 - 0xA1);
  71   4                                      else if( c1 == 0xa9 && c2>=0xa1  )//tab 94 zone
  72   4                                              temp = 282 + ( c2 - 0xA1 );
  73   4                                              
  74   4                                                      return( temp *24 + ZF1112B2ZF_ADDR);             //11*12 12点字符 
  75   4                                              }
  76   3                                              else
  77   3                                              {
  78   4                                                      temp = (c1 - 0xA1) * 94 + (c2 - 0xA1);
  79   4                                                      return(temp *32 + CUTS1516ZF_ADDR);                      //16*16 16点字符 
  80   4                                              }
  81   3      
  82   3                       }
  83   2                      //GBK双字节2区 6768
  84   2                      else if(c1>=0xb0 && c1 <= 0xf7 && c2>=0xa1)
  85   2                      {
  86   3                      temp= (c1 - 0xB0) * 94 + (c2 - 0xA1);
  87   3                      if( type == TYPE_12 )
  88   3                                              temp = temp*24 + HZ1112B2HZ_ADDR;
  89   3                                      else if( type == TYPE_16 )
  90   3                                              temp = temp*32 + JFLS1516HZ_ADDR;
  91   3                      }
  92   2             }
  93   1          return temp;
  94   1      }
  95          //从芯片中addr地址读一个BYTE的数据 
  96           unsigned char readbyte(unsigned long addr)  //read one byte from GT ROM
  97           {
  98   1        unsigned char i,RT_data=0x03;
  99   1        CS=0;
 100   1        SI=0;
 101   1        for(i=0;i<8;i++)        //先写入0x03;
 102   1        {
 103   2         SI=(bit)(RT_data&0X80);
 104   2         SCLK=0;
 105   2         SCLK=1;
 106   2         RT_data<<=1;
 107   2        }
 108   1        for(i=0;i<24;i++)        //再写三个字节地址 
 109   1        {
 110   2         SI=(bit)(addr&0x80);
 111   2         SCLK=0;
 112   2         SCLK=1;
 113   2         addr<<=1;
 114   2        }
 115   1        for(i=0;i<8;i++)         //读一个字节 
 116   1        {
 117   2         RT_data=0;
C51 COMPILER V8.08   GT21L16S2W                                                            11/07/2010 01:10:11 PAGE 3   

 118   2         SCLK=1;
 119   2         SCLK=0;
 120   2         if(SO==1)(RT_data||0X01);
 121   2         RT_data<<=1;
 122   2        }
 123   1        CS=1;
 124   1        return (RT_data);
 125   1       }
 126          //------------------------------------------------
 127          // 程序使用例子   
 128          //-------------------------------------------------
 129          void main( void )
 130          {
 131   1       volatile  unsigned char a[2] = { 0xb0,0xa1 }; //16点汉字 “啊”  的GB2312内码。 
 132   1       volatile  unsigned char a_dot[32];                       //存储汉字 “啊”  的点阵数据。 
 133   1       volatile  unsigned long a_dot_address;
 134   1       volatile  unsigned char count;
 135   1         a_dot_address = GB2312_Addr(a,TYPE_16); //得到“啊” 点阵数据的起始地址 
 136   1         for( count = 0; count < 32; count++ )   //得到“啊” 点阵数据 
 137   1               a_dot[count] =  readbyte(a_dot_address+count);
 138   1      
 139   1       //  display(x,y,a_dot,TYPE_16);                           //在坐标(X,Y),显示汉字“啊” 
 140   1      }


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