Sei sulla pagina 1di 68

UNIVERSIDADAUTONOMAMETROPOLITANA UNIDADIZTAPALAPA

DIVISINDECIENCIASBSICAEINGENIERA LICENCIATURAENINGENIERAELECTRNICA

DESARROLLO DE UNA CERRADURA ELECTRONICA ACCIONADA POR TECLADO.


PRESENTAN: MIRELESHERNNDEZALEJANDRO. SOLISCUEVALUISANTONIO. ASESROR:MTRA.ALMAEDITHMARTNEZLICONA. FIRMADELASESOR:______________________________ MXICOD.F.,DICIEMBREDE2007

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

1. INTRODUCCIN

Una cerradura electrnica consiste en llevar acabo una funcin especfica para la cual ha sido creada. La ventaja de una cerradura as es que el usuario de esta cerradura tendr la confiabilidad de que cualquier persona no podr acceder a su habitacin o a un armario, caja, etc. La parte principal del circuito de la cerradura es el PIC 16F876, microprocesador que se encarga de las funciones de: almacenamiento de la clave de acceso y la comparacin de las claves introducidas con la anteriormente mencionada. Las claves son introducidas por medio de un teclado de 12 teclas y visualizadas en una pantalla LCD. Tambin cuenta con dos teclas: aceptar y cambiar clave. Si clave se introduce incorrectamente tres veces una alarma se activa durante unos segundos para avisar al usuario que tratan de acceder a su espacio.

-2-

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

INDICE 1. Planteamiento y delimitacin. 2. Qu es un Microcontrolador?... 2.1. Caractersticas. 2.2. Esquema de un Microcontrolador... 2.3. Familias de Microcontroladores.. 2.4. Eleccin de un Microcontrolador Adecuado.. 3. Arquitectura RISC. 3.1. Caractersticas. 4 6 6 7 7 8 9 9

4. Microcontroladores PIC. 11 4.1. Juego de Instrucciones y entorno de Programacin.... 12 4.2. Tamao de palabra.. 14 4.3. Caractersticas. 14 4.4. La Programacin del Microcontrolador.. 15 5. Pantalla LCD de 16x2. 17 6. Teclado Matricial. 18 7. Fuente de Alimentacin... 19 8. Desarrollo del Proyecto.. 19 8.1. Investigacin 19 8.2. Programacin... 20 8.3. Grabacin y Simulacin.. 23 8.4. Circuito Elctrico 24 8.5. Diagramas... 8.6. Componentes del Proyecto......... 24 26

9. Construccin del Circuito... 27 10. Funcionamiento... 35 10.1. Clave de acceso..... 10.2. Cambio de la clave de acceso.... 12. Bibliografa..... -335 36 68

11. Cdigo Fuente del Programa.. 37

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

1. PLANEAMIENTO Y DELIMITACIN. En primera instancia nuestro proyecto era realizar un control por voz, de tal forma que comenzamos por investigar cuales eran los circuitos existentes para realizar un control por voz, de los cuales uno fue el que nos llamo mas la atencin (Figura 1), ya que este circuito contena una parte de teclado, es decir, que si el circuito no poda ser activado por voz (en caso de alguna falla) podra activarse por medio de teclado. Ya habiendo investigado acerca de este circuito nos dimos a la tarea de buscar cada uno de los componentes, de los cuales se tuvo un grave problema con uno de ellos (el elemento principal del circuito).

Figura 1. Circuito encontrado para realizar el control por voz.

-4-

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

El chip HM2007 no se pudo conseguir ya que en Mxico no existe tal integrado, de tal forma que nos dimos a la tarea de buscarlo por Internet, el cual fue encontrado, pero el problema que al hacer la compra, los vendedores pedan repetitivamente las aceptaciones de compra, esto nos llevo tres meses, por lo cual optamos por darle otra perspectiva al proyecto, la cual era parte del circuito anterior. El nuevo proyecto constaba en realizar una cerradura electrnica activada por teclado, de tal forma que se pudiera utilizar en alguna puerta, ya sea de una recamara o de algn compartimiento que quisiramos resguardar. De nuevo se comenz por investigar algunos circuitos de cerraduras que existen en el mercado, para ver la forma en la cual operan y tratar de realizar nuestro propio diseo, de tal modo de desarrollar el proyecto para que sea un producto que cumpla con las expectativas del usuario. Esta cerradura deber de ser accesible para el usuario, tanto en el costo (que el precio no sea muy elevado con respecto a las cerraduras que se encuentran en el mercado), como en los materiales de fabricacin (resistentes y adecuados).

-5-

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

2. QUE ES UN MICROCONTROLADOR? Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completo en un solo circuito integrado.

2.1 CARACTERISTICAS Son diseados para disminuir el coste econmico y el consumo de energa de un sistema en particular. Por eso el tamao de la CPU, la cantidad de memoria y los perifricos incluidos dependern de la aplicacin. El control de un electrodomstico sencillo como una batidora, utilizar un procesador muy pequeo (4 u 8 bit) por que sustituir a un autmata finito. En cambio un reproductor de msica y/o vdeo digital (mp3 o mp4) requerir de un procesador de 32 bit o de 64 bit y de uno o ms Cdec de seal digital (audio y/o vdeo). El control de un sistema de frenos ABS (Antilock Brake System) se basa normalmente en un microcontrolador de 16 bit, al igual que el sistema de control electrnico del motor en un automvil. Los microcontroladores representan la inmensa mayora de los chips de computadoras vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs ms especializados. Mientras se pueden tener uno o dos microprocesadores de propsito general en casa, usted tiene distribuidos seguramente entre los electrodomsticos de su hogar una o dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo electrnico como automviles, lavadoras, hornos microondas, telfonos, etc. Un microcontrolador difiere de una CPU normal, debido a que es ms fcil convertirla en una computadora en funcionamiento, con un mnimo de chips externos de apoyo. La idea es que el chip se coloque en el dispositivo, enganchado a la fuente de energa y de informacin que necesite, y eso es todo. Un microprocesador tradicional no le permitir hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los mdulos de entrada/salida (puertos) y la memoria para almacenamiento de informacin.

-6-

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

2.2 ESQUEMA DE UN MICROCONTROLADOR

Figura 2. Esquema del microcontrolador.

2.3 FAMILIAS DE CONTROLADORES. Los microcontroladores ms comunes en uso se muestran a continuacin (Tabla 1): TABLA 1. Microcontroladores ms comunes. 8 bits 12 bits 14 bits 16 bits

Empresa
Atmel AVR Freescale (antes Motorola)

32 bits

64 bits

68HC05, 68HC08, 68HC11, HCS08 MCS-48 (familia 8048) MCS51 (familia 8051) 8xC251 COP8

68HC12, 68HC16

683xx, 68HCS12, 68HCSX12

Intel

MCS96, MXS296

National Semiconductor

x Familia 12Cxx de 12 bits

x Familia 12Fxx, 16Cxx y 16Fxx de 14 bits (PIC16F87X)

X 18Cxx y 18Fxx de 16 bits

Microchip

Familia 10f2xx

Observacin: Algunas arquitecturas de microcontrolador estn disponibles por tal cantidad de vendedores y en tantas variedades, que podran tener, con total correccin, su propia categora. Entre ellos encontramos, principalmente, las variantes de 8051 y Z80.

-7-

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

2.4 ELECCIN DE UN MICROCONTROLADOR PARA EL PROYECTO. Para elegir una familia de microcontrolador a utilizar nos basamos en los siguientes puntos: Microcontroladores de uso ms comn. Mas utilizados en el mbito laboral. Mayor informacin en libros y en internet para la investigacin. Ms econmicos. De mayor acceso a tiendas.

En base a esto decidimos que lo mejor sera utilizar microcontroladores PIC, los cuales tienen una arquitectura RISC.

3. ARQUITECTURA RISC. La Arquitectura RISC (del ingls Reduced Instruction Set Computer), Computadora con Conjunto de Instrucciones Reducido. Es un tipo de microprocesador con las siguientes caractersticas fundamentales: 1. Instrucciones de tamaos fijos y presentados en un reducido nmero de formatos. 2. Solo las instrucciones de carga y almacenamiento acceden a la memoria por datos. Adems estos procesadores suelen disponer de muchos registros de propsito general. El objetivo de disear mquinas con esta arquitectura es posibilitar la segmentacin y el paralelismo en la ejecucin de instrucciones y reducir los accesos a memoria. Las mquinas RISC protagonizan la tendencia actual de construccin de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM... son ejemplos de algunos de ellos.

-8-

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

RISC es una filosofa de diseo de CPU para computadora que est a favor de conjuntos de instrucciones pequeos y simples que toman menor tiempo para ejecutarse. El tipo de procesador ms comnmente utilizado en equipos de escritorio, el x86, est basado en CISC en lugar de RISC, aunque las versiones ms nuevas traducen instrucciones basadas en CISC x86 a instrucciones ms simples basadas en RISC para uso interno antes de su ejecucin. La idea fue inspirada por el hecho de que muchas de las caractersticas que eran incluidas en los diseos tradicionales de CPU para aumentar la velocidad estaban siendo ignoradas por los programas que eran ejecutados en ellas. Adems, la velocidad del procesador en relacin con la memoria de la computadora que acceda era cada vez ms alta. Esto conllev la aparicin de numerosas tcnicas para reducir el procesamiento dentro del CPU, as como de reducir el nmero total de accesos a memoria.

3.1 CARACTERISTICAS. En pocas palabras esto significa que para cualquier nivel de desempeo dado, un chip RISC tpicamente tendr menos transistores dedicados a la lgica principal. Esto permite a los diseadores una flexibilidad considerable; as pueden, por ejemplo: Incrementar el tamao del conjunto de registros Implementar medidas para aumentar el paralelismo interno Aadir cachs enormes Aadir otras funcionalidades, como E/S y relojes para minicontroladores Construir los chips en lneas de produccin antiguas que de otra manera no seran utilizables No hacer nada, ofrecer el chip para aplicaciones de bajo poder o de tamao limitado.

-9-

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Las caractersticas que generalmente son encontradas en los diseos RISC son: Codificacin uniforme de instrucciones (ejemplo: el cdigo de operacin se encuentra siempre en la misma posicin de bit en cada instruccin, la cual es siempre una palabra), lo que permite una decodificacin ms rpida. Un conjunto de registros homogneo, permitiendo que cualquier registro sea utilizado en cualquier contexto y as simplificar el diseo del compilador (aunque existen muchas formas de separar los ficheros de registro de entero y coma flotante). Modos de direccionamiento simple con modos ms complejos reemplazados por secuencias de instrucciones aritmticas simples. Algunos tipos de datos soportados en el hardware (por ejemplo, algunas mquinas CISC tiene instrucciones para tratar con tipos byte, cadena; tales instrucciones no se encuentran en una mquina RISC). Los diseos RISC tambin prefieren utilizar como caracterstica un modelo de memoria Harvard, donde los conjuntos de instrucciones y los conjuntos de datos estn conceptualmente separados; esto significa que el modificar las direcciones donde el cdigo se encuentra pudiera no tener efecto alguno en las instrucciones ejecutadas por el procesador (porque la CPU tiene separada la instruccin y el cache de datos, al menos mientras una instruccin especial de sincronizacin es utilizada). Por otra parte, esto permite que ambos caches sean accedidos separadamente, lo que puede en algunas ocasiones mejorar el rendimiento.

- 10 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

4. MICROCONTROLADORES PIC. Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc., originalmente desarrollado por la divisin de microelectrnica de General Instruments (Figura 3).

Figura 3. Primeros PICs desarrollados por Microchip Technology Inc.

El nombre actual no es un acrnimo. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como Peripheral Interface Controller (Controlador de Interfaz Perifrico). El PIC original se dise para ser usado con la nueva UCP (Unidad Central de Procesos) de 16 bits CP16000. Siendo en general una buena UCP, sta tena malas prestaciones de E/S, y el PIC de 8 bits se desarroll en 1975 para mejorar el rendimiento del sistema quitando peso de E/S a la UCP. El PIC utilizaba micro-cdigo simple almacenado en ROM (Read Only Memory) para realizar estas tareas; y aunque el trmino no se usaba por aquel entonces, se trata de un diseo RISC que ejecuta una instruccin cada 4 ciclos del oscilador.

- 11 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

En 1985, dicha divisin de microelectrnica de General Instruments se convirti en una filial y el nuevo propietario cancel casi todos los desarrollos, que para esas fechas la mayora estaban obsoletos. El PIC, sin embargo, se mejor con EPROM para conseguir un controlador de canal programable. Hoy en da multitud de PICs vienen con varios perifricos incluidos (mdulos de comunicacin serie, UARTs, ncleos de control de motores, etc.) y con memoria de programa desde 512 a 32.000 palabras (una palabra corresponde a una instruccin en ensamblador, y puede ser 12, 14 o 16 bits, dependiendo de la familia especfica de PICmicro).

4.1 JUEGO DE INSTRUCCIONES Y ENTORNO DE PROGRAMACIN. El PIC usa un juego de instrucciones tipo RISC, cuyo nmero puede variar desde 35 para PICs de gama baja a 70 para los de gama alta. Las instrucciones se clasifican entre las que realizan operaciones entre el acumulador y una constante, entre el acumulador y una posicin de memoria, instrucciones de condicionamiento y de salto/retorno, implementacin de interrupciones y una para pasar a modo de bajo consumo llamada sleep. Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que incluye un simulador software y un ensamblador. Otras empresas desarrollan compiladores C y BASIC. Microchip tambin vende compiladores para los PICs de gama alta ("C18" para la serie F18 y "C30" para los dsPICs) y se puede descargar una edicin para estudiantes del C18 que inhabilita algunas opciones despus de un tiempo de evaluacin. Para Pascal existe un compilador de cdigo abierto, JAL, lo mismo que PicForth para el lenguaje Forth. GPUTILS es una coleccin de herramientas distribuidas bajo licencia GNU que incluye ensamblador y enlazador, y funciona en Linux, MacOS y Microsoft Windows. GPSIM es otra herramienta libre que permite simular diversos dispositivos hardware conectados al PIC.

- 12 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Para el desarrollo de este proyecto utilizamos el entorno de programacin de MPLAB IDE (Figura 4).

Figura 4. Utilizacin de MPLAB IDE como entorno de programacin.

- 13 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

4.2 TAMAO DE PALABRA. El tamao de palabra de los microcontroladores PIC es fuente de muchas confusiones. Todos los PICs (excepto los dsPIC) manejan datos en trozos de 8 bits, con lo que se deberan llamar microcontroladores de 8 bits. Pero a diferencia de la mayora de UCPs, el PIC usa arquitectura Harvard, por lo que el tamao de las instrucciones puede ser distinto del de la palabra de datos. De hecho, las diferentes familias de PICs usan tamaos de instruccin distintos, lo que hace difcil comparar el tamao del cdigo del PIC con el de otros microcontroladores. Por ejemplo, un microcontrolador tiene 6144 bytes de memoria de programa: para un PIC de 12 bits esto significa 4096 palabras y para uno de 16 bits, 3072 palabras.

4.3 CARACTERISTICAS. Los PICs actuales vienen con una amplia gama de mejoras de hardware incorporadas: Ncleos de UCP de 8/16 bits con Arquitectura Harvard modificada Memoria Flash y ROM disponible desde 256 bytes a 256 kilobytes Puertos de E/S (tpicamente 0 a 5,5 voltios) Temporizadores de 8/16 bits Tecnologa Nanowatt para modos de control de energa Perifricos serie sncronos y asncronos: USART, AUSART, EUSART Conversores analgico/digital de 10-12 bits Comparadores de tensin Mdulos de captura y comparacin PWM Controladores LCD Perifrico MSSP para comunicaciones IC, SPI, y IS Memoria EEPROM interna con duracin de hasta un milln de ciclos de lectura/escritura Perifricos de control de motores

- 14 -

Universidad Autnoma Metropolitana, C. B. I. Soporte de interfaz USB Soporte de controlador Ethernet Soporte de controlador CAN Soporte de controlador LIN Soporte de controlador Irda

Diciembre, 2007

4.4 LA PROGRAMACIN DEL MICROCONTROLADOR. Para transferir el cdigo de un ordenador al PIC normalmente se usa un dispositivo llamado programador. La mayora de PICs que Microchip distribuye hoy en da incorporan ICSP (In Circuit Serial Programming, programacin serie incorporada) o LVP (Low Voltage Programming, programacin a bajo voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y RB7 como reloj y datos y el MCLR para activar el modo programacin aplicando un voltaje de unos 11 voltios. Existen muchos programadores de PICs, desde los ms simples que dejan al software los detalles de comunicaciones, a los ms complejos, que pueden verificar el dispositivo a diversas tensiones de alimentacin e implementan en hardware casi todas las funcionalidades. Muchos de estos programadores complejos incluyen ellos mismos PICs preprogramados como interfaz para enviar las rdenes al PIC que se desea programar. Uno de los programadores ms simples es el TE20, que utiliza la lnea TX del puerto RS232 como alimentacin y las lneas DTR y CTS para mandar o recibir datos cuando el microcontrolador est en modo programacin. El software de programacin puede ser el ICprog, muy comn entre la gente que utiliza este tipo de microcontroladores. Para la programacin del microcontrolador elegido (PIC16F876) utilizamos las siguientes herramientas: MPLAP IDE (Herramienta para Depurar y Simular el cdigo del Programa) PIC Simulator IDE (Herramienta Visual de simulacin PIC) Grabador PIC USB

- 15 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Nosotros utilizamos un programador que utiliza una interfaz USB llamado PICProg USB (Figura 5), el cual utiliza un software especial para transferir el cdigo en hexadecimal.

Figura 5. Programa PICProg USB utilizado para la grabacin del PIC.

- 16 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

5. PANTALLA LCD DE 16x2. Una pantalla LCD se trata de un visualizador alfanumrico (solo se pueden ver nmeros, letras y/o algn otro carcter). Este tipo de LCD se define por el nmero de lneas que es capaz de mostrar a la vez y el nmero de caracteres por lneas. Un LCD de 8 X 1 es un LCD de 8 caracteres y 1 lnea. Los ms comunes son de 8, 16, 20, 24 y 40 caracteres y de 1, 2 y 4 lneas. El LCD es actualmente el circuito ms barato y confiable para mostrar datos en un proceso de monitoreo y control. Su interfaz con los controladores se realiza a travs de un conector de 14 pines, cuya configuracin es respetada por la mayora de los fabricantes. El mdulo LCD lleva integrado a sus circuitos una memoria ROM (U1) conocida como generador de caracteres que habr de generar los patrones de la matriz de puntos (5 x 7 7 x 9) que forman los caracteres en la pantalla. Tambin tiene una RAM interna (U2) que almacena los caracteres y los exhibe en el mdulo LCD. Esta LCD consta de 16 pines para su conexin (Figura 6): usa 11 lneas de comunicacin (3 de control y 8 de datos), 2 de alimentacin, 1 para regular la intensidad del texto y 2 para la luz de fondo.

CONTROL

ALIMENTACION E INTENSIDAD

LUZ DE FONDO

Figura 6. Conector de la pantalla LCD.

- 17 -

Universidad Autnoma Metropolitana, C. B. I. Algunas de sus especificaciones aparecen a continuacin: Dimensiones de la pantalla: 65mm x 14mm. Dimensiones de la unidad: 82mm x 37mm. Alimentacin de +5V DC. Soporta interfaces de 4 u 8 bits. Luz de fondo azul con texto en negro. 16 caracteres x 2 lneas.

Diciembre, 2007

6. TECLADO MATRICIAL 4x3. Este teclado matricial es un excelente dispositivo de entrada cuando se trabaja con PICs. La forma tradicional de conectarlos es utilizando 7 pines, 3 de columnas y 4 de filas. El nombre de este tipo de teclado proviene de su interconexin entre las columnas y las filas (Figura 7), ya que esta conexin tiene la forma de una matriz. Existen teclados matriciales de 4 x 4 y de 4 x 3 teclas.

Figura 7. Conexin de un teclado matricial 3 x 4.

- 18 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

7. FUENTE DE ALIMENTACIN. La fuente de alimentacin es un dispositivo muy importante para un sistema, ya que de ah se toma la energa necesaria para la alimentacin del mismo. Esta es un subsistema que convierte la corriente alterna en otro tipo de corriente elctrica adecuado para nuestra cerradura. Este otro tipo de corriente ser de tipo continua, ya que nosotros queremos que se mantenga en un solo valor, pero para nuestro caso se tendrn 2 valores de voltaje de salida (12 y 5 Volts). Nuestra fuente consta de 4 etapas: Atenuacin: Disminuye el voltaje y la corriente de corriente alterna (voltaje de 128Va.c. a 12Va.c. y la corriente la disminuye a 1A). Rectificacin: Se elimina la parte negativa de la seal de corriente alterna, esto se logra utilizando un Rectificador de Onda Completa. Filtrado: Se suavizan los rizos de la seal saliente del rectificador, tratando de logra un valor de voltaje lineal (hasta este punto 12Vd.c.). Regulacin: Su funcin es mantener y controlar el valor deseado a la carga (5Vd.c. al circuito).

8. DESARROLLO DEL PROYECTO.

8.1 INVESTIGACIN. Se comenz por la investigacin de cada uno de los 3 elementos principales de nuestro proyecto (PIC, Pantalla LCD y el Teclado Matricial), de tal forma de saber cmo es su funcionamiento y como es que se comportan durante su tiempo de empleo. Ya sabiendo esto, se contino con la investigacin sobre cmo es que se podran comunicar estos dispositivos, lo cual fue sencillo de averiguar, ya que cada elemento consta con su propio manual (llamados datasheet). Estos manuales contienen las especificaciones de trabajo con las que se deben de operar los elementos, es decir, cuanta alimentacin de voltaje se debe de utilizar o como es que se deben de conectar estos elementos entre si, etc. - 19 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

8.2 PROGRAMACIN. La siguiente parte de nuestro proyecto fue la programacin, es decir, la creacin del programa con el que funcionaria nuestra cerradura. El programa se realizo con la ayuda del compilador MPLab. Este compilador nos ayudo a referenciar nuestros errores en el programa y as corregirlos de tal forma que nuestra programacin fuese la correcta. El programa final quedo realizado en bloques (El cdigo fuente de este programa se presenta en la pagina 37). Para la rpida comprensin del programa a continuacin se describirn a grandes rasgos los mdulos involucrados en el cdigo. INICIO: Este modulo inicializa los puertos del PIC definiendo cuales trabajaran como entradas y cuales como salidas, as como inicializar la EEPROM para almacenar el cdigo de acceso y realizar la llamada a la rutina que inicializa el Display (LCD). Rutinas que utiliza este modulo: INITLCD PRINCI: Este modulo es el principal del programa ya que da la bienvenida al usuario desplegando en el Display el mensaje INTRODUZCA CLAVE y coloca el cursor en la lnea inferior del Display para esperar a que ingresen el cdigo de acceso, cuando se requiere reiniciar en sistema se hace una llamada a este modulo. Rutinas que utiliza este modulo: CLEARL SITUCU ESCMEN ECOD12, ECOD22, ECOD32, ECOD42: Estos mdulos extraen el cdigo 1, cdigo 2, cdigo 3 y cdigo 4, para posteriormente verificar la clave compuesta por la unin de los cuatro cdigos coincida con la almacenada en la memoria. Rutinas que utiliza este modulo: SUELKEY - 20 -

Universidad Autnoma Metropolitana, C. B. I. ESPEKEY INCOR CAMBIOC WRITEL FINCOD:

Diciembre, 2007

Compara la clave obtenida anteriormente con la clave almacenada en la memoria EEPROM, en caso de ser igual activa el bit de apertura de la puerta, en caso contrario se despliega el mensaje de CLAVE INCORRECTA y se decrementa el numero de intentos. Rutinas que utiliza este modulo: ESPEKEY CAMBIOC LEECOD INCOR CLEARL SITUCU ESCMEN CAMBIOC: Este modulo se utiliza para cambiar la clave de acceso, el cual para efectuar el cambio pide introduzcas el cdigo antiguo y a continuacin la clave nueva dos veces para confirmar que se introdujo correctamente y posteriormente se almacene en le memoria EEPROM. Rutinas que utiliza este modulo: CLEARL ESCMEN SUELKEY SITUCU COGECOD LEECOD INCORE INCOREC - 21 -

Universidad Autnoma Metropolitana, C. B. I. NOVERI EEWRITE NUEVACL: Captura y verifica que la nueva clave sea correcta. NOVERI: Verifica que se introdujo bien la clave al realizar un cambio de esta Rutinas que utiliza este modulo: CLEARL ESCMEN SITUCU DELAY NUEVACL INCOREC:

Diciembre, 2007

Despliega el mensaje de error cuando la clave no tiene el tamao de 4 dgitos, y reinicia el sistema sin decrementar los intentos. Rutinas que utiliza este modulo: CLEARL ESCMEN SITUCU INCORE: Cuando la clave que se introdujo tiene el tamao adecuado pero no corresponde con la almacenada en memoria este modulo despliega el mensaje de CLAVE INCORRECTA y decrementa el numero de intentos disponibles, si el numero de intentos llego a su mximo entonces activa la alarma. Rutinas que utiliza este modulo: ALARMA CLEARL ESCMEN SUELKEY DELAY

- 22 -

Universidad Autnoma Metropolitana, C. B. I. ALARMA:

Diciembre, 2007

Despus de 3 intentos incorrectos se activa la alarma, una vez activada la alarma suena por un tiempo definido y se reinicia el sistema. COGECOD: Almacena el cdigo almacenado para su posterior uso EEWRITE: Escribe el valor en CODWRITE en la localidad dada por el acumulador de la memoria. GETKEY: Devuelve el valor pulsado en el teclado en cdigo ASCCI. HAYTECL: Identifica la fila en la que se encuentra la tecla presionada. SUELKEY: Subrutina que espera a que se suelte la tecla. ESCMEN: Escribe el mensaje en el display al que se encuentra apuntando el acumulador. WAITLCD: Espera a que acepte un comando el LCD INITLCD: Enva los comandos necesarios para inicializar de forma correcta el Display. CLEARL: Borra el contenido en pantalla del Display. WRITEL: Escribe en pantalla el carcter almacenado en el acumulador

8.3 GRABACIN Y SIMULACIN. Ya teniendo listo el programa nos dimos a la tarea de buscar un grabador de PICs, el cual fue una herramienta necesaria para nuestro proyecto. Este grabador fue adquirido por Internet.

- 23 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Con la posesin de nuestro grabador nos vino consigo el programa grabador y simulador de PIC (PIC Simulador IDE), el cual nos ayudo a averiguar si nuestro programa fue logrado con xito, es decir, con el se comprobara que la comunicacin entre el PIC y el LCD fuera la correcta y que las funciones fueran las adecuadas. Una vez acabado con este proceso nos dimos a la tarea de grabar el PIC con la ayuda de este mismo programa y del grabador.

8.4 CIRCUITO ELECTRICO. Una vez hecha toda la investigacin, los estudios necesarios, la realizacin del

programa de funcionamiento y las simulaciones necesarias, se comenz por realizar el circuito que se adecuara a nuestras necesidades del proyecto, esto con la ayuda de un programa de simulacin de circuitos electrnicos (ORCAD PSpice) y de Paint, ya que haba algunos componentes que no se encontraron en el ORCAD y se tuvieron que realizar en este ultimo programa (Paint).

8.5 DIAGRAMAS. El circuito que realizamos para la elaboracin de nuestro proyecto se muestra en el Diagrama 1. El circuito que se realizo para obtener nuestra fuente de alimentacin fue el que se muestra en el Diagrama 2

- 24 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Diagrama 1. Circuito de cerradura electrnica accionada por teclado.

Diagrama 2. Circuito de fuente de alimentacin de 2 salidas (12 y 5 Volts).

- 25 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

8.6 COMPONENTES DEL PROYECTO. Los componentes que se utilizaron para la construccin del proyecto fueron los siguientes:

Fuente de Alimentacin: 1 Transformador de 12V a 1A. 1 Puente de diodos rectificador a 2 (RS203L). 1 Capacitor de 1000F a 50V. 1 Regulador de voltaje positivo a 5V (L7805CV). 2 Conectores plug invertido de 1.3mm. Cable. 1 Gabinete para eliminador.

Circuito de la Cerradura. 1 PIC (16F8576). 1 Pantalla LCD 16x2. 1 Teclado Matricial 4x3. 1 Bocina de 8 de impedancia. 1 Cristal a 10 MHz. 1 Transistor para aplicacin de switcheo (TIP31). 2 Capacitores de 22pF. 5 Resistencias de 10k a 1/2W. 6 Resistencias de 1k a 1/2W. 1 Resistencia de 470 a 1/2W. 1 Potencimetro de 10k. 2 LEDs (1 Verde y 1 Rojo). 2 switchs tipo botn.

- 26 -

Universidad Autnoma Metropolitana, C. B. I. 2 Conectores plug de 1.3mm. Conectores headers (Hembra y Macho). Cable plano de 24 hilos. Cable telefnico. 1 Gabinete de 8x14cm y 4cm de alto. 1 Tablilla de Experimentacin de circuitos (Protoboard).

Diciembre, 2007

Placas del Circuito: Placa fenolica de 1 cara de 20x10cm. 1 Hoja de papel couch.

Grabacin del PIC: 1 Grabador de PICs.

9. CONSTRUCCIN DEL CIRCUITO. Se comenz por armar el circuito en un protoboard para ver que todo funcionara a la perfeccin (tanto las conexiones como cada uno de los elementos). El primer circuito que se armo fue la fuente de alimentacin (Foto 1) ya que con ella se suministra el voltaje necesario para la operacin de nuestra cerradura. Se probo con un led que esta etapa estuviera funcionando a la perfeccin y se midi con un multmetro que los niveles de voltaje a la salida fueran los correctos.

- 27 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Foto 1. Fuente de alimentacin de dos salidas (12 y 5 Volts) para el circuito de la cerradura.

Ya teniendo nuestra fuente, se prosigui al armado de la parte central del circuito, empezando por la parte central (Foto 2), es decir, comenzando por poner el PIC al centro del protoboard y conectado el PIC a cada uno de los elementos con los cuales tenia que se conectado, de tal forma que se nos simplificase la conexin del circuito. Esto se tuvo que hacer un par de ocasiones, ya que al tener tantos cables por conectar nos confundamos y conectbamos cables en donde no iban, esto provocaba que al momento de alimentar el circuito provocaran corto o simplemente no funcionaba el circuito.

- 28 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Foto 2. Conexin del PIC a cada uno de los elementos de la cerradura.

Ya conectados todos los cables al PIC, se conectaron tanto el lcd como el teclado en los lugares indicados (poniendo cada cable en el pin adecuado del lcd y del teclado). De tal forma que todo el circuito de la cerradura y la fuente de alimentacin quedara en un solo circuito (Foto 3).

- 29 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Foto 3. Presentacin preliminar de la cerradura electrnica.

A continuacin se hicieron pruebas para ver que todas las funciones de la cerradura funcionaran correctamente, es decir, se hicieron pruebas con el teclado para observar que todas las teclas funcionaran, que en el LCD aparecieran todos los textos correctamente (Foto 4) y que los botones de aceptar y cambiar clave operaran a la perfeccin.

- 30 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Foto 4. Textos que aparecen en la pantalla LCD.

Ya teniendo funcionando nuestro circuito nos dimos a la tarea de desarrollar el circuito impreso, es decir, la realizacin del circuito en una placa fenolica de cobre de una cara. Este procedimiento comenz por la elaboracin de las pistas y los nodos de cada uno de nuestros elementos, lo cual se llevo a cabo con la ayuda del programa de dibujo Paint ya que otros programas relacionados a la elaboracin de circuitos impresos no contaban con algunos elementos, es por eso que tuvimos que realizar nuestro propio diseo. Se tuvieron que hacer 3 circuitos impresos: el circuito de la cerradura (Figura 8.a), las pistas para los botones de aceptar y cambiar clave (Figura 8.b) y el circuito de la fuente de alimentacin (circuito elaborado a mano por se muy pequea su placa).

- 31 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

b)

