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

📄 pinyin.lst

📁 程序是基于STC89C58的点阵屏显示程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   PINYIN                                                                04/10/2008 10:43:47 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE PINYIN
OBJECT MODULE PLACED IN .\xiazai\pinyin.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE daima\pinyin.c BROWSE DEBUG OBJECTEXTEND PRINT(.\pinyin.lst) OBJECT(.\xiaza
                    -i\pinyin.obj)

line level    source

   1          #include"reg51.h" 
   2          #define    baseaddr 0x1f36f0;//0; //根据字库芯片的实际地址进行修改(见数据手册)
   3          //      读字库芯片****************************************
   4          extern void sendcmd(unsigned char cmd);
   5          extern void sendaddress(unsigned long address);
   6          extern void Readtodisp_hanzi(unsigned char *hzstr);
   7          extern void write_eight_byte(unsigned char *p,unsigned char ADDRH);
   8          extern unsigned char read_eight_byte(unsigned char *p,unsigned char ADRH);
   9          
  10          sbit GT32_CS=P1^4;         //字库芯片使能
  11          sbit GT32_CLK=P1^5;        //字库芯片时钟线
  12          sbit GT32_SI=P1^7;         //字库芯片输入数据线
  13          sbit GT32_SO=P1^6;         //字库芯片输出数据线
  14          
  15          unsigned char readbyte(unsigned long adrr);
  16          void pyInit();
  17          void Input_py(char *tmppy);
  18          void locate_hz();
  19          void Pre_hz();
  20          void Next_hz();
  21          
  22          typedef struct {
  23                          unsigned char py[6]; //拼音 (6BYTE)
  24                          unsigned short begin; //对应的码表起始序号 (2BYTE)
  25                                     } PYCODETABLE ; // (8BYTE)
  26          xdata int pyfd; //拼音码表句柄
  27          unsigned short xdata pysum; //拼音组合的个数
  28          unsigned short xdata hzsum; //码表中的汉字个数
  29          unsigned short xdata pyidx[26]; //以26 个英文字母开头的拼音串索引
  30          unsigned short xdata pyseek; //拼音查找的开始位置 ,移动指针用
  31          
  32          unsigned short xdata next_pyseek=0;
  33          
  34          unsigned short xdata firsthz=0; //第一个汉字所在位置,为了用hzseek 计算最后一个拼音的汉字个数
  35          
  36          unsigned short xdata hzseek=0x2000; //汉字查找的开始位置,curhz 移动指针用
  37          
  38          unsigned char xdata curhz=0; //当前显示汉字的号,上下移动距离为hzdispwin
  39          unsigned char  xdata maxcurhz=0; //当前拼音的最大汉字数
  40          
  41          
  42          extern unsigned char xdata hzstring[8]={0xa1,0xa3,0xb2,0xd1,0xb0,0xd8,0xb1,0xd8}; //保存汉字内码,大小应为
             -hzdispwin*2+1//汉字显示个数MAX=10 个
  43          
  44          extern unsigned char hz_dis[3][8]={0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,
  45          0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,
  46          0xa1,0xa1,0xa1,0xa1,0xa1,0xa1};
  47          unsigned char page=0;
  48          
  49          unsigned char hz_dis_geshu[3]={0x00,0x00,0x00};
  50          unsigned xdata byte=0;
  51          
  52          
  53          
C51 COMPILER V8.02   PINYIN                                                                04/10/2008 10:43:47 PAGE 2   

  54          
  55          void readonebyte()      
  56          {
  57   1              unsigned char xdata j,DATA=0;
  58   1              GT32_CS=0;
  59   1              GT32_CLK=1;
  60   1              for(j=0;j<8;j++)
  61   1              {       
  62   2                      GT32_CLK=0;
  63   2                      if(GT32_SO) 
  64   2                              DATA=DATA|0x01;
  65   2                      else DATA=DATA|0x0;
  66   2                      GT32_CLK=1;                     
  67   2                      if(j!=7) DATA=DATA<<1;
  68   2              }
  69   1              byte=DATA;
  70   1              GT32_CS=1;
  71   1      }         
  72          
  73          
  74          unsigned char readbyte(unsigned long adrr)
  75          {
  76   1              sendcmd(0x03);
  77   1              sendaddress(adrr);                                                                                       
             -                                                                                                                        
             -                                                       
  78   1              readonebyte();
  79   1              return(byte);
  80   1      
  81   1      }
  82          
  83          
  84          ///////////////////////////////////////////////
  85          // 初始化,读入拼音码表 //
  86          ///////////////////////////////////////////////
  87          void pyInit()
  88          {
  89   1              short xdata i;
  90   1              unsigned long xdata addr=0x0000;
  91   1              PYCODETABLE py;
  92   1              unsigned char xdata bytmp;
  93   1              //unsigned short wdtmp;
  94   1              addr=0x0000+baseaddr; //pysum 拼音组合数(2BYTE)
  95   1              bytmp=readbyte(addr++);
  96   1              pysum=bytmp;
  97   1              pysum=pysum<<8;
  98   1              bytmp=readbyte(addr);
  99   1              pysum=pysum+bytmp;
 100   1              addr=0x0002+baseaddr; //hzsum 读入汉字组合数(2BYTE)
 101   1              bytmp=readbyte(addr++);
 102   1              hzsum=bytmp;
 103   1              hzsum=hzsum<<8;
 104   1              bytmp=readbyte(addr);
 105   1              hzsum=hzsum+bytmp;
 106   1              addr=0x0004+baseaddr; //以26 个英文字母开头的拼音串索引(26*2=52BYTE)
 107   1              for(i=0;i<26;i++)
 108   1              {
 109   2                      bytmp=readbyte(addr++);
 110   2                      pyidx[i]=bytmp;
 111   2                      pyidx[i]=pyidx[i]<<8;
 112   2                      bytmp=readbyte(addr++);
 113   2                      pyidx[i]=pyidx[i]+bytmp;
C51 COMPILER V8.02   PINYIN                                                                04/10/2008 10:43:47 PAGE 3   

 114   2              }
 115   1              pyseek=pyidx[0]; //拼音查找的相对开始地址 ,移动指针用
 116   1              addr=pyseek+baseaddr; //初始化时索引到第一字母“a”地址(初始值)
 117   1              for(i=0;i<6;i++)
 118   1              {
 119   2                      py.py[i]=readbyte(addr++);
 120   2              }
 121   1              bytmp=readbyte(addr++);
 122   1              py.begin=bytmp;
 123   1              py.begin=py.begin<<8;
 124   1              bytmp=readbyte(addr++);
 125   1              py.begin=py.begin+bytmp;
 126   1              firsthz=py.begin;       
 127   1      }               
 128          ///////////////////////////////////////////
 129          // 进行拼音串的处理 //
 130          ///////////////////////////////////////////
 131          void Input_py(char *tmppy) //tmppy 拼音串为小写a-z 的组合. 若全局变量maxcurhz 为0 说明拼音串非法,无相应汉
 132          {
 133   1              short i,j;
 134   1              PYCODETABLE py;
 135   1              unsigned long addr=0;
 136   1              unsigned char pylong=0;
 137   1              unsigned char bytmp=0;
 138   1              unsigned char k=0,t=0;
 139   1              curhz=0;
 140   1              maxcurhz=0;
 141   1              //拼音串已录入到tmppy 中,且长度不大于6,大于6 的将无法找到拼音
 142   1              if(tmppy[0]=='\0') //空返回
 143   1              {
 144   2                      maxcurhz=0;

⌨️ 快捷键说明

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