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

publicado en: Proyectos | 5

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

5 Respuestas

  1. 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.

    • 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. HOLA! no puedo descargar la simulación de proteus, me pide contraseña…Como le puedo hacer?
    te agradecería tu ayuda

Dejar una opinión