Cerradura electrónica con PIC 16F876A con teclado matricial y display de 4×20
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
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
Pedro Jurado
me gustaría tener el código completo del proyecto en ccs
gracias y bendiciones
Aldo Ramos
HOLA! no puedo descargar la simulación de proteus, me pide contraseña…Como le puedo hacer?
te agradecería tu ayuda
Pcalero
“ELECTRONICA_PCM”
roman
Necesito contraseña maestra en pic 16f877a
Pcalero
«ELECTRONICA_PCM»
victor tixe
exelenete proyecto felicitaciones estimado como puedo acceder al codigo por favor victortixe49@gmail.com gracias de antemano
Eduardo
cual es el codigo ?
Pcalero
«ELECTRONICA_PCM»
Pcalero
«ELECTRONICA_PCM»
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
Renzo Lopez
Buen dia Estimado podrias compartir el archivo del programa en PIC C, te agradezco mucho.
Cordial Saludo.
Lizeth Flores
Para hacer el código en lenguaje ensamblador como le tengo que hacer?
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