EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Topics / electronic lock or digital lock

electronic lock or digital lock

|

Microcontroller › 8051 › electronic lock or digital lock

  • This topic has 3 replies, 4 voices, and was last updated 12 years, 10 months ago by AJISH ALFRED.
Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • July 31, 2012 at 11:23 am #1896
    A.RAJASHEKAR
    Participant
    //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!=’’)
    {
    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);
    }
    }

     

    August 2, 2012 at 8:52 am #8382
    Amrith
    Participant

    Hello,

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

    August 3, 2012 at 1:56 am #8390
    Lui Yat Ming
    Participant

    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

     

    August 3, 2012 at 5:37 pm #8394
    AJISH ALFRED
    Participant

    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.

  • Author
    Posts
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.
Log In

RSS Recent Posts

  • PIC KIT 3 not able to program dsPIC June 23, 2025
  • Fun with AI and swordfish basic June 23, 2025
  • Is AI making embedded software developers more productive? June 23, 2025
  • Microinverters and storeage batteries? June 22, 2025
  • FFC connector white June 22, 2025

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2025 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise