Está en la página 1de 12

Instrucciones.

Empleando el PIC16F84A realizar el cdigo e implementacin fsica del funcionamiento


de un seguro electrnico usando de apoyo una LCD para mostrar mensajes que soliciten
el cdigo de acceso para el desbloqueo del seguro as como los mensajes
correspondientes para indicar un acceso denegado por dar un cdigo errneo y un acceso
por dar el cdigo de seguridad correcto; adems un teclado matricial con el cual se
tecleara el cdigo solicitado. Tambin se deben de utilizar dos LEDs (uno rojo y uno
verde) que se encendern dependiendo del estado del acceso que se halla generado con
el cdigo de activacin ingresado en el teclado; encender el verde si se da acceso y
desbloqueo del seguro y encender el rojo si se niega el acceso.

Nota: Emplear para el uso de la LCD la configuracin en la cual se reciben los datos en
dos partes, es decir, separar los datos en sus dos nibles (superior e inferior).

Descripcin del programa.

El cdigo generado es bastante complejo en cuanto a su construccin con las


instrucciones del PIC16F84A, pero fcil en cuanto al algoritmo seguido. Cabe mencionar
que para evitar usar un archivo .asm muy largo en lneas de cdigo, todas las
instrucciones para el manejo de la LCD y algunas rutinas de tiempo fueron separadas en
otro archivo con la extensin .inc para que as el compilador considerara a este archivo
como una continuacin del cdigo principal.

En general el programa se trata de estar continuamente realizando una deteccin de


seales en el puerto B, que es donde se conecta el teclado, para as cuando se presione
una tecla se reciba la posicin de la tecla presionada mediante la deteccin de cada de
tensin en los pines correspondientes a la fila y columna que pertenece la tecla.
Empleando esta informacin se realiza una designacin del carcter correspondiente y
mediante una tcnica de multiplexado se activa la mitad del puerto B como salida en un
pequeo instante mandando el dato del carcter presionado hacia los pines 11, 12, 13 y
14 que reciben la informacin en nibles separados y muestran el carcter
correspondiente. La cantidad de caracteres permitida como cdigo es de 8, por lo que se
emplea un contador que incrementa en uno cada vez que se ingresa un dato desde el
teclado hacia la LCD, as al tener este un valor de 8 se terminara el proceso de revisar las
cadas de tensin en las entradas y comenzara el proceso de comparacin de los
caracteres tecleados con los correctos para tener acceso en el seguro electrnico. Antes
de que se realice la comparacin los caracteres que se van tecleando al mismo tiempo se
guardan en registros individuales que son designados por el valor del contador, esto se
realiza mediante la cuestin Qu valor tiene el contador en ese momento?, conociendo
esto mediante simples restas se designa el registro donde se guardar el valor de la tecla
presionada para formar la cadena de 8 caracteres que conforman el cdigo de acceso.

La comparacin para saber si el cdigo de acceso tecleado es el correcto o no se realiza


mediante simples restas, activacin de la bandera de cero (Z) en el registro STATUS y

Pgina 1 de 12
toma de decisiones con este resultado. Las restas se hacen entre los registros donde se
guardaron previamente los valores de los caracteres tecleados y los valores de los
caracteres que se deben teclear para desbloquear el seguro electrnico (09030762);
comenzando con el primer carcter tecleado se realiza la resta, cuando el carcter es el
correcto simplemente se continua a realizar el mismo proceso de comparacin pero para
el siguiente carcter inmediato, en caso de que el carcter que se compara no concuerda
con el establecido para el acceso una variable auxiliar incrementa en uno, esto se hace
por cada carcter errneo que se detecte. Con esta ultima variable auxiliar que lleva el
conteo de los caracteres errneos se toma la decisin si el cdigo tecleado es correcto o
no. Esto se realiza mediante la activacin de la bandera de cero al mover este registro a
la misma posicin que esta, as si su valor es de cero (ningn carcter errneo) se
direcciona al mensaje de CDIGO CORRECTO!, pero si su valor no es de cero (al
menos un carcter errneo) se direcciona al mensaje ERROR!.

La parte del control de la LCD se trata bsicamente de la programacin de la inicializacin


