Você está na página 1de 10

Digital Code Lock

using 8051 Microcontroller


Funcionamento:

Este sistema contm principalmente AT89S52


microcontrolador, mdulo de teclado, campainha e
LCD.

O microcontrolador AT89S52 controla os


processos, o mdulo do teclado, o formulrio de
senha, comparando com a senha predefinida, e
controlando o LCD.

Teclado usado para inserir a senha no


microcontrolador, o Buzzer usado para indicao
de senha incorreta e o LCD usado para exibir
status ou mensagens nele.
Lista de Materiais BOM (Bill of Material):

8051 Microcontroller (AT89S52)


4X4 Keypad Module
Buzzer
16x2 LCD
Resistor (1k,10k)
Pullup resistor (10K)
Capacitor(10uf)
Red led
Bread board
IC 7805
11.0592 MHz Crystal
Power Supply
Connecting wires
Layout:
Teclado Matricial

Este teclado como o nome indica formado de botes organizados em linhas e colunas de modo a formar uma matriz.
Quando pressionado, um boto conecta a linha com a coluna na qual est ligado
Cdigo:

Definio de bibliotecas. Funo LCD.

void lcdcmd(unsigned char ch)


#include<reg51.h>
{
#include<string.h> lcdport=ch & 0xf0;
cmden();
#define lcdport P1
lcdport=(ch<<4) & 0xf0;
cmden();
}
void lcdstring(char *str)
Definio de variveis e pinos de I/O. {
while(*str)
{
sbit col1=P0^0; lcddata(*str);
str++;
sbit col2=P0^1; }
sbit col3=P0^2; }
void lcd_init(void)
sbit col4=P0^3; {
sbit row1=P0^4; lcdcmd(0x02);
lcdcmd(0x28);
sbit row2=P0^5; lcdcmd(0x0e);
sbit row3=P0^6; lcdcmd(0x01);
}
sbit row4=P0^7;
sbit rs=P1^0;
sbit en=P1^2;
sbit buzzer=P2^6;
char pass[4],i=0;
Cdigo:
Funo Key Pad. else if(!row3) else if(!row3) else if(!row3) else if(!row3)
{ { { {
lcddata('7'); lcddata('8'); lcddata('9'); lcddata('C');
void keypad() pass[i++]='7'; pass[i++]='8'; pass[i++]='9'; pass[i++]='C';
{ cursor++; cursor++; cursor++; cursor++;
int cursor=192,flag=0; while(!row3); while(!row3); while(!row3); while(!row3);
lcdcmd(1); } } } }
lcdstring("Enter Ur
Passkey"); else if(!row4) else if(!row4) else if(!row4) else if(!row4)
lcdcmd(0xc0); { { { {
i=0; lcddata('*'); lcddata('0'); lcddata('#'); lcddata('D');
while(i<4) pass[i++]='*'; pass[i++]='0'; pass[i++]='#'; pass[i++]='D';
{ cursor++; cursor++; cursor++; cursor++;
flag=cursor; while(!row4); while(!row4); while(!row4); while(!row4);
col1=0; } } } }
col2=col3=col4=1; if(i>0)
if(!row1) col2=0; col3=0; col4=0; {
{ col1=col3=col4=1; col1=col2=col4=1; col1=col3=col2=1; if(flag!=cursor)
lcddata('1'); if(!row1) if(!row1) if(!row1) delay(100);
pass[i++]='1'; { { { lcdcmd(cursor-1);
cursor++; lcddata('2'); lcddata('3'); lcddata('A'); lcddata('*');
while(!row1); pass[i++]='2'; pass[i++]='3'; pass[i++]='A'; }
} cursor++; cursor++; cursor++; }
while(!row1); while(!row1); while(!row1); }
else if(!row2) } } }
{
lcddata('4'); else if(!row2) else if(!row2) else if(!row2)
pass[i++]='4'; { { {
cursor++; lcddata('5'); lcddata('6'); lcddata('B');
while(!row2); pass[i++]='5'; pass[i++]='6'; pass[i++]='B';
} cursor++; cursor++; cursor++;
while(!row2); while(!row2); while(!row2);
} } }
Cdigo:

Funo Accept. Funo Wrong.

void accept() void wrong()


{ {
lcdcmd(1); buzzer=0;
lcdstring("Welcome"); lcdcmd(1);
lcdcmd(192); lcdstring("Wrong Passkey");
lcdstring("Password Accept"); lcdcmd(192);
delay(200); lcdstring("PLZ Try Again");
} delay(200);
buzzer=1;
}
Cdigo:

Programa Principal.

void main() i=0;

{ keypad();

buzzer=1; if(strncmp(pass,"4201",4)==0)

lcd_init(); {

lcdstring("Electronic Code"); accept();

lcdcmd(0xc0); lcdcmd(1);

lcdstring(" Lock System "); lcdstring("Access Granted ");

delay(400); delay(300);

lcdcmd(1); }

lcdstring("Circuit Digest");

delay(400); else

while(1) {

{ lcdcmd(1);

lcdstring("Access Denied");
wrong();
delay(300);
}
}
}
Simulao:

Mensagens de inicializao Entre com a senha

Enter Ur Passkey
Electronic Code

Se senha correta! Se senha incorreta!

Lock System Welcome Wrong Passkey


Circuit Digest Password Accept PLZ Try Again

Circuit Digest Access Granted Access Denied