Proyecto Cerradura Electronica

49
1 Tecnológico de Estudios de Superiores de Ixtapaluca Carrera. Ingeniería en Sistemas Computacionales Materia: Lenguaje Ensamblador Profesor: Ramón Lozano Zavala Integrantes del Equipo: Rosas Zarate Diana Marlen Rodríguez Aguilar Nydia Santiago Martínez Viridiana Soriano Gutiérrez Alejandra Sosa Carreón Enrique Román Vásquez Martínez Oscar Vázquez Rojas Christian Alexis Vidal Torres Ángel Zarate Cruz Ricardo Grupo: 1502 Ixtapaluca Edo. De México a 19 de Diciembre de 2011.

Transcript of Proyecto Cerradura Electronica

Page 1: Proyecto Cerradura Electronica

1

Tecnológico de Estudios de Superiores de Ixtapaluca

Carrera. Ingeniería en Sistemas Computacionales

Materia: Lenguaje Ensamblador

Profesor: Ramón Lozano Zavala

Integrantes del Equipo:

Rosas Zarate Diana Marlen

Rodríguez Aguilar Nydia

Santiago Martínez Viridiana

Soriano Gutiérrez Alejandra

Sosa Carreón Enrique Román

Vásquez Martínez Oscar

Vázquez Rojas Christian Alexis

Vidal Torres Ángel

Zarate Cruz Ricardo

Grupo: 1502

Ixtapaluca Edo. De México a 19 de Diciembre de 2011.

Page 2: Proyecto Cerradura Electronica

2

Page 3: Proyecto Cerradura Electronica

3

INTRODUCCION

Una cerradura electrónica consiste en llevar acabo una función especifica 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 de PIC 16F876,

microprocesador que se encarga de las funciones de: almacenamiento de la

clave de acceso y la computadora 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 visualizada en una pantalla LCD. También cuenta con

dos teclas: aceptar y cambiar clave. Si la clave se introduce incorrectamente

tres veces una alarma se activa durante unos segundos para avisar al usuario

que tratan de acceder a su espacio

Page 4: Proyecto Cerradura Electronica

4

PLANTEAMIENTO Y DELIMITACION

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 más 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 del 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).

Page 5: Proyecto Cerradura Electronica

5

¿QUÉ ES UN MICRO CONTROLADOR?

Un micro controlador 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.

CARACTERÍSTICAS

Son diseñados para disminuir el coste económico y el consumo de energía de

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

Page 6: Proyecto Cerradura Electronica

6

ESQUEMA DEL MICRO CONTROLADOR

Familias de controladores

Los micro controladores más comunes en uso se muestran a continuación:

TABLA 1. Microcontroladores más comunes.

Empresa 8 bits 12 bits 14 bits 16 bits 32 bits 64 bits

Atmel

AVR

Freescale 68HC05,

x x

68HC12,

683xx, x

68HC08,

68HCS12,

(antes Motorola)

68HC16

68HC11, HCS08 68HCSX12

MCS-48 (familia

8048) MCS96,

Intel MCS51 (familia x x x x

MXS296

8051)

8xC251

National COP8

x

x

X

x

x

Semiconductor

Familia

Familia 12Fxx, 18Cxx y

Microchip

Familia 10f2xx 16Cxx y 16Fxx

x

x

12Cxx de 18Fxx de

de 14 bits

12 bits

16 bits

(PIC16F87X)

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.

Page 7: Proyecto Cerradura Electronica

7

ELECCIÓN DE UN MICROCONTROLADOR PARA EL PROYECTO.

Para ele de microcontrolador a utilizar nos basamos en los siguientes 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.

En base a esto decidimos que lo mejor sería utilizar micro controladores PIC,

los cuales tienen una arquitectura RISC.

ARQUITECTURA RISC

Es un tipo de microprocesador con las siguientes características

fundamentales:

1. Instrucciones de tamaños fijos y presentados en un reducido

número de formatos.