a)
Figura 8. Circuitos impresos a) Circuito principal de la cerradura. b) Pistas para botones de aceptar y cambiar.

Ya teniendo terminados los circuitos impresos en un archivo, lo que prosigui fue imprimirlos (con impresora lser) en la hoja de papel couch. Este tipo de papel es como plastificado haciendo as que el toner no se adhiera por completo, de tal forma que al planchar el circuito que se imprimi en esta hoja, este quede en la placa de cobre. Teniendo ya el circuito en la placa, esta fue sumergida en cloruro frrico (FeCl3 -solucin para grabar circuitos impresos) para que las partes donde no se encontraba toner fueran disueltas y solo quedaran las pistas y los nodos del circuito (Foto 5).

Foto 5. Placa despus del ser sumergida en la solucin de FeCl3.

- 32 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Una vez que se obtuvo la placa con nuestro circuito se le hicieron los agujeros en los nodos del circuito (con la ayuda del taladro y una broca muy pequea y delgada). Despus se soldaron todos y cada uno de los componentes del circuito, de tal forma que la placa quedara ya con los componentes fijos (Foto 6).

Foto 6. Placa con los componentes soldados.

Obtenida ya nuestra placa con todos los elementos unidos, se contino por realizar los cables de conexin entre la placa y el LCD, as como tambin para el teclado y la placa de los dos botones. Estos cables de unin (Foto 7) fueron hechos con cable plano con la utilizacin de conectores headers (hembra) a los extremos.

- 33 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

Foto 7. Cable plano para la conexin del teclado (izq.). Cable plano para la conexin del LCD (der.).

Por ultimo se adapto la placa, el LCD y los dems elementos al gabinete para quedara listo nuestro prototipo, para estos se le tuvieron que hacer algunos cortes al gabinete para que su diseo fuera el mas adecuado. El producto final de nuestro proyecto, una cerradura electrnica activada por teclado con alarma y display (Foto 8), funciono a la normalidad, pasando todas las pruebas que se realizaron con la presentacin preliminar del proyecto.

Foto 8. Prototipo de la Cerradura Electrnica activa por teclado con alarma y display.

- 34 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

10. FUNCIONAMIENTO.