que requiere este dispositivo, es decir, los comandos que necesita recibir antes que
cualquier otro para que funcione adecuadamente. Tambin se manejan algunas funciones
que nos permiten el mandar comando e informacin (cada caso en una funcin diferente)
hacia la LCD para que sea mostrada o realice alguna funcin como saltar de lnea, borrar
la pantalla, desaparecer el cursor, etc., esto se logra con la activacin y desactivacin
secuencial de los pines designados para mandar seales a las entradas E y RS de la
LCD. Cabe mencionar que las rutinas de tiempo programadas fueron para tener 40s,
100, 1ms, 5ms, 15ms y 261, 892 s. Los primeros son empleados para dar los tiempos
que requiere el LCD en los comandos de su inicializacin mientras que el ltimo
mencionado se deriva de una rutina de tiempo creada para mantener en la LCD durante
un tiempo algn mensaje que se muestre, como por ejemplo el mensaje de
BIENVENIDO mostrado cada vez que se enciende o reinicia el PIC o el mensaje de
PROCESANDO que aparece posteriormente a ingresar los 8 caracteres para el
cdigo de acceso.

Cdigo.
#INCLUDE <P16F84.INC>
__CONFIG _CP_OFF & _XT_OSC & _WDT_OFF & _PWRTE_OFF
#DEFINE BUS PORTB ; Directivas del PIC16F84A y definiciones de
#DEFINE RS PORTA,0 ; pines para reconocimiento rpido en su
#DEFINE E PORTA,1 ; manipulacin.
#DEFINE R_LED PORTA,2
#DEFINE G_LED PORTA,3
#DEFINE COL1 PORTB,4
#DEFINE COL2 PORTB,5
#DEFINE COL3 PORTB,6
#DEFINE COL4 PORTB,7
CBLOCK 0CH ; Variables auxiliares para el manejo de la
CMD informacin.
DATO
VAR1
VAR2
VAR3
FILA
COLUMNA
COUNT
MAL
VALUE
NUM1

Pgina 2 de 12
NUM2
NUM3
NUM4
NUM5
NUM6
NUM7
NUM8
ENDC
ORG 0000H ; Origen del programa.
BSF STATUS,RP0 ; Cambio al banco 1 para definir entradas y salidas.
CLRF TRISA ; Designacin del puerto A como salida.
MOVLW 0F0H ; Carga del valor 11110000 al puerto B para
designarlo con la mitad como entrada y la mitad
MOVWF TRISB como salida.
BCF OPTION_REG,NOT_RBPU ; Activacin de las resistencias Pull Up.
BCF STATUS,RP0 ; Cambio al banco 0.
CLRF PORTA ; Limpieza de los puertos A y B para asegurar que
CLRF PORTB estos no contengan datos basura.
CALL LCD_INI ; Llamada a la inicializacin dela LCD.
CALL LCD_CONFIG ; Llamada a la configuracin de la LCD.
MOVLW 01H ; Carga de un 1 al registro de trabajo para mandarlo
CALL LCD_CMND como comando a la LCD y esta se borre.
CALL T_15MS ; Tiempo necesario para el comando de borrar la LCD.
MOVLW " " ; Carga de caracteres y envo de estos como datos
CALL LCD_DATA hacia la LCD para obtener el mensaje de BIENVENIDO
MOVLW " " al encender o resetear el PIC.
CALL LCD_DATA
MOVLW " "
CALL LCD_DATA
MOVLW "B"
CALL LCD_DATA
MOVLW "I"
CALL LCD_DATA
MOVLW "E"
CALL LCD_DATA
MOVLW "N"
CALL LCD_DATA
MOVLW "V"
CALL LCD_DATA
MOVLW "E"
CALL LCD_DATA
MOVLW "N"
CALL LCD_DATA
MOVLW "I"
CALL LCD_DATA
MOVLW "D"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
CALL T_1R ; Llama a la rutina de tiempo de 261, 892s para
CALL T_1R mantener el mensaje de BIENVENIDO un momento en
CALL T_1R la pantalla de la LCD.
CALL T_1R
CALL T_1R
CALL T_1R
MOVLW 01H ; Se vuelve a cargar y enviar un 1 como comando para
CALL LCD_CMND borrar la pantalla de la LCD y mostrar un mensaje
CALL T_15MS posterior.
MOVLW "C" ; Carga y envo de los caracteres a la LCD para
CALL LCD_DATA mostrar un mensaje de solicitud del cdigo de
MOVLW "O" activacin (CODIGO:).
CALL LCD_DATA
MOVLW "D"
CALL LCD_DATA
MOVLW "I"
CALL LCD_DATA
MOVLW "G"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW ":"
CALL LCD_DATA
MOVLW 0C0H
CALL LCD_CMND
BSF R_LED
CLRF MAL
CLRF COUNT
INI_TCL: MOVLW 08H ; Carga del valor de 8 para realizar la comparacin
SUBWF COUNT,0 del valor del contador y determinar el termino de

