Pages

Subscribe:

Saturday 23 July 2011

Password(code) Based Digital Locking System Using Microcontroller 89C52/89S52

If you are a beginner in making micro controller projects then this mini project
might just work for you. It's very simple and anybody can make it. The aim
of the project is quite predictable from the title itself-you enter a wrong password
the application wont work(in this case led is used as the application) and on correct
entering of the password, the application as in this case "led" will glow.In this Digital locking system project you will learn more about interfacing keypad and 16x2 LCD to your micro controller along with the code.




components required

For this project you will need the following components:
  • 1 microcontroller 89C52(89S52 will also do)
  • 1 potentiometer-10k
  • 2 ceramic capacitors-22pF
  • 1 switch(button for reset purpose)
  • 1 electrolytic capacitor-10uF,25V
  • 1 crystal oscillator-11.0592MHz
  • 16x2 LCD display
  • 1 resistor-10k
  • 1keypad(here, i have used a calculator keypad.In proteus you can find it by typing keypad-smallcalc)
  • 1 led
  • 1 330 ohm resistor

Schematic diagram



Since this project has been made in proteus software you must have a prior knowledge of it. If you are unaware of the software here is a tutorial which i recommended in one of my previous articles.



The connection of the circuit is explained below:

  • Port 1 of the microcontroller is used as the output port
  • Port 2 of the microcontroller is used as the output port
  • Port 3 of the microcontroller is used as the input port.
  • The LCD is connected to port 2 since output is displayed on LCD
  • The led is connected to port 1 which is our application in this project
  • The keypad is connected to port 3
  • Other components like the crystal and switch are connected for the working of the microcontroller ( minimum circuitry required for proper working of the microcontroller).

working:

As soon as the power supply is provided to the microcontroller "password based" will be shown on the screen.This will remain for a second and after that "enter password" will be displayed as shown below.



The "ENTER PASSWORD " statement will remain for a second and then it will vanish.At this point you will have to enter password which will be shown in terms asterisk " **** ". 





The coding of the micro-controller is done such that only four numbers can be used to enter password. If you want to increase the length of the password you can do that by adding loops in the coding which will be dealt later. Here, in this project the password is set as 1234. when this password is entered the LCD will display "correct password" as shown below and the LED will turn on which is connected at port 1. you can set your own password by changing the password in the code.

If you want to set your password using the operators like " + ", " -" etc you can do it by setting the password in the code as follows:




  • for " ON/C " =16
  • for " + " =10
  • for " - " =14
  • for " = " =15
  • for " x " =11
  • for " ÷ " =13

programming:

The programming of the microcontroller is done using keil compiler.The codings for this project is explained below:



#include "REGX51.H"
#include "delay.h" /*the header file of delay is added*/
#include "lcd.h" /*the header file of LCD is added*/
#include "keypad.h" /*the header file of keypad is added*/
#define relay P1_7;
void main()
{
int first_key,second_key,third_key,fourth_key;
P1=0X00; /*port 1 is defined as the output port*/
P2=0x00; /*port 2 is defined as the output port*/
P3=0xff; /*port 3 is defined as the input port*/
LCD_INIT();/* the LCD display is initialized */
LCD_STRING("PASSWORD BASED");/*displays PASSWORD BASED on the lcd*/
delay_sec(1); /* provides a delay of 1 second */
LCD_CMD(PUTLINE2);
LCD_STRING("LOCKING SYSTEM");
LCD_CLEAR(); /*clears the LCD display*/
LCD_STRING("ENTER PASSWORD:");
delay_sec(1);
LCD_CLEAR();
while(key_get()==NOKEY);
first_key=key;
LCD_STRING("*"); /*when any key is pressed display it as " * " */
while(key_get()==NOKEY);
second_key=key;
LCD_STRING("*");
while(key_get()==NOKEY);
third_key=key;
LCD_STRING("*");
while(key_get()==NOKEY);
fourth_key=key;
LCD_STRING("*"); /* by adding another while loop you can further increase the length of your password */
while(1)
{
if((first_key==1)&&(second_key==2)&&(third_key==3)&&(fourth_key==4))/*here, the password set is 1234. you can change the password over here.if you have increased your password length see that you also make changes in the If loop over here i.e by adding further &&fifth_key=....&& sixth_.. and so on */
{
LCD_CLEAR();
LCD_STRING("Correct Password");
P1_2=1; /* if correct password is entered make P1_2 high which will turn on the led */
delay_sec(2);
}
else
{
LCD_CLEAR();
LCD_STRING("Incorrect Password");
delay_sec(2);
}
} }














