2. Solo las instrucciones de carga y almacenamiento acceden a la

memoria por datos.

RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeños y simples que toman menor tiempo para ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado 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 ejecució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 era cada vez mas alta. Esto conllevó la aparición de

Page 8: Proyecto Cerradura Electronica

8

numerosas técnicas para reducir el procesamiento dentro del CPU, así como de reducir el número total de accesos a memoria. 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ñadores una flexibilidad considerable; así pueden, por ejemplo: • 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 mini controladores • Construir los chips en líneas de producción antiguas que de otra manera nos serian utilizadas • No hacer nada, ofrecer el chip para aplicaciones de bajo poder o de tamaño limitado

Las características que generalmente son encontradas en los diseños RISC son:

• Codificación uniforme de instrucciones (ejemplo: el código de

operación se encuentra siempre en la misma posición de bit en

cada instrucción, la cual es siempre una palabra), lo que permite

una decodificación más rápida.

• Un conjunto de registros homogéneo, permitiendo que cualquier

registro sea utilizado en cualquier contexto y así simplificar el diseño

del compilador (aunque existen 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 máquinas CISC tiene instrucciones para tratar con tipos

byte, cadena; tales instrucciones no se encuentran en una máquina

RISC).

Page 9: Proyecto Cerradura Electronica

9

Los diseños RISC también prefieren utilizar como característica un modelo

de memoria Harvard, donde los conjuntos de instrucciones y los conjuntos de

datos están conceptualmente separados; esto significa que el modificar las

direcciones donde el código se encuentra pudiera no tener efecto alguno en las

instrucciones ejecutadas por el procesador (porque la CPU tiene separada la

instrucción y el cache de datos, al menos mientras una instrucción especial de

sincronización es utilizada). Por otra parte, esto permite que ambos caches

sean accedidos separadamente, lo que puede en algunas ocasiones mejorar el

rendimiento.

MICROCONTROLADORES PIC.

Los “PIC” son una familia de micro controladores tipo RISC fabricados por Microchip Technology Inc., originalmente desarrollado por la división de microelectrónica de General Instruments.

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

Page 10: Proyecto Cerradura Electronica

10

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. 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 mayoría estaban obsoletos. El PIC, sin embargo, se mejoró con EPROM para conseguir un controlador de canal programable. Hoy en día multitud de PIC’s vienen con varios 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 familia específica de PICmicro). Para el desarrollo de este proyecto utilizamos el entorno de programación de MPLAB IDE.

Page 11: Proyecto Cerradura Electronica

11

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.

Page 12: Proyecto Cerradura Electronica

12

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 • 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 Puertos de E/S (típicamente 0 a 5,5 voltios) Periféricos de control de motores. LA PROGRAMACIÓN DEL MICROCONTROLADOR.

Para transferir el código de un ordenador al PIC normalmente se usa un

dispositivo llamado programador. 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 Voltage Programming, programació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 y el MCLR para activar

el modo programación aplicando un voltaje de unos 11 voltios. Existen muchos

programadores de PIC’s, desde los más simples que dejan al software los

detalles de comunicaciones, a los más complejos, que pueden verificar el

dispositivo a diversas tensiones de alimentación e implementan en hardware

casi todas las funcionalidades. Muchos de estos programadores complejos

incluyen ellos mismos PIC’s preprogramados como interfaz para enviar las

órdenes al PIC que se desea programar. Uno de los programadores más

simples es el TE20, que utiliza la línea TX del puerto RS232 como alimentación

y las líneas DTR y CTS para mandar o recibir datos cuando el microcontrolador

está en modo programación. El software de programación puede ser el ICprog,

Page 13: Proyecto Cerradura Electronica

13

muy común entre la gente que utiliza este tipo de microcontroladores.

Para la programación del microcontrolador elegido (PIC16F876) utilizamos

las siguientes herramientas:

• MPLAP IDE (Herramienta para Depurar y Simular el código del Programa)

• PIC Simulator IDE (Herramienta Visual de simulación PIC)