Pgina 3 de 12
BTFSC STATUS,Z la revisin de los pines para el teclado debido a
GOTO REVISAR ya haber ingresado 8 caracteres para el cdigo.
MOVLW 04H ; Carga de un valor de 4 para realizar la revisin de
MOVWF FILA la cada de tensin en alguna de las 4 filas del
CCL_TCL: MOVF FILA,0 teclado.
CALL CEROS ; Llamada a la funcin de ceros que entrega la cadena
MOVWF BUS de 4 bits que indica la posicin en fila de la tecla
CALL T_15MS que se detecte presionada.
BTFSS COL1 ; Revisin y llamada de las funciones para obtener la
GOTO COLUMNA1 posicin en columna de la tecla que se detecte como
BTFSS COL2 presionada debido a la cada de tensin provocada.
GOTO COLUMNA2
BTFSS COL3
GOTO COLUMNA3
BTFSS COL4
GOTO COLUMNA4
DECFSZ FILA,1
GOTO CCL_TCL ; Regreso para otra revisin de las columnas.
GOTO INI_TCL ; Regreso para otra revisin de las filas y
posteriormente columnas.
ASCII: MOVWF COLUMNA ; Rutina empleada para obtener el valor del
CALL CARACTER carcter que se presione, se guarde en los registros
MOVWF VALUE auxiliares para la posterior comparacin, se
CALL LCD_DATA muestre en la LCD y se incremente el contador para
INCF COUNT,1 los 8 caracteres del cdigo de acceso.
CALL GUARDA
GOTO CCL_TCL
CARACTER: ADDWF PCL,1 ; Rutina con los posibles caracteres que se
DT "0123456789ABCD#*" generan al presionar una tecla.
RETURN
CEROS: ADDWF PCL,1 ; Esta rutina da la cadena de bits que designa la
RETLW B'1111' posicin en fila de la tecla que se presione.
RETLW B'0111'
RETLW B'1011'
RETLW B'1101'
RETLW B'1110'
RETURN
COLUMNA1: BTFSS COL1 ; Funcin que realiza la revisin de la columna 1 del
GOTO $-1 teclado para asignar el valor correspondiente a la
MOVF FILA,0 tecla que se presione en caso de que esta sea de
SUBLW 04H dicha columna.
BTFSS STATUS,Z
GOTO $+3
MOVLW D'1'
GOTO ASCII
MOVF FILA,0
SUBLW 03H
BTFSS STATUS,Z
GOTO $+3
MOVLW D'4'
GOTO ASCII
MOVF FILA,0
SUBLW 02H
BTFSS STATUS,Z
GOTO $+3
MOVLW D'7'
GOTO ASCII
MOVLW D'14'
GOTO ASCII

COLUMNA2: BTFSS COL2 ; Funcin que realiza la revision de la columna 2 del


GOTO $-1 teclado para asignar el valor correspondiente a la
MOVF FILA,0 tecla que se presione en caso de que esta sea de
SUBLW 04H dicha columna.
BTFSS STATUS,Z
GOTO $+3
MOVLW D'2'
GOTO ASCII
MOVF FILA,0
SUBLW 03H
BTFSS STATUS,Z
GOTO $+3
MOVLW D'5'
GOTO ASCII
MOVF FILA,0
SUBLW 02H