download files

You can download all the hex file, schematic diagram and codes over here:


schematic diagram


codes


the .hex file

Instead of LED you can use any other application like motor which works using a relay or a buzzer and you can go on with many other application. If you have any questions with regards to the project or would like to improve this project further please feel free to comment.

Digital Clock Using Microcontroller 89C52/89S52




Are you a beginner in micro controller projects?and are you stuck where to start from?if yes,then this is one of the simplest mini projects that you can start from . This mini project will give you a clear understanding of programming your micro controller. we sometimes look at our watch and wonder " how does this thing work". Well, in this digital clock project, you will gain some insight on how micro controller can be used to make it work as a Digital Clock.

Components required:

  • 1 microcontroller 89C52(89S52 will also do)
  • 2 ceramic capacitors-22pF
  • 1 switch(button for reset purpose)
  • 1 electrolytic capacitor-10uF,25V
  • 1 crystal oscillator-11.0592MHz
  • 16x2 LCD display
  • 1 resistor-10k


Circuit diagram


Software you will need

This project has been done in proteus software.If you are new to proteus software, the tutorials given below may get you started with the software.note:if you are familiar with proteus you can skip this part.


The programming of the microcontroller is done using keil compiler.port 2 of 89C52 is used as the output port.whereas port 1 is used as the input port.when P1_4 is grounded the 12 hr mode is activated and when P1_5 is grounded the 24 hr mode is activated.In the schematic diagram P1_5 is grounded so the 24hr mode is activated.it is as shown below



Code:


The detail explanation of the code is done below:





#include "REGX52.H"
#include "delay.h"
#include "lcd.h"
void main(void)
{
int hr=0; /*initiate hour=0 */
int min=0; /*initiate minutes=0 */
int sec=0; /*initiate seconds=0 */
P1=0xff; /*set port 1 as input port */
P2=0x00; /*set port 2 as output port*/
while(1)
{ LCD_INIT(); /*initialize LCD*/
if (P1_4==0)/*if P1_4 is grounded enter the 12hr loop */
{
for (sec=0;sec<60;sec )
{
LCD_DisplayNum(hr,2);
LCD_STRING(":");
LCD_DisplayNum(min,2);
LCD_STRING(":");
LCD_DisplayNum(sec,2);
LCD_STRING(" (12 HR)");
delay_sec(1);
LCD_CLEAR();
if (sec==59)
{
min=min 1;
if(min==60)
{
if(hr==11&&min==60&&sec==59)
{hr=0;min=0;sec=0;}
else
{ hr=hr 1;
min=0;}
}
}
} }
else
{
if(P1_5==0) /*if P1_5 is grounded enter the 24hr loop */
{
for (sec=0;sec<60;sec )
{
LCD_DisplayNum(hr,2);
LCD_STRING(":");
LCD_DisplayNum(min,2);
LCD_STRING(":");
LCD_DisplayNum(sec,2);
LCD_STRING(" (24 HR)");
delay_sec(1);
LCD_CLEAR();
if (sec==59)
{
min=min 1;
if(min==60)
{
if(hr==23&&min==60&&sec==59)
{hr=0;min=0;sec=0;}
else
{ hr=hr 1;
min=0;}
}
}
} }}
LCD_INIT();
}
}


























































you can download the .hex file here

schematic diagram
main.c
digclk.hex


you can add more functions to this digital clock since 2 ports of 89C52 are still unused.For instance, you can connect a buzzer to port 4 such that the buzzer sounds at a specified time or you can connect a keypad to port 0 such you can set the timings externally.

Please comment if you would further like to improve the project.