Cerradura electrónica con PIC 16F876A con teclado matricial y display de 4×20

publicado en: Proyectos | 15

Cerradura electrónica con PIC 16F876A con teclado matricial y display de 4×20

Cerradura electrónica con PIC 16F876A con teclado matricial

Cerradura electrónica con PIC 16F876A con teclado matricial y display de 4×20, este es un diseño de cerradura electrónica realizado con el microcontrolador PIC 16F876A este diseño permite la apertura de una cerradura mediante un teclado matricial, y esta visuyalizado en un display de 4×20, la clave es programable y dispone de un sistema de seguridad por si no se acuerda de la contraseña la cual es de seis dígitos, el firmware de los microcontroladores está escrito en PIC_CCS

Simulación en proteus con el PIC 16F84A

/*******************************************************************************
* Programa: CERRADURA CON DISPLAY
* Versión: 1.1
* Autor: PCM
* Compañia: ELECTRONICA_PCM
* Fecha: 10/02/2017
*******************************************************************************/
#include <16F876A.h>
#device ADC=10
#use delay(clock=20000000)
#fuses HS,NOWDT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#define use_portb_kbd true
#include <LCD4x20.c> //Carga librería del lcd de 4×20 para familia 18F
#include <kbd4x4_1.c>
#define OK_LED pin_a0
#define RELE pin_a1
#define FALLO_LED pin_a2
#define KEY_LED pin_a3
#define buzzer pin_a4
#define LED_MARCHA pin_a5

// Declaración de variables
unsigned int32 i;
unsigned int8 Contador=0;
unsigned int32 Reset_cont=0;
unsigned int32 unimegas=0;
unsigned int32 megas=0;
unsigned int16 millares,centenas=0;
unsigned int8 decenas,unidades=0;
unsigned int32 Key=0;
unsigned int32 Leer_Key_eepron=0;
unsigned char digito[6];
unsigned int8 PasworH,PasworM,PasworL=0;
unsigned int1 Verificacion_correcta=0;
unsigned int1 Abrir_puerta=0;
unsigned int1 Restaurando=0;

// Declaración de las funciones utilizadas en el programa.
void Pitada_5_veces(void);
void Pitada_3_veces(void);
void Pitada_1_ves(void);
void Pitada_larga(void);
void leer_Key(void);
void Comprueba_pin(void);
void Pulsaciones(void);
void Reset_contador(void);
void Key_eepron(void);
void Graba_Key_eepron(void);
void Open_puerta(void);
void Intermitente(void);
void lcd_clear(void);
// Subrutina principal
void main(){
lcd_init(); // Inicializar el Display.
kbd_init(); // Inicializar el teclado.
port_b_pullups(true);
setup_adc_ports(NO_ANALOGS);
lcd_gotoxy(1,1);
printf(lcd_putc,»ELECTRONICA PCM»);
lcd_gotoxy(1,2);
printf(lcd_putc,»PULSA *»);
lcd_gotoxy(1,3);
printf(lcd_putc,»PARA COMENZAR»);
delay_ms(1000);
output_high(buzzer); // poner a 1 el pin RA4 (Buzzer apagado)
delay_ms(500);
Key_eepron();
//output_high(LED_MARCHA);

 

a continuación se detalla brevemente el funcionamiento de la misma.

 

Pulsando la tecla *

Pita tres veces para confirmar entrada

En modo de introducción de clave

Introducir la clave de 6 dígitos

Si la clave es correcta pita 3 veces

Led verde encendido abre puerta durante

3 segundos pasados estos 1 pitido largo

Apagado led verde y cerradura bloqueada

 

Pulsando la tecla # 5 veces seguidas

Se entra en modo programación de clave

Esto se confirma con 5 pitidos

Una vez en modo programación hay que

Introducir la clave antigua de 6 dígitos

Si la clave es errónea se enciende el led

Rojo con un pitido largo indicando que

La clave no es correcta, puede obstar por

Volver a introducirla repitiendo el proceso

Desde el principio o pasar a abrir la cerradura

si la clave es correcta lo confirma con

5 pitidos y encendiendo el led amarillo

Una vez encendido el led introducir la nueva

Clave de 6 dígitos

 

Si se equivocase o no recuerda la contraseña

Pulse la tecla # 5 veces seguidas e introducir

El numero maestro para desbloquear y poner la key

Por defecto que sería XXXXXX una vez restablecida

La contraseña puede obstar por dejarla o cambiarla

Repitiendo el proceso para el cambio de clave.

 

Para obtener más información y el firmware del microcontrolador entra en mi blog y  deja tu opinión del proyecto

Descarga la simulación en proteus Cerradura 16F876A

15 Respuestas

  1. KarlosDC23

    Muy buen proyecto amigo!!!
    Consulta: para trabajos que requieran comunicación serial (Tx y Rx) hay que especificar algo cuando de trabaja en PIC? solo he usado el serial en Arduino.

    • Pcalero

      Por supuesto que tienes que configurar el puerto Baud,paridad etc, esta operación es bastante fácil y muy parecida a la de arduino
      dime que es lo que qieres hacer y te mando un ejemplo
      ////////////////////////////////////////////////////////////////// UART
      // UART Prototypes:
      _bif void setup_uart(int32 baud);
      _bif void setup_uart(int32 baud, int8 stream);
      _bif void setup_uart(int32 baud, int8 stream, int32 clock);
      _bif void set_uart_speed(int32 baud);
      _bif void set_uart_speed(int32 baud, int8 stream);
      _bif void set_uart_speed(int32 baud, int8 stream, int32 clock);
      // Constants used in setup_uart() are:
      // FALSE – Turn UART off
      // TRUE – Turn UART on
      #define UART_ADDRESS 2
      #define UART_DATA 4

  2. Pedro Jurado

    me gustaría tener el código completo del proyecto en ccs
    gracias y bendiciones

  3. Aldo Ramos

    HOLA! no puedo descargar la simulación de proteus, me pide contraseña…Como le puedo hacer?
    te agradecería tu ayuda

  4. hector flores

    y si requiero configurar 50 claves y que funcionen consecutivamente y una vez que las utilize todas se puede generar una clave para volver a empezar desde la clave 1

  5. Renzo Lopez

    Buen dia Estimado podrias compartir el archivo del programa en PIC C, te agradezco mucho.

    Cordial Saludo.

  6. Lizeth Flores

    Para hacer el código en lenguaje ensamblador como le tengo que hacer?

  7. Roberto

    Muchas gracias por compartir este excelente proyecto, pero tengo una duda y espero me la aclare; Dónde se le puede colocar un motor de paso para que el ciclo sea completo? En la salida del relay! Muchas gracias de antemano amigo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *