久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1994|回復(fù): 0
收起左側(cè)

密碼鎖代碼

[復(fù)制鏈接]
ID:291476 發(fā)表于 2018-3-28 22:55 | 顯示全部樓層 |閱讀模式
#include<AT89x51.h>
#include"intrins.h"
#include"key.h"
#include"xsh.h"
#include"24c02.h"
#define ulong unsigned long
bit  BJCB=0;//報(bào)警標(biāo)志                                          
     XG=0,//修改密碼標(biāo)志位
     BJ=0,//報(bào)警標(biāo)志位
     SJ=0;//鎖鍵盤標(biāo)志位
    // xg=0;//修改密碼標(biāo)志位
uchar PSWD0_0[16]={0};//密碼輸入緩存存儲(chǔ)單元
//uchar code PSWD0_1[16]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};//用戶初始密碼存儲(chǔ)單元
//uchar PSWD1_0[16]={0};//讀出密碼緩存存儲(chǔ)單元
uchar PSWD1_1[16]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};////管理員初始密碼存儲(chǔ)單元
sbit OUT=P3^5;//輸出端口
sbit L1=P0^2;//上電指示
sbit L2=P0^1;//開鎖指示
sbit L3=P0^0;//報(bào)警指示
uint   mg=0,//密碼個(gè)數(shù)
       KSC=0,//開鎖次數(shù)
       BJC=0,//報(bào)警次數(shù)
           TCNTY=0,//用戶按鍵定時(shí)次數(shù)累加
           TCNTG=0,//管理員輸入密碼定時(shí)次數(shù)
           yhsh,//用戶輸入標(biāo)志位
           glsh,//管理員輸標(biāo)志位
           shw;//密碼輸完標(biāo)志位
void yhmimaxig();//密碼修改程序
void glmimaxig();//管理員修改程序
void bjyin(ulong t)
{
ulong c;
uint n;
for(c=0;c<t;c++)
{
for(n=0;n<50;n++); //延時(shí)
BEEP=~BEEP; //取反輸出到喇叭的信號(hào)
}
}
void delay_10ms(void)
{
        uint i = 1000;
        while(i--);
}
//////////////定時(shí)中斷服務(wù)函數(shù)//////////////////////////////////////
void timer0() interrupt 1
{
uint i;
TH0=(65536-50000)/256; //對(duì)TH0 TL0賦值50MS定時(shí)
TL0=(65536-50000)%256; //重裝計(jì)數(shù)初值
if(yhsh==1)
{
  TCNTY++;//用戶定時(shí)計(jì)數(shù)
  if(shw==1)
{
  TR0=0;
  TCNTY=0;
  }
  if(TCNTY==400)
  {
   TR0=0;//關(guān)閉T0定時(shí)器
   TCNTY=0;
    mg=0;//密碼個(gè)數(shù)清零
        L1=1;
        for(i=0;i<2;i++)//聲光報(bào)警電路
         {
                  L3=0;
                  bjyin(1000);
                  L3=1;
                  delay(1000);
          }
          L1=0;
     }
    }
        else if(glsh==1)
            {
                 TCNTG++;//管理員定時(shí)計(jì)數(shù)
         if(shw==1)
        {
           TR0=0;
           TCNTG=0;
         }
       if(TCNTG==400)
       {
        TR0=0;//關(guān)閉T0定時(shí)器
        TCNTG=0;
        mg=0;//密碼個(gè)數(shù)清零
                L1=1;
             for(i=0;i<2;i++)//聲光報(bào)警電路
            {
                  L3=0;
                  bjyin(1000);
                  L3=1;
                  delay(1000);
                 }
                 L1=0;
                }
                }           
                }                     
            
