InicioCiencia EducacionCerradura electrónica hecha con PIC 16f877a
Hoy vengo a entregar un sistema electrónico hecho con el PIC 16f877a, que lo he utilizado en repetidas ocasiones y me ha salido muy bueno.
Este sistema se trata de un cerrojo electrónico que abre una puerta introduciendo un código numérico por teclado, y que además se puede visualizar por una pantalla lcd de 16 columnas por 2 filas. Cuando este recibe 3 códigos incorrectos enciende una sirena...




Realmente yo programo en lenguaje C, utilizando la plataforma PICC, que me ha parecido muy buena y me ha trabajado excelente. En el próximo post publicaré el código...
Queden pendientes porque publicaré tutoriales y proyectos de electrónica muy interesantes...

#INCLUDE <16F877A.H>
#FUSES NOWDT, XT, PUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#USE DELAY (CLOCK=4M)
#DEFINE use portd_lcd TRUE
#DEFINE use portb_kbd TRUE

#INCLUDE <LCD.C>
#INCLUDE <kbd.c>
#USE fast_io(B)
#USE fast_io(D)

#BYTE PORTA=0X07
#BYTE TRISA=0X85

#BYTE PORTB=0x06
#BYTE TRISB=0X86

#BYTE PORTC=0X07
#BYTE TRISC=0X87

#BYTE PORTD=0X08
#BYTE TRISD=0X88

#BIT BOTON = PORTB.0
#BIT CERRADURA = PORTC.0
#BIT ALARMA = PORTC.1

VOID MAIN(void){
trisa=0x00;
trisb=0x00;
trisc=0x00;
trisd=0x00;
porta=0x00;
portb=0x00;
portc=0x00;
portd=0x00;
lcd_init();
trisd=0x00;
trisb=0xF0;
trisc=0x00;
unsigned long int numero;
unsigned long int total;
int i;
unsigned long int acumulador;
int error;
error=0;
numero=0;
total=0;
acumulador=0;
i=0;
lcd_putc("CODIGO: " );
CERRADURA=0;
while(1){
while(i<4){
portb=0x01;
if(portb==0x21){
while(portb==0x21){}
lcd_putc( "*" );
numero=1;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
if(portb==0x41){
while(portb==0x41){}
lcd_putc( "*" );
numero=2;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
if(portb==0x81){
while(portb==0x81){}
lcd_putc( "*" );
numero=3;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
portb=0x02;
if(portb==0x22){
while(portb==0x22){}
lcd_putc( "*" );
numero=4;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
if(portb==0x42){
while(portb==0x42){}
lcd_putc( "*" );
numero=5;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
if(portb==0x82){
while(portb==0x82){}
lcd_putc( "*" );
numero=6;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
portb=0x04;
if(portb==0x24){
while(portb==0x24){}
lcd_putc( "*" );
numero=7;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
if(portb==0x44){
while(portb==0x44){}
lcd_putc( "*" );
numero=8;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
if(portb==0x84){
while(portb==0x84){}
lcd_putc( "*" );
numero=9;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}
portb=0x08;
if(portb==0x48){
while(portb==0x48){}
lcd_putc( "*" );
numero=0;
i=i+1;
total=acumulador+numero;
acumulador=total*10;
}

}
if(total==2365){
cerradura=1;
error=0;
lcd_gotoxy(1,1);
lcd_putc( " " );
lcd_gotoxy(1,1);
lcd_putc( "BIENVENIDO" ) ;
while(1){}
}
else if(total!=2365){
error=error+1;
lcd_gotoxy(1,1);
delay_ms(300);
lcd_putc( " " );
lcd_gotoxy(1,1);
lcd_putc ( "ERROR" ) ;
delay_ms(800);
i=0;
total=0;
acumulador=0;
}
if(error==3){
while(1){
alarma=1;}
}
if(error<3){
lcd_gotoxy(1,1);
lcd_putc(" " ) ;
lcd_gotoxy(1,1);
lcd_putc("CODIGO: " ) ;
}
}
}
Datos archivados del Taringa! original
37puntos
60visitas
2comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000
2 Comentarios archivados
Del Taringa! original
B@BryanElectronica6/18/2014+0-0
Dale Flipller gracias por tu comentario positivo, estaré publicando tutos y proyectos muy interesantes... (y)
F@FlipllerLler6/18/2014+0-0
Orale gracias se ve interesante, también la simulación lo intentaré =)

Autor del Post

B
Usuario
Puntos0
Posts18
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.