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

📄 电子密码锁.lst

📁 24C02和12864显示的电子密码锁设计
💻 LST
字号:
C51 COMPILER V8.08   电子胈_胨_                                                            08/14/2008 22:20:16 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 电子胈_胨_
OBJECT MODULE PLACED IN 电子密码锁.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 电子密码锁.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************************
   2          
   3                              电子密码锁主函数,在不断完善中......
   4          
   5          *******************************************************************************/
   6          
   7          #include<reg51.h>
   8          #include<12864.h>
   9          #include<keypad.h>
  10          #include<24C01.h>
  11          
  12          #define uchar unsigned char
  13          #define uint unsigned int
  14          sbit LED1=P1^5;
  15          sbit LED2=P1^6;
  16          sbit INIT=P2^2;
  17          sbit SOUND=P1^7;
  18          
  19          uchar idata key[6]={0,0,0,0,0,0};
  20          uchar idata iic[6]={0,1,2,3,4,5};
  21          
  22          void press(uchar *s)
  23          {
  24   1                 uchar dat;
  25   1      //**************************************************
  26   1             P3=0xf0;                                                         //保存第一位密码 
  27   1                 while(P3==0xf0);
  28   1             dat=key_scan();
  29   1                 if((dat!=0x0a)&&(dat!=0x0b))
  30   1               {   *s=dat;
  31   2                               Left();
  32   2                               star_12864(star,0x05,16);
  33   2                   }
  34   1                 s++;          
  35   1      //**************************************************
  36   1                 P3=0xf0;                                                       //保存第二位密码 
  37   1                 while(P3==0xf0);                                              
  38   1             dat=key_scan(); 
  39   1                 if((dat!=0x0a)&&(dat!=0x0b))
  40   1               {   *s=dat;
  41   2                               Left();
  42   2                               star_12864(star,0x05,24);
  43   2                        }
  44   1                 s++; 
  45   1      //**************************************************
  46   1                 P3=0xf0;                                                       //保存第三位密码 
  47   1                 while(P3==0xf0);                                              
  48   1             dat=key_scan();
  49   1                 if((dat!=0x0a)&&(dat!=0x0b))
  50   1               {   *s=dat;
  51   2                               Left();
  52   2                               star_12864(star,0x05,32);
  53   2                        }
  54   1                 s++; 
  55   1      //**************************************************
C51 COMPILER V8.08   电子胈_胨_                                                            08/14/2008 22:20:16 PAGE 2   

  56   1                 P3=0xf0;                                                       //保存第四位密码 
  57   1                 while(P3==0xf0);                                              
  58   1                 dat=key_scan();
  59   1                 if((dat!=0x0a)&&(dat!=0x0b))
  60   1               {   *s=dat;
  61   2                               Left();
  62   2                               star_12864(star,0x05,40);
  63   2                        }
  64   1                 s++; 
  65   1      //**************************************************
  66   1                 P3=0xf0;                                                       //保存第五位密码 
  67   1                 while(P3==0xf0);                                              
  68   1             dat=key_scan();
  69   1                 if((dat!=0x0a)&&(dat!=0x0b))
  70   1               {   *s=dat;
  71   2                               Left();
  72   2                               star_12864(star,0x05,48);
  73   2                        }
  74   1                 s++; 
  75   1      //**************************************************
  76   1                 P3=0xf0;                                                       //保存第六位密码 
  77   1                 while(P3==0xf0);                                              
  78   1             dat=key_scan();
  79   1                 if((dat!=0x0a)&&(dat!=0x0b))
  80   1               {   *s=dat;
  81   2                               Left();
  82   2                               star_12864(star,0x05,56);
  83   2                        }
  84   1      //**************************************************
  85   1                 do{P3=0xf0;                                                  //键入Enter键盘继续执行下面语句,否则等待 
  86   2                    while(P3==0xf0);                                           
  87   2                dat=key_scan();
  88   2                    }while(dat!=0x0b);
  89   1      }
  90          
  91          void Delay10ms(void)       //延时10ms 
  92          {
  93   1              uint i,j,k;
  94   1              for(i=5;i>0;i--)
  95   1              for(j=4;j>0;j--)
  96   1              for(k=248;k>0;k--);
  97   1      
  98   1      }
  99          
 100          void main()
 101          {
 102   1            uchar dat;
 103   1            uchar i=0,j=0,k;
 104   1            uchar x;
 105   1                LED1=1;
 106   1                LED2=1;
 107   1                SOUND=0;
 108   1                INIT=1;
 109   1            if(INIT==0)                  //密码初始化 
 110   1            {
 111   2                   x=SendB(iic,0x50,6);
 112   2                       Delay10ms();
 113   2            }            //首先从IIC器件中读出密码以供下面输入密码进行比较 
 114   1            x=ReadB(iic,0x50,6);
 115   1            Init_12864();
 116   1                for(i=0;i<150;i++){Delay10ms();}
 117   1      //**********************************若密码不正确,循环执行do{}while()***********************************
C51 COMPILER V8.08   电子胈_胨_                                                            08/14/2008 22:20:16 PAGE 3   

             -*********
 118   1      do{
 119   2                   LED1=1;
 120   2                   System();            //显示:"请输入密码"字幕  
 121   2                   press(key);
 122   2                       if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==i
             -ic[5])) //密码比较,若密码正确责进入系统,若密码不正确则显示密码错误,重新输入密码
 123   2               {
 124   3                          true();
 125   3                          do
 126   3                          {
 127   4                             P3=0xf0;                                                 //键入1或2继续执行下面语句,否则等待 
 128   4                         while(P3==0xf0);                                              
 129   4                     dat=key_scan();
 130   4                       }while(dat!=0x01&&dat!=0x02);
 131   3                          if(dat==1)                                                 //开锁 
 132   3                          {
 133   4                              LED1=0;
 134   4                                      unlock();
 135   4                                  for(i=0;i<100;i++){Delay10ms();}
 136   4                          continue;
 137   4                           }
 138   3                          if(dat==2)                                                  //修改密码 
 139   3                         {
 140   4                             do{
 141   5                                    System(); 
 142   5                                        press(key);
 143   5                                        again();
 144   5                                        press(iic);
 145   5                                            if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(ke
             -y[5]==iic[5]))
 146   5                                            {
 147   6                                                succeed();                            //修改密码成功 
 148   6                                                        for(i=0;i<100;i++){Delay10ms();}
 149   6                                            Delay10ms();
 150   6                                    x=SendB(iic,0x50,6);
 151   6                                            Delay10ms();      
 152   6                                x=ReadB(iic,0x50,6);break;
 153   6                                             }
 154   5                                            else                          //修改密码不成功,重新修改 
 155   5                                                {
 156   6                                                    repeat();
 157   6                                                        for(i=0;i<100;i++){Delay10ms();}
 158   6                                                 }
 159   5                                        }while(1);   
 160   4                          }
 161   3                       
 162   3                       }
 163   2                      else                                                                      //密码不正确,重新输入密码 
 164   2                      {
 165   3                          j++;
 166   3                              if(j==3)
 167   3                              {
 168   4                                 for(i=0;i<8;i++)
 169   4                                 {
 170   5                                    LED2=0;
 171   5                                        for(k=0;k<5;k++){Delay10ms();}
 172   5                                        LED2=1;
 173   5                                        for(k=0;k<5;k++){Delay10ms();}
 174   5                                      }
 175   4                                      j=0;
 176   4                               }
C51 COMPILER V8.08   电子胈_胨_                                                            08/14/2008 22:20:16 PAGE 4   

 177   3                              error();
 178   3                              for(i=0;i<50;i++){Delay10ms();}
 179   3                       }
 180   2      }while(1);      
 181   1            
 182   1                        
 183   1                 
 184   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2448    ----
   CONSTANT SIZE    =   1464    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      32
   IDATA SIZE       =     14    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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