Está en la página 1de 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. 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...

24

8.6. Componentes del Proyecto.........

26

9. Construccin del Circuito... 27


10. Funcionamiento... 35
10.1. Clave de acceso.....

35

10.2. Cambio de la clave de acceso....

36

11. Cdigo Fuente del Programa.. 37


12. Bibliografa.....
-3-

68

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

Empresa

TABLA 1. Microcontroladores ms comunes.


8 bits
12 bits
14 bits
16 bits

32 bits

64 bits

Atmel
AVR
Freescale
(antes Motorola)

68HC05,
68HC08,
68HC11, HCS08

68HC12,
68HC16

683xx,
68HCS12,
68HCSX12

Intel

MCS-48 (familia
8048)
MCS51 (familia
8051)
8xC251

MCS96,
MXS296

National
Semiconductor

COP8

Familia 10f2xx

Familia
12Cxx de
12 bits

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

18Cxx y
18Fxx de
16 bits

Microchip

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

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.

Diciembre, 2007

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.

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

Diciembre, 2007

FINCOD:
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

Diciembre, 2007

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:
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.

Diciembre, 2007

ALARMA:
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.

Diagrama 1. Circuito de cerradura electrnica accionada por teclado.

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

- 25 -

Diciembre, 2007

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.

Inicialmente la clave es la 0000.

2.

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

RADIX HEX
INCLUDE

;Procesador a usar
;Sistema de numeracin Hexadecimal predeterminada

P16F876.INC

;Librera incluida, contiene definiciones de registros

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

EQU

02H

STATUS

EQU

03H

PORTA

EQU

05H

;Puerto A

DATO

EQU

06H

;PUERTO B

KEYB

EQU

07H

;Puerto C

INTCON

EQU

0BH

PIR2

EQU

0DH

PIE2

EQU

8DH

ADECON1

EQU

9FH

EEDATA

EQU

10CH

EEADR

EQU

10DH

EECON1

EQU

18CH

EECON2

EQU

18DH

; Anlogo Digital Configuracin

;----------------------------------------------------------------------------------------------------------------------------------; Registros de Uso General


;----------------------------------------------------------------------------------------------------------------------------------T_RELE

EQU

20H

;CONTROLA EL TIEMPO DE APERTURA DE LA PUERTA

PUNTAB

EQU

20H

INTENTO

EQU

21H

;Numero de intentos antes de que se accione la alarma

TECLA

EQU

22H

; Almacena la tecla presionada

CUENTA1

EQU

23H

CUENTA2

EQU

24H

- 37 -

Universidad Autnoma Metropolitana, C. B. I.


CUENTA3

EQU

25H

COD1

EQU

26H

; Almacena la primera tecla numrica presionada

COD2

EQU

27H

; Almacena la segunda tecla numrica presionada

COD3

EQU

28H

; Almacena la tercera tecla numrica presionada

COD4

EQU

29H

; Almacena la cuarta tecla numrica presionada

CUENTA4

EQU

2AH

COD1A

EQU

2BH

; Auxiliar para comprobar cdigo

COD2A

EQU

2CH

; Auxiliar para comprobar cdigo

COD3A

EQU

2DH

; Auxiliar para comprobar cdigo

COD4A

EQU

2EH

; Auxiliar para comprobar cdigo

CODWRITE

EQU

2FH ; Auxiliar para escribir cdigo en EEPROM

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;
;----------------------------------------------------------------------------------------------------------------------------------F

EQU

EQU

;----------------------------------------------------------------------------------------------------------------------------------; Definiciones
;----------------------------------------------------------------------------------------------------------------------------------#DEFINE

EN

05H,2

; Activa y desactiva el LCD

#DEFINE

RW

05H,1

#DEFINE

RS

05H,0

#DEFINE

ALA

05H,3

#DEFINE

PORTERO 05H,5

ORG

; Apertura y cierre de la puerta

00H

GOTO INICIO
ORG

04H

BCF

PIR2,4

RETFIE

- 38 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------; Mensajes para el display


;----------------------------------------------------------------------------------------------------------------------------------TABLA
MOVWF

PCL ; Hacemos apuntar el PCL a la direccin de inicio del mensaje

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 1 'Introduzca'
;----------------------------------------------------------------------------------------------------------------------------------MEN_1
RETLW

'I'

RETLW

'N'

RETLW

'T'

RETLW

'R'

RETLW

'O'

RETLW

'D'

RETLW

'U'

RETLW

'Z'

RETLW

'C'

RETLW

'A'

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 5 'Clave'
;----------------------------------------------------------------------------------------------------------------------------------MEN_5
RETLW

''

RETLW

'C'

RETLW

'L'

RETLW

'A'

RETLW

'V'

RETLW

'E'

RETLW

00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 2 'Puede Pasar'


;----------------------------------------------------------------------------------------------------------------------------------MEN_2
RETLW

'P'

RETLW

'U'

- 39 -

Universidad Autnoma Metropolitana, C. B. I.


RETLW

'E'

RETLW

'D'

RETLW

'E'

RETLW

''

RETLW

'P'

RETLW

'A'

RETLW

'S'

RETLW

'A'

RETLW

'R'

RETLW

00H

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 3 'Clave Incorrecta'


;----------------------------------------------------------------------------------------------------------------------------------MEN_3
RETLW

'C'

RETLW

'L'

RETLW

'A'

RETLW

'V'

RETLW

'E'

RETLW

''

RETLW

'I'

RETLW

'N'

RETLW

'C'

RETLW

'O'

RETLW

'R'

RETLW

'R'

RETLW

'E'

RETLW

'C'

RETLW

'T'

RETLW

'A'

RETLW

00H

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


;----------------------------------------------------------------------------------------------------------------------------------MEN_4

- 40 -

Universidad Autnoma Metropolitana, C. B. I.


RETLW

'C'

RETLW

'A'

RETLW

'M'

RETLW

'B'

RETLW

'I'

RETLW

'O'

RETLW

''

RETLW

'D'

RETLW

'E'

RETLW

00H

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 6 'Antigua'
;----------------------------------------------------------------------------------------------------------------------------------MEN_6
RETLW

''

RETLW

'A'

RETLW

'N'

RETLW

'T'

RETLW

'I'

RETLW

'G'

RETLW

'U'

RETLW

'A'

RETLW

00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 7 'Nueva'
;----------------------------------------------------------------------------------------------------------------------------------MEN_7
RETLW

'N'

RETLW

'U'

RETLW

'E'

RETLW

'V'

RETLW

'A'

RETLW

00H

- 41 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 8 'Verifique'
;----------------------------------------------------------------------------------------------------------------------------------MEN_8
RETLW

'V'

RETLW

'E'

RETLW

'R'

RETLW

'I'

RETLW

'F'

RETLW

'I'

RETLW

'Q'

RETLW

'U'

RETLW

'E'

RETLW

00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 9 'Cambiada'
;----------------------------------------------------------------------------------------------------------------------------------MEN_9
RETLW

''

RETLW

'C'

RETLW

'A'

RETLW

'M'

RETLW

'B'

RETLW

'I'

RETLW

'A'

RETLW

'D'

RETLW

'A'

RETLW

00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 10 'La Clave Debe'


;----------------------------------------------------------------------------------------------------------------------------------MEN_10
RETLW

'L'

RETLW

'A'

RETLW

''

- 42 -

Universidad Autnoma Metropolitana, C. B. I.


RETLW

'C'

RETLW

'L'

RETLW

'A'

RETLW

'V'

RETLW

'E'

RETLW

''

RETLW

'D'

RETLW

'E'

RETLW

'B'

RETLW

'E'

RETLW

00H

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 11 'Tener 4 Dgitos'


;----------------------------------------------------------------------------------------------------------------------------------MEN_11
RETLW

'T'

RETLW

'E'

RETLW

'N'

RETLW

'E'

RETLW

'R'

RETLW

''

RETLW

'4'

RETLW

''

RETLW

'D'

RETLW

'I'

RETLW

'G'

RETLW

'I'

RETLW

'T'

RETLW

'O'

RETLW

'S'

RETLW

00H

- 43 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 12 'Intentelo'
;----------------------------------------------------------------------------------------------------------------------------------MEN_12
RETLW

'I'

RETLW

'N'

RETLW

'T'

RETLW

'E'

RETLW

'N'

RETLW

'T'

RETLW

'E'

RETLW

'L'

RETLW

'O'

RETLW

00H

;----------------------------------------------------------------------------------------------------------------------------------;Mensaje 13 'De Nuevo'


;----------------------------------------------------------------------------------------------------------------------------------MEN_13
RETLW

'D'

RETLW

'E'

RETLW

''

RETLW

'N'

RETLW

'U'

RETLW

'E'

RETLW

'V'

RETLW

'O'

RETLW

00H

;----------------------------------------------------------------------------------------------------------------------------------; INICIO: Inicializa los dispositivos.


;

LCD

Teclado

;----------------------------------------------------------------------------------------------------------------------------------INICIO
CLRF

DATO

; Inicializa el Puerto B

CLRF

KEYB

; Inicializa el Teclado

- 44 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

CLRF

PORTA

; Inicializa el Puerto A

BSF

STATUS,5

; Cambiamos al Banco 1 para definir las entradas como digitales

MOVLW

06H

; Bits de configuracin para las entradas como digitales

MOVWF

ADCON1

; Enva la configuracin

CLRF

DATO

BCF

EN

; Configuramos EN, RW,

BCF

RW

BCF

RS

; RS, ALA y Portero

BCF

ALA

BCF

PORTERO

; como salidas

MOVLW

0F0H

; Configuramos el teclado

MOVWF

KEYB

; Columnas como salidas y Filas como entradas

BCF

STATUS,5

; Regresamos al banco 0

BCF

PIR2,4

; La EEPROM eta lista para usarse

MOVLW

03H

; Cargamos el numero de intentos que se podrn

MOVWF

INTENTO

; realizar antes que se active la alarma en este caso 3

CALL

INITLCD

; Inicializamos la pantalla LCD

;CALL

INITLCD

;----------------------------------------------------------------------------------------------------------------------------------;PRINCI: Cuerpo principal del programa


;----------------------------------------------------------------------------------------------------------------------------------PRINCI
CALL

CLEARL

MOVLW

00H

CALL

SITUCU

; Coloca el cursor al inicio de la lnea superior del LCD

MOVLW

MEN_1

; Cargamos la direccin del Mensaje en el Acumulador

CALL

ESCMEN

; Rutina que escribe el mensaje al que apunta el acumulador

MOVLW

44H

CALL SITUCU

; Borra el Display y coloca el cursor ala izq.

; Coloca el cursor al inicio de la lnea inferior del LCD

;----------------------------------------------------------------------------------------------------------------------------------;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

; Verificamos que el teclado se encuentre bien inicializado

CALL ESPEKEY

; Esperamos a que se presione una tecla

MOVWF

COD1

; Almacenamos la primera tecla presionada en el Acumulador

SUBLW

'A'

; Verificamos si la tecla fue o no 'A'

BTFSC

STATUS,2

GOTO

INCOR

; Si la tecla = 'A'

MOVF

COD1,W

; Cargamos la tecla en el acumulador

SUBLW

'C'

; Verificamos si la tecla presionada fue 'C'

BTFSC

STATUS,2

; Si la tecla fue 'C'

GOTO

CAMBIOC

; cambiamos la clave

MOVF

COD1,W

; en caso de que se haya presionado una tecla numrica

MOVLW

'*'

; para mantener oculta la tecla oprimida

CALL

WRITEL

; escribimos '*' en el Display