Pgina 4 de 12
BTFSS STATUS,Z
GOTO $+3
MOVLW D'8'
GOTO ASCII
MOVLW D'0'
GOTO ASCII
COLUMNA3: BTFSS COL3 ; Funcin que realiza la revisin de la columna 3 del
GOTO $-1 teclado para asignar el valor correspondiente a la
MOVF FILA,0 tecla que se presione en caso de que esta sea de
SUBLW 04H dicha columna.
BTFSS STATUS,Z
GOTO $+3
MOVLW D'3'
GOTO ASCII
MOVF FILA,0
SUBLW 03H
BTFSS STATUS,Z
GOTO $+3
MOVLW D'6'
GOTO ASCII
MOVF FILA,0
SUBLW 02H
BTFSS STATUS,Z
GOTO $+3
MOVLW D'9'
GOTO ASCII
MOVLW D'15'
GOTO ASCII
COLUMNA4: BTFSS COL4 ; Funcin que realiza la revisin de la columna 4 del
GOTO $-1 teclado para asignar el valor correspondiente a la
MOVF FILA,0 tecla que se presione en caso de que esta sea de
SUBLW 04H dicha columna.
BTFSS STATUS,Z
GOTO $+3
MOVLW D'10'
GOTO ASCII
MOVF FILA,0
SUBLW 03H
BTFSS STATUS,Z
GOTO $+3
MOVLW D'11'
GOTO ASCII
MOVF FILA,0
SUBLW 02H
BTFSS STATUS,Z
GOTO $+3
MOVLW D'12'
GOTO ASCII
MOVLW D'13'
GOTO ASCII
T_1R: MOVLW D'1' ; Rutina de tiempo que tarda 261, 892s.
MOVWF VAR1
MOVLW D'255'
MOVWF VAR2
MOVLW D'255'
MOVWF VAR3
NOP
DECFSZ VAR3,1
GOTO $-2
DECFSZ VAR2,1
GOTO $-6
DECFSZ VAR1,1
GOTO $-10
CLRW
RETURN
GUARDA: MOVF COUNT,0 ; Esta funcin realiza el guardado de los valores de
SUBLW 01H los caracteres que se vallan presionando en el
BTFSC STATUS,Z teclado en las variables NUM1 a NUM8 segn la
GOTO GUARDA1 posicin del carcter que indica el contador de
MOVF COUNT,0 la cantidad de caracteres para el cdigo de
SUBLW 02H acceso.
BTFSC STATUS,Z
GOTO GUARDA2
MOVF COUNT,0
SUBLW 03H
BTFSC STATUS,Z
GOTO GUARDA3

Pgina 5 de 12
MOVF COUNT,0
SUBLW 04H
BTFSC STATUS,Z
GOTO GUARDA4
MOVF COUNT,0
SUBLW 05H
BTFSC STATUS,Z
GOTO GUARDA5
MOVF COUNT,0
SUBLW 06H
BTFSC STATUS,Z
GOTO GUARDA6
MOVF COUNT,0
SUBLW 07H
BTFSC STATUS,Z
GOTO GUARDA7
MOVF COUNT,0
SUBLW 08H
BTFSC STATUS,Z
GOTO GUARDA8
GUARDA1: MOVF VALUE,0
MOVWF NUM1
RETURN
GUARDA2: MOVF VALUE,0
MOVWF NUM2
RETURN
GUARDA3: MOVF VALUE,0
MOVWF NUM3
RETURN
GUARDA4: MOVF VALUE,0
MOVWF NUM4
RETURN
GUARDA5: MOVF VALUE,0
MOVWF NUM5
RETURN
GUARDA6: MOVF VALUE,0
MOVWF NUM6
RETURN
GUARDA7: MOVF VALUE,0
MOVWF NUM7
RETURN
GUARDA8: MOVF VALUE,0
MOVWF NUM8
RETURN
REVISAR: MOVLW 30H ; Carga el carcter 0 para la comparacin del primer
SUBWF NUM1,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
primer carcter sea errneo.
MOVLW 39H ; Carga el carcter 9 para la comparacin del segundo
SUBWF NUM2,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
segundo carcter sea errneo.
MOVLW 30H ; Carga el carcter 0 para la comparacin del tercer
SUBWF NUM3,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
tercer carcter sea errneo.
MOVLW 33H ; Carga el carcter 3 para la comparacin del cuarto
SUBWF NUM4,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
cuarto carcter sea errneo.
MOVLW 30H ; Carga el carcter 0 para la comparacin del quinto
SUBWF NUM5,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
quinto carcter sea errneo.
MOVLW 37H ; Carga el carcter 7 para la comparacin del sexto
SUBWF NUM6,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
sexto carcter sea errneo.
MOVLW 36H ; Carga el carcter 6 para la comparacin del sptimo
SUBWF NUM7,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
sptimo carcter sea errneo.
MOVLW 32H ; Carga el carcter 2 para la comparacin del octavo

Pgina 6 de 12
SUBWF NUM8,0 carcter en el cdigo de acceso.
BTFSS STATUS,Z
INCF MAL,1 ; Incremento de la variable MAL en caso de que el
Octavo carcter sea errneo.
CALL PROCESA
GOTO $+0
RETURN

