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

📄 dengxiang.lst

📁 实用的键盘及按键显示加密码校验程序
💻 LST
字号:
C51 COMPILER V7.06   DENGXIANG                                                             12/26/2008 20:14:01 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DENGXIANG
OBJECT MODULE PLACED IN dengxiang.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dengxiang.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<stdio.h>    //通用4*4小键盘程序,可以用数码管显示键值
   2          #include<at89x52.h>  //可用于51单片机,晶振频率11.0592MHZ
   3          
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          
   7          int Hang;
   8          int Lie;
   9          int cs;
  10          
  11          int Yuan_ma[5]={1,2,3,4,5};
  12          int New_ma[5];
  13          int Mazhi[4][4]={{1,2,4,3},{5,6,8,7},{9,0,11,10},{12,13,15,14}};
  14          /**************************************************************/
  15          //      0    1    3   2
  16          
  17          //      1    2    3   4     .........
  18          //      5    6    7   8     ......... .
  19          //      9    0    .   >     ......... .  P2接通用四乘四小键盘   
  20          //     EXE  MENU  ESC <     .........
  21          
  22          //     |-----|        
  23          //     |     |              ........
  24          //     |-----|              ........ . 
  25          //     |     |              ........ .  P3 接数码管显示
  26          //     |-----| .            ........
  27          
  28          //    .-.                          .
  29          //   . ? .                  ..........  P2_0接LED显示按下状态
  30          //    .=.                          .
  31          
  32          //程序作者:王庆波,黑龙江大学电子工程学院06级,爱好者工作室,borlittle,Q:634172943      
  33          /*************************************************************/
  34          int mz;
  35          uchar code dis_7[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x7F,0x88,0xc6,0xa1,0x86,0x83};
  36          /*对应键值为          0     1     2    3    4   5     6    7    8    9    .    A     C    D     E   B  */
  37          int Key_scan();
  38          int Jiao_yan();
  39          void Delay();
  40          
  41          void main()
  42          { 
  43   1        int ans;
  44   1        int key;
  45   1        cs=0;
  46   1        //P1=0x00;
  47   1        P0_0=0;
  48   1        P0_1=0;
  49   1        while(1)
  50   1        {
  51   2        key=Key_scan();
  52   2        if(key==1)
  53   2        {
  54   3        mz=Mazhi[Lie][Hang]; //获取码值
  55   3        cs++;
C51 COMPILER V7.06   DENGXIANG                                                             12/26/2008 20:14:01 PAGE 2   

  56   3        switch(cs)
  57   3              {       
  58   4                      case 1:
  59   4                      New_ma[0]=mz;
  60   4                      break;
  61   4                      case 2:
  62   4                      New_ma[1]=mz;
  63   4                      break;
  64   4                      case 3:
  65   4                      New_ma[2]=mz;
  66   4                      break;
  67   4                      case 4:
  68   4                      New_ma[3]=mz;
  69   4                      break;
  70   4                      case 5:
  71   4                      New_ma[4]=mz;
  72   4                      break;
  73   4                      default:
  74   4                      break;
  75   4              }
  76   3              
  77   3              P3=dis_7[mz];        //查表输出段码
  78   3        
  79   3        }
  80   2        
  81   2        Delay();
  82   2        //P1=0x00;
  83   2        if(Yuan_ma[0]!=New_ma[0])
  84   2        cs=0;
  85   2        else if(mz==1)
  86   2        {New_ma[0]=mz;
  87   3        cs=1;}
  88   2        if(cs==5)
  89   2        ans=Jiao_yan();
  90   2        if(ans==1)
  91   2        {P0_1=1;
  92   3        Delay(); 
  93   3        P0_1=0;
  94   3        ans=0;
  95   3        }
  96   2        
  97   2        }
  98   1      
  99   1      }
 100          
 101          void Delay()               //延时子程序
 102          {
 103   1      long i;
 104   1      for(i=5000;i>0;i--);
 105   1      }
 106          int Key_scan()
 107          {         
 108   1              P2=0xF0;               //行扫描
 109   1              if((P2&0xF0)!=0xF0)
 110   1              { Delay();
 111   2                
 112   2              switch(P2)
 113   2              {
 114   3              case 0x70:
 115   3                      Hang=0;
 116   3                      break;
 117   3              case 0xB0:
C51 COMPILER V7.06   DENGXIANG                                                             12/26/2008 20:14:01 PAGE 3   

 118   3                      Hang=1;
 119   3                      break;
 120   3              case 0xD0:
 121   3                      Hang=2;
 122   3                      break;
 123   3              case 0xE0:
 124   3                      Hang=3;
 125   3                      break;
 126   3              default:
 127   3                      break;
 128   3              }
 129   2              Delay();
 130   2              P2=0x0F;                //列扫描
 131   2              if((P2&0x0F)!=0x0F)
 132   2              {
 133   3                      switch(P2)
 134   3                      {
 135   4              case 0x07:
 136   4                      Lie=0;
 137   4                      break;
 138   4              case 0x0B:
 139   4                      Lie=1;
 140   4                      break;
 141   4              case 0x0D:
 142   4                      Lie=2;
 143   4                      break;
 144   4              case 0x0E:
 145   4                      Lie=3;
 146   4                      break;
 147   4              default:
 148   4                      break;
 149   4                      }
 150   3              return 1;
 151   3              }
 152   2              
 153   2      }
 154   1              else
 155   1              {
 156   2              return 0;
 157   2              }
 158   1              
 159   1      }
 160          int Jiao_yan()
 161          {
 162   1       int k;
 163   1       int g=0;
 164   1       for(k=0;k<5;k++)
 165   1       {
 166   2         if(Yuan_ma[k]==New_ma[k])
 167   2               g++;
 168   2              
 169   2       }
 170   1          cs=0;
 171   1              for(k=0;k<5;k++)
 172   1       { New_ma[k]=0;
 173   2         }
 174   1        if(g==5)
 175   1       return 1;
 176   1       else
 177   1       return 0;
 178   1      
 179   1      }
C51 COMPILER V7.06   DENGXIANG                                                             12/26/2008 20:14:01 PAGE 4   

 180          
 181          
 182          
 183          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    468    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     60       6
   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 + -