;----------------------------------------------------------------------------------------------------------------------------------;ECOD22: Este modulo almacena la segunda tecla numrica presionada y valida


;

que no sea una tecla de funcin en caso de 'C' entra a la seccin

de "Cambio de Clave"

;----------------------------------------------------------------------------------------------------------------------------------ECOD22
CALL SUELKEY

; Verificamos que el teclado se encuentre bien inicializado

CALL ESPEKEY

; Esperamos a que se presione una tecla

MOVWF

COD2

; Almacenamos la segunda tecla presionada en el Acumulador

SUBLW

'A'

; Verificamos si la tecla fue o no 'A'

BTFSC

STATUS,2

GOTO

INCOR

; Si la tecla = 'A'

MOVF

COD2,W

; Cargamos la tecla en el acumulador

SUBLW

'C'

; Verificamos si la tecla presionada fue 'C'

BTFSC

STATUS,2

; Si la tecla fue 'C'

GOTO

CAMBIOC

; cambiamos la clave

MOVF

COD2,W

; en caso de que se haya presionado una tecla numrica

MOVLW

'*'

; para mantener oculta la tecla oprimida

- 46 -

Universidad Autnoma Metropolitana, C. B. I.


CALL

WRITEL

Diciembre, 2007

; escribimos '*' en el Display

;----------------------------------------------------------------------------------------------------------------------------------;ECOD32: Este modulo almacena la tercera tecla numrica presionada y valida


;

que no sea una tecla de funcin en caso de 'C' entra a la seccin

de "Cambio de Clave"

;----------------------------------------------------------------------------------------------------------------------------------ECOD32
CALL

SUELKEY

; Verificamos que el teclado se encuentre bien inicializado

CALL

ESPEKEY

; Esperamos a que se presione una tecla

MOVWF

COD3

; Almacenamos la tercera tecla presionada en el Acumulador

SUBLW

'A'

; Verificamos si la tecla fue o no 'A'

BTFSC

STATUS,2

GOTO

INCOR

; Si la tecla = 'A'

MOVF

COD3,W

; Cargamos la tecla en el acumulador

SUBLW

'C'

; Verificamos si la tecla presionada fue 'C'

BTFSC

STATUS,2

; Si la tecla fue 'C'

GOTO

CAMBIOC

; cambiamos la clave

MOVF

COD3,W

; en caso de que se haya presionado una tecla numrica

MOVLW

'*'

; para mantener oculta la tecla oprimida

CALL

WRITEL

; escribimos '*' en el Display

;----------------------------------------------------------------------------------------------------------------------------------;ECOD42: Este modulo almacena la cuarta tecla numrica presionada y valida


;

que no sea una tecla de funcin en caso de 'C' entra a la seccin

de "Cambio de Clave"

;----------------------------------------------------------------------------------------------------------------------------------ECOD42
CALL

SUELKEY

; Verificamos que el teclado se encuentre bien inicializado

CALL

ESPEKEY

; Esperamos a que se presione una tecla

MOVWF

COD4

; Almacenamos la cuarta tecla presionada en el Acumulador

SUBLW

'A'

; Verificamos si la tecla fue o no 'A'

BTFSC

STATUS,2

GOTO

INCOR

; Si la tecla = 'A'

MOVF

COD4,W

; Cargamos la tecla en el acumulador

- 47 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

SUBLW

'C'

; Verificamos si la tecla presionada fue 'C'

BTFSC

STATUS,2

; Si la tecla fue 'C'

GOTO

CAMBIOC

; cambiamos la clave

MOVF

COD4,W

; en caso de que se haya presionado una tecla numrica

MOVLW

'*'

; para mantener oculta la tecla oprimida

CALL

WRITEL

; escribimos '*' en el Display

CALL

SUELKEY

;----------------------------------------------------------------------------------------------------------------------------------;FINDCOD: Una vez teniendo las teclas almacenadas, este modulo verifica que
;

la siguiente tecla sea una tecla de funcin para 'Aceptar' ('A') el cdigo

o 'Cambiar la clave' ('C')

;----------------------------------------------------------------------------------------------------------------------------------FINCOD
CALL

ESPEKEY

MOVWF

TECLA

SUBLW

'A'

BTFSC

STATUS,2

GOTO

FINCOD2

MOVF

TECLA,W

SUBLW

'C'

BTFSC

STATUS,2

GOTO

CAMBIOC

GOTO

FINCOD

;----------------------------------------------------------------------------------------------------------------------------------;FINDCOD2:
;

Precondiciones: Tener las teclas del cdigo almacenado esto es:

Cdigo = 'COD1,COD2,COD3,COD4' y se ha presionado la tecla 'A'

;
;

Este modulo verifica que sea el cdigo correcto para activar la apertura

;----------------------------------------------------------------------------------------------------------------------------------FINCOD2
MOVLW

00H

; Leemos el registro de la EEPROM

CALL

LEECOD

; donde se encuentra almacenado el cdigo correcto

SUBWF

COD1

; Comparamos las teclas

BTFSS

STATUS,2

GOTO

INCOR

; Si la tecla es incorrecta

- 48 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

MOVLW

01H

; Leemos el registro de la EEPROM

CALL

LEECOD

; donde se encuentra almacenado el cdigo correcto

SUBWF

COD2

; Comparamos las teclas

BTFSS

STATUS,2

GOTO

INCOR

; Si la tecla es incorrecta

MOVLW

02H

; Leemos el registro de la EEPROM

CALL

LEECOD

; donde se encuentra almacenado el cdigo correcto

SUBWF

COD3

; Comparamos las teclas

BTFSS

STATUS,2

GOTO

INCOR

; Si la tecla es incorrecta

MOVLW

03H

; Leemos el registro de la EEPROM

CALL

LEECOD

; donde se encuentra almacenado el cdigo correcto

SUBWF

COD4

; Comparamos las teclas

BTFSS

STATUS,2

GOTO

INCOR

; Si la tecla es incorrecta

CALL

CLEARL

; CLAVE CORRECTA

MOVLW

02H

; Colocamos en posicin

CALL

SITUCU

; el cursor para escribir en el LCD

MOVLW

MEN_2

; Escribimos el Mensaje

CALL

ESCMEN

; de bienvenida

MOVLW

03H

; Reinicia

MOVWF

INTENTO

; el nmero de intentos

BSF

PORTERO

; Activa mecanismo de apertura

MOVLW

T_RELE

CALL

DELAY

; Esperamos el tiempo dado por T_RELE

BCF

PORTERO

; Desactivamos mecanismo de apertura

MOVLW

10H

CALL

DELAY

GOTO

PRINCI

; Reiniciamos el sistema

- 49 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;INCOR: La clave fue incorrecta y enva el mensaje al LCD


;----------------------------------------------------------------------------------------------------------------------------------INCOR
MOVLW

0CH

CALL

COMANDO

CALL

CLEARL

MOVLW

MEN_3

; Escribe el mensaje de clave incorrecta

CALL

ESCMEN

DECFSZ

INTENTO,F

; Decrementa el nmero de intentos disponibles

GOTO INCOR2

; Si an quedan intentos disponibles

GOTO ALARMA

; Si se acabaron los intentos activa la "Alarma"

INCOR2
MOVLW

20H

; Espera un tiempo antes de

CALL DELAY ; Poder intentar el ingreso


GOTO PRINCI
;----------------------------------------------------------------------------------------------------------------------------------;ALARMA: Despus de 3 intentos incorrectos de acceso se activa
;

la alarma

;----------------------------------------------------------------------------------------------------------------------------------ALARMA
MOVLW

1EH

MOVWF

TECLA

ALARMA4
MOVLW

03H

; Reiniciamos el numero de intentos

MOVWF

INTENTO

; disponibles

MOVLW

00FH

MOVWF

CUENTA1

MOVLW

030H

MOVWF

CUENTA2

ALARMA1
MOVLW

20H

MOVWF

CUENTA4

DECF

CUENTA1,F

BTFSC

STATUS,2

GOTO

ALARMA2

ALARMA3

- 50 -

Universidad Autnoma Metropolitana, C. B. I.


BSF

ALA

; Enciende

CALL

FRECU

; Frecuencia de apagado y encendido

BCF

ALA

; Apaga

CALL

FRECU

DECFSZ

CUENTA4,F

GOTO

ALARMA3

GOTO

ALARMA1

Diciembre, 2007

ALARMA2
MOVLW

01H

CALL

DELAY

DECFSZ

TECLA,F

GOTO

ALARMA4

GOTO

PRINCI

MOVF

CUENTA1,W

MOVWF

CUENTA3

FRECU

FRECU2
DECFSZ

CUENTA3,F

GOTO

FRECU2

DECFSZ

CUENTA2,F

GOTO

FRECU

MOVLW

030H

MOVWF

CUENTA2

RETURN
;----------------------------------------------------------------------------------------------------------------------------------;CAMBIOC:

Este modulo Cambia la clave almacenada

;----------------------------------------------------------------------------------------------------------------------------------CAMBIOC
CALL

CLEARL

MOVLW

MEN_4

; 'CAMBIO DE'

CALL

ESCMEN

; Escribe el mensaje

MOVLW

MEN_5

; ' CLAVE'

CALL

ESCMEN

; Escribe el mensaje

MOVLW

20H

CALL

DELAY

; Retardo

- 51 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

CALL

CLEARL

; Limpiamos el Display

MOVLW

MEN_5

; ' CLAVE'

CALL

ESCMEN

; Escribe el mensaje

MOVLW

MEN_6

; ' ANTIGUA'

CALL

ESCMEN

; Escribe el mensaje

CALL

SUELKEY

; Espera a que se deje de presionar la tecla

MOVLW

44H

CALL

SITUCU

; Colocamos el cursor en la lnea siguiente

CALL

COGECOD

; Obtiene el Cdigo Tecleado

MOVLW

00H

; Direccin de la EEPROM donde est almacenado el digito

CALL

LEECOD

; Lee el Cdigo de le EEPROM y lo regresa en el acumulador

SUBWF

COD1

; compara el cdigo almacenado con el tecleado

BTFSS

STATUS,2

GOTO

INCORE

; Si no es igual
; Si es igual compara el siguiente digito

MOVLW

01H

; Direccin de la EEPROM donde est almacenado el digito

CALL

LEECOD

; Lee el Cdigo de le EEPROM y lo regresa en el acumulador

SUBWF

COD2

; compara el cdigo almacenado con el tecleado

BTFSS

STATUS,2

GOTO

INCORE

; Si no es igual
; Si es igual compara el siguiente digito

MOVLW

02H

; Direccin de la EEPROM donde est almacenado el digito

CALL

LEECOD

; Lee el Cdigo de le EEPROM y lo regresa en el acumulador

SUBWF

COD3

; compara el cdigo almacenado con el tecleado

BTFSS

STATUS,2

GOTO

INCORE

; Si no es igual
; Si es igual compara el siguiente digito

MOVLW

03H

; Direccin de la EEPROM donde est almacenado el digito

CALL

LEECOD

; Lee el Cdigo de le EEPROM y lo regresa en el acumulador

SUBWF

COD4

; compara el cdigo almacenado con el tecleado

BTFSS

STATUS,2

GOTO

INCORE

; Si no es igual

MOVLW

03H

; Si el cdigo fue correcto

MOVWF

INTENTO

; Reiniciamos el nmero de intentos

- 52 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;NUEVACL:

Capturamos y verificamos la nueva clave y se almacena

en la EEPROM

;----------------------------------------------------------------------------------------------------------------------------------NUEVACL
CALL

CLEARL

; Limpiamos el Display

MOVLW

02H

CALL

SITUCU

; Colocamos el cursor en la primera lnea

MOVLW

MEN_7

; 'NUEVA'

CALL

ESCMEN

; Escribimos el mensaje

MOVLW

MEN_5

; ' CLAVE'

CALL

ESCMEN

; Escribimos el mensaje

MOVLW

44H

; Cambiamos de lnea

CALL

SITUCU

CALL

SUELKEY

; Esperamos que se libere la tecla

CALL

COGECOD

; Leemos el nuevo cdigo

MOVF

COD1,W

; Copiamos COD1 para verificar posteriormente

BTFSC

STATUS,2

GOTO

INCOREC

MOVWF

COD1A

; Almacenamos COD1 en COD1A

MOVF

COD2,W

; Copiamos COD2 para verificar posteriormente

BTFSC

STATUS,2

GOTO

INCOREC

MOVWF

COD2A

; Almacenamos COD2 en COD2A

MOVF

COD3,W

; Copiamos COD3 para verificar posteriormente

BTFSC

STATUS,2

GOTO

INCOREC

MOVWF

COD3A

; Almacenamos COD3 en COD3A

MOVF

COD4,W

; Copiamos COD4 para verificar posteriormente

BTFSC

STATUS,2

GOTO

INCOREC

MOVWF

COD4A

; Almacenamos COD4 en COD4A

CALL

CLEARL

;VERIFIQUE CLAVE

MOVLW

MEN_8

; 'VERIFIQUE'

CALL

ESCMEN

; Escribe mensaje

- 53 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

MOVLW

MEN_5

; ' CLAVE'

CALL

ESCMEN

; Escribe mensaje

MOVLW

44H

; Colocamos el cursor en la segunda lnea

CALL

SITUCU

CALL

SUELKEY

CALL

COGECOD

; Obtiene el cdigo

MOVF

COD1,W

; Compara el COD1 con COD1A

SUBWF

COD1A,W

BTFSS

STATUS,2

GOTO

NOVERI

; Si COD1 != COD1A

MOVF

COD2,W

; Si COD1 = COD1A continuamos comparando

SUBWF

COD2A,W

; COD2 contra COD2A

BTFSS

STATUS,2;

GOTO

NOVERI

; Si COD2 != COD2A

MOVF

COD3,W

; Si COD2 = COD2A continuamos comparando

SUBWF

COD3A,W

BTFSS

STATUS,2;

GOTO

NOVERI

; Si COD3 != COD3A

MOVF

COD4,W

; Si COD3 = COD3A continuamos comparando

SUBWF

COD4A,W

BTFSS

STATUS,2;

GOTO

NOVERI

; Si COD4 != COD4A
; Si COD4 = COD4A continuamos

CALL

CLEARL

;CLAVE CAMBIADA

MOVLW

MEN_5

; ' CLAVE'

CALL

ESCMEN

; Escribe mensaje

MOVLW

MEN_9

; ' CAMBIADA'

CALL

ESCMEN

; Escribe mensaje

MOVF

COD1,W

; Guarda en CODWRITE el

MOVWF

CODWRITE

; digito que se almacenara en EEPROM

MOVLW

00H

; Direccin donde guardara el digito

CALL

EEWRITE

; almacena en EEPROM la clave

MOVF

COD2,W

; Guarda en CODWRITE el

MOVWF

CODWRITE

; digito que se almacenara en EEPROM

- 54 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW

01H

; Direccin donde guardara el digito

CALL

EEWRITE

; almacena en EEPROM la clave

MOVF

COD3,W

; Guarda en CODWRITE el

MOVWF

CODWRITE

; digito que se almacenara en EEPROM

MOVLW

02H

; Direccin donde guardara el digito

CALL

EEWRITE

; almacena en EEPROM la clave

MOVF

COD4,W

; Guarda en CODWRITE el

MOVWF

CODWRITE

; digito que se almacenara en EEPROM

MOVLW

03H

; Direccin donde guardara el digito

CALL

EEWRITE

; almacena en EEPROM la clave

MOVLW

20H

CALL

DELAY

GOTO

PRINCI

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;NOVERI:

Identifica un error al ingresar la clave nueva

por segunda vez

;----------------------------------------------------------------------------------------------------------------------------------NOVERI
CALL

CLEARL

; Limpia LCD

MOVLW

03H

CALL

SITUCU

; Colocamos el cursor en la primera lnea

MOVLW

MEN_12

; 'INTENTELO'

CALL

ESCMEN

; Escribe Mensaje

MOVLW

43H

CALL

SITUCU

; Colocamos el cursor en la segunda lnea

MOVLW

MEN_13

; 'DE NUEVO'

CALL

ESCMEN

; Escribe mensaje

MOVLW

20H

CALL

DELAY

GOTO

NUEVACL

;----------------------------------------------------------------------------------------------------------------------------------;INCOREC: Despliega un mensaje cuando suscita un error al


;

introducir el cdigo

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

- 55 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

INCOREC
CALL

CLEARL

;LA CLAVE DEBE TENER 4 DIGITOS

MOVLW

MEN_10

; 'LA CLAVE DEBE'

CALL

ESCMEN

; Escribe mensaje

MOVLW

40H

CALL

SITUCU

; Cursor a segunda lnea

MOVLW

MEN_11

; 'TENER 4 DIGITOS'

CALL

ESCMEN

; Escribe mensaje

MOVLW

20H

CALL

DELAY

GOTO

PRINCI

INCORE
DECF

INTENTO,F

; Decrementa el nmero de intentos

BTFSC

STATUS,2

; verifica que aun existan intentos

GOTO

ALARMA

; si no hay intentos activa ALARMA

CALL

CLEARL

; Limpia Display

MOVLW

MEN_3

; 'CLAVE INCORRECTA'

CALL

ESCMEN

; Escribe Mensaje

MOVLW

20H

CALL

DELAY

CALL

SUELKEY

GOTO

PRINCI

; Esperamos a que suelte la tecla

;----------------------------------------------------------------------------------------------------------------------------------;COGECOD:

Lee el cdigo y lo compara con el antiguo

;----------------------------------------------------------------------------------------------------------------------------------COGECOD
CLRF

COD1 ; Limpiamos las variables

CLRF

COD2

CLRF

COD3

CLRF

COD4

;----------------------------------------------------------------------------------------------------------------------------------;ECOD12C:
;

Lee la primera tecla del cdigo y verifica


que sea numrica

;----------------------------------------------------------------------------------------------------------------------------------ECOD12C

- 56 -

Universidad Autnoma Metropolitana, C. B. I.


CALL

SUELKEY

; Esperamos a que suelte la tecla

CALL

ESPEKEY

; Esperamos a que se presione la tecla

MOVWF

COD1

SUBLW

'A'

BTFSC

STATUS,2

RETURN

Diciembre, 2007

; Si es 'A'

MOVF

COD1,W

; Si no es 'A' verificamos 'C'

SUBLW

'C'

BTFSC

STATUS,2

GOTO

ECOD12C

; Si es 'C'

MOVLW

'*'

; Si no es 'C'

CALL

WRITEL

; Escribimos '*' en pantalla

;----------------------------------------------------------------------------------------------------------------------------------;ECOD22C:

Lee la segunda tecla del cdigo y verifica

que sea numrica

;----------------------------------------------------------------------------------------------------------------------------------ECOD22C
CALL

SUELKEY

CALL

ESPEKEY ; Esperamos a que se presione la tecla

MOVWF

COD1 ;

SUBLW

'A'

BTFSC

STATUS,2

RETURN

; Esperamos a que suelte la tecla

; Si es 'A'

MOVF

COD1,W

; Si no es 'A' verificamos 'C'

SUBLW

'C'

BTFSC

STATUS,2

GOTO

ECOD22C

; Si es 'C'

MOVLW

'*'

; Si no es 'C'

CALL

WRITEL

; Escribimos '*' en pantalla

;----------------------------------------------------------------------------------------------------------------------------------;ECOD32C:

Lee la tercera tecla del cdigo y verifica

que sea numrica

;----------------------------------------------------------------------------------------------------------------------------------ECOD32C
CALL

SUELKEY

; Esperamos a que suelte la tecla

CALL

ESPEKEY

; Esperamos a que se presione la tecla

MOVWF

COD1 ;

- 57 -

Universidad Autnoma Metropolitana, C. B. I.


SUBLW

'A'

BTFSC

STATUS,2

RETURN

Diciembre, 2007

; Si es 'A'

MOVF

COD1,W

; Si no es 'A' verificamos 'C'

SUBLW

'C'

BTFSC

STATUS,2

GOTO

ECOD32C

; Si es 'C'

MOVLW

'*'

; Si no es 'C'

CALL

WRITEL

; Escribimos '*' en pantalla

;----------------------------------------------------------------------------------------------------------------------------------;ECOD42C:

Lee la cuarta tecla del cdigo y verifica

que sea numrica

;----------------------------------------------------------------------------------------------------------------------------------ECOD42C
CALL

SUELKEY

; Esperamos a que suelte la tecla

CALL

ESPEKEY

; Esperamos a que se presione la tecla

MOVWF

COD1 ;

SUBLW

'A'

BTFSC

STATUS,2

RETURN

; Si es 'A'

MOVF

COD1,W

; Si no es 'A' verificamos 'C'

SUBLW

'C'

BTFSC

STATUS,2

GOTO

ECOD42C

; Si es 'C'

MOVLW

'*'

; Si no es 'C'

CALL

WRITEL

; Escribimos '*' en pantalla

CALL

SUELKEY

; Esperamos a que se suelte la tecla

;----------------------------------------------------------------------------------------------------------------------------------;FINCOD:

Espera la tecla 'A' Aceptar o cancelar 'C'

para cambiar el cdigo

;----------------------------------------------------------------------------------------------------------------------------------FINCODC
CALL

ESPEKEY

MOVWF

TECLA

SUBLW

'A'

BTFSC

STATUS,2

RETURN

; Espera que se presione una tecla de funcin

;YA TENGO EL CDIGO

- 58 -

Universidad Autnoma Metropolitana, C. B. I.


GOTO

Diciembre, 2007

FINCODC

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

LEECOD:

SUBRUTINA QUE LEE EL REGISTRO DE LA EEPROM

INDICADO POR EL ACUMULADOR Y LO DEVUELVE EN

ACUMULADOR

;----------------------------------------------------------------------------------------------------------------------------------LEECOD
BSF

STATUS,6

BCF

STATUS,5

MOVWF

EEADR

BSF

STATUS,5

BCF

EECON1,7

BSF

EECON1,0

BCF

STATUS,5

MOVF

EEDATA,W

BCF

STATUS,6

RETURN
;----------------------------------------------------------------------------------------------------------------------------------;

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

STATUS,6

BCF

STATUS,5

MOVWF

EEADR

BCF

STATUS,6

MOVF

CODWRITE,W

BSF

STATUS,6

MOVWF

EEDATA

BSF

STATUS,5

BCF

EECON1,7

BSF

EECON1,2

BCF

INTCON,7

MOVLW

55H

- 59 -

Universidad Autnoma Metropolitana, C. B. I.


MOVWF

EECON2

MOVLW

0AAH

MOVWF

EECON2

BSF

EECON1,1

BSF

INTCON,7

BCF

STATUS,5

BCF

STATUS,6

Diciembre, 2007

EEWRIT
BTFSS

PIR2,4

GOTO

EEWRIT

BSF

STATUS,5

BSF

STATUS,6

BCF

EECON1,2

BCF

STATUS,5

BCF

STATUS,6

