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

📄 51

📁 51单片机大量源码
💻
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   PASSWORD                                                              07/22/2009 13:42:13 PAGE 1   


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

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

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

 180   2                              else
 181   2                                      {
 182   3                                      flag=0;
 183   3                                      i=8;
 184   3                                      }
 185   2                      }
 186   1              return(flag);                                                   //返回flag
 187   1      }
 188          
 189          ////**********************************LCD显示函数开始**************************************
 190          void lcd_display()
 191          {
 192   1      uchar i=0;
 193   1      write_com(0x80+0x40+8);
 194   1      for(i=0;i<n;i++)
 195   1      {
 196   2      write_date(table3[0]);
 197   2      }
 198   1      }
 199          
 200          
 201          //****************************************键盘功能分配函数群开始****************************
 202          //** 0 ** 1 **2 ** 3**                     
 203          //** 4** 5** 6 **7 **
 204          //**8** 9** 确认(A)  **无效(B)
 205          //**取消(C)**修改密码键(D)**确认修改键(E)**无效(F)
 206          
 207          
 208          
 209          
 210          void key_manage1()
 211          {
 212   1      tab_key[n]=0;
 213   1      n++;
 214   1      if(xiugaiflag==1)
 215   1      {
 216   2      mima[count4]=0;
 217   2      count4++;
 218   2      }
 219   1      }
 220          
 221          void key_manage2()
 222          {
 223   1      
 224   1      tab_key[n]=1;
 225   1      n++;
 226   1      if(xiugaiflag==1)
 227   1      {
 228   2      mima[count4]=1;
 229   2      count4++;
 230   2      }
 231   1      }
 232          
 233          void key_manage3()
 234          {
 235   1      
 236   1      tab_key[n]=2;
 237   1      n++;
 238   1      if(xiugaiflag==1)
 239   1      {
 240   2      mima[count4]=2;
 241   2      count4++;
C51 COMPILER V8.02   PASSWORD                                                              07/22/2009 13:42:13 PAGE 5   

 242   2      }
 243   1      }
 244          
 245          void key_manage4()
 246          {
 247   1      tab_key[n]=3;
 248   1      n++;
 249   1      if(xiugaiflag==1)
 250   1      {
 251   2      mima[count4]=3;
 252   2      count4++;
 253   2      }
 254   1      }

⌨️ 快捷键说明

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