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

📄 6961.lst

📁 使用台湾普诚pt6961驱动数码管和按键,显示ds1302的源码,详细的6961驱动代码
💻 LST
字号:
C51 COMPILER V8.05a   6961                                                                 03/27/2008 20:11:59 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 6961
OBJECT MODULE PLACED IN 6961.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 6961.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          
   3          /********************************************************************
   4          *
   5          * 模 块 名:显示模块                      型号:PT6961   
   6          *  
   7          * 创 建 人:yingjiangan                   日期:2008-03-04           
   8          * 修 改 人:                              日期:2000-00-00            
   9          * 功能描述:                                                         
  10          * 其他说明:                                                         
  11          * 版    本:V1.0
  12          **********************************************************************/
  13          
  14          /************头文件************/
  15          #include <intrins.h> 
  16          #include <sm5964.h>
  17          #include "my_type.h"
  18          #include "6961.h"
  19          
  20          
  21          uint8   dsplay_dat[6];
  22          uint8   dsplay_dot[6];
  23          
  24          uint8   no_row;
  25          
  26          
  27          
  28          
  29          /*********************************************************************  
  30          *
  31          * 函 数 名: Dsplay
  32          * 功能描述: 6961显示
  33          * 函数说明: 
  34          * 输    入: p_dsp_dat数码管显示的数组指针,p_dsp_dot二极管显示执
  35          * 返    回: 无
  36          * 设 计 者:ying                         日期:2008-03-07
  37          * 修 改 者:ying                         日期:2000-00-00
  38          ***********************************************************************/
  39          void Dsplay()
  40          {
  41   1      
  42   1              uint8 dsplay_table[64]=
  43   1                                                 {0x3F, 0x12, 0x4F, 0x5B, 0x72, 0x79, 0x7D, 0x13,
  44   1                                              //        0     1     2     3     4     5     6     7
  45   1                                                      0x7F, 0x7B, 0x77, 0x7C, 0x4C, 0x5E, 0x6D, 0x65,
  46   1                                              //    8     9     A     B     C     D     E     F
  47   1                                                      0x76, 0x10, 0x1A, 0x64, 0x2C, 0x55, 0x54, 0x5C,
  48   1                                              //    H     I     J     K     L     M     N     O
  49   1                                                      0x67, 0x00, 0x44, 0x6C, 0x3E, 0x7A, 0x40, 0x00,
  50   1                                              //    P     W     R     T     U     Y     -
  51   1                                                      0xBF, 0x92, 0xCF, 0xDB, 0xF2, 0xF9, 0xFD, 0x93,
  52   1                                              //    0.    1.    2.    3.    4.    5.    6.    7.
  53   1                                                      0xFF, 0xFB, 0xF7, 0xFC, 0xCC, 0xDE, 0xED, 0xE5,
  54   1                                              //    8.    9.    A.    B.    C.    D.    E.    F.
  55   1                                                      0xF6, 0x90, 0x9A, 0xE4, 0xAC, 0xD5, 0xD4, 0xDC,
C51 COMPILER V8.05a   6961                                                                 03/27/2008 20:11:59 PAGE 2   

  56   1                                              //    H.    I.    J.    K.    L.    M.    N.    O.
  57   1                                                      0xE7, 0x80, 0xC4, 0xEE, 0xBE, 0xFA, 0xC0, 0x80  };
  58   1                                              //    P.    W.    R.    T.    U.    Y.    -.     .
  59   1              
  60   1              uint8 *p_dsp_dat;
  61   1              uint8 *p_dsp_dot;
  62   1              uint8 *p_dsp_table;
  63   1              p_dsp_dat=dsplay_dat;
  64   1              p_dsp_dot=dsplay_dot;   
  65   1              p_dsp_table=dsplay_table;
  66   1      
  67   1              Set_6961();
  68   1      
  69   1              Write_6961_data(*(p_dsp_table + *(p_dsp_dat+4)));//5
  70   1              Write_6961_data(*(p_dsp_dot + 4));
  71   1              Write_6961_data(*(p_dsp_table + *(p_dsp_dat+5)));//6
  72   1              Write_6961_data(*(p_dsp_dot + 5));
  73   1              Write_6961_data(*(p_dsp_table + *(p_dsp_dat+2)));//3
  74   1              Write_6961_data(*(p_dsp_dot + 2));
  75   1              Write_6961_data(*(p_dsp_table + *(p_dsp_dat+3)));//4
  76   1              Write_6961_data(*(p_dsp_dot + 3));
  77   1              Write_6961_data(*(p_dsp_table + *(p_dsp_dat+0)));//1
  78   1              Write_6961_data(*(p_dsp_dot + 0));
  79   1              Write_6961_data(*(p_dsp_table + *(p_dsp_dat+1)));//2
  80   1              Write_6961_data(*(p_dsp_dot + 1));      
  81   1      
  82   1      }
  83          
  84          
  85          /*********************************************************************  
  86          *
  87          * 函 数 名: Set_6961
  88          * 功能描述: 6961初始化
  89          * 函数说明: 
  90          * 输    入: 无
  91          * 返    回: 无
  92          * 设 计 者:ying                         日期:2008-03-05
  93          * 修 改 者:ying                         日期:2000-00-00
  94          ***********************************************************************/
  95          void Set_6961(void)
  96          {
  97   1              Write_6961_cmd(0x02);//显示模式6位12段
  98   1              Write_6961_cmd(0x40);//设置数据读写 00写、10读键扫
  99   1              Write_6961_cmd(0xc0);//地址设定
 100   1              Write_6961_cmd(0x89);//消光度设置       
 101   1      }
 102          
 103          
 104          /*********************************************************************  
 105          * 
 106          * 函 数 名: Read_key_6961
 107          * 功能描述: 读出6961键扫值
 108          * 函数说明: 功能层      
 109          * 输    入: 无
 110          * 返    回: 键值
 111          * 设 计 者:ying                         日期:2008-03-19
 112          * 修 改 者:ying                         日期:2000-00-00
 113          ***********************************************************************/
 114          uint8 Read_key_6961()
 115          {
 116   1              uint8 i,r_data=0x00;
 117   1      
C51 COMPILER V8.05a   6961                                                                 03/27/2008 20:11:59 PAGE 3   

 118   1              Write_6961_cmd(0x42);
 119   1      
 120   1              for(i=0;i<=3;i++)
 121   1              {
 122   2                      r_data=Read_6961();
 123   2                      r_data&=0x3f;
 124   2      
 125   2                      if (r_data)
 126   2                      {
 127   3                              no_row=i;
 128   3                              break;  
 129   3                      }
 130   2                      else
 131   2                      {
 132   3                              no_row=0x00;
 133   3                              r_data=0x00;
 134   3                      }
 135   2                                      
 136   2              }
 137   1              return(r_data); 
 138   1      
 139   1      }
 140          
 141          
 142          
 143          /*********************************************************************  
 144          * 
 145          * 函 数 名: key_value
 146          * 功能描述: 读出6961键值
 147          * 函数说明: 功能层      
 148          * 输    入: 无
 149          * 返    回: 键值
 150          * 设 计 者:ying                         日期:2008-03-20
 151          * 修 改 者:ying                         日期:2000-00-00
 152          ***********************************************************************/
 153          
 154          uint8 Key_value()
 155          {
 156   1              uint8 idata key_table[30]=
 157   1                                              {       0x07,0x04,0x01,0x0b,0x05,0x02,
 158   1                                                      0x08,0x06,0x03,0x0a,0x09,0x0d,
 159   1                                                      0x0c,0x0e,0x12,0x11,0x0f,0x13,
 160   1                                                      0x15,0x14,0x16,0x19,0x18,0x17   };
 161   1              uint8 temp,add,i,j,*p4;
 162   1              bit low;
 163   1      
 164   1              p4=key_table;
 165   1      
 166   1              temp=Read_key_6961();
 167   1              add=no_row;
 168   1              if(temp)
 169   1              {
 170   2                      for(i=0;i<=6;i++)
 171   2                      {
 172   3                              low=temp&0x01;
 173   3      
 174   3                              if (low)
 175   3                              {
 176   4                                      j=i;
 177   4                                      break;          
 178   4                              }
 179   3                              temp>>=1;
C51 COMPILER V8.05a   6961                                                                 03/27/2008 20:11:59 PAGE 4   

 180   3                      }
 181   2                      temp=6*add+j;
 182   2                      temp=*(p4+temp);
 183   2      
 184   2                      
 185   2              }
 186   1              else 
 187   1              {
 188   2                      temp=0x00;      
 189   2              }
 190   1              return(temp);
 191   1      
 192   1      }
 193          
 194          
 195          /*********************************************************************  
 196          * 
 197          * 函 数 名: Write_6961_cmd
 198          * 功能描述: 写入6961一个字节命令
 199          * 函数说明: 物理层      6961将SCL下降沿后的第一个字节做为命令
 200          * 输    入: 要写入的命令
 201          * 返    回: 无
 202          * 设 计 者:ying                         日期:2008-03-05
 203          * 修 改 者:ying                         日期:2000-00-00
 204          ***********************************************************************/
 205          
 206          void Write_6961_cmd(uint8 cmd)
 207          {
 208   1              PT6961_RESET;
 209   1              Write_6961_data(cmd);   
 210   1      } 
 211          
 212          
 213          /*********************************************************************  
 214          * 
 215          * 函 数 名: Write_6961_data
 216          * 功能描述: 写入6961一个字节数据
 217          * 函数说明: 物理层
 218          * 输    入: 要写入的数据
 219          * 返    回: 无
 220          * 设 计 者:ying                         日期:2008-03-04
 221          * 修 改 者:ying                         日期:2000-00-00
 222          ***********************************************************************/
 223          
 224          void Write_6961_data(uint8 temp)
 225          {
 226   1              uint8 i;
 227   1              for(i=0;i<8;i++)
 228   1              {       
 229   2                      DIO=temp&LSB;
 230   2                      CLK=0;
 231   2                      temp>>=1;
 232   2                      CLK=1;  
 233   2              }
 234   1      }
 235          
 236          
 237          
 238          /*********************************************************************  
 239          * 
 240          * 函 数 名: Read_6961
 241          * 功能描述: 读6961数据
C51 COMPILER V8.05a   6961                                                                 03/27/2008 20:11:59 PAGE 5   

 242          * 函数说明: 物理层
 243          * 输    入: 要读出的地址
 244          * 返    回: 无
 245          * 设 计 者:ying                         日期:2008-03-04
 246          * 修 改 者:ying                         日期:2000-00-00
 247          ***********************************************************************/
 248          
 249          uint8 Read_6961()
 250          {
 251   1              uint8 i,temp=0x00;
 252   1              DIO=1;
 253   1              for (i=0;i<7;i++)   //循环7次 读取数据
 254   1              {
 255   2                      CLK=0;
 256   2                      if(DIO)
 257   2                      {       
 258   3                              temp|=0x80;   //每次传输低字节
 259   3                      }
 260   2                      CLK=1;
 261   2                      temp>>=1;   //右移一位
 262   2               }
 263   1               CLK=0;
 264   1               CLK=1;
 265   1               return (temp);
 266   1      }
 267          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    417    ----
   CONSTANT SIZE    =     94    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13      79
   IDATA SIZE       =   ----      30
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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