PROCESA: MOVF MAL,1 ; Esta rutina verifica el valor que tiene MAL y si es
BTFSC STATUS,Z 0 direcciona hacia el mensaje de acceso y al mensaje
GOTO C_CORR de acceso denegado cuando es mayor a 0.
GOTO C_INCR
F_PROS: RETURN

C_CORR: MOVLW 01H ; Muestra de los mensajes PROCESANDO y


CALL LCD_CMND CODIGO CORRECTO en la LCD.
CALL T_15MS
MOVLW "P"
CALL LCD_DATA
MOVLW "R"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "C"
CALL LCD_DATA
MOVLW "E"
CALL LCD_DATA
MOVLW "S"
CALL LCD_DATA
MOVLW "A"
CALL LCD_DATA
MOVLW "N"
CALL LCD_DATA
MOVLW "D"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "."
CALL LCD_DATA
MOVLW "."
CALL LCD_DATA
MOVLW "."
CALL LCD_DATA
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
MOVLW 01H
CALL LCD_CMND
CALL T_15MS
BSF G_LED
BCF R_LED
MOVLW "C"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "D"
CALL LCD_DATA
MOVLW "I"
CALL LCD_DATA
MOVLW "G"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW " "
CALL LCD_DATA
MOVLW "C"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "R"
CALL LCD_DATA
MOVLW "R"
CALL LCD_DATA
MOVLW "E"

Pgina 7 de 12
CALL LCD_DATA
MOVLW "C"
CALL LCD_DATA
MOVLW "T"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "!"
CALL LCD_DATA
GOTO F_PROS

C_INCR: MOVLW 01H ; Muestra de los mensajes PROCESANDO y ERROR! en


CALL LCD_CMND la LCD.
CALL T_15MS
MOVLW "P"
CALL LCD_DATA
MOVLW "R"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "C"
CALL LCD_DATA
MOVLW "E"
CALL LCD_DATA
MOVLW "S"
CALL LCD_DATA
MOVLW "A"
CALL LCD_DATA
MOVLW "N"
CALL LCD_DATA
MOVLW "D"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "."
CALL LCD_DATA
MOVLW "."
CALL LCD_DATA
MOVLW "."
CALL LCD_DATA
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
CALL T_1R
MOVLW 01H
CALL LCD_CMND
CALL T_15MS
BSF R_LED
BCF G_LED
MOVLW "E"
CALL LCD_DATA
MOVLW "R"
CALL LCD_DATA
MOVLW "R"
CALL LCD_DATA
MOVLW "O"
CALL LCD_DATA
MOVLW "R"
CALL LCD_DATA
MOVLW "!"
CALL LCD_DATA
GOTO F_PROS
#INCLUDE <LCD.INC> ; Inclusin del archivo con las funciones para
la LCD.
END ; Fin del cdigo.

LCD.INC
LCD_INI: BSF STATUS,RP0 ; Funcin que realiza la configuracin de
CLRF TRISA inicializacin para la LCD.
MOVLW B'11110000'
MOVWF TRISB

Pgina 8 de 12
BCF STATUS,RP0
CLRF PORTA
CLRF PORTB
CALL T_15MS
MOVLW 03H
MOVWF BUS
CALL SIG_CMD
CALL T_5MS
MOVLW 03H
MOVWF BUS
CALL SIG_CMD
CALL T_100US
MOVLW 03H
MOVWF BUS
CALL SIG_CMD
CALL T_40US
MOVLW 02H
MOVWF BUS
CALL SIG_CMD
CALL T_40US
RETURN
SIG_CMD: BCF RS
BSF E
BCF E
BCF RS
CLRF BUS
RETURN
LCD_CONFIG: MOVLW 06H
CALL LCD_CMND
MOVLW 0FH
CALL LCD_CMND
MOVLW 2CH
CALL LCD_CMND
RETURN
LCD_CMND: MOVWF CMD ; Funcin que permite mandar un valor como comando
SWAPF CMD,0 para la LCD.
ANDLW 0FH
MOVWF BUS
CALL SIG_CMD
MOVF CMD,0
ANDLW 0FH
MOVWF BUS
CALL SIG_CMD
CALL T_40US
RETURN
LCD_DATA: MOVWF DATO ; Funcin que permite mandar un valor como dato para
SWAPF DATO,0 la LCD.
ANDLW 0FH
MOVWF BUS
CALL SIG_DATA
MOVF DATO,0
ANDLW 0FH
MOVWF BUS
CALL SIG_DATA
CALL T_40US
RETURN
SIG_DATA: BSF RS
BSF E
BCF E
BCF RS
CLRF BUS
RETURN