• Grabador PIC USB

Nosotros utilizamos un programador que utiliza una interfaz USB llamado

“PICProg USB”, el cual utiliza un software especial para transferir el código en

hexadecimal.

Page 14: Proyecto Cerradura Electronica

14

TECLADO MATRICIAL 4x3.

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, ya que esta conexión tiene la forma

de una matriz. Existen teclados matriciales de 4 x 4 y de 4 x 3 teclas.

FUENTE DE ALIMENTACIÓN.

La fuente de alimentación es un dispositivo muy importante para un

sistema, ya que de ahí se toma la energía necesaria para la alimentación del

mismo. Esta es un subsistema que convierte la corriente alterna en otro tipo de

corriente eléctrica 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 tendrán 2 valores de voltaje de salida (12 y 5

Volts).

Nuestra fuente consta de 4 etapas:

• Atenuación: Disminuye el voltaje y la corriente de corriente alterna

(voltaje de 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,

Page 15: Proyecto Cerradura Electronica

15

tratando de logra un valor de voltaje lineal (hasta este punto

12Vd.c.).

• Regulación: Su función es mantener y controlar el valor deseado a

la carga (5Vd.c. al circuito).

DESARROLLO DEL PROYECTO.

INVESTIGACIÓN.

Se comenzó por la investigación de cada uno de los 3 elementos

principales de nuestro proyecto (PIC, 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 elementos, es decir,

cuanta alimentación de voltaje se debe de utilizar o como es que se

deben de conectar estos elementos entre si, etc

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 modulo inicializa los puertos del PIC definiendo cuales trabajaran

como entradas y cuales como salidas, así como inicializar la EEPROM

para almacenar el código de acceso y realizar la llamada a la rutina que

Page 16: Proyecto Cerradura Electronica

16

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 línea inferior del Display para esperar a que

ingresen el código 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 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

ESPEKEY

INCOR

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 se despliega el mensaje de “CLAVE INCORRECTA” y se decrementa el

numero de intentos.

Rutinas que utiliza este modulo:

Page 17: Proyecto Cerradura Electronica

17

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 código antiguo y a continuación 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

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

Page 18: Proyecto Cerradura Electronica

18

INCOREC: Despliega el mensaje de error cuando la clave no tiene el tamaño de 4 dígitos, 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 tamaño 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 máximo entonces activa la alarma.

Rutinas que utiliza este modulo:

ALARMA

CLEARL

ESCMEN

SUELKEY

DELAY

ALARMA:

Después 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 código 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

código ASCCI. HAYTECL:

Identifica la fila en la que se encuentra la tecla

presionada.

Page 19: Proyecto Cerradura Electronica

19

SUELKEY:

Subrutina que espera a que se suelte la tecla

GRABACIÓN Y SIMULACIÓN.

Ya teniendo listo el programa nos dimos a la tarea de buscar un grabador de

PIC’s, el cual fue una herramienta necesaria para nuestro proyecto. Este

grabador fue adquirido por Internet.

Con la posesión 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

comprobaría que la comunicación entre el PIC 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.

CIRCUITO ELECTRICO.

Una vez hecha toda la investigación, los estudios necesarios, la realización del

programa de funcionamiento y las simulaciones necesarias, se comenzó por

realizar el circuito que se adecuaría a nuestras necesidades del proyecto, esto

con la ayuda de un programa de simulación de circuitos electrónicos (ORCAD

PSpice) y de Paint, ya que había algunos componentes que no se encontraron

en el ORCAD y se tuvieron que realizar en este ultimo programa.

Page 20: Proyecto Cerradura Electronica

20

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 Teclado Matricial 4x3.

• 1 Bocina de 8Ω de impedancia.

• 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 • 2 Conectores plug de 1.3mm.

• Conectores header’s (Hembra y Macho).

• Cable plano de 24 hilos.

• Cable telefónico.

• 1 Gabinete de 8x14cm y 4cm de alto.

Page 21: Proyecto Cerradura Electronica

21

• 1 Tablilla de Experimentación de circuitos (Protoboard).

Grabación del PIC:

• 1 Grabador de PIC’s.

CONSTRUCCIÓN DEL CIRCUITO.

Se comenzó por armar el circuito en un protoboard para ver que todo Funcionara a la perfección (tanto las conexiones como cada uno de los

Elementos). El primer circuito que se armo fue la fuente de alimentación

ya que con ella se suministra el voltaje necesario para la operación de

nuestra cerradura. Se probo con un led que esta etapa estuviera

funcionando a la perfección y se midió con un multímetro que los niveles

de voltaje a la salida fueran los correctos.

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 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 conectados todos los cables al PIC, se conectaron al teclado en los

lugares indicados (poniendo cada cable en el pin del teclado). De tal forma que

todo el circuito de la cerradura y la fuente de alimentación quedara en un solo

circuito.

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, y que los botones de

aceptar y cambiar clave operaran a la perfección.

Page 22: Proyecto Cerradura Electronica

22

FUNCIONAMIENTO. 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 alimentación del circuito se

conserva la clave.

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.

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.

CAMBIO DE LA CLAVE DE ACCESO

1. Pulsar la tecla CAMBIAR CLAVE, entonces aparece durante unos

instantes el mensaje "CAMBIO DE CLAVE"

2. Después te pide la clave con la que se acceso hasta ese

Page 23: Proyecto Cerradura Electronica

23

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 continuación 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.

Si la verificación es correcta se cambia la clave y se muestra el mensaje

"CLAVE CAMBIADA" durante unos segundos.

CODIGO FUENTE. ; Configuración ****************************************************************************************

LIST P=16F876 ;Procesador a usar

RADIX HEX ;Sistema de numeración Hexadecimal predeterminada

INCLUDE P16F876.INC ;Librería incluida, contiene definiciones de registros

internos

;Palabra de Configuración

__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

Page 24: Proyecto Cerradura Electronica

24

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 ; Análogo Digital Configuración

EEDATA EQU 10CH

EEADR EQU 10DH

EECON1 EQU 18CH

EECON2 EQU 18DH

************** ; 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 CUENTA3 EQU 25H

COD1 EQU 26H ; Almacena la primera tecla numérica presionada

COD2 EQU 27H; Almacena la segunda tecla numérica presionada

COD3 EQU 28H ; Almacena la tercera tecla numérica presionada

COD4 EQU 29H ; Almacena la cuarta tecla numérica presionada

CUENTA4 EQU 2AH

COD1A EQU 2BH ; Auxiliar para comprobar código

COD2A EQU 2CH ; Auxiliar para comprobar código

COD3A EQU 2DH ; Auxiliar para comprobar código

COD4A EQU 2EH ; Auxiliar para comprobar código

CODWRITE EQU 2FH ; Auxiliar para escribir código en EEPROM

Page 25: Proyecto Cerradura Electronica

25

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

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

F EQU 1

W EQU 0 ;-------------------------------------------------------------

----------------------------------------------------------------------

; Definiciones

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

----------------------------------------------------------------------------------

Page 26: Proyecto Cerradura Electronica

26

#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 ; Apertura y cierre de la puerta

ORG 00H

GOTO INICIO

ORG 04H

BCF PIR2,4

RETFIE ;----------------------------------------------------------------------------------------------------------------------------------- TABLA

MOVWF PCL ; Hacemos apuntar el PCL a la dirección 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'

Page 27: Proyecto Cerradura Electronica

27

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

RETLW 'E'

RETLW 'D'

RETLW 'E'

RETLW ' '

RETLW 'P'

RETLW 'A'

RETLW 'S'

RETLW 'A'

RETLW 'R'

RETLW 00H ;----------------------------------------------------------------------------------------------------------------------------------- ;Mensaje 3 'Clave Incorrecta' ;----------------------------------------------------------------------------------------------------------------------------------- MEN_3

RETLW 'C'

Page 28: Proyecto Cerradura Electronica

28

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

RETLW 'C'

RETLW 'A'

RETLW 'M'

RETLW 'B'

RETLW 'I'

RETLW 'O'

RETLW ' '

RETLW 'D'

RETLW 'E'

RETLW 00H ;----------------------------------------------------------------------------------------------------------------------------------- ;Mensaje 6 'Antigua'

Page 29: Proyecto Cerradura Electronica

29

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

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

RETLW 'V'

RETLW 'E'

RETLW 'R'

RETLW 'I'

RETLW 'F'

RETLW 'I'

Page 30: Proyecto Cerradura Electronica

30

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

RETLW 'C'

RETLW 'L'

RETLW 'A'

RETLW 'V'

RETLW 'E'

RETLW ' '

RETLW 'D'

Page 31: Proyecto Cerradura Electronica

31

RETLW 'E'

RETLW 'B'

RETLW 'E'

RETLW 00H

;----------------------------------------------------------------------------------------------------------------------------------- ;Mensaje 11 'Tener 4 Dígitos' ;-----------------------------------------------------------------

------------------------------------------------------------------

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

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

RETLW 'I'

RETLW 'N'

RETLW 'T'

RETLW 'E'

Page 32: Proyecto Cerradura Electronica

32

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

CLRF PORTA ; Inicializa el Puerto A

BSF STATUS,5

; Cambiamos al Banco 1 para

Page 33: Proyecto Cerradura Electronica

33

definir las entradas como digitales

MOVLW 06H

; Bits de configuración para las entradas como digitales

MOVWF ADCON1

; Envía la configuración

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 podrán

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

Page 34: Proyecto Cerradura Electronica

34

programa

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

------------------------------------------------------------------------------------

PRINCI

CALL CLEARL ; Borra el Display y coloca el cursor ala izq.

MOVLW 00H

CALL SITUCU ; Coloca el cursor al inicio de la línea superior del LCD

MOVLW MEN_1 ; Cargamos la dirección del Mensaje en el Acumulador

CALL ESCMEN ; Rutina que escribe el mensaje al que apunta el acumulador

MOVLW 44H

CALL SITUCU ; Coloca el cursor al inicio de la línea inferior del LCD

;----------------------------------------------------------------------------------------------------------------------------------- ;ECOD12: Este modulo almacena la primera tecla numérica presionada y valida

; que no sea una tecla de función en caso de 'C' entra a la sección

; de "Cambio de Clave"

ECOD12

Page 35: Proyecto Cerradura Electronica

35

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 numérica

MOVLW '*' ; para mantener oculta la tecla oprimida ;----------------------------------------------------------------------------------------------------------------------------------- ;ECOD22: Este modulo almacena la segunda tecla numérica presionada y valida ; que no sea una tecla de función en caso de 'C' entra a la sección ; 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'

Page 36: Proyecto Cerradura Electronica

36

GOTO CAMBIOC ; cambiamos la clave

MOVF COD2,W ; en caso de que se haya presionado una tecla numérica

MOVLW '*' ; para mantener oculta la tecla oprimida ;-----------------------------------------------------------------------------------------------------------------------------------

;ECOD32: Este modulo almacena la tercera tecla numérica presionada y valida

; que no sea una tecla de función en caso de 'C' entra a la sección

; de "Cambio de Clave"

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

----------------- ------------

-------------------------------------------------------------------------------

ECOD32

CALL SUELKEY

CALL ESPEKEY

MOVWF COD3 SUBLW 'A' BTFSC STATUS,2 ;

GOTO INCOR

MOVF COD3,W SUBLW 'C' BTFSC STATUS,2

GOTO CAMBIOC

MOVF COD3,W

MOVLW '*'

CALL WRITEL

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

--------------------------------------------------------------------------------

Page 37: Proyecto Cerradura Electronica

37

--------------------

;ECOD42: Este modulo almacena la cuarta tecla numérica presionada y valida

; que no sea una tecla de función en caso de 'C' entra a la sección

; de "Cambio de Clave"

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

----------------- ------------

-------------------------------------------------------------------------------

ECOD42

CALL SUELKEY

CALL ESPEKEY

MOVWF COD4 SUBLW 'A' BTFSC STATUS,2

GOTO INCOR

MOVF COD4,W MOVLW 01H ; Leemos el registro de la EEPROM

CALL LEECOD ; donde se encuentra almacenado el código 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 código 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 código correcto

SUBWF COD4 ; Comparamos las teclas

BTFSS STATUS,2 ;

GOTO INCOR ; Si la tecla es incorrecta

CALL CLEARL ; CLAVE CORRECTA

Page 38: Proyecto Cerradura Electronica

38

MOVLW 02H ; Colocamos en posición

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 número 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 ;----------------------------------------------------------------------------------------------------------------------------------- ;INCOR: La clave fue incorrecta y envía el mensaje al LCD ;---------------------------------------------------------------------------------------------

--------------------------------------

INCOR

MOVLW 0CH

CALL COMANDO

CALL CLEARL

MOVLW MEN_3

;Escribeelmensajedeclave incorrecta

CALL ESCMEN ;

DECFSZ INTENTO,F; Decrementa el número de intentos disponibles

GOTO INCOR2 ; Si aún quedan intentos disponibles

GOTO ALARMA ; Si se acabaron los intentos activa la "Alarma"

INCOR2

MOVLW 20H ;Esperauntiempoantesde

CALL DELAY ; Poder intentar el ingreso

GOTO PRINCI

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

Page 39: Proyecto Cerradura Electronica

39

---- ------------

---------------------------------------

;ALARMA: Después de 3 intentos incorrectos de acceso se activa

; la alarma ;-----------------------------------------------------------------------------------------------------------------------------------

ALARMA

MOVLW 1EH

MOVWF TECLA

ALARMA4

MOVLW 03H ;Reiniciamoselnumerodeintentos

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 BSF ALA ; Enciende

CALL FRECU ; Frecuencia de apagado y encendido

BCF ALA ; Apaga

CALL FRECU

DECFSZ CUENTA4,F

GOTO ALARMA3

GOTO ALARMA1

ALARMA2

MOVLW 01H

CALL DELAY

DECFSZ TECLA,F

GOTO ALARMA4

Page 40: Proyecto Cerradura Electronica

40

GOTO PRINCI

FRECU

MOVF CUENTA1,W

MOVWF CUENTA3

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

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

Page 41: Proyecto Cerradura Electronica

41

línea siguiente

CALL COGECOD

; Obtiene el Código Tecleado

MOVLW 00H

; Dirección de la EEPROM donde está almacenado el digito

CALL LEECOD

; Lee el Código de le EEPROM y lo regresa en el acumulador

SUBWF COD1

; compara el código almacenado con el tecleado

BTFSS STATUS,2 ;

GOTO INCORE ; Si no es igual

; Si es igual compara el siguiente digito

MOVLW 01H

; Dirección de la EEPROM donde está almacenado el digito

CALL LEECOD

; Lee el Código de le EEPROM y lo regresa en el acumulador

SUBWF COD2

; compara el código almacenado con el tecleado

BTFSS STATUS,2 ;

GOTO INCORE ; Si no es igual

; Si es igual compara el siguiente digito

MOVLW 02H ; Dirección de

Page 42: Proyecto Cerradura Electronica

42

la EEPROM donde está almacenado el digito

CALL LEECOD

; Lee el Código de le EEPROM y lo regresa en el acumulador

SUBWF COD3

; compara el código almacenado con el tecleado

BTFSS STATUS,2 ;

GOTO INCORE ; Si no es igual

; Si es igual compara el siguiente digito

MOVLW 03H

; Dirección de la EEPROM donde está almacenado el digito

CALL LEECOD

; Lee el Código de le EEPROM y lo regresa en el acumulador

SUBWF COD4

; compara el código almacenado con el tecleado

BTFSS STATUS,2 ;

GOTO INCORE ; Si no es igual

MOVLW 03H ; Si el código fue correcto

MOVWF INTENTO

; Reiniciamos el número de intentos

;----------------------------------------------------------------------------------------------------------------------------------- ;NUEVACL: Capturamos y verificamos la nueva clave y se almacena

; en la EEPROM

Page 43: Proyecto Cerradura Electronica

43

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

--------------------------------------------------

NUEVACL

CALL CLEARL ; Limpiamos el Display

MOVLW 02H

CALL SITUCU ; Colocamos el cursor en la primera línea

MOVLW MEN_7 ; 'NUEVA'

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 se libere la tecla

CALL COGECOD ; Leemos el nuevo código

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

MOVLW MEN_5 ; ' CLAVE'

CALL ESCMEN ; Escribe mensaje

MOVLW 44H ; Colocamos el cursor en la segunda línea

CALL SITUCU ;

CALL SUELKEY ;

Page 44: Proyecto Cerradura Electronica

44

CALL COGECOD ; Obtiene el código

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 ; Dirección 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

MOVLW 01H ; Dirección 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 ; Dirección 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 ; Dirección donde guardara el digito

Page 45: Proyecto Cerradura Electronica

45

CALL EEWRITE ; almacena en EEPROM la clave

MOVLW 20H

CALL DELAY

GOTO PRINCI ;---------------------------------------------------------

--------------------------------------------------------------------------

;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 línea

MOVLW MEN_12 ; 'INTENTELO'

CALL ESCMEN ; Escribe Mensaje

MOVLW 43H ;

CALL SITUCU ; Colocamos el cursor en la segunda línea

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 código 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 línea

MOVLW MEN_11 ; 'TENER 4 DIGITOS'

CALL ESCMEN ; Escribe mensaje

MOVLW 20H

Page 46: Proyecto Cerradura Electronica

46

CALL DELAY

GOTO PRINCI

INCORE

DECF INTENTO,F; Decrementa el número 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 ; Esperamos a que suelte la tecla

GOTO PRINCI ;----------------------------------------------------------------------------------------------------------------------------------- ;COGECOD: Lee el código y lo compara con el antiguo ;----------------------------------------------------------------------------------------------------------------------------------- COGECOD

CLRF COD1 ; Limpiamos las variables

CLRF COD2

CLRF COD3

CLRF COD4 ;----------------------------------------------------------------------------------------------------------------------------------- ;ECOD12C: Lee la primera tecla del código y verifica ; que sea numérica ;----------------------------------------------------------------------------------------------------------------------------------- ECOD12C

CALL SUELKEY ;Esperamosaquesueltelatecla

CALL ESPEKEY ;Esperamosaquesepresionelatecla

MOVWF COD1 ; SUBLW 'A' BTFSC STATUS,2

Page 47: Proyecto Cerradura Electronica

47

RETURN ;Sies'A'

MOVF COD1,W ;Sinoes'A'verificamos'C'

SUBLW 'C' BTFSC STATUS,2

GOTO ECOD12C ;Sies'C'

MOVLW '*' ;Sinoes'C'

CALL WRITEL ;Escribimos'*'enpantalla

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

;ECOD22C: Lee la segunda tecla del código y verifica

; que sea numérica

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

------------------------ -----

-------------------------------------------------------------------------------

ECOD22C

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 ;Sies'A'

MOVF COD1,W ;Sinoes'A'verificamos'C'

SUBLW 'C' BTFSC STATUS,2

GOTO ECOD22C ;Sies'C'

MOVLW '*' ;Sinoes'C'

CALL WRITEL ;Escribimos'*'enpantalla

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

------------------------------------------------------------------------------------------

;ECOD32C: Lee la tercera tecla del código y verifica

; que sea numérico.

Page 48: Proyecto Cerradura Electronica

48

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

Page 49: Proyecto Cerradura Electronica

49