electronic lock or digital lock

4 posts / 0 new
Last post
A.RAJASHEKAR
A.RAJASHEKAR's picture
Offline
Joined: 27/07/2012
Posts: 1
Points: 0
electronic lock or digital lock
//Program to make a code lock with user defined password

#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[i]!='\0')
{
  lcd_data(str[i]);
  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[i]=1;
    code_check();
    break;
    }
  case 2:{
    lcd_data('*');
    delay(100);
    digit[i]=2;
    code_check(); 
    break;
    }
  case 3:{
    lcd_data('*');
    delay(100);
    digit[i]=3;
    code_check();
    break;
    }
  case 4:{
    lcd_data('*');
    delay(100);
    digit[i]=4;
    code_check();
    break;
    }
  case 5:{
    lcd_data('*');
    delay(100);
    digit[i]=5;
    code_check();
    break;
    }
  case 6:{
    lcd_data('*');
    delay(100);
    digit[i]=6;
    code_check();
    break;
    }
  case 7:{
    lcd_data('*');
    delay(100);
    digit[i]=7;
    code_check();
    break;
    }
  case 8:{
    lcd_data('*');
    delay(100);
    digit[i]=8;
    code_check();
    break;
    }
  case 9:{
    lcd_data('*');
    delay(100);
    digit[i]=9;
    code_check();
    break;
    }
  case 0:{
    lcd_data('*');
    delay(100);
    digit[i]=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);
}
}

 

Amrith
amrith's picture
Offline
Joined: 23/04/2012
Posts: 224
Points: 1000

Hello,

Better share your schematics & description. It will help others to understand your project.

Lui Yat Ming
YM LUI's picture
Offline
Joined: 20/09/2011
Posts: 7
Points: 10

Hi, Amrith

I have some question to  consult you on your paper ' how to interface computer's.......'

Please see the Forum that I sent few question to ask help!

Thanks

 

AJISH ALFRED
ajishalfred's picture
Offline
Joined: 10/01/2012
Posts: 742
Points: 3350

Hi Rajashekar,

Without even a hint about the hardware specification, no one can make use of a C code.

Please post the hardware details also.

Login or register to post comments