Maker Pro
Maker Pro

Need help in Doing this project ,Electronic code lock

Ebi_90

Mar 29, 2012
5
Joined
Mar 29, 2012
Messages
5

Ebi_90

Mar 29, 2012
5
Joined
Mar 29, 2012
Messages
5
Here is the code



#include<reg51.h>
#define port P1
#define dataport P2
#define key P0
#define sec 100
sbit rs = port^0;
sbit rw = port^1;
sbit en = port^2;

sbit col1=key^4;
sbit col2=key^5;
sbit col3=key^6;
sbit row1=key^0;
sbit row2=key^1;
sbit row3=key^2;
sbit row4=key^3;
sbit lock_output=P0^7;

int check=0;
int digit[4]={0,0,0,0};
int dig_input[4]={0,0,0,0};
int dig_input_recheck[4]={0,0,0,0};

int i,k;


void delay(unsigned int msec) // Time delay function
{
int i,j ;
for(i=0;i<msec;i++)
for(j=0;j<1275;j++);
}

void lcd_cmd(unsigned char item) // Function to send command to LCD
{
dataport = item;
rs= 0;
rw=0;
en=1;
delay(1);
en=0;
return;
}

void lcd_data(unsigned char item) // Function to send data to LCD
{
dataport = item;
rs= 1;
rw=0;
en=1;
delay(1);
en=0;
return;
}

void lcd_data_string(unsigned char *str) // Function to send data to string
{
int i=0;
while(str!='\0')
{
lcd_data(str);
i++;
//delay(10);
}
return;
}

void lcd(unsigned char str[10])
{
lcd_cmd(0x38);
lcd_cmd(0x0e);
lcd_data_string(str);
}


void ans()
{
if(check>3)
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" LOCK OPEN");
lock_output=1;
delay(300);
while(1);
}
else
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" WRONG PASSWORD");
lock_output=0;
delay(300);
}
}

void code_check() // Function to check password
{
if(i<=3 )
{
switch((i+1))
{
case 1: {
if(dig_input[0]==digit[0])
{
check=check+1;
}
break;
}
case 2: {
if(dig_input[1]==digit[1])
{
check=check+1;
}
break;
}
case 3: {
if(dig_input[2]==digit[2])
{
check=check+1;
}
break;
}
case 4: {
if(dig_input[3]==digit[3])
{
check=check+1;
}
break;
}
}
}
delay(10);
if(i==3)
{
ans();
}
}

void display(int a) //Display function
{
switch(a)
{
case 1:{
lcd_data('*');
delay(100);
digit=1;
code_check();
break;
}
case 2:{
lcd_data('*');
delay(100);
digit=2;
code_check();
break;
}
case 3:{
lcd_data('*');
delay(100);
digit=3;
code_check();
break;
}
case 4:{
lcd_data('*');
delay(100);
digit=4;
code_check();
break;
}
case 5:{
lcd_data('*');
delay(100);
digit=5;
code_check();
break;
}
case 6:{
lcd_data('*');
delay(100);
digit=6;
code_check();
break;
}
case 7:{
lcd_data('*');
delay(100);
digit=7;
code_check();
break;
}
case 8:{
lcd_data('*');
delay(100);
digit=8;
code_check();
break;
}
case 9:{
lcd_data('*');
delay(100);
digit=9;
code_check();
break;
}
case 0:{
lcd_data('*');
delay(100);
digit=0;
code_check();
break;
}
}
}

void check_col1()
{
row1=row2=row3=row4=1;
row1=0;
if(col1==0)
display(1);
row1=1;
row2=0;
if(col1==0)
display(4);
row2=1;
row3=0;
if(col1==0)
display(7);
row3=1;
row4=0;
if(col1==0)
{
row4=1;
}
}

void check_col2()
{
row1=row2=row3=row4=1;
row1=0;
if(col2==0)
display(2);
row1=1;
row2=0;
if(col2==0)
display(5);
row2=1;
row3=0;
if(col2==0)
display(8);
row3=1;
row4=0;
if(col2==0)
display(0);
row4=1;
}

