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

📄 1602+24c08+4x4+

📁 1602+24C08+4X4键盘密码锁
💻
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V9.01   PASSWORD                                                              10/15/2012 19:44:20 PAGE 1   


C51 COMPILER V9.01, COMPILATION OF MODULE PASSWORD
OBJECT MODULE PLACED IN PASSWORD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PASSWORD.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #define uint unsigned int
   3          #define uchar unsigned char
   4          void key_scan();
   5          uchar count0,count1,count3,num,n=0,temp,a,j,count4;
   6          uchar mima[8];                                                  //初始密码存储区
   7          uchar tab_key[50];                                              //输入密码存储区
   8          uchar code table[]={0x3f,0x06,0x5b,0x4f,
   9                                                  0x66,0x6d,0x7d,0x07,
  10                                                  0x7f,0x6f,0x77,0x7c,
  11                                                  0x39,0x5e,0x79,0x71};
  12          bit enterflag;                                                  //确认键按下与否的标志
  13          bit mimaflag;                                                   //密码正确与否的标志
  14          bit xiugaiflag;                                                 //修改密码标志  
  15          bit enter1flag;                                         //修改密码确认键标志    
  16          sbit red=P3^7;
  17          sbit bell=P3^6;
  18          sbit rs=P1^2;
  19          sbit rw=P1^1;
  20          sbit lcden=P1^0;
  21          sbit scl=P1^3;
  22          sbit sda=P1^4;
  23          uchar code table1[]="input the passco";
  24          uchar code table2[]="de:     --------";
  25          uchar code table3[]="*";
  26          uchar code table4[]="right   (^_^)   ";
  27          uchar code table5[]="first  error!!!!";
  28          uchar code table6[]="second error!!!!";
  29          uchar code table7[]="third error see ";
  30          uchar code table8[]="u tomorrow (^_^)";
  31          uchar code table9[]="define the passc";
  32          uchar code table10[]="ode:    --------";
  33          uchar code table11[]="code   is    new";
  34          //******************************键盘消抖函数*******************************
  35          void delay1()
  36          { ;; }
  37          void delay2(uchar x)
  38          {       uchar a,b;
  39   1              for(a=x;a>0;a--)
  40   1                      for(b=100;b>0;b--);
  41   1      }
  42          //***************************延时********
  43          void delay(uint z)
  44          {       uint x,y;
  45   1              for(x=z;x>0;x--)
  46   1                      for(y=110;y>0;y--);
  47   1      }
  48           //****************************e^2room的初始化*******************************
  49          void start()  //开始信号
  50          {       sda=1;
  51   1              delay1();
  52   1              scl=1;
  53   1              delay1();
  54   1              sda=0;
  55   1              delay1();
C51 COMPILER V9.01   PASSWORD                                                              10/15/2012 19:44:20 PAGE 2   

  56   1      }
  57          
  58          void stop()   //停止
  59          {
  60   1              sda=0;
  61   1              delay1();
  62   1              scl=1;
  63   1              delay1();
  64   1              sda=1;
  65   1              delay1();
  66   1      }
  67          //****************************应答信号*************************************
  68          void respond()  
  69          {
  70   1              uchar i;
  71   1              scl=1;
  72   1              delay1();
  73   1              while((sda==1)&&(i<250))i++;
  74   1              scl=0;
  75   1              delay1();
  76   1      }
  77          //*****************************写字节操作函数**********************************
  78          void write_byte(uchar date)
  79          {       uchar i,temp;
  80   1              temp=date;
  81   1              for(i=0;i<8;i++)
  82   1              {
  83   2                      temp=temp<<1;                   //保持最高位,左移到进位CY
  84   2                      scl=0;
  85   2                  delay1();
  86   2                      sda=CY;
  87   2                      delay1();
  88   2                      scl=1;
  89   2                      delay1();
  90   2              }
  91   1              scl=0;
  92   1              delay1();
  93   1              sda=1;//总线释放
  94   1              delay1();
  95   1      }
  96          //*******************************读字节操作函数*****************************
  97          uchar read_byte()
  98          {
  99   1              uchar i,k;
 100   1              scl=0;
 101   1              delay1();
 102   1              sda=1;
 103   1              delay1();
 104   1              for(i=0;i<8;i++)
 105   1              {
 106   2                      scl=1;
 107   2                      delay1();       
 108   2                      k=(k<<1)|sda;    //或运算,放到最低位
 109   2                      scl=0;
 110   2                      delay1();       
 111   2              }
 112   1              return k;
 113   1      }
 114          //**********************************写地址函数******************************
 115          void write_add(uchar address,uchar date)
 116          {       start();
 117   1              write_byte(0xa0);
C51 COMPILER V9.01   PASSWORD                                                              10/15/2012 19:44:20 PAGE 3   

 118   1              respond();
 119   1              write_byte(address);
 120   1              respond();
 121   1              write_byte(date);
 122   1              respond();
 123   1              stop();
 124   1      }
 125          //*******************************读地址函数*************************************
 126          uchar read_add(uchar address)
 127          {       uchar date;
 128   1              start();
 129   1              write_byte(0xa0);
 130   1              respond();
 131   1              write_byte(address);
 132   1              respond();
 133   1              start();
 134   1              write_byte(0xa1);
 135   1              respond();
 136   1              date=read_byte();
 137   1              stop();
 138   1              return date;
 139   1      }
 140          //****************************LCD1602的初始化*******************************
 141          void write_com(uchar com)
 142          {       rs=0;
 143   1              lcden=0;
 144   1              P0=com;
 145   1              delay(5);
 146   1              lcden=1;
 147   1              delay(5);
 148   1              lcden=0;        
 149   1      }
 150          
 151          void write_date(uchar date)
 152          {       rs=1;
 153   1              lcden=0;
 154   1              P0=date;
 155   1              delay(5);
 156   1              lcden=1;
 157   1              delay(5);
 158   1              lcden=0;        
 159   1      }
 160          //***************************************密码比较函数********************************
 161          bit mimacmp()                                   
 162          {       bit flag;
 163   1              uchar i;
 164   1              for(i=0;i<8;i++)
 165   1                      {       if(mima[i]==tab_key[i])
 166   2                                      flag=1;
 167   2                              else
 168   2                              {       flag=0;
 169   3                                      i=8;
 170   3                              }
 171   2                      }
 172   1              return(flag);                                                   //返回flag
 173   1      }
 174          
 175          ////**********************************LCD显示函数开始**************************************
 176          void lcd_display()
 177          {       uchar i=0;
 178   1              write_com(0x80+0x40+8);
 179   1              for(i=0;i<n;i++)
C51 COMPILER V9.01   PASSWORD                                                              10/15/2012 19:44:20 PAGE 4   

 180   1              {       write_date(table3[0]);
 181   2              }
 182   1      }
 183          //****************************************键盘功能分配函数群开始****************************
 184          //** 0 ** 1 **2 ** 3**                     
 185          //** 4** 5** 6 **7 **
 186          //**8** 9** 确认(A)  **无效(B)
 187          //**取消(C)**修改密码键(D)**确认修改键(E)**无效(F)
 188          void key_manage1()
 189          {       tab_key[n]=0;
 190   1              n++;
 191   1              if(xiugaiflag==1)
 192   1              {       mima[count4]=0;
 193   2                      count4++;
 194   2              }
 195   1      }
 196          /**************/
 197          void key_manage2()
 198          {       tab_key[n]=1;
 199   1              n++;
 200   1              if(xiugaiflag==1)
 201   1              {       mima[count4]=1;
 202   2                      count4++;
 203   2              }
 204   1      }
 205          
 206          void key_manage3()
 207          {       tab_key[n]=2;
 208   1              n++;
 209   1              if(xiugaiflag==1)
 210   1              {       mima[count4]=2;

⌨️ 快捷键说明

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