BCF

PIR2,4

RETURN
;----------------------------------------------------------------------------------------------------------------------------------;

GETKEY:

Subrutina que devuelve el valor pulsado en

un teclado hexadecimal en cdigo ASCII en W

;COL1: 0

COL2: 1

;ROW1: 4

ROW2: 5

COL3: 2

COL4: 3
ROW3: 6

ROW4: 7

;----------------------------------------------------------------------------------------------------------------------------------GETKEY
MOVLW

0FH

; Inicializamos el teclado

MOVWF

KEYB

; Columnas a 1 y Filas a 0

MOVF

KEYB,W

; Capturamos el Puerto C (00001111) si no se presiono alguna

MOVWF

TECLA

; Guardamos la tecla presionada

CALL

REBOTE

; Retardo para esperar la tecla

MOVF

KEYB,W

SUBWF

TECLA,F

; Si se ha inicializado correctamente

BTFSS

STATUS,2

; el teclado

GOTO

GETKEY

; continuamos

SUBLW

0FH

; Verificamos el que se

NOP
tecla

- 60 -

Universidad Autnoma Metropolitana, C. B. I.


BTFSS

STATUS,2

; haya presionado alguna tecla

GOTO

HAYTECL

; si se presiono una tecla

RETLW

0FH

; caso contrario regresamos vacio

Diciembre, 2007

;----------------------------------------------------------------------------------------------------------------------------------;HAYTECL: Cuando se encuentra una tecla presionada


;

este modulo identifica en que fila se encuentra

;----------------------------------------------------------------------------------------------------------------------------------HAYTECL
BTFSC

KEYB,4

; Verifica si se presiono alguna

GOTO

ROW1

; de las teclas de la fila 1

BTFSC

KEYB,5

; Verifica si se presiono alguna

GOTO

ROW2

; de las teclas de la fila 2

BTFSC

KEYB,6

; Verifica si se presiono alguna

GOTO

ROW3

; de las teclas de la fila 3

BTFSC

KEYB,7

; Verifica si se presiono alguna

GOTO

ROW4

; de las teclas de la fila 4

RETLW

0FH

; En caso de ninguna de las anteriores

;----------------------------------------------------------------------------------------------------------------------------------;ROW1: Si la Tecla Presionada se encuentra en la Fila 1


;

del teclado este modulo identifica esta tecla.

;----------------------------------------------------------------------------------------------------------------------------------ROW1
MOVLW

01H

MOVWF

KEYB

NOP
BTFSC

KEYB,4

RETLW

31H

MOVLW

02H

MOVWF

KEYB

;TECLA=1

NOP
BTFSC

KEYB,4

RETLW

32H

MOVLW

04H

MOVWF

KEYB

;TECLA=2

NOP
BTFSC

KEYB,4

RETLW

33H

;TECLA=3

- 61 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW

08H

MOVWF

KEYB

Diciembre, 2007

NOP
BTFSC

KEYB,4

RETLW

'A'

RETLW

0FH

;TECLA=A

;----------------------------------------------------------------------------------------------------------------------------------;ROW2: Si la Tecla Presionada se encuentra en la Fila 2


;

del teclado este modulo identifica esta tecla.

;----------------------------------------------------------------------------------------------------------------------------------ROW2
MOVLW

01H

MOVWF

KEYB

NOP
BTFSC

KEYB,5

RETLW

34H

MOVLW

02H

MOVWF

KEYB

;TECLA=4

NOP
BTFSC

KEYB,5

RETLW

35H

MOVLW

04H

MOVWF

KEYB

;TECLA=5

NOP
BTFSC

KEYB,5

RETLW

36H

;TECLA=6

RETLW 0FH
;----------------------------------------------------------------------------------------------------------------------------------;ROW3: Si la Tecla Presionada se encuentra en la Fila 3
;

del teclado este modulo identifica esta tecla.

;----------------------------------------------------------------------------------------------------------------------------------ROW3
MOVLW

01H

MOVWF

KEYB

NOP
BTFSC

KEYB,6

RETLW

37H

;TECLA=7

- 62 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW

02H

MOVWF

KEYB

Diciembre, 2007

NOP
BTFSC

KEYB,6

RETLW

38H

MOVLW

04H

MOVWF

KEYB

;TECLA=8

NOP
BTFSC

KEYB,6

RETLW

39H

MOVLW

08H

MOVWF

KEYB

;TECLA=9

NOP
BTFSC

KEYB,6

RETLW

'C'

RETLW

0FH

;TECLA=C

;----------------------------------------------------------------------------------------------------------------------------------;ROW4: Si la Tecla Presionada se encuentra en la Fila 4


;

del teclado este modulo identifica esta tecla.

;----------------------------------------------------------------------------------------------------------------------------------ROW4
MOVLW

01H

MOVWF

KEYB

NOP
BTFSC

KEYB,7

RETLW

'*'

MOVLW

02H

MOVWF

KEYB

;TECLA=*

NOP
BTFSC

KEYB,7

RETLW

30H

MOVLW

04H

MOVWF

KEYB

;TECLA=0

NOP
BTFSC

KEYB,7

RETLW

'#'

RETLW

0FH

;TECLA=#

- 63 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

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

SUELKEY:

SUBRUTINA QUE ESPERA A QUE SE SUELTE


LA TECLA PULSADA

;----------------------------------------------------------------------------------------------------------------------------------SUELKEY
CALL

GETKEY

SUBLW

0FH

BTFSC

STATUS,2;

RETURN
GOTO

; Se verifica si regreso vacio


; (no se presiono ninguna tecla)

SUELKEY

; Se presiono una tecla

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

ESPEKEY:

SUBRUTINA QUE ESPERA A QUE SE PULSE UNA TECLA


DEVUELVE EL VALOR EN W Y TECLA

;----------------------------------------------------------------------------------------------------------------------------------ESPEKEY
CALL

