Вы находитесь на странице: 1из 12

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

PRACTICA: CERRADURA ELECTRONICA (PARTE 1)


Objetivo:
El estudiante aprendera de manera practica el manejo del lenguaje C mediante la implementacion
real de un sistema de cerradura electronica. Los conseptos primordiales a aprender son:

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.

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez


Desarrollo
Dado que utilizamos el lenguaje C el cual es un lenguaje estructurado debemos aprovechar esta
caracterstica y disear un programa bien estructurado, segmentado o dividido mediante
funciones que nos permita hacer un cdigo INTELIGIBLE (fcil de leer y entender) de manera que
nos permita posteriormente escalar el cdigo haciendo mejoras o aadiduras (nuevas versiones)
sin tantos problemas. En este punto ni siquiera es necesario saber programar en C o en ningn
lenguaje, es simplemente aplicar nuestra lgica a la resolucin de un proyecto.
Dicho esto comenzaremos por definir como atacar el problema, utilizaremos la tcnica de divide
y venceras, es decir, VISUALIZAREMOS el esquema global o general del proyecto y lo dividiremos
en tareas simples que despus atacaremos individualmente una por una.
DIAGRAMAS DE FLUJO

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

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

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

Mostrar mensaje de ERROR

REGRESAR

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

CONTROL_DE_USUARIO

MENSAJE DE BIENVENIDA AL SISTEMA

Muestra MENU de opciones

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

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez


IMPLEMENTACION EN CODIGO C:
1) La CABECERA, lo primero es aadir los archivos o libreras que usaremos en el programa:

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.

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

Seguido de esto hacemos la funcin control_de_usuario(); como se muestra y como lo vimos en el


diagrama de flujo, lo que hace esta funcin es darle al usuario el control sobre el sistema, abrir,
cerrar y cambiar clave:

(Primero muestra un mensaje de BIENVENIDO AL SISTEMA)

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

(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)

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez


(Y solo si la variable seleccin es igual a F entonces salimos del ciclo DO-WHILE y terminamos
mostrando un mensaje de SALIENDO DEL SISTEMA)

Ahora hacemos la funcin GESTOR_DE_ERRORES siguiendo o basndonos en el diagrama de flujo


que hicimos en color rojo:

LISTO Finalmente escribimos el cdigo del programa principal MAIN:

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

(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])

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez


(Lo siguiente es validar la clave, para esto simplemente hacemos uso de una bandera asumiendo
que no habr error, comparamos uno a uno los elementos de los vectores clave[i] y contrasena[i]
y en caso de que alguno de estos sea distinto levantaremos la bandera de error, si hubo error o no
ejecutamos la funcin pertinente.)

Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez


NOTAS:
Para esta practica se hizo la siguiente modificacin a la librera de PICPLAY_4X4.c para adecuarla al
teclado usado en la simulacin:

Para esta practica tambin se modifico el archivo PICPLAY_LCD.c aadindole una nueva funcin
llamada lcd_clear(); como se muestra a continuacin:

En esta practica la funcin CAMBIAR_CLAVE(); esta inconclusa ya que la siguiente practica


consistir en aprender a guardar datos en la EEPROM interna del PIC ya que esta memoria es NO
voltil, es decir, conserva la informacin aun despus de haber encendido y apagado el PIC, de
esta manera la nueva clave que hayamos grabado quedara intacta ante un reseteo del
microcontrolador.

Вам также может понравиться