Zlg7289.LST
上传用户:ids068
上传日期:2013-04-04
资源大小:639k
文件大小:8k
源码类别:

USB编程

开发平台:

C/C++

  1. C51 COMPILER V7.06   ZLG7289                                                               07/01/2003 17:36:25 PAGE 1   
  2. C51 COMPILER V7.06, COMPILATION OF MODULE ZLG7289
  3. OBJECT MODULE PLACED IN Zlg7289.OBJ
  4. COMPILER INVOKED BY: C:KEILC51BINC51.EXE Zlg7289.c OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND
  5. stmt level    source
  6.    1          /****************************************************************************
  7.    2          * File:ZLG7289.C
  8.    3          * 功能:ZLG7289A键盘显示芯片显示驱动程序。
  9.    4          * 说明:MCS-51单片机,晶振不要大于12MHz。
  10.    5          ****************************************************************************/
  11.    6          
  12.    7          #include <Reg51.h>
  13.    8          #include "ZLG7289.H"
  14.    9          
  15.   10          // 定义控制口线,用户根据自已的系统相应更改
  16.   11          
  17.   12          
  18.   13          bit temp1;
  19.   14          
  20.   15          
  21.   16          /****************************************************************************
  22.   17          * 名称:Delay8uS
  23.   18          * 功能:8uS软件延时
  24.   19          * 说明:用户根据自已的系统相应更改
  25.   20          ****************************************************************************/
  26.   21          void Delay8uS(void)
  27.   22          { uchar i;
  28.   23   1        for(i=0; i<4; i++);
  29.   24   1      }
  30.   25          
  31.   26          
  32.   27          /****************************************************************************
  33.   28          * 名称:Delay50uS
  34.   29          * 功能:50uS软件延时
  35.   30          * 说明:用户根据自已的系统相应更改
  36.   31          ****************************************************************************/
  37.   32          void Delay50uS(void)
  38.   33          { uchar i;
  39.   34   1        for(i=0; i<25; i++);
  40.   35   1      }
  41.   36          
  42.   37          
  43.   38          /****************************************************************************
  44.   39          * 名称:ZLG7289_SendByte
  45.   40          * 功能:发送字节数据,高位在前,符合ZLG7289传输协议。
  46.   41          * 入口参数:dat         待发送的数据
  47.   42          * 注意:使用此函数前要选择ZLG7289,即ZLG7289_CS = 0;  
  48.   43          *       本函数不操作ZLG7289_CS
  49.   44          ****************************************************************************/
  50.   45          void ZLG7289_SendByte(uchar dat)
  51.   46          { uchar i;
  52.   47   1        Delay50uS();                                          // 延时,T1 
  53.   48   1        for(i=0; i<8; i++)
  54.   49   1        { if( (dat&0x80)==0 ) ZLG7289_DIO = 0;
  55.   50   2            else ZLG7289_DIO = 1;
  56.   51   2              dat = dat<<1;                                   // 数据移位
  57.   52   2          ZLG7289_CLK = 1;                            // 发送CLK脉冲
  58.   53   2          Delay8uS();                                         // 延时,T2
  59.   54   2              ZLG7289_CLK = 0;
  60.   55   2              Delay8uS();                                             // 延时,T3
  61. C51 COMPILER V7.06   ZLG7289                                                               07/01/2003 17:36:25 PAGE 2   
  62.   56   2        }
  63.   57   1      
  64.   58   1        ZLG7289_DIO = 0;
  65.   59   1      }
  66.   60          
  67.   61          uchar ZLG7289_RcvByte()
  68.   62          { uchar i,dat=0;
  69.   63   1              ZLG7289_DIO=1;
  70.   64   1        Delay50uS();                                          // 延时,T1 
  71.   65   1        for(i=0; i<8; i++)
  72.   66   1        { 
  73.   67   2              ZLG7289_CLK = 1;// 发送CLK脉冲
  74.   68   2              dat = dat<<1;                                   // 数据移位
  75.   69   2              Delay8uS();     
  76.   70   2              dat=dat+(uchar)ZLG7289_DIO;       
  77.   71   2              ZLG7289_CLK = 0;
  78.   72   2          Delay8uS();                                                 // 延时,T2
  79.   73   2        }
  80.   74   1      
  81.   75   1              ZLG7289_DIO = 0;
  82.   76   1              return dat;
  83.   77   1      }
  84.   78          /****************************************************************************
  85.   79          * 名称:ZLG7289_SendCommand
  86.   80          * 功能:向ZLG7289发送命令。
  87.   81          * 入口参数:com         待发送的命令字
  88.   82          ****************************************************************************/
  89.   83          void ZLG7289_SendCommand(uchar com)
  90.   84          { 
  91.   85   1              ZLG7289_CLK = 0;
  92.   86   1              ZLG7289_CS = 0;
  93.   87   1              ZLG7289_SendByte(com);                  // 将命令发送出去
  94.   88   1              ZLG7289_CS = 1;
  95.   89   1      }
  96.   90          
  97.   91          uchar ZLG7289_GetKey()
  98.   92          {       
  99.   93   1              uchar dat,i;
  100.   94   1              ZLG7289_CLK = 0;
  101.   95   1              ZLG7289_CS = 0;
  102.   96   1              Delay50uS();
  103.   97   1              dat=0x15;               // 延时,T1 
  104.   98   1              for(i=0; i<8; i++)
  105.   99   1              { if( (dat&0x80)==0 ) ZLG7289_DIO = 0;
  106.  100   2            else ZLG7289_DIO = 1;
  107.  101   2              dat = dat<<1;                                   // 数据移位
  108.  102   2          ZLG7289_CLK = 1;                            // 发送CLK脉冲
  109.  103   2          Delay8uS();                                         // 延时,T2
  110.  104   2              ZLG7289_CLK = 0;
  111.  105   2              Delay8uS();                                             // 延时,T3
  112.  106   2              }
  113.  107   1              dat=0;
  114.  108   1              Delay50uS();
  115.  109   1              for(i=0; i<8; i++)
  116.  110   1              { 
  117.  111   2                      ZLG7289_CLK = 1;// 发送CLK脉冲'
  118.  112   2                      Delay8uS();     
  119.  113   2                      
  120.  114   2                      temp1=ZLG7289_DIO;
  121.  115   2                      dat=dat<<1;
  122.  116   2                      dat=dat+(uchar)temp1;
  123.  117   2                      ZLG7289_CLK = 0;
  124. C51 COMPILER V7.06   ZLG7289                                                               07/01/2003 17:36:25 PAGE 3   
  125.  118   2                      Delay8uS();     
  126.  119   2              }
  127.  120   1              ZLG7289_DIO = 0;
  128.  121   1              ZLG7289_CS = 1;
  129.  122   1              return dat;
  130.  123   1      }
  131.  124          
  132.  125          /****************************************************************************
  133.  126          * 名称:ZLG7289_SendData
  134.  127          * 功能:向ZLG7289发送数据。即带数据的命令。
  135.  128          * 入口参数:com         待发送的命令字
  136.  129          *           dat     待发送的数据
  137.  130          ****************************************************************************/
  138.  131          void ZLG7289_SendData(uchar com, uchar dat)
  139.  132          { ZLG7289_CLK = 0;
  140.  133   1        ZLG7289_CS = 0;
  141.  134   1        ZLG7289_SendByte(com);
  142.  135   1        Delay50uS();                                          // 延时,T4
  143.  136   1        ZLG7289_SendByte(dat);
  144.  137   1        ZLG7289_CS = 1;
  145.  138   1      }
  146.  139          
  147.  140          
  148.  141          /****************************************************************************
  149.  142          * 名称:ZLG7289_SendBuf
  150.  143          * 功能:向ZLG7289发送显示数据,8字节,不译码。
  151.  144          * 入口参数:buf         显示数据缓冲区指针
  152.  145          ****************************************************************************/
  153.  146          void ZLG7289_SendBuf(uchar *buf)
  154.  147          { uchar i;
  155.  148   1        for(i=0; i<8; i++)
  156.  149   1        { ZLG7289_SendData(Z_DISPADR1+i, *buf++);
  157.  150   2        }
  158.  151   1      }
  159.  152          
  160.  153          
  161.  154          /****************************************************************************
  162.  155          * 名称:ZLG7289_FillDat
  163.  156          * 功能:显示填充。显示不译码。
  164.  157          * 入口参数:dat         待填充的显示数据
  165.  158          ****************************************************************************/
  166.  159          void ZLG7289_SendFillDat(uchar dat)
  167.  160          { uchar i;
  168.  161   1        for(i=0; i<8; i++)
  169.  162   1        { ZLG7289_SendData(Z_DISPADRX+i, dat);
  170.  163   2        }
  171.  164   1      }
  172.  165          
  173.  166          
  174.  167          
  175.  168          
  176.  169          
  177. MODULE INFORMATION:   STATIC OVERLAYABLE
  178.    CODE SIZE        =    352    ----
  179.    CONSTANT SIZE    =   ----    ----
  180.    XDATA SIZE       =   ----    ----
  181.    PDATA SIZE       =   ----    ----
  182.    DATA SIZE        =   ----      17
  183.    IDATA SIZE       =   ----    ----
  184.    BIT SIZE         =      1    ----
  185. C51 COMPILER V7.06   ZLG7289                                                               07/01/2003 17:36:25 PAGE 4   
  186. END OF MODULE INFORMATION.
  187. C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)