void check_col3()
{
row1=row2=row3=row4=1;
row1=0;
if(col3==0)
display(3);
row1=1;
row2=0;
if(col3==0)
display(6);
row2=1;
row3=0;
if(col3==0)
display(9);
row3=1;
row4=0;
if(col3==0)
{
row4=1;
}
}


void check_password_col1()
{
row1=row2=row3=row4=1;
row1=0;
if(col1==0)
dig_input[k]=1;
row1=1;
row2=0;
if(col1==0)
dig_input[k]=4;
row2=1;
row3=0;
if(col1==0)
dig_input[k]=7;
row3=1;
row4=0;
if(col1==0)
{
row4=1;
}
}

void check_password_col2()
{
row1=row2=row3=row4=1;
row1=0;
if(col2==0)
dig_input[k]=2;
row1=1;
row2=0;
if(col2==0)
dig_input[k]=5;
row2=1;
row3=0;
if(col2==0)
dig_input[k]=8;
row3=1;
row4=0;
if(col2==0)
{
dig_input[k]=0;
row4=1;
}
}


void check_password_col3()
{
row1=row2=row3=row4=1;
row1=0;
if(col3==0)
dig_input[k]=3;
row1=1;
row2=0;
if(col3==0)
dig_input[k]=6;
row2=1;
row3=0;
if(col3==0)
dig_input[k]=9;
row3=1;
row4=0;
if(col3==0)
{
row4=1;
}
}

void pass_set()
{
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
for(i=0;i<4;i++)
{
k=i;
delay(50);
lcd_cmd(0xc4+i);
delay(100);
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
row1=row2=row3=row4=0;
if(col1==0)
check_password_col1();
else
if(col2==0)
check_password_col2();
else
if(col3==0)
check_password_col3();
lcd_data('*');
delay(50);
}
}

void main()
{
int e,j=0,count=1;
col1=col2=col3=1;
//FOR PASSWoRD INPUT
do
{
lcd_cmd(0x01); //Clear LCD screen
lcd_cmd(0x81);
lcd("ENTER PASSWORD:");
pass_set();
for(e=0;e<4;e++)
dig_input_recheck[e]=dig_input[e];
lcd_cmd(0x01);
lcd("CONFIRM PASSWORD:");
pass_set();
for(e=0;e<4;e++)
{
if(dig_input_recheck[e]==dig_input[e])
j++;
}
if(j<4)
{
lcd_cmd(0x01);
lcd_cmd(0x85);
lcd("PASSWORD");
lcd_cmd(0xC2);
lcd("NOT MATCH");
delay(300);
}
}
while(j<4);

while(count<4) //Code input and check
{
lcd_cmd(0x01);
lock_output=0;
lcd_cmd(0x82);
lcd("ENTER PASSWORD");
check=0;
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
for(i=0;i<4;i++)
{
delay(100);
lcd_cmd(0xc4+i);
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
row1=row2=row3=row4=0;
if(col1==0)
check_col1();
else
if(col2==0)
check_col2();
else
if(col3==0)
check_col3();
}
count++;
delay(1);
}

if(count==4)
{
lcd_cmd(0x01);
lcd_cmd(0x86);
lcd("SORRY");
lcd_cmd(0xc1);
lcd("NO MORE TRIALS");
while(1);
}
}
 

(*steve*)

¡sǝpodᴉʇuɐ ǝɥʇ ɹɐǝɥd
Moderator
Jan 21, 2010
25,510
Joined
Jan 21, 2010
Messages
25,510
What errors are you getting?

What compiler are you using?
 

timothy48342

Nov 28, 2011
218
Joined
Nov 28, 2011
Messages
218
I see the first line of the code is:
#include<reg51.h>

Do you have a file called reg51.h ?
 

Sid723

Jan 28, 2010
57
Joined
Jan 28, 2010
Messages
57
The website has a forum and this is posted in the "Contact us" section:

"Contact

We handle technical queries through our Forums only. Any query related to projects and circuits submitted through this form shall not be entertained."

Might want to try the forum and see if you can get the reg51.h include files.
 

donkey

Feb 26, 2011
1,301
Joined
Feb 26, 2011
Messages
1,301
and if it isn't that file, could you tell us the errors. that might help us a little more
 
Top