KEIL开发的密码锁 源程序,已经通过PROTEUS软件的仿真测试

源代码在线查看: 复件 mm.lst

软件大小: 60 K
上传用户: zhangtaoai007
关键词: PROTEUS KEIL 密码锁 仿真测试
下载地址: 免注册下载 普通下载 VIP

相关代码

				C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 1   
				
				
				C51 COMPILER V7.09, COMPILATION OF MODULE 复件_MM
				OBJECT MODULE PLACED IN 复件 mm.OBJ
				COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 复件 mm.c BROWSE DEBUG OBJECTEXTEND
				
				line level    source
				
				   1          /*********************************************************************/
				   2          //            
				   3          //                       自动报警控制
				   4          //                    ancleyan 2007.04.17      
				   5          /*********************************************************************/
				   6          //使用AT89C51单片机,12MHZ晶振,P1口输入,P2口作列扫描,p3数据输出,用共阳LED数码管
				   7          
				   8          #include"reg51.h"
				   9          #define char unsigned char
				  10          //
				  11          sbit qqqq=P0^7;
				  12          sbit aa=P1^0;   sbit bb=P1^1;   sbit cc=P1^2;
				  13          sbit dd=P1^3;   sbit ee=P1^4;   sbit ff=P1^5;
				  14          sbit gg=P1^6;   sbit hh=P1^7; 
				  15          char code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
				  16          /* 共阳LED段码表     "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9" "不亮"     */  
				  17          //char code dis_7[10]={0xC0,0xF9,0xA4,0x99,0xB0,0x82,0xF8,0x80,0x99,0xff};
				  18          /* 共阳LED段码表     "0"  "1"  "2"  "8"  "3"  "5"  "6"  "7"  "4"  "9" "不亮"     */ 
				  19          //char code  scan_con[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   // 列扫描控制字
				  20          //char code  scan_con[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   // 列扫描控制字
				  21          char code  scan_con[9]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};   // 列扫描控制字
				  22          char data  keytmp[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//显示单元数据初值,共8个
				  23          //char data  skeytmp[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//显示单元数据初值,共8个
				  24          char data  key[8]={0x01,0x02,0x03,0x06,0x06,0x05,0x04,0x03};
				  25          //char m;
				  26          char t;     //供键盘输入的数存储进数组时使用
				  27          
				  28          //*******1毫秒延时程序********
				  29          delay1ms(int t)
				  30          {
				  31   1         int i,j;
				  32   1         for(i=0;i				  33   1         for(j=0;j				  34   1         {;}
				  35   1      }
				  36          //*******初始化程序*********
				  37          char clear(void)
				  38          {
				  39   1        char tt;
				  40   1        P2=scan_con[8];       
				  41   1        t=0;
				  42   1        //delay1ms(200);
				  43   1        for(tt=0;tt				  44   1          {
				  45   2              keytmp[tt]=0xff;
				  46   2              }
				  47   1        return(t);
				  48   1      
				  49   1      }
				  50          //*****密码验证程序*********//
				  51          void password(void)
				  52          {
				  53   1         while(1)
				  54   1         {    if((keytmp[0]==key[0])&&(keytmp[1]==key[1])&&(keytmp[2]==key[2])&&(keytmp[3]==key[3])&&(keytmp[4]==ke
				             -y[4]))     
				C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 2   
				
				  55   2       //   if()
				  56   2                // {
				  57   2                      // if(keytmp[5]==key[5]&&keytmp[6]==key[6]&&keytmp[7]==key[7])                               //&&keytmp[8]==key[8]
				  58   2                              {
				  59   3                                qqqq=0;  clear();
				  60   3                      //      }
				  61   3                 }
				  62   2              }
				  63   1      }    
				  64          
				  65          
				  66          
				  67          //**********功能函数15***********************************
				  68          
				  69          void fun15(void)
				  70          {
				  71   1        delay1ms(200);
				  72   1        gg=0;
				  73   1      }
				  74          
				  75          
				  76          
				  77          
				  78          //**********功能函数14***********************************
				  79          void fun14(void)
				  80          {
				  81   1          password();
				  82   1      }
				  83          //**********功能函数13***********************************
				  84          void fun13(void)
				  85          {
				  86   1        delay1ms(200);
				  87   1        ee=0;
				  88   1      }
				  89          //**********功能函数12***********************************
				  90          void fun12(void)
				  91          {
				  92   1        delay1ms(200);
				  93   1        dd=0;
				  94   1      }
				  95          //**********功能函数11***********************************
				  96          void fun11(void)
				  97          {
				  98   1        delay1ms(200);
				  99   1        cc=0;
				 100   1      }
				 101          //**********功能函数10***********************************
				 102          void fun10(void)
				 103          {
				 104   1        //password();
				 105   1      }
				 106          //**********功能函数9***********************************
				 107          char fun9(void)
				 108          { void scan_7(void);//对被调用函数的说明
				 109   1        while(P3!=0xfe){scan_7();}   
				 110   1        //delay1ms(200);       //防止由于按键未放开 输入一串数字  可以加入一个while(P3!=0xfe)语句 直到放开键才动
				             -作
				 111   1        keytmp[t]=9;         //用delay1ms(100)语句可以按住键之后重复输入
				 112   1        aa=0;              
				 113   1        return t++; 
				 114   1      }
				 115          //**********功能函数8***********************************
				C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 3   
				
				 116          char fun8(void)
				 117          {
				 118   1        while(P3!=0xfe){scan_7();}   
				 119   1        keytmp[t]=8;
				 120   1        bb=0;                 //函数功能测试灯
				 121   1        return t++;
				 122   1      }
				 123          //**********功能函数7***********************************
				 124          char fun7(void)
				 125          {
				 126   1        while(P3!=0xfe){scan_7();}   
				 127   1        keytmp[t]=7;
				 128   1        cc=0;
				 129   1        return t++;
				 130   1      }
				 131          //**********功能函数6***********************************
				 132          char fun6(void)
				 133          { while(P3!=0xfd){scan_7();} 
				 134   1        keytmp[t]=6;
				 135   1        dd=0;
				 136   1        return t++;
				 137   1               
				 138   1      }
				 139          //**********功能函数5***********************************
				 140          char fun5(void)
				 141          {  while(P3!=0xfd){scan_7();} 
				 142   1         keytmp[t]=5;
				 143   1        ee=0;
				 144   1        return t++;
				 145   1      }
				 146          //**********功能函数4***********************************
				 147          char fun4(void)
				 148          { while(P3!=0xfd){scan_7();} 
				 149   1         keytmp[t]=4;
				 150   1        ff=0;
				 151   1        return t++;
				 152   1      }
				 153          //**********功能函数3***********************************
				 154          char fun3(void)
				 155          { while(P3!=0xfb){scan_7();} 
				 156   1        keytmp[t]=3;
				 157   1        gg=0;
				 158   1       return t++;
				 159   1      }
				 160          //**********功能函数2***********************************
				 161          char fun2(void)
				 162          { while(P3!=0xfb){scan_7();} 
				 163   1       keytmp[t]=2;
				 164   1       return t++;
				 165   1      }
				 166          //**********功能函数1***********************************
				 167          char fun1(void)
				 168          { while(P3!=0xfb){scan_7();} 
				 169   1        keytmp[t]=0x01;
				 170   1        hh=0;
				 171   1        return t++;
				 172   1      }
				 173          //**********功能函数0***********************************
				 174          char fun0(void)
				 175          { while(P3!=0xf7){scan_7();} 
				 176   1        keytmp[t]=0;
				 177   1        aa=0;
				C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 4   
				
				 178   1        return t++;
				 179   1      }
				 180          //**************************
				 181          //对型如7 8 9 a 的键盘的驱动
				 182          //      4 5 6 b
				 183          //      1 2 3 c
				 184          //      d 0 e f 
				 185          /**********按键驱动函数***********/
				 186          void scankey(void)
				 187          { 
				 188   1         P3=0xfe;                             //将第一行置零
				 189   1         if(P3!=0xfe)  
				 190   1           {  if(P3==0x7e)        fun10();      //一行四列
				 191   2                  else if(P3==0xbe)   fun9();       //一行三列
				 192   2                  else if(P3==0xde)   fun8();       //一行二列
				 193   2                      else if(P3==0xee)   fun7();       //一行一列
				 194   2                }  
				 195   1         else                              
				 196   1             {
				 197   2                   P3=0xfd;                 //将第二行置零
				 198   2                 if(P3!=0xfd)
				 199   2                            { if(P3==0x7d)        fun11();   //二行四列
				 200   3                                  else if(P3==0xbd)   fun6();    //二行三列
				 201   3                          else if(P3==0xdd)   fun5();    //二行二列
				 202   3                              else if(P3==0xed)   fun4();    //二行一列
				 203   3                                }
				 204   2                         else                           
				 205   2                     {
				 206   3                            P3=0xfb;               //将第三行置零
				 207   3                        if(P3!=0xfb)
				 208   3                                  { if(P3==0x7b)        fun12();//三行四列
				 209   4                                        else if(P3==0xbb)   fun3();//三行三列
				 210   4                                else if(P3==0xdb)   fun2();//三行二列
				 211   4                                    else if(P3==0xeb)   fun1();//三行一列 
				 212   4                                      }
				 213   3                                        else
				 214   3                                        {
				 215   4                                          P3=0xf7;             
				 216   4                                          { if(P3!=0xf7) 
				 217   5                                      { 
				 218   6                                                      if(P3==0x77)        fun13();//四行四列
				 219   6                                          else if(P3==0xb7)   fun14();//四行三列
				 220   6                                  else if(P3==0xd7)   fun0();//四行二列
				 221   6                                      else if(P3==0xe7)   fun15();//四行一列 
				 222   6                                          }
				 223   5                                          }
				 224   4                                    }
				 225   3                     }
				 226   2              }
				 227   1      }
				 228          //*****数码管显示函数   将数据及显示控制码输出*********//
				 229          void scan_7(void)
				 230          {
				 231   1        char j;
				 232   1        for(j=0;j				 233   1          {
				 234   2               P2=scan_con[j];       //scan_con[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   // 列扫描控制字
				 235   2               P0=dis_7[keytmp[j]];  //dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
				 236   2               delay1ms(1);  
				 237   2          }
				 238   1      }
				 239          
				C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 5   
				
				 240          //*******主程序*******//
				 241          void main()
				 242          { 
				 243   1        while(1)
				 244   1        {
				 245   2          scankey();
				 246   2          scan_7();              //delay1ms(1); 
				 247   2              if(t==9)          //注意 t取值为9
				 248   2               {
				 249   3               clear();
				 250   3               }
				 251   2        }
				 252   1      }
				 253          
				 254          
				 255          
				 256          
				 257          
				 258          
				 259          
				 260          
				 261          
				 262          
				 263          
				 264          
				 265          
				 266          
				 267          
				 268          
				 269            
				 270          
				 271          
				 272          
				
				
				MODULE INFORMATION:   STATIC OVERLAYABLE
				   CODE SIZE        =    597    ----
				   CONSTANT SIZE    =     20    ----
				   XDATA SIZE       =   ----    ----
				   PDATA SIZE       =   ----    ----
				   DATA SIZE        =     17    ----
				   IDATA SIZE       =   ----    ----
				   BIT SIZE         =   ----    ----
				END OF MODULE INFORMATION.
				
				
				C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)
							

相关资源