智能解锁保险柜

/************************1号修改,可以验证密码正确**********************************************
----------------1.开发环境:Keil v4                       ----------------
----------------2.使用单片机型号:STC89C52RC           ----------------
----------------3.单片机使用晶振:11.0592M               ----------------
----------------4.功能:实现密码解锁,和存储记录----------------
----------------5.名称:智能保险柜 ----------------
***********************************************************************/
#include <reg52.h>
#include <intrins.h>
#include <main.h>
#include <chuankou.h>
#include <delay.h>
#include <eeprom.h>
#define uchar unsigned char
#define uint unsigned int
bit I2C_WriteData(uchar ADDR,uchar DAT);
uchar I2C_ReadData(uchar ADDR);


void main()
{    uchar xdata i,z,b,old[25],daihao[6],b1,b2,b3,b4,b5,b6;     
    init();    
        
//            while(1)
//            { 
//            I2C_WriteData(1,a[1]);delay(5);
//            I2C_WriteData(2,a[2]);delay(5);
//            I2C_WriteData(3,a[3]);delay(5);
//            I2C_WriteData(4,a[4]);delay(5); 
//            if(tr0_ok==1)
//            {
//                tr0_ok=0;
//                    
//            
//                ES=0;
//                for(i=1;i<5;i++)
//                {                
//                    SBUF=I2C_ReadData(i);
//                    while(!TI);
//                    TI=0;
//                }
//                ES=1;             
//            } 
//            if(tr0_ok==1)  
//            {    tr0_ok=0;
//                for(i=1;i<5;i++)
//                {
//                    I2C_WriteData(i,a[i]);delay(5);
//                }
//            } 
//            }
//}
//        for(z=25;z<31;z++)
//        {
//            daihao[b]=I2C_ReadData(z);     //25到31地址读取出的数一次存入代号0到5    ,如果解锁成功需要加一
//            b++;
//            if(b==6)
//            b=0;
//        }
    while(1)
    { 
    I2C_WriteData(1,0x30);delay(5);
    I2C_WriteData(2,0x30);delay(5);//24c02的第110到115地址单元作为密码存储区
    I2C_WriteData(3,0x30);delay(5); //必须放到while函数里
    I2C_WriteData(4,0x31);delay(5);//一定要加延时,否则会接受不到

    I2C_WriteData(5,0x30);delay(5);
    I2C_WriteData(6,0x30);delay(5);//24c02的第110到115地址单元作为密码存储区
    I2C_WriteData(7,0x30);delay(5); //必须放到while函数里
    I2C_WriteData(8,0x32);delay(5);//一定要加延时,否则会接受不到

    I2C_WriteData(9,0x30);delay(5);
    I2C_WriteData(10,0x30);delay(5);//24c02的第110到115地址单元作为密码存储区
    I2C_WriteData(11,0x30);delay(5); //必须放到while函数里
    I2C_WriteData(12,0x33);delay(5);//一定要加延时,否则会接受不到

    I2C_WriteData(13,0x30);delay(5);
    I2C_WriteData(14,0x30);delay(5);//24c02的第110到115地址单元作为密码存储区
    I2C_WriteData(15,0x30);delay(5); //必须放到while函数里
    I2C_WriteData(16,0x34);delay(5);//一定要加延时,否则会接受不到

    I2C_WriteData(17,0x30);delay(5);
    I2C_WriteData(18,0x30);delay(5);//24c02的第110到115地址单元作为密码存储区
    I2C_WriteData(19,0x30);delay(5); //必须放到while函数里
    I2C_WriteData(20,0x35);delay(5);//一定要加延时,否则会接受不到

    I2C_WriteData(21,0x30);delay(5);
    I2C_WriteData(22,0x30);delay(5);//24c02的第110到115地址单元作为密码存储区
    I2C_WriteData(23,0x30);delay(5); //必须放到while函数里
    I2C_WriteData(24,0x36);delay(5);//一定要加延时,否则会接受不到
    chuankou();        
    if(tr0_ok==1)
        {
            tr0_ok=0;
        
            
            ES=0; 
            for(i=1;i<25;i++)
            {
                old[i]=I2C_ReadData(i);             //将从地址1开始读取的数依次存入old
                delay(5);
            }
             ES=1;
             
        
        }    
         
         if(a[1]==old[1]&&a[2]==old[2]&&a[3]==old[3]&&a[4]==old[4])
        {
            P1=0xfe;
        }
        else
        if(a[1]==old[5]&&a[6]==old[2]&&a[3]==old[7]&&a[4]==old[8])
        {
            P1=0xfc;
        }
        else
        if(a[1]==old[9]&&a[2]==old[10]&&a[3]==old[11]&&a[4]==old[12])
        {
            P1=0xfb;
        }
        else
        if(a[1]==old[13]&&a[2]==old[14]&&a[3]==old[15]&&a[4]==old[16])
        {
            P1=0xfa;
        }
        else
        if(a[1]==old[17]&&a[2]==old[18]&&a[3]==old[19]&&a[4]==old[20])
        {
            P1=0xff;
        }
        else
        if(a[1]==old[21]&&a[2]==old[22]&&a[3]==old[23]&&a[4]==old[24])
        {
            P1=0xfe;
        }
        else
        P1=0xfd;  
        
     }    
}

猜你喜欢

转载自blog.csdn.net/qq_42444944/article/details/84665358