nick

Páginas: 10 (2269 palabras) Publicado: 12 de octubre de 2014
Sistema de Logueo PIC 16F877A





Richard Ruiz
Cristian Camilo Erazo
Steven Ruiz






Wilmar Campo
Arquitectura de computadores





Universidad del Cauca
Facultad de Ingeniería Electrónica y Telecomunicaciones
Programa Ingeniería de Sistemas
Diciembre de 2012
1. Objetivo y planteamiento del problema
Sistema que a través de una pantalla LCD me de dos opciones: opción1 logueo, opción 2 cambiar clave.
1. opción 1 – Logueo: Solicita que ingrese la clave de tres digitos (una a una).
Si la clave es incorrecta aparece en la LCD puerta cerrada durante un tiempo determinado, luego vuelve al menú inicial.
Si la clave es correcta aparece en la LCD puerta abierta y se enciende un led durante un determinado tiempo. Luego vuelve al menú inicial.
Opción 2 –cambio: Solicita que se cambie la clave, va solicitando una a una la nueva clave (es de tres dígitos), y regresa al menú inicial. Si se escoge la opción 1, para abrir la puerta debe funcionar con la nueva clave.

2. Solución del problema
Para este proyecto se necesitan los siguientes materiales: un teclado, una pantalla, un oscilador, condensadores de 220µF, un PIC16F877A, LED’s, un switch, unaprotoboard y una fuente de voltaje, que son necesarios para el montaje físico del circuito.
Para el desarrollo del software se usó un lenguaje de programación muy conocido como lo es C, a continuación veremos el código que usamos y sus comentarios al frente de cada línea. Este software se desarrolla para que simule un sistema de acceso mediante contraseña, donde el usuario puede digitar una clave y elsistema dirá si la clave es correcta o no. El código es el siguiente:
#include //PIC usado
#fuses XT,NOWDT,NOPROTECT,NOLVP //fusibles: clock xt, sin watchdog
#use delay(clock=4000000) //clock de 4Mhz
#include //librería de LCD
#include //Librería de teclado

int dir1= 8;
int dir2= 9;
int dir3= 10;
char claveLog[3];
char clave[3];

//Declaración de funcionesvoid mostrarMenu();
void logeo();
void cambioPass(int);
void prenderLed(int);

//Procedimiento principal
void main(){
char opcMenu; //caracter de selección del menú
lcd_init(); //Se inicializa el LCD
kbd_init(); //Se inicializa el teclado
port_b_pullups(true); //Se habilitan las pullups
mostrarMenu(); //Se muestra el menú
while(true){clave[0]=read_eeprom(dir1);
clave[1]=read_eeprom(dir2);
clave[2]=read_eeprom(dir3);
opcMenu = kbd_getc(); //Se lee la opción del menú
if(opcMenu!=0)
{
switch(opcMenu){ //Segun sea la opción escogida
case '1':
if(clave[0]==0xFF && clave[1]==0xFF && clave[2]==0xFF){
lcd_putc("\f primero debe\n crear clave");
delay_ms(500);
mostrarMenu(); //se vuelve amostrar el menú
}
else
{
lcd_putc("\f");
lcd_putc("Contraseña:\n");
logeo(); //Se ejecuta la opción de logeo
mostrarMenu(); //Al finalizar el logeo se vuelve a mostrar el menú
}
break;
case '2':
if(clave[0]==0xFF && clave[1]==0xFF && clave[2]==0xFF){
lcd_putc("\f");
lcd_putc("Nueva clave:\n");cambioPass(0);
}else{
lcd_putc("\f");
lcd_putc("digite clave\n Anterior: ");
cambioPass(1);
}
mostrarMenu();
break;
case '0':
lcd_putc("\fFormateando...");
output_low(PIN_D1);
output_low(PIN_D4);
output_low(PIN_D5);
output_low(PIN_D6);
output_low(PIN_D7);
write_eeprom(dir1,0xFF);write_eeprom(dir2,0xFF);
write_eeprom(dir3,0xFF);
delay_ms(800);
mostrarMenu();
break;
default:
lcd_putc("\f");
lcd_putc("Opcion No Valida");
delay_ms(200);
mostrarMenu();
break;
}
}
}
}

//Implementación de funciones
void mostrarMenu(){
lcd_putc("\f"); //Se limpia la pantalla
lcd_putc("1 Logeo\n"); //Opción 1...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Nick
  • Nick
  • nick
  • Nick
  • Nicko
  • Nicko
  • nick
  • Contextode Nicke

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS