Академический Документы
Профессиональный Документы
Культура Документы
Estructura de un programa en C
Diseo estructurado de un programa
Metodologia del diseo de un programa
Herramientas necesarias:
PICC Compiler
Proteus ISIS (Simulador)
Teclado matricial 4X4
LCD 16X2
PIC18F4550
3 LED (VERDE, ROJO y otro color)
3 Resistencias de 330 Ohms
4 Resistencias de 10K
Descripcion de la practica:
Cerradura electrnica con clave de 4 digitos alfanumricos , es decir, la clave puede ser con letras
o nmeros, usando teclado matricial y LCD. La cerradura contara con leds indicadores de puerta
abierta y puerta cerrada y un led indicador de alarma que se activara despus de 5 intentos de
contrasea equivocados.
Si el usuario introduce la contrasea correcta el sistema le da la bienvenida y da acceso al
sistema pudiendo controlar la apertura y el cierre de la puerta y cambiar la clave.
MAIN
CONDICIONES INICIALES
-Mensaje de inicio
-Asegurarse de cerrar la puerta
PEDIR LA CLAVE
-Leer el teclado
-Ver si la clave es correcta
NO
SI
CLAVE
CORRECTA?
GESTOR_DE_ERRORES
-Mostrar mensaje de error
-Llevar la cuenta de errores
-Activar ALARMA si es necesario
CONTROL_DE_USUARIO
-Abrir, Cerrar, Cambiar clave y salir
del sistema
-Resetear la cuenta de errores
Observamos que tenemos un esquema general simple ya que esta dividido en varias tareas que
resolveremos por separado posteriormente. Los bloques de CONDICIONES INICIALES y PEDIR LA
CLAVE posiblemente son muy simples y posiblemente no se ejecuten en diversas partes del
programa por lo que probablemente NO nos conviene hacerlos como funciones.
En el caso de los bloques GESTOR_DE_ERRORES y CONTROL_DE_USUARIO son bloques que
probablemente representen un cdigo largo, nos conviene hacerlos FUNCIONES ya que
posteriormente podremos decidir que cambiar, aadir o mejorar en cada caso de manera
individual evitando cambiar el esquema general del proyecto.
GESTOR DE ERRORES
Incrementar
conta_errores
NO
SI
Conta_errores >= 5?
HACERLA DE TOS!!
-Mostrar mensaje de ALARMA
-Hacer parpadear un led o buzzer
-Mostrar un mensaje disuasivo
LLAMANDO A POLICIA
-Todo esto unos segundos
-Resetear conta_errores
REGRESAR
CONTROL_DE_USUARIO
seleccionLee_teclado;
Seleccin== A?
Seleccin==B?
SI
SI
SI
Seleccin==C?
NO
Seleccin== F?
SI
Mostrar mensaje de despedida, cerrar puerta y
resetear contador de errores
REGRESAR
Funcion ABRIR
Funcion CERRAR
Funcion CAMBIAR
CLAVE
Vemos que se incluye la librera PICPLAY_18F4550.h la cual contiene TODAS las configuraciones
bsicas para que el PIC funcione a la mxima velocidad de 48MHz, luego se incluyen las libreras de
los dispositivos que se van a usar como el LCD y el Teclado matricial 4X4.
2) Las variables globales, aqu declararemos las variables globales del programa, es decir, aquellas
que pueden ser leidas y modificadas desde cualquier funcin del programa. Aqu ya tenemos las
variables declaradas pero en la practica estas variables se van aadiendo conforme vamos
diseando el programa.
Como vemos las primeras dos variables declaradas son vectores de 4 elementos del tipo char
(caracteres), en el caso del vector llamado contrasea observamos que lo inicializamos con los
valores del 1 al 4 ya que esta ser la contrasea por default. Las dems variables se vera su utilidad
mas adelante en el programa.
3) Las definiciones, estas son aquellas que renombran palabras con la finalidad de facilitar el
entendimiento del programa, por ejemplo, es mas lgico de entender:
output_high(led_cerradura); que output_high(pin_b0);
4) FUNCIONES, aqu vamos a declarar las funciones que hemos visto en los diagramas de flujo, las
primeras funciones que haremos son ABRIR(), CERRAR() y CAMBIAR_CLAVE() y posteriormente las
demas ya que estas funciones se utilizan dentro de la funcin CONTROL_DE_USUARIO() y por
tanto deben definirse primero. Las funciones ABRIR() y CERRAR() simplemente muestran en
pantalla un mensaje de ABRIENDO o CERRANDO y encienden/apagan los leds indicadores de
puerta abierta y puerta cerrada, la funcin CAMBIAR_CLAVE(); prcticamente no hace nada ya que
posteriormente se completara esta funcin en futuras prcticas.
(Luego se inicia un ciclo DO-WHILE donde lo primero es mostrar el MENU de opciones y seguido se
escanea el teclado con la funcin read_keypad_wait(); , el valor ascii de la tecla pulsada se
almacenara en la variable seleccin.)
(Seguido de esto mediante un SWITCH ejecutamos la funcin pertinente segn sea la seleccin del
usuario)
(Se inicia el programa MAIN con las condiciones INICIALES mostrando un mensaje inicial)
(Se inicia el ciclo infinito donde lo primero que hacemos es escanear o leer el teclado 4 veces
almacenando el valor de la tecla pulsada en cada elemento del vector clave[i])
Para esta practica tambin se modifico el archivo PICPLAY_LCD.c aadindole una nueva funcin
llamada lcd_clear(); como se muestra a continuacin: