#include <AT89X52.H>
#include<smcl_lcd8.h>
#include<AT_serial.h>
void keypad();
void reader();
void ext_init();
sbit set=P1^0;
sbit mov=P1^1;
sbit inc=P1^2;
sbit dec=P1^3;
sbit ent=P1^4;
sbit buzz=P1^5;
unsigned char pw1[20],u[30],w,i,aa,i1=0,i2=0,i3=0,i4=0;
int password,x=1;
void inter0(void) interrupt 0
{
u[i]=0;
if(i<30)i=i+1;
Delay(50);
}
void inter1(void) interrupt 2
{
u[i]=1;
if(i<30)i=i+1;
Delay(50);
}
void main()
{
buzz=0;
Lcd8_Init();
ext_init();
Serial_Init(9600);
Lcd8_Display(0x80,"RFID",4);
Delay(60000);
Lcd8_Display(0x80," Show card ",16);
Lcd8_Display(0xC0," ",16);
while(1)
{
if(i>=25)
{
reader();
if((pw1[4]=='8' && pw1[5]=='C') ||(pw1[4]=='3' && pw1[5]=='2'))
{
Lcd8_Display(0xc0," Person1 found ",16);
Delay(60000);
Lcd8_Command(0x01);
Lcd8_Display(0x80," Enter Password ",16);
Delay(60000);
keypad();
Delay(50000);
if(password==1111)
{
Lcd8_Command(0x01);
Lcd8_Display(0x80," Valid Password ",16);
Delay(50000);Delay(50000);
Serial_Out('*');
Serial_Out('0');
Serial_Out('1');
Serial_Out('#');
}
else
{
Lcd8_Command(0x01);
Lcd8_Display(0x80,"Invalid Password",16);
buzz=1;
Delay(50000);
buzz=0;
}
password=0;
}
if((pw1[4]=='E' && pw1[5]=='6') ||(pw1[4]=='F' && pw1[5]=='9'))
{
Lcd8_Display(0xc0," Person2 found ",16);
Delay(60000);Delay(60000);
Lcd8_Command(0x01);
Lcd8_Display(0x80," Enter Password ",16);
Delay(60000);Delay(60000);
keypad();
if(password==2222)
{
Lcd8_Command(0x01);
Lcd8_Display(0x80," Valid Password ",16);
Delay(50000);Delay(50000);Delay(50000);
Serial_Out('*');
Serial_Out('0');
Serial_Out('2');
Serial_Out('#');
}
else
{
Lcd8_Command(0x01);
Lcd8_Display(0x80,"Invalid Password",16);
buzz=1;
Delay(50000);
buzz=0;
}
password=0;
}
if((pw1[4]=='0' && pw1[5]=='3') ||(pw1[4]=='0' && pw1[5]=='D'))
{
Lcd8_Display(0xc0," Person3 found ",16);
Delay(60000);Delay(60000);
Lcd8_Command(0x01);
Lcd8_Display(0x80," Enter Password ",16);
Delay(60000);Delay(60000);
keypad();
if(password==3333)
{
Lcd8_Command(0x01);
Lcd8_Display(0x80," Valid Password ",16);
Delay(50000);Delay(50000);Delay(50000);
Serial_Out('*');
Serial_Out('0');
Serial_Out('3');
Serial_Out('#');
}
else
{
Lcd8_Command(0x01);
Lcd8_Display(0x80,"Invalid Password",16);
buzz=1;
Delay(50000);
buzz=0;
}
password=0;
}
if((pw1[4]=='7' && pw1[5]=='9') ||(pw1[4]=='9' && pw1[5]=='E'))
{
Lcd8_Display(0xc0," Person4 found ",16);
Delay(60000);//Delay(60000);
Lcd8_Command(0x01);
Lcd8_Display(0x80," Enter Password ",16);
Delay(60000);//Delay(60000);
keypad();
if(password==4444)
{
Lcd8_Command(0x01);
Lcd8_Display(0x80," Valid Password ",16);
Delay(50000);//Delay(50000);Delay(50000);
Serial_Out(48);
Serial_Out(52);
}
else
{
Lcd8_Command(0x01);
Lcd8_Display(0x80,"Invalid Password",16);
buzz=1;
Delay(50000);
buzz=0;
}
password=0;
}
i=0;
EA=1;
}
Lcd8_Display(0x80," Show card ",16);
Lcd8_Display(0xC0," ",16);
}
}
void keypad()
{
while(set==1);
Lcd8_Command(0x01);
Lcd8_Display(0x80," Enter Password ",16);
Lcd8_Display(0xc0,"0000 ",16);
Delay(60000);//Delay(60000);
while(password==0)
{
// increment
if(x==1 && inc==0)
{
while(inc==0);
{
i1++;
if(i1>9) i1=0;
Lcd8_Write(0xc0,i1+48);
}
}
if(x==2 && inc==0)
{
while(inc==0);
{
i2++;
if(i2>9) i2=0;
Lcd8_Write(0xc1,i2+48);
}
}
if(x==3 && inc==0)
{
while(inc==0);
{
i3++;
if(i3>9) i3=0;
Lcd8_Write(0xc2,i3+48);
}
}
if(x==4 && inc==0)
{
while(inc==0);
{
i4++;
if(i4>9) i4=0;
Lcd8_Write(0xc3,i4+48);
}
}
//decrement
if(x==1 && dec==0)
{
while(dec==0);
{
i1--;
if(i1==0) i1=9;
Lcd8_Write(0xc0,i1+48);
}
}
if(x==2 && dec==0)
{
while(dec==0);
{
i2--;
if(i2==0) i2=9;
Lcd8_Write(0xc1,i2+48);
}
}
if(x==3 && dec==0)
{
while(dec==0);
{
i3--;
if(i3==0) i3=9;
Lcd8_Write(0xc2,i3+48);
}
}
if(x==4 && dec==0)
{
while(dec==0);
{
i4--;
if(i4==0) i4=9;
Lcd8_Write(0xc3,i4+48);
}
}
//move
if(mov==0)
{
while(mov==0);
{
Lcd8_Command(0x06);
x++;
if(x>4) x=1;
}
}
//enter
if(ent==0)
{
while(ent==0);
{
password=(i1*1000)+(i2*100)+(i3*10)+i4;
//Lcd8_Decimal4(0xc0,password);
//Delay(60000);
Lcd8_Command(0x01);
Lcd8_Display(0x80,"Password stored ",16);
Delay(60000);
Delay(60000);
}
}
}
}
void ext_init()
{
EX1=EX0=1;
IT0=IT1=1;
}
void reader()
{
EA=0;
pw1[0]=(u[1]<<3);
pw1[0]|= (u[2]<<2);
pw1[0]|= (u[3]<<1);
pw1[0]|=u[4];
pw1[1]=0x00 | u[5]<<3 |u[6]<<2 |u[7]<<1 |u[8];
pw1[2]=0x00 | u[9]<<3 | u[10]<<2 |u[11]<<1 |u[12];
pw1[3]=0x00 | u[13]<<3 | u[14]<<2 |u[15]<<1 |u[16];
pw1[4]=0x00 | u[17]<<3 | u[18]<<2 |u[19]<<1 |u[20];
pw1[5]=0x00 | u[21]<<3 | u[22]<<2 |u[23]<<1 |u[24];
for(w=0;w<=6;w++)
{
if(pw1[w]>=0&&pw1[w]<=9){pw1[w]=pw1[w]+48;}
else {pw1[w]=pw1[w]+55;}
}
}