GETKEY

; Obtiene la tecla presionada

MOVWF

TECLA

; Verificamos

SUBLW

0FH

; que se haya

BTFSC

STATUS,2

; presionado una tecla

GOTO

ESPEKEY

; si no se presiono

MOVF

TECLA,W

; si se presiono una tecla regresamos

RETURN

; el valor en el acumulador

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

ESCMEN:

SUBRUTINA QUE ESCRIBE UN MENSAJE EN EL LCD,


PASAR INICIO DE TABLA EN ACUMULADOR

;----------------------------------------------------------------------------------------------------------------------------------ESCMEN
MOVWF

PUNTAB

; Guardamos la direccin del inicio del mensaje en PUNTAB

ESCMEN2
CALL

TABLA

ADDLW

00H

BTFSC

STATUS,2

RETURN
CALL

WRITEL

INCF

PUNTAB,F

MOVF

PUNTAB,W

GOTO

ESCMEN2

- 64 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

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

WAITLCD:

SUBRUTINA DE ESPERA AL LCD

;----------------------------------------------------------------------------------------------------------------------------------WAITLCD
BSF

STATUS,5

; Cambio al Banco 1 y

MOVLW

0FFH

; configuro el puerto B como

MOVWF

DATO

; entrada para leer desde el LCD

BCF

STATUS,5

; Regreso al Banco 0

BSF

EN

; Activamos el LCD

BCF

RS

; Configuramos el LCD para poder leer

BSF

RW

; el 'busy flag' esto es RS=0, RW=1

MOVLW

0FFH

; Pongo el Puerto B todo en 1

MOVWF

DATO

WAITLC
BTFSC

DATO,7

; Espera a que se libere la bandera de ocupado

GOTO

WAITLC

; de el LCD

BCF

EN

; Limpio los bits

BCF

RW

; de comandos del LCD

BCF

DATO,7

BSF

STATUS,5

; Regreso el Puerto B

CLRF

DATO

; como Salidas

BCF

STATUS,5

RETURN
;----------------------------------------------------------------------------------------------------------------------------------;INITLCD:

SUBRUTINA DE INICIALIZACIN DEL LCD

;----------------------------------------------------------------------------------------------------------------------------------INITLCD
MOVLW

38H

;00111000

CALL

COMANDO

;INTERFACE 8 BIT, 2 LINEAS

MOVLW

0CH

;00001100

CALL

COMANDO

;DISPLAY A ON, NO MUESTRA CURSOR, NO PARPADEO

MOVLW

06H

;00000110

- 65 -

Universidad Autnoma Metropolitana, C. B. I.


CALL

COMANDO

Diciembre, 2007

;MUEVE CURSOR A LA DCHA DESPUES D ESCRIBIR, NO


MUEVE VENTANA

RETURN
;----------------------------------------------------------------------------------------------------------------------------------;

CLEARL:

SUBRUTINA QUE BORRA EL LCD Y LLEVA EL CURSOR AL LADO

IZQUIERDO
;

DEL DISPLAY

;----------------------------------------------------------------------------------------------------------------------------------CLEARL
MOVLW

01H

CALL COMANDO

;BORRADO

RETURN
;----------------------------------------------------------------------------------------------------------------------------------;

WRITEL:

SUBRUTINA QUE ESCRIBE EN EL LCD EL CARACTER DEL

ACUMULADOR
;----------------------------------------------------------------------------------------------------------------------------------WRITEL
BSF

EN

BSF

RS

BCF

RW

MOVWF

DATO

BCF

EN

CALL

WAITLCD

RETURN
;----------------------------------------------------------------------------------------------------------------------------------;

COMANDO: SUBRUTINA QUE ENVIA UN COMANDO AL LCD

;----------------------------------------------------------------------------------------------------------------------------------COMANDO
BSF

EN

BCF

RS

BCF

RW

MOVWF

DATO

BCF

EN

CALL

WAITLCD

RETURN

- 66 -

Universidad Autnoma Metropolitana, C. B. I.

Diciembre, 2007

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

SITUCU:

SUBRUTINA QUE SITUA EL CURSOR EN LA DIRECCION INDICADA POR

EL
;

ACUMULADOR

;----------------------------------------------------------------------------------------------------------------------------------SITUCU
IORLW 80H
CALL COMANDO
RETURN
;----------------------------------------------------------------------------------------------------------------------------------;*********** DELAY ***********
; SUBRUTINA DE RETARDO SEGN EL VALOR DEL ACUMULADOR
; MODIFICA LOS SIGUIENTES REGISTROS
;

CUENTA1

CUENTA2

CUENTA3

;----------------------------------------------------------------------------------------------------------------------------------DELAY
MOVWF

CUENTA1

DELAY3
MOVLW

0FFH

MOVWF

CUENTA2

DELAY2
MOVLW

0FFH

MOVWF

CUENTA3

DELAY1
DECFSZ

CUENTA3,F

GOTO

DELAY1

DECFSZ

CUENTA2,F

GOTO

DELAY2

DECFSZ

CUENTA1,F

GOTO

DELAY3

RETURN
REBOTE

- 67 -

Universidad Autnoma Metropolitana, C. B. I.


MOVLW

0FFH

MOVWF

CUENTA1

DECFSZ

CUENTA1,F

GOTO

REBO

Diciembre, 2007

REBO

RETURN
ORG

2100H

DE

30H,30H,30H,30H

END

12. BIBLIOGRAFIA.

1.

Curso Avanzado de Microcontroladores PIC.

2.

Iovine, John. PIC Robotics .McGraw Hill. E.U. A. 2004, 290 p.p.

3.

http://es.wikipedia.org/wiki/Microcontrolador

4.

Hoja de especificaciones de: PIC 16F876, L7805CV (Regulador de


Voltaje), Pantalla LCD y Teclado Matricial.

- 68 -

También podría gustarte