DESARROLLO DE UNA CERRADURA …148.206.53.84/tesiuami/UAMI14449.pdf · La parte principal del...
Transcript of DESARROLLO DE UNA CERRADURA …148.206.53.84/tesiuami/UAMI14449.pdf · La parte principal del...
UNIVERSIDAD AUTONOMA METROPOLITANA
UNIDAD IZTAPALAPA
DIVISIÓN DE CIENCIAS BÁSICA E INGENIERÍA
LICENCIATURA EN INGENIERÍA ELECTRÓNICA
DESARROLLO DE UNA CERRADURA ELECTRONICA ACCIONADA POR TECLADO.
PRESENTAN:
MIRELES HERNÁNDEZ ALEJANDRO. SOLIS CUEVA LUIS ANTONIO.
ASESROR: MTRA. ALMA EDITH MARTÍNEZ LICONA.
FIRMA DEL ASESOR: ______________________________
MÉXICO D.F., DICIEMBRE DE 2007
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
- 2 -
1. INTRODUCCIÓN
Una cerradura electrónica consiste en llevar acabo una función específica 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 habitación 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 comparación 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. También 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.
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
INDICE
1. Planteamiento y delimitación………………………………………………………. 4
2. ¿Qué es un Microcontrolador?……………………………………………………... 6
2.1. Características…………………………………………………………………. 6
2.2. Esquema de un Microcontrolador……………………………………………... 7
2.3. Familias de Microcontroladores……………………………………………….. 7
2.4. Elección de un Microcontrolador Adecuado………………………………….. 8
3. Arquitectura RISC…………………………………………………………………. 9
3.1. Características…………………………………………………………………. 9
4. Microcontroladores PIC……………………………………………………………. 11
4.1. Juego de Instrucciones y entorno de Programación………………………….... 12
4.2. Tamaño de palabra…………………………………………………………….. 14
4.3. Características…………………………………………………………………. 14
4.4. La Programación del Microcontrolador……………………………………….. 15
5. Pantalla LCD de 16x2………………………………………………………………. 17
6. Teclado Matricial……………………………………………………………………. 18
7. Fuente de Alimentación……………………………………………………………... 19
8. Desarrollo del Proyecto…………………………………………………………….. 19
8.1. Investigación…………………………………………………………………… 19
8.2. Programación…………………………………………………………………... 20
8.3. Grabación y Simulación……………………………………………………….. 23
8.4. Circuito Eléctrico……………………………………………………………… 24
8.5. Diagramas..……………………………………………………………………. 24
8.6. Componentes del Proyecto….......…………………………………………….. 26
9. Construcción del Circuito…………………………………………………………... 27
10. Funcionamiento……………………………………...……………………………… 35
10.1. Clave de acceso………………………..……………...………………… 35
10.2. Cambio de la clave de acceso………………………..………………….. 36
11. Código Fuente del Programa……………………………………………………….. 37
12. Bibliografía………………………………………………………..………………... 68
- 3 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 1. PLANEAMIENTO Y DELIMITACIÓN.
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 atención (Figura 1), ya que este
circuito contenía una parte de teclado, es decir, que si el circuito no podía ser activado por
voz (en caso de alguna falla) podría 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 Autónoma Metropolitana, C. B. I. Diciembre, 2007
El chip HM2007 no se pudo conseguir ya que en México 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 pedían 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 electrónica activada por
teclado, de tal forma que se pudiera utilizar en alguna puerta, ya sea de una recamara o de
algún compartimiento que quisiéramos 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 diseño, 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 fabricación (resistentes y adecuados).
- 5 -
Universidad Autónoma 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 diseñados para disminuir el coste económico y el consumo de energía de un
sistema en particular. Por eso el tamaño de la CPU, la cantidad de memoria y los periféricos
incluidos dependerán de la aplicación. El control de un electrodoméstico sencillo como una
batidora, utilizará un procesador muy pequeño (4 u 8 bit) por que sustituirá a un autómata
finito. En cambio un reproductor de música y/o vídeo digital (mp3 o mp4) requerirá de un
procesador de 32 bit o de 64 bit y de uno o más Códec de señal digital (audio y/o vídeo). 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 electrónico del motor en un
automóvil.
Los microcontroladores representan la inmensa mayoría de los chips de computadoras
vendidos, sobre un 50% son controladores "simples" y el restante corresponde a DSPs más
especializados. Mientras se pueden tener uno o dos microprocesadores de propósito general
en casa, usted tiene distribuidos seguramente entre los electrodomésticos de su hogar una o
dos docenas de microcontroladores. Pueden encontrarse en casi cualquier dispositivo
electrónico como automóviles, lavadoras, hornos microondas, teléfonos, etc.
Un microcontrolador difiere de una CPU normal, debido a que es más fácil convertirla
en una computadora en funcionamiento, con un mínimo de chips externos de apoyo. La
idea es que el chip se coloque en el dispositivo, enganchado a la fuente de energía y de
información 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 módulos de entrada/salida (puertos) y la memoria para almacenamiento de
información.
- 6 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
2.2 ESQUEMA DE UN MICROCONTROLADOR
2.3 FAMILIAS DE CON
TROLADORES.
os microcontroladores más comunes en uso se muestran a continuación (Tabla 1):
TABLA 1. Microcontroladores más comunes.
Figura 2. Esquema del microcontrolador.
L
Empresa 8 bits 12 bits 14 bits 16 bits 32 bits 64 bits Atmel AVR
Freescale (antes Motorola)
68HC05, 68HC08,
68HC11, HCS08x x 68HC12,
68HC16
683xx, 68HCS12, 68HCSX12
x
Intel
MCS-48 (familia 8048)
MCS51 (familia 8051)
x x MCS96, MXS296 x x
8xC251
National Semicon x ductor COP8 x x X x
Microchip Fam xx 1 de 14 bits (PIC16F87X)
1ilia 10f2Familia Familia 12Fxx,
16Cxx y xx 18Cxx y 2Cxx de 12 bits
16F 8Fxx de 16 bits
x x
Observación: Algunas arquitecturas de microcontrolador están disponibles por tal cantidad de vendedores y en tantas variedades, que podrían tener, con total corrección, su propia categoría. Entre ellos encontramos, principalmente, las variantes de 8051 y Z80.
- 7 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
2.4 ELECCIÓN DE UN MICROCONTROLADOR PARA EL PROYECTO.
Para ele de microcontrolador a utilizar nos basam iguientes
puntos:
• Microcontroladores de uso más común.
• Mas utilizados en el ámbito laboral.
• Mayor información en libros y en internet para la investigación.
Más económicos.
• De mayor acceso a tiendas.
ase a s ladores IC, los cual
tienen una arquitectura RISC.
3. A
junto de Instrucciones Reducido. Es un tipo de microprocesador con las siguientes
caracterís a
ero de
2. Solo las instrucciones de carga y almacenamiento acceden a la memoria por
Además estos procesadores suelen disponer de muchos registros de propósito general.
quinas con esta arquitectura es posibilitar la segmentación y
el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Las
máquinas RISC protago
PowerPC
gir una familia os en los s
•
En b esto decidimo que lo mejor sería utilizar microcontro P es
RQUITECTURA RISC.
La Arquitectura RISC (del inglés Reduced Instruction Set Computer), Computadora
con Con
tic s fundamentales:
1. Instrucciones de tamaños fijos y presentados en un reducido núm
formatos.
datos.
El objetivo de diseñar má
nizan la tendencia actual de construcción de microprocesadores.
, DEC Alpha, MIPS, ARM... son ejemplos de algunos de ellos.
- 8 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
RISC s
conjuntos de instrucciones pequeños y simples que toman menor tiempo para ejecutarse. El
tipo de pr
en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas
en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su
ejecu
era cada vez más
alta. Esto conllevó la aparición de numerosas técnicas para reducir el procesamiento dentro
del CPU, así como de reducir el número total de accesos a memoria.
res una flexibilidad considerable; así pueden, por ejemplo:
ue de otra manera no
serían utilizables
r el chip para aplicaciones de bajo poder o de tamaño
limitado.
e una filosofía de diseño de CPU para computadora que está a favor de
ocesador más comúnmente utilizado en equipos de escritorio, el x86, está basado
ción.
La idea fue inspirada por el hecho de que muchas de las características que eran
incluidas en los diseños tradicionales de CPU para aumentar la velocidad estaban siendo
ignoradas por los programas que eran ejecutados en ellas. Además, la velocidad del
procesador en relación con la memoria de la computadora que accedía
3.1 CARACTERISTICAS.
En pocas palabras esto significa que para cualquier nivel de desempeño dado, un chip
RISC típicamente tendrá menos transistores dedicados a la lógica principal. Esto permite a
los diseñado
• Incrementar el tamaño del conjunto de registros
• Implementar medidas para aumentar el paralelismo interno
• Añadir cachés enormes
• Añadir otras funcionalidades, como E/S y relojes para minicontroladores
• Construir los chips en líneas de producción antiguas q
• No hacer nada, ofrece
- 9 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Las r los diseños RISC son:
e instrucciones (ejemplo: el código de operación se
al es
• egistros homogéneo, permitiendo que cualquier registro sea
xisten muchas formas de separar los ficheros de registro de entero y
coma flotante).
• Modos de direccionamiento simple con modos más complejos reemplazados
por secuencias de instrucciones aritméticas simples.
• Algunos tipos de datos soportados en el hardware (por ejemplo, algunas
s
instrucciones no se encuentran en una máquina RISC).
Los di
memoria H tos están
conceptu m
se encuentr
procesador
mientras un pecial de sincronización es utilizada). Por otra parte, esto
permite e
ocasiones m
ca acterísticas que generalmente son encontradas en
• Codificación uniforme d
encuentra siempre en la misma posición de bit en cada instrucción, la cu
siempre una palabra), lo que permite una decodificación más rápida.
Un conjunto de r
utilizado en cualquier contexto y así simplificar el diseño del compilador
(aunque e
máquinas CISC tiene instrucciones para tratar con tipos byte, cadena; tale
seños RISC también prefieren utilizar como característica un modelo de
arvard, donde los conjuntos de instrucciones y los conjuntos de da
al ente separados; esto significa que el modificar las direcciones donde el código
a pudiera no tener efecto alguno en las instrucciones ejecutadas por el
(porque la CPU tiene separada la instrucción y el cache de datos, al menos
a instrucción es
qu ambos caches sean accedidos separadamente, lo que puede en algunas
ejorar el rendimiento.
- 10 -
Universidad Autónoma 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 división de microelectrónica de General
Instruments (Figura 3).
El nombre actual no es un acrónimo. En realidad, el nombre completo es PICmicro,
aunque generalmente se utiliza como Peripheral Interface Controller (Controlador de
Interfaz Periférico).
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 tenía 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-código simple
almacenado en ROM (Read Only Memory) para realizar estas tareas; y aunque el término
no se usaba por aquel entonces, se trata de un diseño RISC que ejecuta una instrucción cada
4 ciclos del oscilador.
Figura 3. Primeros PIC’s desarrollados por Microchip Technology Inc.
- 11 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
En 1985, dicha división de microelectrónica de General Instruments se convirtió en
una filial y el nuevo propietario canceló casi todos los desarrollos, que para esas fechas la
yoría estaban obsoletos. El PIC, sin embargo, se mejoró con EPROM para conseguir un
lador de canal programable. Hoy en día multitud de PIC’s vienen con vario
periféricos incluidos (módulos de comunicación serie, UART’s, núcleos de control de
motores, etc.) y con memoria de programa desde 512 a 32.000 palabras (una palabra
corresponde a una instrucción en ensamblador, y puede ser 12, 14 o 16 bits, dependiendo de
amilia específica de PICmicro).
4.1 JUEGO DE INSTRUCCIONES Y ENTORNO DE PROGRAMACIÓN.
El PIC usa un juego de instrucciones tipo RISC, cuyo número puede variar desde 35
para PIC’s de gama baja a 70 para los de gama alta. Las instrucciones se clasifican en
que realizan op
ma
contro s
la f
tre las
mulador y una
posición de memoria, instrucciones de condicionamiento y de salto/retorno,
impl
software y un ensamblador. Otras empresas desarrollan compiladores
C y
otra herramienta libre que permite simular diversos dispositivos
hard
eraciones entre el acumulador y una constante, entre el acu
ementación 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
BASIC. Microchip también vende compiladores para los PIC’s de gama alta ("C18"
para la serie F18 y "C30" para los dsPIC’s) y se puede descargar una edición para
estudiantes del C18 que inhabilita algunas opciones después de un tiempo de evaluación.
Para Pascal existe un compilador de código abierto, JAL, lo mismo que PicForth para
el lenguaje Forth. GPUTILS es una colección de herramientas distribuidas bajo licencia
GNU que incluye ensamblador y enlazador, y funciona en Linux, MacOS y Microsoft
Windows. GPSIM es
ware conectados al PIC.
- 12 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Para el desarrollo de este proyecto utilizamos el entorno de programación de MPLAB
IDE (Figura 4).
Figura 4. Utilización de MPLAB IDE como entorno de programación.
- 13 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
4.2 TAMAÑO DE PALABRA.
El tamaño de palabra de los microcontroladores PIC es fuente de muchas confusiones.
Todos los PIC’s (excepto los dsPIC) manejan datos en trozos de 8 bits, con lo que se
deberían llamar microcontroladores de 8 bits. Pero a diferencia de la mayoría de UCP’s, el
PIC usa arquitectura Harvard, por lo que el tamaño de las instrucciones puede ser distinto
del de la palabra de datos. De hecho, las diferentes familias de PIC’s usan tamaños de
instrucción distintos, lo que hace difícil comparar el tamaño del código 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 PIC’s actuales vienen con una amplia gama de mejoras de hardware incorporadas:
• Núcleos 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 (típicamente 0 a 5,5 voltios)
• Temporizadores de 8/16 bits
• Tecnología Nanowatt para modos de control de energía
• Periféricos serie síncronos y asíncronos: USART, AUSART, EUSART
• Conversores analógico/digital de 10-12 bits
• Comparadores de tensión
• Módulos de captura y comparación PWM
• Controladores LCD
• Periférico MSSP para comunicaciones I²C, SPI, y I²S
• Memoria EEPROM interna con duración de hasta un millón de ciclos de
lectura/escritura
motores • Periféricos de control de
- 14 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
• Soporte de interfaz USB
ador. La mayoría de PIC’s que Microchip distribuye hoy en día incorporan
ICSP (In Circuit Serial Programming, programación serie incorporada) o LVP (Low
Volt ión 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
voltios. Existen muchos programadores de PIC’s, desde los más simples que dejan al
software lo ificar el
dispositivo d todas las
funcionalid e os incluyen ellos mismos PIC’s
preprogram s órdenes al PIC que se desea programar. Uno
de los prog m del puerto RS232
como alim o el
microcontr d de programación puede ser el
ICprog, mu microcontroladores.
Para l do (PIC16F876) utilizamos las
siguientes r
• E (Herramienta Visual de simulación PIC)
• Soporte de controlador Ethernet
• Soporte de controlador CAN
• Soporte de controlador LIN
• Soporte de controlador Irda
4.4 LA PROGRAMACIÓN DEL MICROCONTROLADOR.
Para transferir el código de un ordenador al PIC normalmente se usa un dispositivo
llamado program
age Programming, programac
y el MCLR para activar el modo programación aplicando un voltaje de unos 11
s detalles de comunicaciones, a los más complejos, que pueden ver
a iversas tensiones de alimentación e implementan en hardware casi
ad s. Muchos de estos programadores complej
ados como interfaz para enviar la
ra adores más simples es el TE20, que utiliza la línea TX
entación y las líneas DTR y CTS para mandar o recibir datos cuand
ola or está en modo programación. El software
y común entre la gente que utiliza este tipo de
a programación del microcontrolador elegi
her amientas:
• MPLAP IDE (Herramienta para Depurar y Simular el código del Programa)
PIC Simulator ID
• Grabador PIC USB
- 15 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Nosot tiliza una interfaz USB llamado “PICProg
USB” (Figura 5), el cual utiliza un software especial para transferir el código en
hexadecim
ros utilizamos un programador que u
al.
Figura 5. Programa PICProg USB utilizado para la grabación del PIC.
- 16 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 5. PA
alla LCD se trata de un visualizador alfanumérico (solo se pueden ver
núm
que es cap s
ostrar
l módulo LCD lleva integrado a sus circuitos una memoria ROM (U1) conocida
como e 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. También tiene una RAM interna (U2)
que almacena los caracteres y los exhibe en el módulo LCD. Esta LCD consta de 16 pines
para su conexión (Figura 6): usa 11 líneas de comunicación (3 de control y 8 de datos), 2 de
alim ad del texto y 2 para la luz de fondo.
NTALLA LCD DE 16x2.
Una pant
eros, letras y/o algún otro carácter). Este tipo de LCD se define por el número de líneas
az de mostrar a la vez y el número de caracteres por líneas. Un LCD de 8 X 1 e
un LCD de 8 caracteres y 1 línea. Los más comunes son de 8, 16, 20, 24 y 40 caracteres y
de 1, 2 y 4 líneas. El LCD es actualmente el circuito más barato y confiable para m
datos en un proceso de monitoreo y control. Su interfaz con los controladores se realiza a
través de un conector de 14 pines, cuya configuración es respetada por la mayoría de los
fabricantes.
E
“generador d
entación, 1 para regular la intensid
Figura 6. Conector de la pantalla LCD.
C O N T R O L D A T O S
LUZ DE FONDO
ALIMENTACION E INTENSIDAD
- 17 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Algunas de sus especificaciones aparecen a continuación:
O MATRICIAL 4x3.
• Dimensiones de la pantalla: 65mm x 14mm.
• Dimensiones de la unidad: 82mm x 37mm.
• Alimentación de +5V DC.
• Soporta interfaces de 4 u 8 bits.
• Luz de fondo azul con texto en negro.
• 16 caracteres x 2 líneas.
6. TECLAD
Este teclado matricial es un excelente dispositivo de entrada cuando se trabaja con
PIC’s. 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 interconexión entre las columnas y las
filas (Figura 7), ya que esta conexión tiene la forma de una matriz. Existen teclados
matriciales de 4 x 4 y de 4 x 3 teclas.
Figura 7. Conexión de un teclado matricial 3 x 4.
- 18 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 7. FU
La fuen te para un sistema, ya que de
ahí se toma l n o. Esta es un subsistema que
convierte la r de corriente eléctrica adecuado para nuestra
cerradura. Es continua, ya que nosotros queremos que
se mantenga se tendrán 2 valores de voltaje de
salida (12 y 5 o
uestra fuente consta de 4 etapas:
• Atenuación: Disminuye el voltaje y la corriente de corriente alterna (voltaje de
lineal (hasta este punto 12Vd.c.).
• Regulación: Su función es mantener y controlar el valor deseado a la carga
(5V
8. DESARROLLO DEL PROYECTO.
.1 INVESTIGACIÓN.
e comenzó por la investigación de cada uno de los 3 elementos principales de nuestro
proyecto (PIC, Pantalla LCD y el Teclado Matricial), de tal forma de saber cómo es su
funcionamiento y como es que se comportan durante su tiempo de empleo. Ya sabiendo
esto, se continúo con la investigación sobre cómo es que se podrían 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 elem ón de voltaje se debe
de utilizar o como es que se deben de conectar estos elementos entre si, etc.
ENTE DE ALIMENTACIÓN.
te de alimentación es un dispositivo muy importan
a e ergía necesaria para la alimentación del mism
co riente alterna en otro tipo
te otro tipo de corriente será de tipo
en un solo valor, pero para nuestro caso
V lts).
N
128Va.c. a 12Va.c. y la corriente la disminuye a 1A).
• Rectificación: Se elimina la parte negativa de la señal de corriente alterna, esto
se logra utilizando un Rectificador de Onda Completa.
• Filtrado: Se suavizan los rizos de la señal saliente del rectificador, tratando de
logra un valor de voltaje
d.c. al circuito).
8
S
entos, es decir, cuanta alimentaci
- 19 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
8.2 PROGRAMACIÓN.
La siguiente parte de nuestro proyecto fue la programación, es decir, la creación 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 programación fuese la correcta. El
programa final quedo realizado en bloques (El código fuente de este programa se presenta
en la pagina 37).
Para la rápida comprensión del programa a continuación se describirán a grandes
rasgos los módulos involucrados en el código.
INICIO:
Este cuales trabajaran como
en
códig a el Display (LCD).
R n
PRINCI:
Este cipal del programa ya que da la bienvenida al usuario
desplegando en el Display el mensaje “INTRODUZCA CLAVE” y coloca el cursor
ara esperar a que ingresen el código de acceso,
cuando se requiere reiniciar en sistema se hace una llamada a este modulo.
modulo:
CLEARL
modulo inicializa los puertos del PIC definiendo
tradas y cuales como salidas, así como inicializar la EEPROM para almacenar el
o de acceso y realizar la llamada a la rutina que inicializ
uti as que utiliza este modulo:
INITLCD
modulo es el prin
en la línea inferior del Display p
Rutinas que utiliza este
SITUCU
ESCMEN
ECOD12, ECOD22, ECOD32, ECOD42:
Estos módulos extraen el código 1, código 2, código 3 y código 4, para
posteriormente verificar la clave compuesta por la unión de los cuatro códigos
coincida con la almacenada en la memoria.
Rutinas que utiliza este modulo:
SUELKEY
- 20 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
ESPEKEY
INCOR
e despliega el mensaje de “CLAVE INCORRECTA” y se decrementa el
ESPEKEY
ESCMEN
CAMB
lmacene
Rutinas que utiliza este modulo:
CAMBIOC
WRITEL
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 s
numero de intentos.
Rutinas que utiliza este modulo:
CAMBIOC
LEECOD
INCOR
CLEARL
SITUCU
IOC:
Este modulo se utiliza para cambiar la clave de acceso, el cual para efectuar el
cambio pide introduzcas el código antiguo y a continuación la clave nueva dos
veces para confirmar que se introdujo correctamente y posteriormente se a
en le memoria EEPROM.
CLEARL
ESCMEN
SUELKEY
SITUCU
COGECOD
LEECOD
INCORE
INCOREC
- 21 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
NOVERI
EEWRITE
NUEVACL:
Captura y v if e sea correcta.
EN
INCOREC:
Despliega m e error cuando la clave no tiene el tamaño de 4 dígitos, y
reinicia el s rementar los intentos.
Rutinas que utiliza este modulo:
ESCMEN
INCOR
ria este modulo despliega el mensaje de “CLAVE
l numero de intentos disponibles, si el numero de
intentos lle a o entonces activa la alarma.
Rutinas que utiliza este modulo:
er ica que la nueva clav
NOVERI:
Verifica que se introdujo bien la clave al realizar un cambio de esta
Rutinas que utiliza este modulo:
CLEARL
ESCM
SITUCU
DELAY
NUEVACL
el ensaje d
istema sin dec
CLEARL
SITUCU
E:
Cuando la clave que se introdujo tiene el tamaño adecuado pero no corresponde con
la almacenada en memo
INCORRECTA” y decrementa e
go su máxim
ALARMA
CLEARL
ESCMEN
SUELKEY
DELAY
- 22 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ALARMA:
Después de 3 intentos incorrectos se activa la alarma, una vez activada la alarma
por un tiempo definido y se reinicia el sistema.
OGE
acena el código almacenado para su posterior uso
EEWR
E en la localidad dada por el acumulador de la
memoria.
GETKEY:
Devuelve el valor pulsado en el teclado en código ASCCI.
HAYTECL:
Identifica l il encuentra la tecla presionada.
ESCME
l que se encuentra apuntando el acumulador.
WAITLCD:
Espera a que acepte un comando el LCD
INITLCD:
ía los comandos necesarios para inicializar de forma correcta el Display.
CLEAR
WRITE
8.3 GRABAC ACIÓN.
Ya teniendo listo el programa nos dimos a la tarea de buscar un grabador de PIC’s, el
cual fue una herra ara nuestro proyecto. Este grabador fue adquirido por
Internet.
suena
C COD:
Alm
ITE:
Escribe el valor en CODWRIT
a f a en la que se
SUELKEY:
Subrutina que espera a que se suelte la tecla.
N:
Escribe el mensaje en el display a
Env
L:
Borra el contenido en pantalla del Display.
L:
Escribe en pantalla el carácter almacenado en el acumulador
IÓN Y SIMUL
mienta necesaria p
- 23 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Con la posesión de nuestro grabador nos vino consigo el programa grabador y
simulad
fue log omunicación entre el PIC y el
correcta y que las funciones fueran las adecuadas. Una vez acabado con este
e este mismo programa y del
8.4 CIRCUITO ELECTRICO.
U arios, la realización del
funcionamiento y las simulaciones necesarias, se comenzó por realizar el
ircuito sto con la ayuda de un
simulación de circuitos electrónicos (ORCAD PSpice) y de Paint, ya que
el ORCAD y se tuvieron que realizar
o programa (Paint).
GRAMAS.
uito que realizamos para la elaboración de nuestro proyecto se muestra en el
uito que se realizo para obtener nuestra fuente de alimentación fue el que se
or de PIC (PIC Simulador IDE), el cual nos ayudo a averiguar si nuestro programa
rado con éxito, es decir, con el se comprobaría que la c
LCD fuera la
proceso nos dimos a la tarea de grabar el PIC con la ayuda d
grabador.
na vez hecha toda la investigación, los estudios neces
programa de
c que se adecuaría a nuestras necesidades del proyecto, e
programa de
había algunos componentes que no se encontraron en
en este ultim
8.5 DIA
El circ
Diagrama 1.
El circ
muestra en el Diagrama 2
.
- 24 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
- 25 -
Diagrama 2. Circuito de fuente de alimentación de 2 salidas (12 y 5 Volts).
Diagrama 1. Circuito de cerradura electrónica accionada por teclado.
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
- 26 -
8.6 COMPONENTES DEL PROYECTO.
Los componentes que se utilizaron para la construcción del proyecto fueron los
siguientes:
Fuente de Alimentación:
• 1 Transformador de 12V a 1A.
• 1 Puente de diodos rectificador a 2ª (RS203L).
• 1 Capacitor de 1000µF 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 aplicación 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 Potenciómetro de 10kΩ.
• 2 LED’s (1 Verde y 1 Rojo).
• 2 switch’s tipo botón.
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
• 2 Conectores plug de 1.3mm.
• Conectores header’s (Hembra y Macho).
Cable telefónico.
• 1 Gabinete de 8x14cm y 4cm de alto.
mentación de circuitos (Protoboard).
Pla s
0cm.
Grabación del PIC:
• 1 Grabador de PIC’s.
9. CONSTRUCCIÓN DEL CIRCUITO.
Se com ito en un protoboard para ver que todo funcionara a la
perfecció t cada uno de los elementos). El primer circuito que
se armo 1) ya que con ella se suministra el voltaje
necesario pa uestra cerradura. Se probo con un led que esta etapa
estuviera n ltímetro que los niveles de
voltaje a la s .
• Cable plano de 24 hilos.
•
• 1 Tablilla de Experi
ca del Circuito:
• Placa fenolica de 1 cara de 20x1
• 1 Hoja de papel couché.
enzó por armar el circu
n ( anto las conexiones como
fue la fuente de alimentación (Foto
ra la operación de n
fu cionando a la perfección y se midió con un mu
alida fueran los correctos
- 27 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
da uno de los elementos con los cuales tenia que se
conectado, de tal forma que se nos simplificase la conexión del circuito. Esto se tuvo que
hacer un par de ocasiones, ya que al tener tantos cables por conectar nos confundíamos y
conectábamos cables en donde no iban, esto provocaba que al momento de alimentar el
circuito provocaran corto o simplemente no funcionaba el circuito.
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 ca
Foto 1. Fuente de alimentación de dos salidas (12 y 5 Volts) para el circuito de la cerradura.
- 28 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
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 quedara en un solo
circuito (Foto 3).
Foto 2. Conexión del PIC a cada uno de los elementos de la cerradura.
circuito de la cerradura y la fuente de alimentación
- 29 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
A continuación 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 perfección.
Foto 3. Presentación preliminar de la cerradura electrónica.
- 30 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Foto 4. Textos que aparecen en la pantalla LCD.
a teniendo funcionando nuestro circuito nos dimos a la tarea de desarrollar el circuito
impreso, es decir, la realización del circuito en una placa fenolica de cobre de una cara.
Este
e tuvieron que hacer 3 circuitos impresos: el circuito de la cerradura (Figura 8.a), las
pista de aceptar y cambiar clave (Figura 8.b) y el circuito de la fuente de
alim n (circuito elaborado a mano por se muy pequeña su placa).
Y
procedimiento comenzó por la elaboración 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 elaboración de circuitos impresos no contaban con
algunos elementos, es por eso que tuvimos que realizar nuestro propio diseño.
S
s para los botones
entació
- 31 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Ya teniendo terminados los circuitos impresos en un archivo, lo que prosiguió fue
imprimirlos (con impresora láser) 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 férrico (FeCl3 -solución para grabar
circuitos impresos) para que las partes donde no se encontraba toner fueran disueltas y solo
quedaran las pistas y los nodos
Figura 8. Circuitos impresos a) Circuito principal de la cerradura. b) Pistas para botones de aceptar y cambiar.
del circuito (Foto 5).
a)
b)
Foto 5. Placa después del ser sumergida en la solución de FeCl3.
- 32 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
- 33 -
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 pequeña y delgada). Después
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).
os unidos, se continúo por realizar los
cables de conexión entre la placa y el LCD, así como también para el teclado y la placa de
los dos botones. Estos cables de unión (Foto 7) fueron hechos con cable plano con la
utilización de conectores header’s (hembra) a los extremos.
Obtenida ya nuestra placa con todos los element
Foto 6. Placa con los componentes soldados.
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
Por edara
listo nu
alidad,
ultimo se adapto la placa, el LCD y los demás elementos al gabinete para qu
estro prototipo, para estos se le tuvieron que hacer algunos cortes al gabinete para
que su diseño fuera el mas adecuado. El producto final de nuestro proyecto, una cerradura
electrónica activada por teclado con alarma y display (Foto 8), funciono a la norm
pasando todas las pruebas que se realizaron con la presentación preliminar del proyecto.
Foto 7. Cable plano para la conexión del teclado (izq.). Cable plano para la conexión del LCD (der.).
Foto 8. Prototipo de la Cerradura Electrónica activa por teclado con alarma y display.
- 34 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 10. FUNCI
1. Inicialmente la clave es la 0000.
2. La calve se almacena en la memoria EEPROM de datos del PIC, por lo que,
clave.
ONAMIENTO.
10.1 CLAVE DE ACCESO.
cuando se desconecte la alimentación del circuito se conserva la
3. Consta de 4 dígitos que pueden ser: números (del 0 al 9), asteriscos (*) y
almohadillas (#). A diferencia de los códigos tradicionales que solo usan los
números. Esto proporciona 20736 combinaciones posibles frente a las 10000
que se consiguen solo con números, 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 código 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, después se puede volver a probar.
- 35 -
Universidad Autónoma 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
DE CLAVE"
la que se acceso hasta ese momento
(inicialmente la 0000) con el mensaje "CLAVE ANTIGUA". Tecleas la
3. Si la clave es correcta te pide la "NUEVA CLAVE". Tecleas la nueva clave
4.
a
clave y pulsas ACEPTAR. Si te equivocas te avisa y vuelves a introducir la
5. lave y se muestra el mensaje
"CLAVE CAMBIADA" durante unos segundos.
el mensaje "CAMBIO
2. Después te pide la clave con
clave y pulsas ACEPTAR.
que deseas guardar y pulsas ACEPTAR.
A continuación te pide que repitas la nueva clave para verificarla (con esto
aparecerá el mensaje "VERIFIQUE CLAVE"), tecleas de nuevo la mism
nueva clave.
Si la verificación es correcta se cambia la c
- 36 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 11. C ;Confi ación
;---------- ------
RADIX HEX ;Sistema de numeración Hexadecimal predeterminada
internos
;Palabra
__config WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF &
BODEN_ON & _PWRTE_OFF & _WDT_OFF & _HS_OSC
;--------------------- ------------------------------------------------
; Registros Reserv
----------------------------------------------------------------------------------------------------------------------------------
PCL
STATUS
PORTA
DATO ;PUERTO B
KEYB ;Puerto C
TCON EQU 0BH
PIR2
PIE2
DECON1 EQU 9FH ; Análogo Digital Configuración
EDATA EQU 10CH
EADR EQU 10DH
ECON1 EQU 18CH
ECON2 EQU 18DH
----------------------------------------------------------------------------------------------------------------------------------
egistros de Uso General
----------------------------------------------------------------------------------------------------------------------------------
_RELE EQU 20H ;CONTROLA EL TIEMPO DE APERTURA DE LA PUERTA
UNTAB EQU 20H
TENTO EQU 21H ;Numero de intentos antes de que se accione la alarma
ECLA EQU 22H ; Almacena la tecla presionada
UENTA1 EQU 23H
UENTA2 EQU 24H
ODIGO FUENTE.
gur
----- --------------------------------------------------------------------------------------------------------------
LIST P=16F876 ;Procesador a usar
INCLUDE P16F876.INC ;Librería incluida, contiene definiciones de registros
de Configuración
_CP_OFF & _DEBUG_OFF & _
_
--------------------------------------------------------------
ados
;-
EQU 02H
EQU 03H
EQU 05H ;Puerto A
EQU 06H
EQU 07H
IN
EQU 0DH
EQU 8DH
A
E
E
E
E
;-
; R
;-
T
P
IN
T
C
C
- 37 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 CUENTA3 EQU 25H
COD1 EQU 26H ; Almacena la primera tecla numérica presionada
27H ; Almacena la segunda tecla numérica presionada
presionada
A H
EQU 2CH ; Auxiliar para comprobar código
para comprobar código
OD4A
------- ----------------------------------------------------------------------
s
----------------------------------------------------------------------------------
5H,2 ; Activa y desactiva el LCD
;
05H,3 ;
; Apertura y cierre de la puerta
COD2 EQU
COD3 EQU 28H ; Almacena la tercera tecla numérica presionada
COD4 EQU 29H ; Almacena la cuarta tecla numérica
CUENTA4 EQU 2AH
COD1 EQU 2B ; Auxiliar para comprobar código
COD2A
COD3A EQU 2DH ; Auxiliar
C EQU 2EH ; Auxiliar para comprobar código
CODWRITE EQU 2FH ; Auxiliar para escribir código en EEPROM
;-----------------------------------------------------------------------------------------------------------------------------------
;
;-----------------------------------------------------------------------------------------------------------------------------------
F EQU 1
W EQU 0
;------------- -----------------------------------------
; Definicione
;-------------------------------------------------
#DEFINE EN 0
#DEFINE RW 05H,1 ;
#DEFINE RS 05H,0
#DEFINE ALA
#DEFINE PORTERO 05H,5
ORG 00H
GOTO INICIO
ORG 04H
BCF PIR2,4
RETFIE
- 38 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;-----------------------------------------------------------------------------------------------------------------------------------
para e y
------- --- -- ----------------------------
l mensaje
------------------------------------------------------------------------------------
1 'Intro
--------- -- -- ------------------------------------------------
ETLW
W
RETLW 'T'
RETLW 'O'
RETLW 'C'
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
TLW '
TLW
RETLW 'V'
RETLW 'E'
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
EN_2
RETLW 'P'
RETLW 'U'
; Mensajes l displa
;------------- -------- -------- --------------------------------------------------------------
TABLA
MOVWF PCL ; Hacemos apuntar el PCL a la dirección de inicio de
;-----------------------------------------------
;Mensaje duzca'
;----------- --------- -------- ------------------------------------------
MEN_1
R 'I'
RETL 'N'
RETLW 'R'
RETLW 'D'
RETLW 'U'
RETLW 'Z'
RETLW 'A'
;-------------------
;Mensaje 5 'Clave'
;-
MEN_5
RETLW ' '
RETLW 'C'
RE 'L
RE 'A'
RETLW 00H
;-------------------------------------
;Mensaje 2 'Puede Pasar'
;-------------------------------
M
- 39 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 RETLW 'E'
RETLW 'D'
ETLW ' '
'S'
ETLW 'R'
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
' '
ETLW 'N'
RETLW 'A'
4 'Cambio de'
--------------------------------------------------------------------------------------
RETLW 'E'
R
RETLW 'P'
RETLW 'A'
RETLW
RETLW 'A'
R
RETLW 00H
;-----------------------------------------------
;Mensaje 3 'Clave Incorrecta'
;-----------------------------------------------
MEN_3
RETLW 'C'
RETLW 'L'
RETLW 'A'
RETLW 'V'
RETLW 'E'
RETLW
RETLW 'I'
R
RETLW 'C'
RETLW 'O'
RETLW 'R'
RETLW 'R'
RETLW 'E'
RETLW 'C'
RETLW 'T'
RETLW 00H
;-----------------------------------------------------------------------------------------------------------------------------------
;Mensaje
;---------------------------------------------
MEN_4
- 40 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 RETLW 'C'
RETLW 'A'
RETLW 'M'
RETLW 'B'
RETLW 'I'
RETLW 'O'
RETLW ' '
RETLW 'D'
RETLW 'E'
RETLW 00H
;-----------------------------------------------------------------------------------------------------------------------------------
;Mensaje 6 'Antigua'
;-----------------------------------------------------------------------------------------------------------------------------------
MEN_6
RETLW ' '
RETLW 'A'
RETLW 'N'
RETLW 'T'
RETLW 'I'
RETLW 'G'
RETLW 'U'
RETLW 'A'
RETLW 00H
;-----------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
RETLW 'V'
00H
;Mensaje 7 'Nueva'
;-----------------------------------------------
MEN_7
RETLW 'N'
RETLW 'U'
RETLW 'E'
RETLW 'A'
RETLW
- 41 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;-----------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
RETLW 'Q'
'E'
--------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
RETLW 'I'
'D'
ETLW 00H
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
RETLW 'A'
RETLW ' '
;Mensaje 8 'Verifique'
;----------------------------------------------
MEN_8
RETLW 'V'
RETLW 'E'
RETLW 'R'
RETLW 'I'
RETLW 'F'
RETLW 'I'
RETLW 'U'
RETLW
RETLW 00H
;---------------------------------------------
;Mensaje 9 'Cambiada'
;-----------------------------------------------
MEN_9
RETLW ' '
RETLW 'C'
RETLW 'A'
RETLW 'M'
RETLW 'B'
RETLW 'A'
RETLW
RETLW 'A'
R
;-----------------------------------------------
;Mensaje 10 'La Clave Debe'
;-----------------------------------------------
MEN_10
RETLW 'L'
- 42 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 RETLW 'C'
RETLW 'L'
ETLW 'V'
------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
'T'
ETLW 'N'
RETLW 'O'
RETLW 'A'
R
RETLW 'E'
RETLW ' '
RETLW 'D'
RETLW 'E'
RETLW 'B'
RETLW 'E'
RETLW 00H
;-----------------------------------------------
;Mensaje 11 'Tener 4 Dígitos'
;-
MEN_11
RETLW
RETLW 'E'
R
RETLW 'E'
RETLW 'R'
RETLW ' '
RETLW '4'
RETLW ' '
RETLW 'D'
RETLW 'I'
RETLW 'G'
RETLW 'I'
RETLW 'T'
RETLW 'S'
RETLW 00H
- 43 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;-----------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
RETLW 'L'
----------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------
ICIO
CLRF DATO ; Inicializa el Puerto B
CLRF KEYB ; Inicializa el Teclado
;Mensaje 12 'Intentelo'
;-----------------------------------------------
MEN_12
RETLW 'I'
RETLW 'N'
RETLW 'T'
RETLW 'E'
RETLW 'N'
RETLW 'T'
RETLW 'E'
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
;-
IN
- 44 -
Universidad Autónoma 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
OVWF ADCON1 ; Envía la configuración
;
; 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
INTENTO ; realizar antes que se active la alarma en este caso 3
ALL INITLCD ; Inicializamos la pantalla LCD
;
------------------------------------------------------------------------------------
ma
------------------------------------------------------------------------------------
; Borra el Display y coloca el cursor ala izq.
; Coloca el cursor al inicio de la línea superior del LCD
; Rutina que escribe el mensaje al que apunta el acumulador
44H
----------------------------------------------------------------------------------------------------------------------
dulo al primer ada y valida
cción
ambio de Clave"
MOVLW 06H ; Bits de configuración para las entradas como digitales
M
CLRF DATO
BCF EN
BCF RW
BCF RS
BCF ALA
BCF PORTERO
MOVLW 0F0H
MOVWF KEYB
BCF STATUS,5
BCF PIR2,4
MOVLW 03H ; Cargamos el numero de intentos que se podrán
MOVWF
C
;CALL INITLCD
;-----------------------------------------------
;PRINCI: Cuerpo principal del progra
;-----------------------------------------------
PRINCI
CALL CLEARL
MOVLW 00H
CALL SITUCU
MOVLW MEN_1 ; Cargamos la dirección del Mensaje en el Acumulador
CALL ESCMEN
MOVLW
CALL SITUCU ; Coloca el cursor al inicio de la línea inferior del LCD
;-------------
;ECOD12: Este mo macena la a tecla numérica presion
; que no sea una tecla de función en caso de 'C' entra a la se
; de "C
- 45 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;-----------------------------------------------------------------------------------------------------------------------------------
ELK
PEKE spera tecla
sionada en el Acumulador
os si la tecla fue o no 'A'
C TU 2
a = 'A'
umulador
C
C
MOVF COD1,W ; en caso de que se haya presionado una tecla numérica
----------------------------------------------------------------------------------------------------------------------------------
dulo al egund lida
so de 'C' entra a la sección
--------------------------------------------------------------------------------
ALL SUELKEY ; Verificamos que el teclado se encuentre bien inicializado
; Almacenamos la segunda tecla presionada en el Acumulador
; Cargamos la tecla en el acumulador
'
OVF a tecla numérica
OVLW ; para mantener oculta la tecla oprimida
ECOD12
CALL SU EY ; Verificamos que el teclado se encuentre bien inicializado
CALL ES Y ; E mos a que se presione una
MOVWF COD1 ; Almacenamos la primera tecla pre
SUBLW 'A' ; Verificam
BTFS STA S, ;
GOTO INCOR ; Si la tecl
MOVF COD1,W ; Cargamos la tecla en el ac
SUBLW 'C' ; Verificamos si la tecla presionada fue 'C'
BTFS STATUS,2 ; Si la tecla fue 'C'
GOTO CAMBIO ; cambiamos la clave
MOVLW '*' ; para mantener oculta la tecla oprimida
CALL WRITEL ; escribimos '*' en el Display
;-
;ECOD22: Este mo macena la s a tecla numérica presionada y va
; que no sea una tecla de función en ca
; de "Cambio de Clave"
;---------------------------------------------------
ECOD22
C
CALL ESPEKEY ; Esperamos a que se presione una tecla
MOVWF COD2
SUBLW 'A' ; Verificamos si la tecla fue o no 'A'
BTFSC STATUS,2 ;
GOTO INCOR ; Si la tecla = 'A'
MOVF COD2,W
SUBLW 'C ; Verificamos si la tecla presionada fue 'C'
BTFSC STATUS,2 ; Si la tecla fue 'C'
GOTO CAMBIOC ; cambiamos la clave
M COD2,W ; en caso de que se haya presionado un
M '*'
- 46 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 CALL WRITEL ; escribimos '*' en el Display
;-----------------------------------------------------------------------------------------------------------------------------------
na te ción
de "Cambio de Clave"
-------- -------- - --------- ---
os que el teclado se encuentre bien inicializado
se presione una tecla
ada en el Acumulador
nada fue 'C'
OVF a tecla numérica
OVLW ; para mantener oculta la tecla oprimida
----------------------------------------------------------------------------------------------------
ena cuarta t
na tecla de fu
de "Cambio de Clave"
-------- -------- - --------- -
os que el teclado se encuentre bien inicializado
se presione una tecla
ada en el Acumulador
;ECOD32: Este modulo almacena la tercera tecla numérica presionada y valida
; que no sea u cla de función en caso de 'C' entra a la sec
;
;- -------------- --------- -- ----------------------------------------------------------------------------
ECOD32
CALL SUELKEY ; Verificam
CALL ESPEKEY ; Esperamos a que
MOVWF COD3 ; Almacenamos la tercera tecla presion
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 presio
BTFSC STATUS,2 ; Si la tecla fue 'C'
GOTO CAMBIOC ; cambiamos la clave
M COD3,W ; en caso de que se haya presionado un
M '*'
CALL WRITEL ; escribimos '*' en el Display
;-------------------------------
;ECOD42: Este modulo almac la ecla numérica presionada y valida
; que no sea u nción en caso de 'C' entra a la sección
;
;- -------------- --------- -- ------------------------------------------------------------------------------
ECOD42
CALL SUELKEY ; Verificam
CALL ESPEKEY ; Esperamos a que
MOVWF COD4 ; Almacenamos la cuarta tecla presion
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 Autónoma Metropolitana, C. B. I. Diciembre, 2007 SUBLW 'C' ; Verificamos si la tecla presionada fue 'C'
OVF a tecla numérica
OVLW ; para mantener oculta la tecla oprimida
ALL SUELKEY
-------- - -------- ------ ------
ez teni s alm
la siguiente tecla sea una tecla de función para 'Aceptar' ('A') el código
Camb ('C')
-------- -------- ---- --------- ----------------------------------
MOVWF TECLA
TU 2
TU 2
------------------------------------
INDC D2:
recond ódigo almacenado esto es:
lo veri cód
-------- - -------- ----- ----------------------------
INCOD2
CO ódigo correcto
mos las teclas
2
GOTO INCOR ; Si la tecla es incorrecta
BTFSC STATUS,2 ; Si la tecla fue 'C'
GOTO CAMBIOC ; cambiamos la clave
M COD4,W ; en caso de que se haya presionado un
M '*'
CALL WRITEL ; escribimos '*' en el Display
C
;- ---------- --- --------------- -------------------------------------------------------------------------
;FINDCOD: Una v endo las tecla acenadas, este modulo verifica que
;
; o ' iar la clave'
;- -------------- ------ -- ---------------------------------------------
FINCOD
CALL ESPEKEY
SUBLW 'A'
BTFSC STA S,
GOTO FINCOD2
MOVF TECLA,W
SUBLW 'C'
BTFSC STA S,
GOTO CAMBIOC
GOTO FINCOD
;-----------------------------------------------------------------------------------------------
;F O
; P iciones: Tener las teclas del c
; Código = 'COD1,COD2,COD3,COD4' y se ha presionado la tecla 'A'
;
; Este modu fica que sea el igo correcto para activar la apertura
;- ---------- --- ---------------- ---------------------------------------------------
F
MOVLW 00H ; Leemos el registro de la EEPROM
CALL LEE D ; donde se encuentra almacenado el c
SUBWF COD1 ; Compara
BTFSS STATUS, ;
- 48 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 MOVLW 01H ; Leemos el registro de la EEPROM
a almacenado el código correcto
as
OR
emos el registro de la EEPROM
TFSS
OTO ; Si la tecla es incorrecta
OVLW 03H ; Leemos el registro de la EEPROM
onde se encuentra almacenado el código correcto
; Comparamos las teclas
;
la tecla es incorrecta
LAVE CORRECTA
locamos en posición
cursor para escribir en el LCD
imos el Mensaje
OVW
DELAY ; Esperamos el tiempo dado por T_RELE
ra
CALL LEECOD ; donde se encuentr
SUBWF COD2 ; Comparamos las tecl
BTFSS STATUS,2 ;
GOTO INC ; Si la tecla es incorrecta
MOVLW 02H ; Le
CALL LEECOD ; donde se encuentra almacenado el código correcto
SUBWF COD3 ; Comparamos las teclas
B STATUS,2 ;
G INCOR
M
CALL LEECOD ; d
SUBWF COD4
BTFSS STATUS,2
GOTO INCOR ; Si
CALL CLEARL ; C
MOVLW 02H ; Co
CALL SITUCU ; el
MOVLW MEN_2 ; Escrib
CALL ESCMEN ; de bienvenida
MOVLW 03H ; Reinicia
M F INTENTO ; el número de intentos
BSF PORTERO ; Activa mecanismo de apertura
MOVLW T_RELE ;
CALL
BCF PORTERO ; Desactivamos mecanismo de apertu
MOVLW 10H
CALL DELAY
GOTO PRINCI ; Reiniciamos el sistema
- 49 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;- -------------- -------- -- ------------------------------------------------------- -------- -- --------- --------------------------------
NCOR fue inc vía el
--------------------------------------
a el número de intentos disponibles
COR2 aún
GOTO ALARMA ; Si se acabaron los intentos activa la "Alarma"
COR2
-------- -------- --------- ------------------------------------------------
ués de 3 intentos incorrectos de acceso se activa
----------------------------------------------------------------------------------------------------------------------------------
MOVLW 03H ; Reiniciamos el numero de intentos
MOVWF CUENTA1
LW
LARM
LW
MOVWF CUENTA4
LARMA3
;I : La clave orrecta y en mensaje al LCD
;---------------------------------------------------------------------------------------------
INCOR
MOVLW 0CH
CALL COMANDO
CALL CLEARL
MOVLW MEN_3 ; Escribe el mensaje de clave incorrecta
CALL ESCMEN ;
DECFSZ INTENTO,F ; Decrement
GOTO IN ; Si quedan intentos disponibles
IN
MOVLW 20H ; Espera un tiempo antes de
CALL DELAY ; Poder intentar el ingreso
GOTO PRINCI
;- -------------- ------------ -------------------------------
;ALARMA: Desp
; la alarma
;-
ALARMA
MOVLW 1EH
MOVWF TECLA
ALARMA4
MOVWF INTENTO ; disponibles
MOVLW 00FH
MOV 030H
MOVWF CUENTA2
A A1
MOV 20H
DECF CUENTA1,F
BTFSC STATUS,2
GOTO ALARMA2
A
- 50 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 BSF ALA ; Enciende
CALL FRECU ; Frecuencia de apagado y encendido
CALL FRECU
ELAY
OTO ALARMA4
CI
TO FRECU2
LW 030H
----------------------------------------------------------------------------------
almacenada
----------------------------------------------------------------------------------
L CLEARL
; 'CAMBIO DE'
cribe el mensaje
AVE'
cribe el mensaje
L DELAY ; Retardo
BCF ALA ; Apaga
DECFSZ CUENTA4,F
GOTO ALARMA3
GOTO ALARMA1
ALARMA2
MOVLW 01H
CALL D
DECFSZ TECLA,F
G
GOTO PRIN
FRECU
MOVF CUENTA1,W
MOVWF CUENTA3
FRECU2
DECFSZ CUENTA3,F
GO
DECFSZ CUENTA2,F
GOTO FRECU
MOV
MOVWF CUENTA2
RETURN
;-------------------------------------------------
;CAMBIOC: Este modulo Cambia la clave
;-------------------------------------------------
CAMBIOC
CAL
MOVLW MEN_4
CALL ESCMEN ; Es
MOVLW MEN_5 ; ' CL
CALL ESCMEN ; Es
MOVLW 20H
CAL
- 51 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 CALL CLEARL ; Limpiamos el Display
aje
; ' ANTIGUA'
ibe el mensaje
pera a que se deje de presionar la tecla
UCU ; Colocamos el cursor en la línea siguiente
; Obtiene el Código Tecleado
; Dirección de la EEPROM donde está almacenado el digito
ee el Código de le EEPROM y lo regresa en el acumulador
para el código almacenado con el tecleado
;
GOTO INCORE ; Si no es igual
; Si es igual compara el siguiente digito
ción de la EEPROM donde está almacenado el digito
e el Código de le EEPROM y lo regresa en el acumulador
UBWF COD2 ; compara el código almacenado con el tecleado
es igual
s igual compara el siguiente digito
; Dirección de la EEPROM donde está almacenado el digito
; Lee el Código de le EEPROM y lo regresa en el acumulador
mpara el código almacenado con el tecleado
ATUS,2 ;
para el siguiente digito
L LEECOD ; Lee el Código de le EEPROM y lo regresa en el acumulador
compara el código almacenado con el tecleado
ecto
; Reiniciamos el número de intentos
MOVLW MEN_5 ; ' CLAVE'
CALL ESCMEN ; Escribe el mens
MOVLW MEN_6
CALL ESCMEN ; Escr
CALL SUELKEY ; Es
MOVLW 44H
CALL SIT
CALL COGECOD
MOVLW 00H
CALL LEECOD ; L
SUBWF COD1 ; com
BTFSS STATUS,2
MOVLW 01H ; Direc
CALL LEECOD ; Le
S
BTFSS STATUS,2 ;
GOTO INCORE ; Si no
; Si e
MOVLW 02H
CALL LEECOD
SUBWF COD3 ; co
BTFSS ST
GOTO INCORE ; Si no es igual
; Si es igual com
MOVLW 03H ; Dirección de la EEPROM donde está almacenado el digito
CAL
SUBWF COD4 ;
BTFSS STATUS,2 ;
GOTO INCORE ; Si no es igual
MOVLW 03H ; Si el código fue corr
MOVWF INTENTO
- 52 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;- ---------- --- -------------- --------------------------------------- - -------- ------- ------------------------------------------------
lmacena
--------------------------------------------------
UEVA
MOVLW MEN_7 ; 'NUEVA'
se libere la tecla
ALL OGEC D
COD1 en COD1A
OVF OD2,W rmente
s COD3 para verificar posteriormente
OTO CORE
COD4 en COD4A
CALL ESCMEN ; Escribe mensaje
;NUEVACL: Capturamos y verificamos la nueva clave y se a
; en la EEPROM
;---------------------------------------------------------------------------------
N CL
CALL CLEARL ; Limpiamos el Display
MOVLW 02H
CALL SITUCU ; Colocamos el cursor en la primera línea
CALL ESCMEN ; Escribimos el mensaje
MOVLW MEN_5 ; ' CLAVE'
CALL ESCMEN ; Escribimos el mensaje
MOVLW 44H ; Cambiamos de línea
CALL SITUCU ;
CALL SUELKEY ; Esperamos que
C C O ; Leemos el nuevo código
MOVF COD1,W ; Copiamos COD1 para verificar posteriormente
BTFSC STATUS,2
GOTO INCOREC
MOVWF COD1A ; Almacenamos
M C ; Copiamos COD2 para verificar posterio
BTFSC STATUS,2
GOTO INCOREC
MOVWF COD2A ; Almacenamos COD2 en COD2A
MOVF COD3,W ; Copiamo
BTFSC STATUS,2
G IN C
MOVWF COD3A ; Almacenamos COD3 en COD3A
MOVF COD4,W ; Copiamos COD4 para verificar posteriormente
BTFSC STATUS,2
GOTO INCOREC
MOVWF COD4A ; Almacenamos
CALL CLEARL ;VERIFIQUE CLAVE
MOVLW MEN_8 ; 'VERIFIQUE'
- 53 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 MOVLW MEN_5 ; ' CLAVE'
CALL ESCMEN ; Escribe mensaje
amos el cursor en la segunda línea
L SUELKEY ;
; Compara el COD1 con COD1A
ontinuamos comparando
U 2;
!= COD2A
parando
US,2;
COD3 = COD3A continuamos comparando
2;
COD4 = COD4A continuamos
cribe mensaje
MBIADA'
uarda en CODWRITE el
igito que se almacenara en EEPROM
CALL EEWRITE ; almacena en EEPROM la clave
el
n EEPROM
MOVLW 44H ; Coloc
CALL SITUCU ;
CAL
CALL COGECOD ; Obtiene el código
MOVF COD1,W
SUBWF COD1A,W ;
BTFSS STATUS,2 ;
GOTO NOVERI ; Si COD1 != COD1A
MOVF COD2,W ; Si COD1 = COD1A c
SUBWF COD2A,W ; COD2 contra COD2A
BTFSS STAT S,
GOTO NOVERI ; Si COD2
MOVF COD3,W ; Si COD2 = COD2A continuamos com
SUBWF COD3A,W ;
BTFSS STAT
GOTO NOVERI ; Si COD3 != COD3A
MOVF COD4,W ; Si
SUBWF COD4A,W ;
BTFSS STATUS,
GOTO NOVERI ; Si COD4 != COD4A
; Si
CALL CLEARL ;CLAVE CAMBIADA
MOVLW MEN_5 ; ' CLAVE'
CALL ESCMEN ; Es
MOVLW MEN_9 ; ' CA
CALL ESCMEN ; Escribe mensaje
MOVF COD1,W ; G
MOVWF CODWRITE ; d
MOVLW 00H ; Dirección donde guardara el digito
MOVF COD2,W ; Guarda en CODWRITE
MOVWF CODWRITE ; digito que se almacenara e
- 54 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 MOVLW 01H ; Dirección donde guardara el digito
clave
n CODWRITE el
e se almacenara en EEPROM
ardara el digito
n CODWRITE el
E ra en EEPROM
--------------------------------------------------------------------------
OVER entific l ingre
a vez
------------------------------------------------------------------
CALL SITUCU ; Colocamos el cursor en la primera línea
a segunda línea
CALL ESCMEN ; Escribe mensaje
A
--------------------------------------
NCOREC: Despliega un mensaje cuando suscita un error al
troduc
----------------------------
CALL EEWRITE ; almacena en EEPROM la
MOVF COD3,W ; Guarda e
MOVWF CODWRITE ; digito qu
MOVLW 02H ; Dirección donde gu
CALL EEWRITE ; almacena en EEPROM la clave
MOVF COD4,W ; Guarda e
MOVWF CODWRIT ; digito que se almacena
MOVLW 03H ; Dirección donde guardara el digito
CALL EEWRITE ; almacena en EEPROM la clave
MOVLW 20H
CALL DELAY
GOTO PRINCI
;---------------------------------------------------------
;N I: Id a un error a sar la clave nueva
; por segund
;-----------------------------------------------------------------
NOVERI
CALL CLEARL ; Limpia LCD
MOVLW 03H ;
MOVLW MEN_12 ; 'INTENTELO'
CALL ESCMEN ; Escribe Mensaje
MOVLW 43H ;
CALL SITUCU ; Colocamos el cursor en l
MOVLW MEN_13 ; 'DE NUEVO'
MOVLW 20H
CALL DELAY
GOTO NUEV CL
;---------------------------------------------------------------------------------------------
;I
; in ir el código
;-------------------------------------------------------------------------------------------------------
- 55 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 IN C CORE
ER 4 DIGITOS
MOVLW MEN_10 ; 'LA CLAVE DEBE'
CALL ESCMEN ; Escribe mensaje
CI
; Decrementa el número de intentos
BTFSC STATUS,2 ; verifica que aun existan intentos
; si no hay intentos activa ALARMA
ECTA'
Mensaje
ALL DELAY
e la tecla
------------------------------------------------
------------------------------------------------------------------
D1 os las v
--------------------------------------------------------------------------
------- ------- ------------------------------------------------------------------------------------
CALL CLEARL ;LA CLAVE DEBE TEN
CALL ESCMEN ; Escribe mensaje
MOVLW 40H
CALL SITUCU ; Cursor a segunda línea
MOVLW MEN_11 ; 'TENER 4 DIGITOS'
MOVLW 20H
CALL DELAY
GOTO PRIN
INCORE
DECF INTENTO,F
GOTO ALARMA
CALL CLEARL ; Limpia Display
MOVLW MEN_3 ; 'CLAVE INCORR
CALL ESCMEN ; Escribe
MOVLW 20H
C
CALL SUELKEY ; Esperamos a que suelt
GOTO PRINCI
;-----------------------------------------------------------------------------------
;COGECOD: Lee el código y lo compara con el antiguo
;-----------------------------------------------------------------
COGECOD
CLRF CO ; Limpiam ariables
CLRF COD2
CLRF COD3
CLRF COD4
;---------------------------------------------------------
;ECOD12C: Lee la primera tecla del código y verifica
; que sea numérica
;-- ---- ---------------------------
ECOD12C
- 56 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 CALL SUELKEY ; Esperamos a que suelte la tecla
s 'C'
; Si es 'C'
; Si no es 'C'
CALL WRITEL ; Escribimos '*' en pantalla
----------------------------------------------------------------------------------------------------------------------
l có
-------- -------- ----- ---------------------------------
ecla
; Si es 'A'
COD1,W ; Si no es 'A' verificamos 'C'
LW '*' ; Si no es 'C'
os '*' en pantalla
------------------------------------------------------------------------------------------
cla del código y verifica
a numérica
ALL speramos a que suelte la tecla
VWF COD1 ;
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' verificamo
SUBLW 'C'
BTFSC STATUS,2
GOTO ECOD12C
MOVLW '*'
;-------------
;ECOD22C: Lee la segunda tecla de digo y verifica
; que sea numérica
;- -------------- ---------------- ----------------------------------------------
ECOD22C
CALL SUELKEY ; Esperamos a que suelte la tecla
CALL ESPEKEY ; Esperamos a que se presione la t
MOVWF COD1 ;
SUBLW 'A'
BTFSC STATUS,2
RETURN
MOVF
SUBLW 'C'
BTFSC STATUS,2
GOTO ECOD22C ; Si es 'C'
MOV
CALL WRITEL ; Escribim
;-----------------------------------------
;ECOD32C: Lee la tercera te
; que se
;-----------------------------------------------------------------------------------------------------------------------------------
ECOD32C
C SUELKEY ; E
CALL ESPEKEY ; Esperamos a que se presione la tecla
MO
- 57 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 SUBLW 'A'
BTFSC STATUS,2
; Si no es 'A' verificamos 'C'
; Si no es 'C'
cribimos '*' en pantalla
-------- -------- ----- ------------------------------------------------------------------
COD4 e la cu tecl del códi
mérica
ALL speramos a que suelte la tecla
VWF COD1 ;
i es 'A'
; Si no es 'A' verificamos 'C'
; Si no es 'C'
cribimos '*' en pantalla
s a que se suelte la tecla
-------- -------- ------ --------- --------------------------------------------------------------
INCO spera l
--- -------------------------------------------------------------
NCODC
VWF TECLA
A TENGO EL CÓDIGO
RETURN ; Si es 'A'
MOVF COD1,W
SUBLW 'C'
BTFSC STATUS,2
GOTO ECOD32C ; Si es 'C'
MOVLW '*'
CALL WRITEL ; Es
;- -------------- ---------------- -------------
;E 2C: Le arta a go y verifica
; que sea nu
;-----------------------------------------------------------------------------------------------------------------------------------
ECOD42C
C SUELKEY ; E
CALL ESPEKEY ; Esperamos a que se presione la tecla
MO
SUBLW 'A'
BTFSC STATUS,2
RETURN ; S
MOVF COD1,W
SUBLW 'C'
BTFSC STATUS,2
GOTO ECOD42C ; Si es 'C'
MOVLW '*'
CALL WRITEL ; Es
CALL SUELKEY ; Esperamo
;- -------------- ---- -- -----------------
;F D: E a tecla 'A' Aceptar o cancelar 'C'
; para cambiar el código
;----------------- --------------------------------------------------
FI
CALL ESPEKEY ; Espera que se presione una tecla de función
MO
SUBLW 'A'
BTFSC STATUS,2
RETURN ;Y
- 58 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 GOTO FINCODC
;-----------------------------------------------------------------------------------------------------------------------------------
REGISTRO DE LA EEPROM
O POR DEVUELVE EN
DOR
--------------------------------------------------------------------------
TU 6
CF
F STATUS,5
--------------------------------------------------------------------------
A EEPRON DE DATOS
DIR ESCRIBIR EN W
A ESCRIBIR EN CODWRITE
--------------------------------------------------------------------------
EWRIT
OVF
VWF EEDATA
; LEECOD: SUBRUTINA QUE LEE EL
; INDICAD EL ACUMULADOR Y LO
; ACUMULA
;---------------------------------------------------------
LEECOD
BSF STA S,
BCF STATUS,5
MOVWF EEADR
BSF STATUS,5
B EECON1,7
BSF EECON1,0
BC
MOVF EEDATA,W
BCF STATUS,6
RETURN
;---------------------------------------------------------
; EEWRITE: SUBRUTINA QUE ESCRIBE EN L
; PASAR LA ECCION DE LA EEPRON A
; Y EL DATO
;---------------------------------------------------------
E E
BSF STATUS,6
BCF STATUS,5
MOVWF EEADR
BCF STATUS,6
M CODWRITE,W
BSF STATUS,6
MO
BSF STATUS,5
BCF EECON1,7
BSF EECON1,2
BCF INTCON,7
MOVLW 55H
- 59 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 MOVWF EECON2
MOVLW 0AAH
MOVWF E 2 ECON
SF
F STATUS,6
OL1: OL2: 1
----------------------------------------------------------------------------------------------------------------------------------
icializamos el teclado
lumnas a 1 y Filas a 0
apturamos el Puerto C (00001111) si no se presiono alguna
uardamos la tecla presionada
etardo para esperar la tecla
se ha inicializado correctamente
teclado
ntinuamos
; Verificamos el que se
B EECON1,1
BSF INTCON,7
BCF STATUS,5
BC
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 código ASCII en W
;C 0 C COL3: 2 COL4: 3
;ROW1: 4 ROW2: 5 ROW3: 6 ROW4: 7
;-
GETKEY
MOVLW 0FH ; In
MOVWF KEYB ; Co
NOP
MOVF KEYB,W ; C
tecla
MOVWF TECLA ; G
CALL REBOTE ; R
MOVF KEYB,W ;
SUBWF TECLA,F ; Si
BTFSS STATUS,2 ; el
GOTO GETKEY ; co
SUBLW 0FH
- 60 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 BTFSS STATUS,2 ; haya presionado alguna tecla
; si se presiono una tecla
caso contrario regresamos vacio
--------------------------------------------------------------------------
sionada
cuentra
--------------------------------------------------------------------------
; Verifica si se presiono alguna
de las teclas de la fila 1
erifica si se presiono alguna
las teclas de la fila 2
erifica si se presiono alguna
las teclas de la fila 3
erifica si se presiono alguna
; de las teclas de la fila 4
H ; En caso de ninguna de las anteriores
----------------------------------------------------------------------------------------------------------------------------------
tecla
------- ------- ----------------------------------------------------
W H
P
,4
02H
NOP
GOTO HAYTECL
RETLW 0FH ;
;---------------------------------------------------------
;HAYTECL: Cuando se encuentra una tecla pre
; este modulo identifica en que fila se en
;---------------------------------------------------------
HAYTECL
BTFSC KEYB,4
GOTO ROW1 ;
BTFSC KEYB,5 ; V
GOTO ROW2 ; de
BTFSC KEYB,6 ; V
GOTO ROW3 ; de
BTFSC KEYB,7 ; V
GOTO ROW4
RETLW 0F
;-
;ROW1: Si la Tecla Presionada se encuentra en la Fila 1
; del do este modulo identifica esta tecla.
;-- ---- -----------------------------------------------------------
ROW1
MOVL 01
MOVWF KEYB
NO
BTFSC KEYB
RETLW 31H ;TECLA=1
MOVLW
MOVWF KEYB
BTFSC KEYB,4
RETLW 32H ;TECLA=2
MOVLW 04H
MOVWF KEYB
NOP
BTFSC KEYB,4
RETLW 33H ;TECLA=3
- 61 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 MOVLW 08H
MOVWF KEYB
NOP
BTFSC KEYB,4
RETLW 'A' ;TECLA=A
RETLW 0FH
;-----------------------------------------------------------------------------------------------------------------------------------
;ROW2: Si la Tecla Presionada se encuentra en la Fila 2
-------- -------- --------- ----------------------------------------------
MOVLW 04H
KEYB,5
TECLA=6
----------------------------------------------------------------------------------
Fila 3
clado este modulo identifica esta tecla.
------------------------------------------------------------------------------
; del teclado este modulo identifica esta tecla.
;- -------------- ------------ ---------------------------------
ROW2
MOVLW 01H
MOVWF KEYB
NOP
BTFSC KEYB,5
RETLW 34H ;TECLA=4
MOVLW 02H
MOVWF KEYB
NOP
BTFSC KEYB,5
RETLW 35H ;TECLA=5
MOVWF KEYB
NOP
BTFSC
RETLW 36H ;
RETLW 0FH
;-------------------------------------------------
;ROW3: Si la Tecla Presionada se encuentra en la
; del te
;-----------------------------------------------------
ROW3
MOVLW 01H
MOVWF KEYB
NOP
BTFSC KEYB,6
RETLW 37H ;TECLA=7
- 62 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 MOVLW 02H
MOVWF KEYB
NOP
BTFSC KEYB,6
RETLW 38H ;TECLA=8
MOVLW 04H
MOVWF KEYB
NOP
BTFSC KEYB,6
RETLW 39H ;TECLA=9
MOVLW 08H
KEYB,6
TECLA=C
----------------------------------------------------------------------------------
Fila 4
clado este modulo identifica esta tecla.
------------------------------------------------------------------------------
MOVLW 04H
KEYB,7
TECLA=#
MOVWF KEYB
NOP
BTFSC
RETLW 'C' ;
RETLW 0FH
;-------------------------------------------------
;ROW4: Si la Tecla Presionada se encuentra en la
; del te
;-----------------------------------------------------
ROW4
MOVLW 01H
MOVWF KEYB
NOP
BTFSC KEYB,7
RETLW '*' ;TECLA=*
MOVLW 02H
MOVWF KEYB
NOP
BTFSC KEYB,7
RETLW 30H ;TECLA=0
MOVWF KEYB
NOP
BTFSC
RETLW '#' ;
RETLW 0FH
- 63 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;-----------------------------------------------------------------------------------------------------------------------------------
UE ESPERA A QUE SE SUELTE
LA TECLA PULSADA
------------------------------------------------------------------------------
; Se verifica si regreso vacio
STATUS,2;
no se presiono ninguna tecla)
la
----------------------------------------------------------------------------------
UE ESPERA A QUE SE PULSE UNA TECLA
DEVUELVE EL VALOR EN W Y TECLA
------------------------------------------------------------------------------
; Obtiene la tecla presionada
cla
MOVF TECLA,W ; si se presiono una tecla regresamos
; el valor en el acumulador
--------------------------------------------------------------------------------
SUBRUTINA QUE ESCRIBE UN MENSAJE EN EL LCD,
E TABLA EN ACUMULADOR
----------------------------------------------------
; Guardamos la dirección del inicio del mensaje en PUNTAB
WRITEL
; SUELKEY: SUBRUTINA Q
;
;-----------------------------------------------------
SUELKEY
CALL GETKEY
SUBLW 0FH
BTFSC
RETURN ; (
GOTO SUELKEY ; Se presiono una tec
;-------------------------------------------------
; ESPEKEY: SUBRUTINA Q
;
;-----------------------------------------------------
ESPEKEY
CALL GETKEY
MOVWF TECLA ; Verificamos
SUBLW 0FH ; que se haya
BTFSC STATUS,2 ; presionado una te
GOTO ESPEKEY ; si no se presiono
RETURN
;---------------------------------------------------
; ESCMEN:
; PASAR INICIO D
;-------------------------------------------------------------------------------
ESCMEN
MOVWF PUNTAB
ESCMEN2
CALL TABLA
ADDLW 00H
BTFSC STATUS,2
RETURN
CALL
INCF PUNTAB,F
MOVF PUNTAB,W
GOTO ESCMEN2
- 64 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;-----------------------------------------------------------------------------------------------------------------------------------
; WAITLCD: SUBRUTINA DE ESPERA AL LCD
;-----------------------------------------------------------------------------------------------------------------------------------
STATUS,5 ; Cambio al Banco 1 y
onfiguro el puerto B como
greso al Banco 0
VWF DATO
la bandera de ocupado
W
LRF
TURN
-------- -------- ------- ---
SUBRUTINA DE INICIALIZACIÓN DEL LCD
------------------------------------------------------------------------------
111000
OMANDO ;INTERFACE 8 BIT, 2 LINEAS
0001100
PLAY A ON, NO MUESTRA CURSOR, NO PARPADEO
10
WAITLCD
BSF
MOVLW 0FFH ; c
MOVWF DATO ; entrada para leer desde el LCD
BCF STATUS,5 ; Re
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
MO
WAITLC
BTFSC DATO,7 ; Espera a que se libere
GOTO WAITLC ; de el LCD
BCF EN ; Limpio los bits
BCF R ; de comandos del LCD
BCF DATO,7
BSF STATUS,5 ; Regreso el Puerto B
C DATO ; como Salidas
BCF STATUS,5 ;
RE
;- -------------- -------------- ----------------------------------------------------------------------------
;INITLCD:
;-----------------------------------------------------
INITLCD
MOVLW 38H ;00
CALL C
MOVLW 0CH ;0
CALL COMANDO ;DIS
MOVLW 06H ;000001
- 65 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007
CALL COMANDO ;MUEVE CURSOR A LA DCHA DESPUES D ESCRIBIR, NO
MUEVE VENTANA
------------------------------------------------------------------------------------------------------
A L: A Q LLEVA EL CURSOR AL LADO
QUIE
-------- --- -------- ------ ----------------------------------------------------
LEARL
----------------------------------------------------------------------------------------------------------------------------------
: NA QU CARACTER DEL
----------------------------------------------------------------------------------------------------------------------------------
BCF RW
------------------------------------------------
UN COMANDO AL LCD
--------------------------------------------------------------------------------------------------
F RW
RETURN
;-----------------------------
; CLE R SUBRUTIN UE BORRA EL LCD Y
IZ RDO
; DEL DISPLAY
;- -------- --- --------------- ---------------------------
C
MOVLW 01H
CALL COMANDO ;BORRADO
RETURN
;-
; WRITEL SUBRUTI E ESCRIBE EN EL LCD EL
ACUMULADOR
;-
WRITEL
BSF EN
BSF RS
MOVWF DATO
BCF EN
CALL WAITLCD
RETURN
;-----------------------------------------------------------------------------------
; COMANDO: SUBRUTINA QUE ENVIA
;---------------------------------
COMANDO
BSF EN
BCF RS
BC
MOVWF DATO
BCF EN
CALL WAITLCD
RETURN
- 66 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 ;--------- ------------ ---
; SITUCU: SUBRUTINA QU R EN LA DIRECCION INDICADA POR
------- ---- ------
LL COMANDO
--- ---------------------------------------------------------
TA
SIGUIENTES REGISTROS
UENTA2
------------------------------------------------------------------------------------
UENTA2
EBOTE
---------- ------------------ -------------------------------------------------------------------------------
E SITUA EL CURSO
EL
; ACUMULADOR
;-- ------------------ ----------------------------------------------------------------------------------------------
SITUCU
IORLW 80H
CA
RETURN
;------------------------------------------------- ----------------------
;*********** DELAY ***********
; SUBRUTINA DE RE RDO SEGÚN EL VALOR DEL ACUMULADOR
; MODIFICA LOS
; CUENTA1
; C
; CUENTA3
;-----------------------------------------------
DELAY
MOVWF CUENTA1
DELAY3
MOVLW 0FFH
MOVWF C
DELAY2
MOVLW 0FFH
MOVWF CUENTA3
DELAY1
DECFSZ CUENTA3,F
GOTO DELAY1
DECFSZ CUENTA2,F
GOTO DELAY2
DECFSZ CUENTA1,F
GOTO DELAY3
RETURN
R
- 67 -
Universidad Autónoma Metropolitana, C. B. I. Diciembre, 2007 MOVLW 0FFH
MOVWF CUENTA1
REBO
RETURN
vanzado de Microcontroladores PIC.
DECFSZ CUENTA1,F
GOTO REBO
ORG 2100H
DE 30H,30H,30H,30H
END
12. BIBLIOGRAFIA.
1. Curso A
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
CD y Teclado Matricial. Voltaje), Pantalla L
- 68 -