10.1 CLAVE DE ACCESO. 1. 2. Inicialmente la clave es la 0000. La calve se almacena en la memoria EEPROM de datos del PIC, por lo que, cuando se desconecte la alimentacin del circuito se conserva la clave. 3. Consta de 4 dgitos que pueden ser: nmeros (del 0 al 9), asteriscos (*) y almohadillas (#). A diferencia de los cdigos tradicionales que solo usan los nmeros. Esto proporciona 20736 combinaciones posibles frente a las 10000 que se consiguen solo con nmeros, lo que se traduce en mayor seguridad. 4. En la pantalla del LCD se muestra el mensaje "INTRODUZCA CLAVE" entonces se introduce la clave de acceso (inicialmente ser 0000) y pulsas la tecla ACEPTAR para que se abra la puerta. 5. Cuando el cdigo introducido es incorrecto se muestra el mensaje "CLAVE INCORRECTA" y la puerta no se abre. 6. Cuando se acumulan tres fallos al introducir la clave suena una sirena por un altavoz durante unos 15 segundos, despus se puede volver a probar.

- 35 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

10.2 CAMBIO DE LA CLAVE DE ACCESO. 1. Pulsar la tecla CAMBIAR CLAVE, entonces aparece durante unos instantes el mensaje "CAMBIO DE CLAVE" 2. Despus te pide la clave con la que se acceso hasta ese momento (inicialmente la 0000) con el mensaje "CLAVE ANTIGUA". Tecleas la clave y pulsas ACEPTAR. 3. Si la clave es correcta te pide la "NUEVA CLAVE". Tecleas la nueva clave que deseas guardar y pulsas ACEPTAR. 4. A continuacin te pide que repitas la nueva clave para verificarla (con esto aparecer el mensaje "VERIFIQUE CLAVE"), tecleas de nuevo la misma clave y pulsas ACEPTAR. Si te equivocas te avisa y vuelves a introducir la nueva clave. 5. Si la verificacin es correcta se cambia la clave y se muestra el mensaje "CLAVE CAMBIADA" durante unos segundos.

- 36 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

11. CODIGO FUENTE.


;Configuracin ;----------------------------------------------------------------------------------------------------------------------------------LIST P=16F876 ;Procesador a usar ;Sistema de numeracin Hexadecimal predeterminada P16F876.INC ;Librera incluida, contiene definiciones de registros RADIX HEX INCLUDE internos ;Palabra de Configuracin __config _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_OFF & _WDT_OFF & _HS_OSC ;----------------------------------------------------------------------------------------------------------------------------------; Registros Reservados ;----------------------------------------------------------------------------------------------------------------------------------PCL STATUS PORTA DATO KEYB INTCON PIR2 PIE2 ADECON1 EEDATA EEADR EECON1 EECON2 EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 02H 03H 05H 06H 07H 0BH 0DH 8DH 9FH 10CH 10DH 18CH 18DH ; Anlogo Digital Configuracin ;Puerto A ;PUERTO B ;Puerto C

;----------------------------------------------------------------------------------------------------------------------------------; Registros de Uso General ;----------------------------------------------------------------------------------------------------------------------------------T_RELE PUNTAB INTENTO TECLA CUENTA1 CUENTA2 EQU EQU EQU EQU EQU EQU 20H 20H 21H 22H 23H 24H ;Numero de intentos antes de que se accione la alarma ; Almacena la tecla presionada ;CONTROLA EL TIEMPO DE APERTURA DE LA PUERTA

- 37 -

Universidad Autnoma Metropolitana, C. B. I.


CUENTA3 COD1 COD2 COD3 COD4 CUENTA4 COD1A COD2A COD3A COD4A CODWRITE EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 25H 26H 27H 28H 29H 2AH 2BH 2CH 2DH 2EH ; Auxiliar para comprobar cdigo ; Auxiliar para comprobar cdigo ; Auxiliar para comprobar cdigo ; Auxiliar para comprobar cdigo ; Almacena la primera tecla numrica presionada ; Almacena la segunda tecla numrica presionada ; Almacena la tercera tecla numrica presionada ; Almacena la cuarta tecla numrica presionada

Diciembre, 2007

2FH ; Auxiliar para escribir cdigo en EEPROM

;----------------------------------------------------------------------------------------------------------------------------------; ;----------------------------------------------------------------------------------------------------------------------------------F W EQU EQU 1 0

;----------------------------------------------------------------------------------------------------------------------------------; Definiciones ;----------------------------------------------------------------------------------------------------------------------------------#DEFINE #DEFINE #DEFINE #DEFINE #DEFINE EN RW RS ALA 05H,2 05H,1 05H,0 05H,3 ; Activa y desactiva el LCD ; ; ; ; Apertura y cierre de la puerta

PORTERO 05H,5

ORG ORG BCF RETFIE

00H 04H PIR2,4

GOTO INICIO

- 38 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------; Mensajes para el display ;----------------------------------------------------------------------------------------------------------------------------------TABLA MOVWF ;Mensaje 1 'Introduzca' ;----------------------------------------------------------------------------------------------------------------------------------MEN_1 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW ;Mensaje 5 'Clave' ;----------------------------------------------------------------------------------------------------------------------------------MEN_5 RETLW RETLW RETLW RETLW RETLW RETLW RETLW '' 'C' 'L' 'A' 'V' 'E' 00H 'I' 'N' 'T' 'R' 'O' 'D' 'U' 'Z' 'C' 'A' PCL ; Hacemos apuntar el PCL a la direccin de inicio del mensaje ;-----------------------------------------------------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 2 'Puede Pasar' ;----------------------------------------------------------------------------------------------------------------------------------MEN_2 RETLW RETLW 'P' 'U'

- 39 -

Universidad Autnoma Metropolitana, C. B. I.


RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'E' 'D' 'E' '' 'P' 'A' 'S' 'A' 'R' 00H

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 3 'Clave Incorrecta' ;----------------------------------------------------------------------------------------------------------------------------------MEN_3 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'C' 'L' 'A' 'V' 'E' '' 'I' 'N' 'C' 'O' 'R' 'R' 'E' 'C' 'T' 'A' 00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 4 'Cambio de' ;----------------------------------------------------------------------------------------------------------------------------------MEN_4

- 40 -

Universidad Autnoma Metropolitana, C. B. I.


RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'C' 'A' 'M' 'B' 'I' 'O' '' 'D' 'E' 00H

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 6 'Antigua' ;----------------------------------------------------------------------------------------------------------------------------------MEN_6 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW '' 'A' 'N' 'T' 'I' 'G' 'U' 'A' 00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 7 'Nueva' ;----------------------------------------------------------------------------------------------------------------------------------MEN_7 RETLW RETLW RETLW RETLW RETLW RETLW 'N' 'U' 'E' 'V' 'A' 00H

- 41 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 8 'Verifique' ;----------------------------------------------------------------------------------------------------------------------------------MEN_8 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'V' 'E' 'R' 'I' 'F' 'I' 'Q' 'U' 'E' 00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 9 'Cambiada' ;----------------------------------------------------------------------------------------------------------------------------------MEN_9 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW '' 'C' 'A' 'M' 'B' 'I' 'A' 'D' 'A' 00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 10 'La Clave Debe' ;----------------------------------------------------------------------------------------------------------------------------------MEN_10 RETLW RETLW RETLW 'L' 'A' ''

- 42 -

Universidad Autnoma Metropolitana, C. B. I.


RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'C' 'L' 'A' 'V' 'E' '' 'D' 'E' 'B' 'E' 00H

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 11 'Tener 4 Dgitos' ;----------------------------------------------------------------------------------------------------------------------------------MEN_11 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'T' 'E' 'N' 'E' 'R' '' '4' '' 'D' 'I' 'G' 'I' 'T' 'O' 'S' 00H

- 43 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 12 'Intentelo' ;----------------------------------------------------------------------------------------------------------------------------------MEN_12 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'I' 'N' 'T' 'E' 'N' 'T' 'E' 'L' 'O' 00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 13 'De Nuevo' ;----------------------------------------------------------------------------------------------------------------------------------MEN_13 RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW 'D' 'E' '' 'N' 'U' 'E' 'V' 'O' 00H

;----------------------------------------------------------------------------------------------------------------------------------; INICIO: Inicializa los dispositivos. ; ; INICIO CLRF CLRF DATO KEYB ; Inicializa el Puerto B ; Inicializa el Teclado LCD Teclado

;-----------------------------------------------------------------------------------------------------------------------------------

- 44 -

Universidad Autnoma Metropolitana, C. B. I.


CLRF BSF MOVLW MOVWF CLRF BCF BCF BCF BCF BCF MOVLW MOVWF BCF BCF MOVLW MOVWF CALL ;CALL PORTA STATUS,5 06H ADCON1 DATO EN RW RS ALA PORTERO 0F0H KEYB STATUS,5 PIR2,4 03H INTENTO INITLCD INITLCD ; Inicializa el Puerto A

Diciembre, 2007

; Cambiamos al Banco 1 para definir las entradas como digitales ; Bits de configuracin para las entradas como digitales ; Enva la configuracin ; ; Configuramos EN, RW, ; ; RS, ALA y Portero ; ; como salidas ; Configuramos el teclado ; Columnas como salidas y Filas como entradas ; Regresamos al banco 0 ; La EEPROM eta lista para usarse ; Cargamos el numero de intentos que se podrn ; realizar antes que se active la alarma en este caso 3 ; Inicializamos la pantalla LCD ;

;----------------------------------------------------------------------------------------------------------------------------------;PRINCI: Cuerpo principal del programa ;----------------------------------------------------------------------------------------------------------------------------------PRINCI CALL MOVLW CALL MOVLW CALL MOVLW CLEARL 00H SITUCU MEN_1 ESCMEN 44H ; Coloca el cursor al inicio de la lnea inferior del LCD ; Coloca el cursor al inicio de la lnea superior del LCD ; Cargamos la direccin del Mensaje en el Acumulador ; Rutina que escribe el mensaje al que apunta el acumulador ; Borra el Display y coloca el cursor ala izq.

CALL SITUCU

;----------------------------------------------------------------------------------------------------------------------------------;ECOD12: Este modulo almacena la primera tecla numrica presionada y valida ; ; que no sea una tecla de funcin en caso de 'C' entra a la seccin de "Cambio de Clave"

- 45 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------ECOD12 CALL SUELKEY CALL ESPEKEY MOVWF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF MOVLW CALL COD1 'A' STATUS,2 INCOR COD1,W 'C' STATUS,2 CAMBIOC COD1,W '*' WRITEL ; Verificamos que el teclado se encuentre bien inicializado ; Esperamos a que se presione una tecla ; Almacenamos la primera tecla presionada en el Acumulador ; Verificamos si la tecla fue o no 'A' ; ; Si la tecla = 'A' ; Cargamos la tecla en el acumulador ; Verificamos si la tecla presionada fue 'C' ; Si la tecla fue 'C' ; cambiamos la clave ; en caso de que se haya presionado una tecla numrica ; para mantener oculta la tecla oprimida ; escribimos '*' en el Display

;----------------------------------------------------------------------------------------------------------------------------------;ECOD22: Este modulo almacena la segunda tecla numrica presionada y valida ; ; ECOD22 CALL SUELKEY CALL ESPEKEY MOVWF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF MOVLW COD2 'A' STATUS,2 INCOR COD2,W 'C' STATUS,2 CAMBIOC COD2,W '*' ; Verificamos que el teclado se encuentre bien inicializado ; Esperamos a que se presione una tecla ; Almacenamos la segunda tecla presionada en el Acumulador ; Verificamos si la tecla fue o no 'A' ; ; Si la tecla = 'A' ; Cargamos la tecla en el acumulador ; Verificamos si la tecla presionada fue 'C' ; Si la tecla fue 'C' ; cambiamos la clave ; en caso de que se haya presionado una tecla numrica ; para mantener oculta la tecla oprimida que no sea una tecla de funcin en caso de 'C' entra a la seccin de "Cambio de Clave"

;-----------------------------------------------------------------------------------------------------------------------------------

- 46 -

Universidad Autnoma Metropolitana, C. B. I.


CALL WRITEL ; escribimos '*' en el Display

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;ECOD32: Este modulo almacena la tercera tecla numrica presionada y valida ; ; ECOD32 CALL CALL MOVWF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO MOVF MOVLW CALL SUELKEY ESPEKEY COD3 'A' STATUS,2 INCOR COD3,W 'C' STATUS,2 CAMBIOC COD3,W '*' WRITEL ; Verificamos que el teclado se encuentre bien inicializado ; Esperamos a que se presione una tecla ; Almacenamos la tercera tecla presionada en el Acumulador ; Verificamos si la tecla fue o no 'A' ; ; Si la tecla = 'A' ; Cargamos la tecla en el acumulador ; Verificamos si la tecla presionada fue 'C' ; Si la tecla fue 'C' ; cambiamos la clave ; en caso de que se haya presionado una tecla numrica ; para mantener oculta la tecla oprimida ; escribimos '*' en el Display que no sea una tecla de funcin en caso de 'C' entra a la seccin de "Cambio de Clave"

;-----------------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------------;ECOD42: Este modulo almacena la cuarta tecla numrica presionada y valida ; ; ECOD42 CALL CALL MOVWF SUBLW BTFSC GOTO MOVF SUELKEY ESPEKEY COD4 'A' STATUS,2 INCOR COD4,W ; Verificamos que el teclado se encuentre bien inicializado ; Esperamos a que se presione una tecla ; Almacenamos la cuarta tecla presionada en el Acumulador ; Verificamos si la tecla fue o no 'A' ; ; Si la tecla = 'A' ; Cargamos la tecla en el acumulador que no sea una tecla de funcin en caso de 'C' entra a la seccin de "Cambio de Clave"

;-----------------------------------------------------------------------------------------------------------------------------------

- 47 -

Universidad Autnoma Metropolitana, C. B. I.


SUBLW BTFSC GOTO MOVF MOVLW CALL CALL 'C' STATUS,2 CAMBIOC COD4,W '*' WRITEL SUELKEY ; Verificamos si la tecla presionada fue 'C' ; Si la tecla fue 'C' ; cambiamos la clave

Diciembre, 2007

; en caso de que se haya presionado una tecla numrica ; para mantener oculta la tecla oprimida ; escribimos '*' en el Display

;----------------------------------------------------------------------------------------------------------------------------------;FINDCOD: Una vez teniendo las teclas almacenadas, este modulo verifica que ; ; FINCOD CALL MOVWF SUBLW BTFSC GOTO MOVF SUBLW BTFSC GOTO GOTO ;FINDCOD2: ; ; ; ; Este modulo verifica que sea el cdigo correcto para activar la apertura ;----------------------------------------------------------------------------------------------------------------------------------FINCOD2 MOVLW CALL SUBWF BTFSS GOTO 00H LEECOD COD1 STATUS,2 INCOR ; Leemos el registro de la EEPROM ; donde se encuentra almacenado el cdigo correcto ; Comparamos las teclas ; ; Si la tecla es incorrecta Precondiciones: Tener las teclas del cdigo almacenado esto es: Cdigo = 'COD1,COD2,COD3,COD4' y se ha presionado la tecla 'A' ESPEKEY TECLA 'A' STATUS,2 FINCOD2 TECLA,W 'C' STATUS,2 CAMBIOC FINCOD la siguiente tecla sea una tecla de funcin para 'Aceptar' ('A') el cdigo o 'Cambiar la clave' ('C')

;-----------------------------------------------------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------------------------------------------------

- 48 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW CALL SUBWF BTFSS GOTO MOVLW CALL SUBWF BTFSS GOTO MOVLW CALL SUBWF BTFSS GOTO CALL MOVLW CALL MOVLW CALL MOVLW MOVWF BSF MOVLW CALL BCF MOVLW CALL GOTO 01H LEECOD COD2 STATUS,2 INCOR 02H LEECOD COD3 STATUS,2 INCOR 03H LEECOD COD4 STATUS,2 INCOR CLEARL 02H SITUCU MEN_2 ESCMEN 03H INTENTO PORTERO T_RELE DELAY PORTERO 10H DELAY PRINCI ; Reiniciamos el sistema ; Leemos el registro de la EEPROM

Diciembre, 2007

; donde se encuentra almacenado el cdigo correcto ; Comparamos las teclas ; ; Si la tecla es incorrecta ; Leemos el registro de la EEPROM ; donde se encuentra almacenado el cdigo correcto ; Comparamos las teclas ; ; Si la tecla es incorrecta ; Leemos el registro de la EEPROM ; donde se encuentra almacenado el cdigo correcto ; Comparamos las teclas ; ; Si la tecla es incorrecta ; CLAVE CORRECTA ; Colocamos en posicin ; el cursor para escribir en el LCD ; Escribimos el Mensaje ; de bienvenida ; Reinicia ; el nmero de intentos ; Activa mecanismo de apertura ; ; Esperamos el tiempo dado por T_RELE ; Desactivamos mecanismo de apertura

- 49 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;INCOR: La clave fue incorrecta y enva el mensaje al LCD ;----------------------------------------------------------------------------------------------------------------------------------INCOR MOVLW CALL CALL MOVLW CALL DECFSZ 0CH COMANDO CLEARL MEN_3 ESCMEN INTENTO,F ; Escribe el mensaje de clave incorrecta ; ; Decrementa el nmero de intentos disponibles

GOTO INCOR2 GOTO ALARMA INCOR2 MOVLW GOTO PRINCI 20H

; Si an quedan intentos disponibles ; Si se acabaron los intentos activa la "Alarma" ; Espera un tiempo antes de

CALL DELAY ; Poder intentar el ingreso ;----------------------------------------------------------------------------------------------------------------------------------;ALARMA: Despus de 3 intentos incorrectos de acceso se activa ; ALARMA MOVLW MOVWF ALARMA4 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF ALARMA1 MOVLW MOVWF DECF BTFSC GOTO ALARMA3 20H CUENTA4 CUENTA1,F STATUS,2 ALARMA2 03H INTENTO 00FH CUENTA1 030H CUENTA2 ; Reiniciamos el numero de intentos ; disponibles 1EH TECLA la alarma ;-----------------------------------------------------------------------------------------------------------------------------------

- 50 -

Universidad Autnoma Metropolitana, C. B. I.


BSF CALL BCF CALL DECFSZ GOTO GOTO ALARMA2 MOVLW CALL DECFSZ GOTO GOTO FRECU MOVF MOVWF FRECU2 DECFSZ GOTO DECFSZ GOTO MOVLW MOVWF RETURN CUENTA3,F FRECU2 CUENTA2,F FRECU 030H CUENTA2 CUENTA1,W CUENTA3 01H DELAY TECLA,F ALARMA4 PRINCI ALA FRECU ALA FRECU CUENTA4,F ALARMA3 ALARMA1 ; Enciende ; Frecuencia de apagado y encendido ; Apaga

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;CAMBIOC: CAMBIOC CALL MOVLW CALL MOVLW CALL MOVLW CALL CLEARL MEN_4 ESCMEN MEN_5 ESCMEN 20H DELAY ; Retardo ; 'CAMBIO DE' ; Escribe el mensaje ; ' CLAVE' ; Escribe el mensaje Este modulo Cambia la clave almacenada ;-----------------------------------------------------------------------------------------------------------------------------------

- 51 -

Universidad Autnoma Metropolitana, C. B. I.


CALL MOVLW CALL MOVLW CALL CALL MOVLW CALL CALL MOVLW CALL SUBWF BTFSS GOTO MOVLW CALL SUBWF BTFSS GOTO MOVLW CALL SUBWF BTFSS GOTO MOVLW CALL SUBWF BTFSS GOTO MOVLW MOVWF CLEARL MEN_5 ESCMEN MEN_6 ESCMEN SUELKEY 44H SITUCU COGECOD 00H LEECOD COD1 STATUS,2 INCORE 01H LEECOD COD2 STATUS,2 INCORE 02H LEECOD COD3 STATUS,2 INCORE 03H LEECOD COD4 STATUS,2 INCORE 03H INTENTO ; Colocamos el cursor en la lnea siguiente ; Obtiene el Cdigo Tecleado ; Limpiamos el Display ; ' CLAVE' ; Escribe el mensaje ; ' ANTIGUA' ; Escribe el mensaje ; Espera a que se deje de presionar la tecla

Diciembre, 2007

; Direccin de la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado ; ; Si no es igual ; Si es igual compara el siguiente digito ; Direccin de la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado ; ; Si no es igual ; Si es igual compara el siguiente digito ; Direccin de la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado ; ; Si no es igual ; Si es igual compara el siguiente digito ; Direccin de la EEPROM donde est almacenado el digito ; Lee el Cdigo de le EEPROM y lo regresa en el acumulador ; compara el cdigo almacenado con el tecleado ; ; Si no es igual ; Si el cdigo fue correcto ; Reiniciamos el nmero de intentos

- 52 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;NUEVACL: ; NUEVACL CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL CALL CALL MOVF BTFSC GOTO MOVWF MOVF BTFSC GOTO MOVWF MOVF BTFSC GOTO MOVWF MOVF BTFSC GOTO MOVWF CALL MOVLW CALL CLEARL 02H SITUCU MEN_7 ESCMEN MEN_5 ESCMEN 44H SITUCU SUELKEY COGECOD COD1,W STATUS,2 INCOREC COD1A COD2,W STATUS,2 INCOREC COD2A COD3,W STATUS,2 INCOREC COD3A COD4,W STATUS,2 INCOREC COD4A CLEARL MEN_8 ESCMEN ; Almacenamos COD4 en COD4A ;VERIFIQUE CLAVE ; 'VERIFIQUE' ; Escribe mensaje ; Almacenamos COD3 en COD3A ; Copiamos COD4 para verificar posteriormente ; Almacenamos COD2 en COD2A ; Copiamos COD3 para verificar posteriormente ; Almacenamos COD1 en COD1A ; Copiamos COD2 para verificar posteriormente ; Colocamos el cursor en la primera lnea ; 'NUEVA' ; Escribimos el mensaje ; ' CLAVE' ; Escribimos el mensaje ; Cambiamos de lnea ; ; Esperamos que se libere la tecla ; Leemos el nuevo cdigo ; Copiamos COD1 para verificar posteriormente ; Limpiamos el Display Capturamos y verificamos la nueva clave y se almacena en la EEPROM

;-----------------------------------------------------------------------------------------------------------------------------------

- 53 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW CALL MOVLW CALL CALL CALL MOVF SUBWF BTFSS GOTO MOVF SUBWF BTFSS GOTO MOVF SUBWF BTFSS GOTO MOVF SUBWF BTFSS GOTO MEN_5 ESCMEN 44H SITUCU SUELKEY COGECOD COD1,W COD1A,W STATUS,2 NOVERI COD2,W COD2A,W STATUS,2; NOVERI COD3,W COD3A,W STATUS,2; NOVERI COD4,W COD4A,W STATUS,2; NOVERI ; Si COD4 != COD4A ; Si COD4 = COD4A continuamos CALL MOVLW CALL MOVLW CALL MOVF MOVWF MOVLW CALL MOVF MOVWF CLEARL MEN_5 ESCMEN MEN_9 ESCMEN COD1,W CODWRITE 00H EEWRITE COD2,W CODWRITE ;CLAVE CAMBIADA ; ' CLAVE' ; Escribe mensaje ; ' CAMBIADA' ; Escribe mensaje ; Guarda en CODWRITE el ; digito que se almacenara en EEPROM ; Direccin donde guardara el digito ; almacena en EEPROM la clave ; Guarda en CODWRITE el ; digito que se almacenara en EEPROM ; Si COD3 != COD3A ; Si COD2 != COD2A ; ' CLAVE' ; Escribe mensaje ; Colocamos el cursor en la segunda lnea ; ; ; Obtiene el cdigo ; Compara el COD1 con COD1A ; ; ; Si COD1 != COD1A

Diciembre, 2007

; Si COD1 = COD1A continuamos comparando ; COD2 contra COD2A

; Si COD2 = COD2A continuamos comparando ;

; Si COD3 = COD3A continuamos comparando ;

- 54 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW CALL MOVF MOVWF MOVLW CALL MOVF MOVWF MOVLW CALL MOVLW CALL GOTO ;NOVERI: ; NOVERI CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL GOTO CLEARL 03H SITUCU MEN_12 ESCMEN 43H SITUCU MEN_13 ESCMEN 20H DELAY NUEVACL ; Limpia LCD ; ; Colocamos el cursor en la primera lnea ; 'INTENTELO' ; Escribe Mensaje ; ; Colocamos el cursor en la segunda lnea ; 'DE NUEVO' ; Escribe mensaje 01H EEWRITE COD3,W CODWRITE 02H EEWRITE COD4,W CODWRITE 03H EEWRITE 20H DELAY PRINCI Identifica un error al ingresar la clave nueva por segunda vez ; Direccin donde guardara el digito ; almacena en EEPROM la clave ; Guarda en CODWRITE el ; digito que se almacenara en EEPROM ; Direccin donde guardara el digito ; almacena en EEPROM la clave ; Guarda en CODWRITE el ; digito que se almacenara en EEPROM ; Direccin donde guardara el digito ; almacena en EEPROM la clave

Diciembre, 2007

;-----------------------------------------------------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------------;INCOREC: Despliega un mensaje cuando suscita un error al ; introducir el cdigo ;-----------------------------------------------------------------------------------------------------------------------------------

- 55 -

Universidad Autnoma Metropolitana, C. B. I.


INCOREC CALL MOVLW CALL MOVLW CALL MOVLW CALL MOVLW CALL GOTO INCORE DECF BTFSC GOTO CALL MOVLW CALL MOVLW CALL CALL GOTO INTENTO,F STATUS,2 ALARMA CLEARL MEN_3 ESCMEN 20H DELAY SUELKEY PRINCI ; Esperamos a que suelte la tecla ; Decrementa el nmero de intentos ; verifica que aun existan intentos ; si no hay intentos activa ALARMA ; Limpia Display ; 'CLAVE INCORRECTA' ; Escribe Mensaje CLEARL MEN_10 ESCMEN 40H SITUCU MEN_11 ESCMEN 20H DELAY PRINCI ; Cursor a segunda lnea ; 'TENER 4 DIGITOS' ; Escribe mensaje

Diciembre, 2007

;LA CLAVE DEBE TENER 4 DIGITOS ; 'LA CLAVE DEBE' ; Escribe mensaje

;----------------------------------------------------------------------------------------------------------------------------------;COGECOD: COGECOD CLRF CLRF CLRF CLRF ;ECOD12C: ; ECOD12C COD1 ; Limpiamos las variables COD2 COD3 COD4 Lee la primera tecla del cdigo y verifica que sea numrica Lee el cdigo y lo compara con el antiguo ;-----------------------------------------------------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------------------------------------------------

- 56 -

Universidad Autnoma Metropolitana, C. B. I.


CALL CALL MOVWF SUBLW BTFSC RETURN MOVF SUBLW BTFSC GOTO MOVLW CALL ;ECOD22C: ; ECOD22C CALL CALL MOVWF SUBLW BTFSC RETURN MOVF SUBLW BTFSC GOTO MOVLW CALL ;ECOD32C: ; ECOD32C CALL CALL MOVWF SUELKEY ESPEKEY COD1 ; ; Esperamos a que suelte la tecla ; Esperamos a que se presione la tecla COD1,W 'C' STATUS,2 ECOD22C '*' WRITEL ; Si es 'C' ; Si no es 'C' ; Escribimos '*' en pantalla SUELKEY COD1 ; 'A' STATUS,2 ; Si es 'A' ; Si no es 'A' verificamos 'C' ; Esperamos a que suelte la tecla ESPEKEY ; Esperamos a que se presione la tecla COD1,W 'C' STATUS,2 ECOD12C '*' WRITEL ; Si es 'C' ; Si no es 'C' ; Escribimos '*' en pantalla SUELKEY ESPEKEY COD1 'A' STATUS,2 ; Si es 'A' ; Si no es 'A' verificamos 'C' ; Esperamos a que suelte la tecla ; Esperamos a que se presione la tecla ;

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------Lee la segunda tecla del cdigo y verifica que sea numrica

;-----------------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------------Lee la tercera tecla del cdigo y verifica que sea numrica

;-----------------------------------------------------------------------------------------------------------------------------------

- 57 -

Universidad Autnoma Metropolitana, C. B. I.


SUBLW BTFSC RETURN MOVF SUBLW BTFSC GOTO MOVLW CALL ;ECOD42C: ; ECOD42C CALL CALL MOVWF SUBLW BTFSC RETURN MOVF SUBLW BTFSC GOTO MOVLW CALL CALL ;FINCOD: ; FINCODC CALL MOVWF SUBLW BTFSC RETURN ESPEKEY TECLA 'A' STATUS,2 ;YA TENGO EL CDIGO ; Espera que se presione una tecla de funcin COD1,W 'C' STATUS,2 ECOD42C '*' WRITEL SUELKEY ; Si es 'C' ; Si no es 'C' ; Escribimos '*' en pantalla ; Esperamos a que se suelte la tecla SUELKEY ESPEKEY COD1 ; 'A' STATUS,2 ; Si es 'A' ; Si no es 'A' verificamos 'C' ; Esperamos a que suelte la tecla ; Esperamos a que se presione la tecla COD1,W 'C' STATUS,2 ECOD32C '*' WRITEL ; Si es 'C' ; Si no es 'C' ; Escribimos '*' en pantalla 'A' STATUS,2 ; Si es 'A' ; Si no es 'A' verificamos 'C'

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------Lee la cuarta tecla del cdigo y verifica que sea numrica

;-----------------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------------Espera la tecla 'A' Aceptar o cancelar 'C' para cambiar el cdigo

;-----------------------------------------------------------------------------------------------------------------------------------

- 58 -

Universidad Autnoma Metropolitana, C. B. I.


GOTO ; ; ; LEECOD BSF BCF MOVWF BSF BCF BSF BCF MOVF BCF RETURN STATUS,6 STATUS,5 EEADR STATUS,5 EECON1,7 EECON1,0 STATUS,5 EEDATA,W STATUS,6 LEECOD: FINCODC

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------SUBRUTINA QUE LEE EL REGISTRO DE LA EEPROM INDICADO POR EL ACUMULADOR Y LO DEVUELVE EN ACUMULADOR

;-----------------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------------; ; ; EEWRITE: SUBRUTINA QUE ESCRIBE EN LA EEPRON DE DATOS PASAR LA DIRECCION DE LA EEPRON A ESCRIBIR EN W Y EL DATO A ESCRIBIR EN CODWRITE

;----------------------------------------------------------------------------------------------------------------------------------EEWRITE BSF BCF MOVWF BCF MOVF BSF MOVWF BSF BCF BSF BCF MOVLW STATUS,6 STATUS,5 EEADR STATUS,6 CODWRITE,W STATUS,6 EEDATA STATUS,5 EECON1,7 EECON1,2 INTCON,7 55H

- 59 -

Universidad Autnoma Metropolitana, C. B. I.


MOVWF MOVLW MOVWF BSF BSF BCF BCF EEWRIT BTFSS GOTO BSF BSF BCF BCF BCF BCF RETURN PIR2,4 EEWRIT STATUS,5 STATUS,6 EECON1,2 STATUS,5 STATUS,6 PIR2,4 EECON2 0AAH EECON2 EECON1,1 INTCON,7 STATUS,5 STATUS,6

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------; ; ;COL1: 0 ;ROW1: 4 GETKEY MOVLW MOVWF NOP MOVF tecla MOVWF CALL MOVF SUBWF BTFSS GOTO SUBLW TECLA REBOTE KEYB,W TECLA,F STATUS,2 GETKEY 0FH ; Guardamos la tecla presionada ; Retardo para esperar la tecla ; ; Si se ha inicializado correctamente ; el teclado ; continuamos ; Verificamos el que se KEYB,W ; Capturamos el Puerto C (00001111) si no se presiono alguna 0FH KEYB ; Inicializamos el teclado ; Columnas a 1 y Filas a 0 GETKEY: COL2: 1 ROW2: 5 Subrutina que devuelve el valor pulsado en COL3: 2 COL4: 3 ROW3: 6 ROW4: 7 un teclado hexadecimal en cdigo ASCII en W

;-----------------------------------------------------------------------------------------------------------------------------------

- 60 -

Universidad Autnoma Metropolitana, C. B. I.


BTFSS GOTO RETLW STATUS,2 HAYTECL 0FH ; haya presionado alguna tecla ; si se presiono una tecla ; caso contrario regresamos vacio

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;HAYTECL: Cuando se encuentra una tecla presionada ; este modulo identifica en que fila se encuentra ;----------------------------------------------------------------------------------------------------------------------------------HAYTECL BTFSC GOTO BTFSC GOTO BTFSC GOTO BTFSC GOTO RETLW KEYB,4 ROW1 KEYB,5 ROW2 KEYB,6 ROW3 KEYB,7 ROW4 0FH ; Verifica si se presiono alguna ; de las teclas de la fila 1 ; Verifica si se presiono alguna ; de las teclas de la fila 2 ; Verifica si se presiono alguna ; de las teclas de la fila 3 ; Verifica si se presiono alguna ; de las teclas de la fila 4 ; En caso de ninguna de las anteriores

;----------------------------------------------------------------------------------------------------------------------------------;ROW1: Si la Tecla Presionada se encuentra en la Fila 1 ; ROW1 MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW KEYB,4 33H ;TECLA=3 KEYB,4 32H 04H KEYB ;TECLA=2 KEYB,4 31H 02H KEYB ;TECLA=1 01H KEYB del teclado este modulo identifica esta tecla. ;-----------------------------------------------------------------------------------------------------------------------------------

- 61 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW MOVWF NOP BTFSC RETLW RETLW KEYB,4 'A' 0FH ;TECLA=A 08H KEYB

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;ROW2: Si la Tecla Presionada se encuentra en la Fila 2 ; ROW2 MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW RETLW 0FH ;----------------------------------------------------------------------------------------------------------------------------------;ROW3: Si la Tecla Presionada se encuentra en la Fila 3 ; ROW3 MOVLW MOVWF NOP BTFSC RETLW KEYB,6 37H ;TECLA=7 01H KEYB del teclado este modulo identifica esta tecla. ;----------------------------------------------------------------------------------------------------------------------------------KEYB,5 36H ;TECLA=6 KEYB,5 35H 04H KEYB ;TECLA=5 KEYB,5 34H 02H KEYB ;TECLA=4 01H KEYB del teclado este modulo identifica esta tecla. ;-----------------------------------------------------------------------------------------------------------------------------------

- 62 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW RETLW KEYB,6 'C' 0FH ;TECLA=C KEYB,6 39H 08H KEYB ;TECLA=9 KEYB,6 38H 04H KEYB ;TECLA=8 02H KEYB

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;ROW4: Si la Tecla Presionada se encuentra en la Fila 4 ; ROW4 MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW MOVLW MOVWF NOP BTFSC RETLW RETLW KEYB,7 '#' 0FH ;TECLA=# KEYB,7 30H 04H KEYB ;TECLA=0 KEYB,7 '*' 02H KEYB ;TECLA=* 01H KEYB del teclado este modulo identifica esta tecla. ;-----------------------------------------------------------------------------------------------------------------------------------

- 63 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------; ; SUELKEY CALL SUBLW BTFSC RETURN GOTO ; ; ESPEKEY CALL MOVWF SUBLW BTFSC GOTO MOVF RETURN ; ; ESCMEN MOVWF ESCMEN2 CALL ADDLW BTFSC RETURN CALL INCF MOVF GOTO WRITEL PUNTAB,F PUNTAB,W ESCMEN2 TABLA 00H STATUS,2 PUNTAB ; Guardamos la direccin del inicio del mensaje en PUNTAB ESCMEN: GETKEY TECLA 0FH STATUS,2 ESPEKEY TECLA,W ; Obtiene la tecla presionada ; Verificamos ; que se haya ; presionado una tecla ; si no se presiono ; si se presiono una tecla regresamos ; el valor en el acumulador SUBRUTINA QUE ESCRIBE UN MENSAJE EN EL LCD, PASAR INICIO DE TABLA EN ACUMULADOR ESPEKEY: SUELKEY GETKEY 0FH STATUS,2; ; (no se presiono ninguna tecla) ; Se presiono una tecla ; Se verifica si regreso vacio SUELKEY: SUBRUTINA QUE ESPERA A QUE SE SUELTE LA TECLA PULSADA

;-----------------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------------SUBRUTINA QUE ESPERA A QUE SE PULSE UNA TECLA DEVUELVE EL VALOR EN W Y TECLA

;-----------------------------------------------------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------------------------------------------------

- 64 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------; WAITLCD: SUBRUTINA DE ESPERA AL LCD ;----------------------------------------------------------------------------------------------------------------------------------WAITLCD BSF MOVLW MOVWF BCF BSF BCF BSF MOVLW MOVWF WAITLC BTFSC GOTO BCF BCF BCF BSF CLRF BCF RETURN ;----------------------------------------------------------------------------------------------------------------------------------;INITLCD: INITLCD MOVLW CALL MOVLW CALL MOVLW 38H COMANDO 0CH COMANDO 06H ;00111000 ;INTERFACE 8 BIT, 2 LINEAS ;00001100 ;DISPLAY A ON, NO MUESTRA CURSOR, NO PARPADEO ;00000110 SUBRUTINA DE INICIALIZACIN DEL LCD ;----------------------------------------------------------------------------------------------------------------------------------DATO,7 WAITLC EN RW DATO,7 STATUS,5 DATO STATUS,5 ; Regreso el Puerto B ; como Salidas ; ; Espera a que se libere la bandera de ocupado ; de el LCD ; Limpio los bits ; de comandos del LCD STATUS,5 0FFH DATO STATUS,5 EN RS RW 0FFH DATO ; Cambio al Banco 1 y ; configuro el puerto B como ; entrada para leer desde el LCD ; Regreso al Banco 0 ; Activamos el LCD ; Configuramos el LCD para poder leer ; el 'busy flag' esto es RS=0, RW=1 ; Pongo el Puerto B todo en 1

- 65 -

Universidad Autnoma Metropolitana, C. B. I.


CALL RETURN COMANDO

Diciembre, 2007

;MUEVE CURSOR A LA DCHA DESPUES D ESCRIBIR, NO MUEVE VENTANA

;----------------------------------------------------------------------------------------------------------------------------------; ; CLEARL MOVLW RETURN ;----------------------------------------------------------------------------------------------------------------------------------; WRITEL: SUBRUTINA QUE ESCRIBE EN EL LCD EL CARACTER DEL ACUMULADOR ;----------------------------------------------------------------------------------------------------------------------------------WRITEL BSF BSF BCF MOVWF BCF CALL RETURN ;----------------------------------------------------------------------------------------------------------------------------------; COMANDO: SUBRUTINA QUE ENVIA UN COMANDO AL LCD ;----------------------------------------------------------------------------------------------------------------------------------COMANDO BSF BCF BCF MOVWF BCF CALL RETURN EN RS RW DATO EN WAITLCD EN RS RW DATO EN WAITLCD 01H ;BORRADO CALL COMANDO CLEARL: SUBRUTINA QUE BORRA EL LCD Y LLEVA EL CURSOR AL LADO DEL DISPLAY IZQUIERDO ;-----------------------------------------------------------------------------------------------------------------------------------

- 66 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------; EL ; ACUMULADOR ;----------------------------------------------------------------------------------------------------------------------------------SITUCU IORLW 80H CALL COMANDO RETURN ;----------------------------------------------------------------------------------------------------------------------------------;*********** DELAY *********** ; SUBRUTINA DE RETARDO SEGN EL VALOR DEL ACUMULADOR ; MODIFICA LOS SIGUIENTES REGISTROS ; ; ; DELAY MOVWF DELAY3 MOVLW MOVWF DELAY2 MOVLW MOVWF DELAY1 DECFSZ GOTO DECFSZ GOTO DECFSZ GOTO RETURN REBOTE CUENTA3,F DELAY1 CUENTA2,F DELAY2 CUENTA1,F DELAY3 0FFH CUENTA3 0FFH CUENTA2 CUENTA1 CUENTA1 CUENTA2 CUENTA3 SITUCU: SUBRUTINA QUE SITUA EL CURSOR EN LA DIRECCION INDICADA POR

;-----------------------------------------------------------------------------------------------------------------------------------

- 67 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW MOVWF REBO DECFSZ GOTO RETURN ORG DE END 2100H 30H,30H,30H,30H CUENTA1,F REBO 0FFH CUENTA1

Diciembre, 2007

12. BIBLIOGRAFIA. Curso Avanzado de Microcontroladores PIC. Iovine, John. PIC Robotics .McGraw Hill. E.U. A. 2004, 290 p.p. http://es.wikipedia.org/wiki/Microcontrolador Hoja de especificaciones de: PIC 16F876, L7805CV (Regulador de Voltaje), Pantalla LCD y Teclado Matricial.

1. 2. 3. 4.

- 68 -

Potrebbero piacerti anche