T_100US: MOVLW D'23' ; Rutina de tiempo de 100s.


MOVWF VAR1
NOP
DECFSZ VAR1,1
GOTO $-2
NOP
RETURN
T_40US: MOVLW D'8' ; Rutina de tiempo de 40s.
MOVWF VAR1
NOP
DECFSZ VAR1,1
GOTO $-2

Pgina 9 de 12
NOP
RETURN
T_1MS: MOVLW D'248' ; Rutina de tiempo de 1ms.
MOVWF VAR1
NOP
DECFSZ VAR1,1
GOTO $-2
NOP
RETURN

T_15MS: CALL T_1MS ; Rutina de tiempo de 15ms.


CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
RETURN
T_5MS: CALL T_1MS ; Rutina de tiempo de 5ms.
CALL T_1MS
CALL T_1MS
CALL T_1MS
CALL T_1MS
RETURN
END

Simulacin.

En esta simulacin se emple un esquemtico del PIC16F84A totalmente diferente, como


se muestra en la figura 1. Ahora, se utilizaron dos componentes nuevos: un display LCD
de dos lneas y un teclado matricial. De esta misma forma, fueron colocados dos
indicadores LED, uno color rojo y otro color verde. Estos LED indican si el motor abrir o
cerrar la caja fuerte dependiendo si el cdigo introducido mediante el teclado matricial es
el correcto. La conexin de todos los componentes del esquemtico en Proteus fue
realizada exitosamente gracias los circuitos vistos en clase, adems de las
presentaciones acerca del LCD y teclado matricial, en las cuales se indica el
funcionamiento a detalle de uno.

Pgina 10 de 12
Figura 1. Diseo del circuito requerido en la prctica en Proteus utilizando el PIC16F84A.

EL teclado matricial presentado en el paquete de simulacin es distinto al de la prctica


en fsico, debido a que este presenta operadores y otros botones, pero en el modo de
operacin son exactamente iguales. Probando el funcionamiento del cdigo, se cargo el
archivo .cof al PIC y en el primer instante de la simulacin aparece en el display la palabra
BIENVENIDO, vista en la figura 2. Despus de pocos segundos, el programa sigue,
borra del LCD los anteriores caracteres y ahora el PIC coloca en l la palabra CDIGO,
como se observa en la figura 3. En este paso, ya se requiere colocar la cadena de bits o
caracteres, combinados o no, que permitan la apertura de la caja fuerte.

Figura 2.Inicio de la simulacin, LCD mostrando la palabra BIENVENIDO.

Pgina 11 de 12
Figura 3.CODIGO:, segunda palabra mostrada en el LCD, una vez terminada la parte de
bienvenida.

Ahora, se procede con la introduccin del cdigo mediante el teclado matricial. Por
programacin, se sabe que la cuarta columna mostrada de izquierda a derecha
representa las letras A, B, C y D en orden descendente y que la cuarta fila de arriba hacia
abajo representa a los smbolos *, #, 0 y D, en vez de lo que se tiene en el teclado del
esquemtico. Si se introduce un cdigo errneo de 8 caracteres, en este caso 77777777,
el programa escribir en el LCD PROCESANDO, para luego mostrar unos instantes
despus la palabra ERROR! al mismo tiempo que el LED que indica la caja permanece
cerrada se enciende (color rojo), visto en la figura 4.

Figura 4.Secuencia dada en la simulacin despus de la introduccin de un cdigo errneo.

Una vez mostrado el mensaje de error, es necesario reiniciar el PIC y por ende se debe
presionar el botn de reinicio, ubicado en la parte izquierda del esquemtico. De nueva
cuenta se mostrarn los mensajes de bienvenida y cdigo; introduciendo el cdigo
correcto (09030762) ocurre la secuencia vista en la figura 5: Se coloca tambin la palabra
PROCESANDO y unos instantes despus se muestra un mensaje de que el cdigo
introducido al teclado si fue el requerido: CODIGO CORRECTO!. Adems, el LED que
indica la apertura de la caja fuerte (LED verde) es encendido.

Figura 5.Secuencia dada en la simulacin despus de la introduccin de un cdigo correcto.

Pgina 12 de 12

También podría gustarte