domingo, 2 de octubre de 2011

Cerradura electrónica

Mediante un teclado matricial se puede enviar caracteres al microcontrolador la contraseña se guarda en la memoria Eeprom del microcontrolador mediante un relevador  puedes activar cualquier cosa para que funcione con un código es 723 les dejo el circuito y el programa par descargarlo al final de la pagina








#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock= 4000000)
#use standard_io(a)

#include <lcd.c>
#include <kbd.c>
#include <stdlib.h>
#rom 0x2100={'7','2','3'}  //Posición 0,1 y 2 de la Eeprom con los datos…
                           //7,2, y 3 respectivamente
void main() {
   char k;
   int i;
   char data[3], clave[3];  //Matrices para guardar clave y datos

   lcd_init();
   kbd_init();
   port_b_pullups(TRUE);

   while (TRUE) {
   i=0;            //posición de la matriz

   printf(lcd_putc,"\fpulsar tecla 1\n");  //Para primer dato

   while(i<=2){                //Para tres datos
      k=kbd_getc();            //Lee el teclado
      if (k!=0)                //Si se ha pulsado alguna tecla
         {data[i]=k;           //se guarda en la posición correspondiente
          i++;                //de la matriz
          printf(lcd_putc,"\fpulsar tecla %u\n",i+1);  //Siguiente dato
         }
    }

   for (i=0;i<=2;i++) {             //Pasa datos de eeprom a la matriz clave
     clave[i]=read_eeprom(i);}

   if ((data[0]==clave[0])&&(data[1]==clave[1])&&(data[2]==clave[2]))
      { printf(lcd_putc,"\fPuerta Abierta"); //Compara los datos con la clave
        output_high(PIN_A0);                //Si es igual da pulso al relé
        delay_ms(500);
        output_low(PIN_A0);}
   else printf(lcd_putc,"\fPuerta Cerrada");  //Clave erronea
   delay_ms(1000);
   }}

No hay comentarios: