Вы находитесь на странице: 1из 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 #DEFINE RS #DEFINE E #DEFINE R_LED #DEFINE G_LED #DEFINE COL1 #DEFINE COL2 #DEFINE COL3 #DEFINE COL4 CBLOCK 0CH CMD DATO VAR1 VAR2 VAR3 FILA COLUMNA COUNT MAL VALUE NUM1 PORTB ; Directivas del PIC16F84A y definiciones de PORTA,0 ; pines para reconocimiento rpido en su PORTA,1 ; manipulacin. PORTA,2 PORTA,3 PORTB,4 PORTB,5 PORTB,6 PORTB,7 ; Variables auxiliares para el manejo de la informacin.

Pgina 2 de 12

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

Pgina 3 de 12

BTFSC GOTO MOVLW MOVWF MOVF CALL MOVWF CALL BTFSS GOTO BTFSS GOTO BTFSS GOTO BTFSS GOTO DECFSZ GOTO GOTO MOVWF CALL MOVWF CALL INCF CALL GOTO

STATUS,Z REVISAR 04H FILA FILA,0 CEROS BUS T_15MS COL1 COLUMNA1 COL2 COLUMNA2 COL3 COLUMNA3 COL4 COLUMNA4 FILA,1 CCL_TCL INI_TCL COLUMNA CARACTER VALUE LCD_DATA COUNT,1 GUARDA CCL_TCL

la revisin de los pines para el teclado debido a ya haber ingresado 8 caracteres para el cdigo. ; Carga de un valor de 4 para realizar la revisin de la cada de tensin en alguna de las 4 filas del teclado. ; Llamada a la funcin de ceros que entrega la cadena de 4 bits que indica la posicin en fila de la tecla que se detecte presionada. ; Revisin y llamada de las funciones para obtener la posicin en columna de la tecla que se detecte como presionada debido a la cada de tensin provocada.

CCL_TCL:

; Regreso para otra revisin de las columnas. ; Regreso para otra revisin de las filas y posteriormente columnas. ; Rutina empleada para obtener el valor del carcter que se presione, se guarde en los registros auxiliares para la posterior comparacin, se muestre en la LCD y se incremente el contador para los 8 caracteres del cdigo de acceso.

ASCII:

CARACTER:

ADDWF PCL,1 DT "0123456789ABCD#*" RETURN ADDWF RETLW RETLW RETLW RETLW RETLW RETURN BTFSS GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVLW GOTO BTFSS GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW PCL,1 B'1111' B'0111' B'1011' B'1101' B'1110' COL1 $-1 FILA,0 04H STATUS,Z $+3 D'1' ASCII FILA,0 03H STATUS,Z $+3 D'4' ASCII FILA,0 02H STATUS,Z $+3 D'7' ASCII D'14' ASCII COL2 $-1 FILA,0 04H STATUS,Z $+3 D'2' ASCII FILA,0 03H STATUS,Z $+3 D'5' ASCII FILA,0 02H

; Rutina con los posibles caracteres que se generan al presionar una tecla.

CEROS:

; Esta rutina da la cadena de bits que designa la posicin en fila de la tecla que se presione.

COLUMNA1:

; Funcin que realiza la revisin de la columna 1 del teclado para asignar el valor correspondiente a la tecla que se presione en caso de que esta sea de dicha columna.

COLUMNA2:

; Funcin que realiza la revision de la columna 2 del teclado para asignar el valor correspondiente a la tecla que se presione en caso de que esta sea de dicha columna.

Pgina 4 de 12

BTFSS GOTO MOVLW GOTO MOVLW GOTO COLUMNA3: BTFSS GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVLW GOTO BTFSS GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVF SUBLW BTFSS GOTO MOVLW GOTO MOVLW GOTO MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF NOP DECFSZ GOTO DECFSZ GOTO DECFSZ GOTO CLRW RETURN MOVF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO

STATUS,Z $+3 D'8' ASCII D'0' ASCII COL3 $-1 FILA,0 04H STATUS,Z $+3 D'3' ASCII FILA,0 03H STATUS,Z $+3 D'6' ASCII FILA,0 02H STATUS,Z $+3 D'9' ASCII D'15' ASCII COL4 $-1 FILA,0 04H STATUS,Z $+3 D'10' ASCII FILA,0 03H STATUS,Z $+3 D'11' ASCII FILA,0 02H STATUS,Z $+3 D'12' ASCII D'13' ASCII D'1' VAR1 D'255' VAR2 D'255' VAR3 VAR3,1 $-2 VAR2,1 $-6 VAR1,1 $-10 ; Funcin que realiza la revisin de la columna 3 del teclado para asignar el valor correspondiente a la tecla que se presione en caso de que esta sea de dicha columna.

COLUMNA4:

; Funcin que realiza la revisin de la columna 4 del teclado para asignar el valor correspondiente a la tecla que se presione en caso de que esta sea de dicha columna.

T_1R:

; Rutina de tiempo que tarda 261, 892s.

GUARDA:

COUNT,0 01H STATUS,Z GUARDA1 COUNT,0 02H STATUS,Z GUARDA2 COUNT,0 03H STATUS,Z GUARDA3

; Esta funcin realiza el guardado de los valores de los caracteres que se vallan presionando en el teclado en las variables NUM1 a NUM8 segn la posicin del carcter que indica el contador de la cantidad de caracteres para el cdigo de acceso.

Pgina 5 de 12

GUARDA1: GUARDA2: GUARDA3: GUARDA4: GUARDA5: GUARDA6: GUARDA7: GUARDA8:

MOVF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF MOVWF RETURN MOVF MOVWF RETURN MOVF MOVWF RETURN MOVF MOVWF RETURN MOVF MOVWF RETURN MOVF MOVWF RETURN MOVF MOVWF RETURN MOVF MOVWF RETURN MOVLW SUBWF BTFSS INCF MOVLW SUBWF BTFSS INCF MOVLW SUBWF BTFSS INCF MOVLW SUBWF BTFSS INCF MOVLW SUBWF BTFSS INCF MOVLW SUBWF BTFSS INCF MOVLW SUBWF BTFSS INCF MOVLW

COUNT,0 04H STATUS,Z GUARDA4 COUNT,0 05H STATUS,Z GUARDA5 COUNT,0 06H STATUS,Z GUARDA6 COUNT,0 07H STATUS,Z GUARDA7 COUNT,0 08H STATUS,Z GUARDA8 VALUE,0 NUM1 VALUE,0 NUM2 VALUE,0 NUM3 VALUE,0 NUM4 VALUE,0 NUM5 VALUE,0 NUM6 VALUE,0 NUM7 VALUE,0 NUM8 30H NUM1,0 STATUS,Z MAL,1 39H NUM2,0 STATUS,Z MAL,1 30H NUM3,0 STATUS,Z MAL,1 33H NUM4,0 STATUS,Z MAL,1 30H NUM5,0 STATUS,Z MAL,1 37H NUM6,0 STATUS,Z MAL,1 36H NUM7,0 STATUS,Z MAL,1 32H ; Carga el carcter 0 para la comparacin del primer carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el primer carcter sea errneo. ; Carga el carcter 9 para la comparacin del segundo carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el segundo carcter sea errneo. ; Carga el carcter 0 para la comparacin del tercer carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el tercer carcter sea errneo. ; Carga el carcter 3 para la comparacin del cuarto carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el cuarto carcter sea errneo. ; Carga el carcter 0 para la comparacin del quinto carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el quinto carcter sea errneo. ; Carga el carcter 7 para la comparacin del sexto carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el sexto carcter sea errneo. ; Carga el carcter 6 para la comparacin del sptimo carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el sptimo carcter sea errneo. ; Carga el carcter 2 para la comparacin del octavo

REVISAR:

Pgina 6 de 12

SUBWF BTFSS INCF

NUM8,0 STATUS,Z MAL,1

carcter en el cdigo de acceso. ; Incremento de la variable MAL en caso de que el Octavo carcter sea errneo.

CALL PROCESA GOTO $+0 RETURN PROCESA: MOVF BTFSC GOTO GOTO RETURN MOVLW CALL CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL MOVLW CALL CALL BSF BCF MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW MAL,1 STATUS,Z C_CORR C_INCR 01H LCD_CMND T_15MS "P" LCD_DATA "R" LCD_DATA "O" LCD_DATA "C" LCD_DATA "E" LCD_DATA "S" LCD_DATA "A" LCD_DATA "N" LCD_DATA "D" LCD_DATA "O" LCD_DATA "." LCD_DATA "." LCD_DATA "." LCD_DATA T_1R T_1R T_1R T_1R T_1R T_1R T_1R T_1R T_1R T_1R 01H LCD_CMND T_15MS G_LED R_LED "C" LCD_DATA "O" LCD_DATA "D" LCD_DATA "I" LCD_DATA "G" LCD_DATA "O" LCD_DATA " " LCD_DATA "C" LCD_DATA "O" LCD_DATA "R" LCD_DATA "R" LCD_DATA "E" ; Esta rutina verifica el valor que tiene MAL y si es 0 direcciona hacia el mensaje de acceso y al mensaje de acceso denegado cuando es mayor a 0.

F_PROS: C_CORR:

; Muestra de los mensajes PROCESANDO y CODIGO CORRECTO en la LCD.

Pgina 7 de 12

CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL GOTO C_INCR: MOVLW CALL CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL CALL MOVLW CALL CALL BSF BCF MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL GOTO

LCD_DATA "C" LCD_DATA "T" LCD_DATA "O" LCD_DATA "!" LCD_DATA F_PROS 01H LCD_CMND T_15MS "P" LCD_DATA "R" LCD_DATA "O" LCD_DATA "C" LCD_DATA "E" LCD_DATA "S" LCD_DATA "A" LCD_DATA "N" LCD_DATA "D" LCD_DATA "O" LCD_DATA "." LCD_DATA "." LCD_DATA "." LCD_DATA T_1R T_1R T_1R T_1R T_1R T_1R T_1R T_1R T_1R T_1R 01H LCD_CMND T_15MS R_LED G_LED "E" LCD_DATA "R" LCD_DATA "R" LCD_DATA "O" LCD_DATA "R" LCD_DATA "!" LCD_DATA F_PROS ; Muestra de los mensajes PROCESANDO y ERROR! en la LCD.

#INCLUDE END

<LCD.INC>

; Inclusin del archivo con las funciones para la LCD. ; Fin del cdigo.

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

Pgina 8 de 12

BCF CLRF CLRF CALL MOVLW MOVWF CALL CALL MOVLW MOVWF CALL CALL MOVLW MOVWF CALL CALL MOVLW MOVWF CALL CALL RETURN SIG_CMD: BCF BSF BCF BCF CLRF RETURN MOVLW CALL MOVLW CALL MOVLW CALL RETURN MOVWF SWAPF ANDLW MOVWF CALL MOVF ANDLW MOVWF CALL CALL RETURN MOVWF SWAPF ANDLW MOVWF CALL MOVF ANDLW MOVWF CALL CALL RETURN BSF BSF BCF BCF CLRF RETURN MOVLW MOVWF NOP DECFSZ GOTO NOP RETURN MOVLW MOVWF NOP DECFSZ GOTO

STATUS,RP0 PORTA PORTB T_15MS 03H BUS SIG_CMD T_5MS 03H BUS SIG_CMD T_100US 03H BUS SIG_CMD T_40US 02H BUS SIG_CMD T_40US RS E E RS BUS 06H LCD_CMND 0FH LCD_CMND 2CH LCD_CMND CMD CMD,0 0FH BUS SIG_CMD CMD,0 0FH BUS SIG_CMD T_40US DATO DATO,0 0FH BUS SIG_DATA DATO,0 0FH BUS SIG_DATA T_40US RS E E RS BUS D'23' VAR1 VAR1,1 $-2 ; Rutina de tiempo de 100s. ; Funcin que permite mandar un valor como comando para la LCD.

LCD_CONFIG:

LCD_CMND:

LCD_DATA:

; Funcin que permite mandar un valor como dato para la LCD.

SIG_DATA:

T_100US:

T_40US:

D'8' VAR1 VAR1,1 $-2

; Rutina de tiempo de 40s.

Pgina 9 de 12

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

T_15MS:

T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS T_1MS

; Rutina de tiempo de 15ms.

T_5MS:

; Rutina de tiempo de 5ms.

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