void main()
{  
   uint i;
   TMOD=0x01;  //定時(shí)器工作在方式1
   ET0=1;
   EA=1;
   TH0=(65536-50000)/256; //對(duì)TH0 TL0賦值
   TL0=(65536-50000)%256; //使定時(shí)器0.05秒中斷一次
  //Read_page24c02(0x00,PSWD1_1,16);//向24c02里讀用戶初始密碼
   //i2cWrite24LC16B(0,0X20);
/////////////第一次向24c02里寫入初始管理員密碼、用戶密碼、開鎖次數(shù)/////////////////////
   for(i=0;i<16;i++)        //用一次寫一個(gè)向24c02里寫
  {
   i2cWrite24LC16B(PSWD1_1[i],i);
   delay_10ms;  
  }
   for(i=0;i<16;i++)        //用一次寫一個(gè)向24c02里寫
  {
   i2cWrite24LC16B(PSWD1_1[i],0x10+i);
   delay_10ms;  
  }  //proteus仿真時(shí)用,燒程序時(shí),第一次用,第二次不用。
  KSC=i2cRead24LC16B(0X20);
loop:  L1=0;//上電紅燈亮
                L2=1;//開鎖成功后綠燈亮
                L3=1;//輸錯(cuò)時(shí)黃燈亮報(bào)警
                OUT=0;//開信號(hào)關(guān)閉
       display_0(KSC);//開鎖前顯示
            
///////////密碼輸入/////////////////
if(SJ==0)//鎖鍵盤標(biāo)志位為0
{
  do
   {
    flag=0;//鍵盤標(biāo)志位
    key();
        if(flag==1&&num==12) //判斷是否為管理員功能鍵按下
        {
         goto gl;
           }
           if(flag==1&&num<=9)
         {
          PSWD0_0[mg]=num;
          mg++;//密碼個(gè)數(shù)
         }
         if(flag==1&&num==14&&mg>=1)//輸入錯(cuò)誤刪除
         {
           mg=mg-1;
           }
         if(mg==1) //有密碼鍵按下開定時(shí)器限時(shí)
         {
          TR0=1;
          yhsh=1;
          }
   }        
   while(num!=15);
   if(mg!=16)
   {
    for(i=mg;i<16;i++)
        {
         PSWD0_0[i]=0;
        }
   }   
/////////////////密碼比較電路////////////////////////////
if(flag==1&&num==15)  
{ flag=0;
   yhsh=0;
   shw=1;
   num=0;
  for(i=0;i<16;i++)        //從24c02里讀出16個(gè)密碼
  {
    PSWD1_1[i]=i2cRead24LC16B(i);
    delay_10ms;  
  }
  for(i=0;i<16;i++)
{
   if(PSWD1_1[i]!=PSWD0_0[i])
   {
     BJCB=1;
     break;
        }
   else
   BJCB=0;        
   
  }
}
   if(BJCB!=0)
       {
             BJC++;
                 if(BJC!=3)           
            {
                 BJCB=0; //第一次和第二次報(bào)警
             delay(500);
                 mg=0;//密碼個(gè)數(shù)清零
                 L1=1;
                 for(i=0;i<3;i++)//聲光報(bào)警電路
                 {
                  L3=0;
                  display_3();
                  bjyin(1000);
                  L3=1;
                  delay(1000);
                  }
                 goto loop;         
                }
          else if(BJC==3)
            {
                 BJC=0;
             BJCB=0;
             display_5();//三次輸入密碼失敗,自鎖
             SJ=1;//鎖鍵盤標(biāo)志位
             mg=0;//密碼個(gè)數(shù)清零
                 L1=1;
                 for(i=0;i<2;i++)//聲光報(bào)警電路
                 {
                  L3=0;
                  bjyin(1000);
                  L3=1;
                  delay(1000);
                  }
             goto loop;
                }
                }               
           else
           if(BJCB==0)
          {
           KSC++;
           display_1(KSC);
           i2cWrite24LC16B(KSC,0X20);
           if(KSC==100)
           {
            SJ=1;
                 }
           L2=0;
           L1=1;
           OUT=1;
           mg=0;//密碼個(gè)數(shù)清零
loop1:do           //鍵盤掃描等待功能鍵按下
           {
            flag=0;
            key();
                if(flag)
           {        
             flag=0;
            switch(num)
           {   
            case 13:           
                {
                          display_2();
             do
            {
             flag=0;//鍵盤標(biāo)志位
             key();
                if(flag==1&&num<=9)
               {
                 PSWD0_0[mg]=num;
                 mg++;//密碼個(gè)數(shù)
                }
               if(flag==1&&num==14&&mg>=1)//輸入錯(cuò)誤刪除
              {
               mg=mg-1;
              }
              if(mg==16)
             {
               do           //鍵盤掃描等待功能鍵按下
             {
               flag=0;
               key();
             }
            while(num!=15);
           }
       }        
       while(num!=15);
      if(mg!=16&&num==15)
     {
      for(i=mg;i<16;i++)
         {
           PSWD0_0[i]=0;
          }
         }
        if(flag==1&&num==15)
   {
     flag=0;        
         mg=0;
   for(i=0;i<16;i++)        //用一次寫一個(gè)向24c02里寫
  {
   i2cWrite24LC16B(PSWD0_0[i],i);
   delay_10ms;  
  }
  display_1(KSC);
   do           //鍵盤掃描等待功能鍵按下
   {
         flag=0;
         key();
        }
        while(num!=11); //按下返回鍵,鎖鎖返回
        {
      goto loop;
        }
    }
        };break;
               
   case 11: {
                       goto loop;
                                  //break;           
                    }
                    }
                        }
                        }
          while(flag!=0);//如果設(shè)置密碼鍵按下
          goto loop1;
// i2cWrite24c02_page(0x00,PSWD1_1,mg);
   }
   }
else
    {
         do
    {
    flag=0;
    key();
        }
        while(num!=12);//判斷是否為管理員功能鍵按下         
  gl:do//管理員輸入密碼
     {
     flag=0;
     key();
            if(flag==1&&num<=9)
         {
          PSWD0_0[mg]=num;
          mg++;//密碼個(gè)數(shù)
         }
         if(flag==1&&num==14&&mg>=1)//刪除鍵按下
         {
           mg=mg-1;
         }
         if(mg==1)
          {
           TR0=1;
          }//開定時(shí)器TO限5秒開鎖
      }        
   while(num!=15);
   if(mg!=16&&num==15)
   {
    for(i=mg;i<16;i++)
        {
         PSWD0_0[i]=0;
        }
   }
  //////////管理員密碼比較///////////////////////
//Read_page24c02(0x10,PSWD0_1,16)
for(i=0;i<16;i++)        //從24c02里讀出16個(gè)密碼
{
    PSWD1_1[i]=i2cRead24LC16B((0x10+i));
    delay_10ms;  
}        
if(flag==1&&num==15)  
{  flag=0;
   shw=1;
   num=0;
  for(i=0;i<mg;i++)
{
   if(PSWD1_1[i]!=PSWD0_0[i])
   { BJCB=1;
     break;
        }
   else        
   BJCB=0;
   }
   }
   if(BJCB!=0)
       {
             BJC++;
                 if(BJC!=3)           
            {
                 BJCB=0; //第一次和第二次報(bào)警
            
                 mg=0;//密碼個(gè)數(shù)清零
                 L1=1;
                 for(i=0;i<2;i++)//聲光報(bào)警電路
                 {
                  L3=0;
                  display_3();
                  bjyin(1000);
                  L3=1;
                  delay(1000);
                  }
                 display_1(KSC);
                 goto loop;         
                }
          else
            {
                 BJCB=0;
             display_5();//三次輸入密碼失敗,自鎖
             mg=0;//密碼個(gè)數(shù)清零
                 delay(10000);
                 display_1(KSC);
             goto loop;
                }            
           }   
           else
          {
           SJ=0;
           display_4();//管理員開鎖顯示
       mg=0;
           L2=0;
           L1=1;
           L3=0;//密碼個(gè)數(shù)清零
           do           //鍵盤掃描等待功能鍵按下
           {
            flag=0;
            key();
           }
           while(flag==0); //如果設(shè)置密碼鍵按下
           if(flag==1&&num==13)
           {
             flag=0;
             display_2();
             do
            {
             flag=0;//鍵盤標(biāo)志位
             key();
                if(flag==1&&num<=9)
               {
                 PSWD0_0[mg]=num;
                 mg++;//密碼個(gè)數(shù)
                }
               if(flag==1&&num==14&&mg>=1)//輸入錯(cuò)誤刪除
             {
               mg=mg-1;
              }
              if(mg==16)
             {
               do           //鍵盤掃描等待功能鍵按下
             {
               flag=0;
               key();
             }
            while(num!=15);
           }
       }        
       while(num!=15);
      if(mg!=16&&num==15)
     {
      for(i=mg;i<16;i++)
         {
           PSWD0_0[i]=0;
          }
         }
        if(flag==1&&num==15)
   {
     flag=0;        
         mg=0;
   for(i=0;i<16;i++)        //用一次寫一個(gè)向24c02里寫
  {
   i2cWrite24LC16B(PSWD0_0[i],(0x10+i));
   delay_10ms;  
  }
  display_4();
   do           //鍵盤掃描等待功能鍵按下
   {
         flag=0;
         key();
        }
        while(num!=11); //按下返回鍵,鎖鎖返回
        {
      goto loop;
        }
    }
           }
           if(flag==1&&num==10)
           {
            KSC=0;
                i2cWrite24LC16B(KSC,0X20);
                display_1(KSC);
            do           //鍵盤掃描等待功能鍵按下
           {
            flag=0;
            key();
           }
           while(num!=11);//按下返回鍵,鎖鎖返回
            goto loop;
       }
           if(flag==1&&num==11)//按下返回鍵,鎖鎖返回
           {
            goto loop;
                }
       }
           }
           }
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级二级三级黄色 | 99精品久久久 | 蜜桃特黄a∨片免费观看 | 日韩高清电影 | 天堂中文在线播放 | 精品九九 | www.日韩| 91视频精选| 亚洲精品电影网在线观看 | 久久精品99| 精品在线一区 | 亚洲视频一区二区三区 | 久久久久中文字幕 | 久久国产精品视频 | 91精品国产综合久久香蕉麻豆 | 欧一区 | 国产精品免费一区二区三区四区 | 色综合久久伊人 | 亚洲视频中文字幕 | 一级大片免费 | 国产免费高清 | 久在线精品视频 | 久久五月婷 | 在线观看中文字幕 | 国产一二区视频 | 在线观看av网站永久 | 粉嫩高清一区二区三区 | 99久久久国产精品 | 国产视频久久 | 午夜看片网站 | 色免费看| 91精品国产高清一区二区三区 | 久草网免费 | 天天操狠狠操 | 国产一级片一区二区 | 久艹av | 国产伦精品一区二区三区照片91 | 91污在线| 美国av毛片 | 一区二区三区国产 | 四虎永久影院 |