Cerradura electronica
shadow
#include <16f877a.h>                           //microcontrolador a usar
#fuses hs,nowdt                                //configura el pic
#use delay(clock=16Mhz)                        //tiempo de frecuencia
#use standard_io(a)
#define use_portD_lcd TRUE                     //definimos lcd
#define use_portB_kbd TRUE                     //definimos teclado matricial
#include                                //incluir libreria de lcd
#include                               //incluir libreria del teclado matricial
#include                             //
#rom 0x2100={'7','5','3','0'}                  //posicion 0,1y2 de la eeprom con los datos                        
void main()
{                       //funcion principal4 
char k;                         //variable tipo caracter
int i;                          //variable tipo entero
char data[4],clave[4];          //matrices para guardar clave y datos
lcd_init();                     //inicializar el lcd
kbd_getc();                     //inicializar el teclado
port_B_pullups(TRUE);           //habilita y desabilita las resistencias internas
while (TRUE)//bucle repetitivo
{
i=0;//posicion de la matriz
printf(lcd_putc,"\fBIENVENIDO A ..\nCASA");//para primer dato
delay_ms(1000);
printf(lcd_putc,"\fINGRESE:\nCLAVE");
while(i<=3){                 //para cuadro datos
k=kbd_getc();                //lee el teclado
if(k!=0)//si se a pulsado alguna tecla 
{
data[i]=k; //se guarda en la posicion corespondienta
i++;//incremento en 1   
printf(lcd_putc,"\fPULSAR CLAVE%u\n",i+1);// 
}}
for(i=0;i<=3;i++)//pasa datos de eeprom a la matriz clave
{      
clave[i]=read_eeprom(i);//lee la memoria eeprom hacia la variable clave
} 
if ((data[0]==clave[0])&&(data[1]==clave[1])&&(data[3]==clave[3]))
{
printf(lcd_putc,"\fPUERTA\nABIERTA");      //compara los datos y la clave
output_high(PIN_A0);                       //si es igual da pulso al rele
delay_ms(1000);  
output_low(PIN_A0);                       //si es igual da pulso al rele
delay_ms(1000);//salida en baja
}
else printf(lcd_putc,"\fPUERTA\nSERRADA");  //clave erronea
delay_ms(1000); //tiempo
}}