Você está na página 1de 13

Prctica 5.

Cerradura Electrnica implementada en un PIC16F877A

Benemrita Universidad
Autnoma de Puebla
FACULTAD DE CIENCIAS DE LA
ELECTRNICA

PRACTICA 5
Cerradura electrnica
Nombre de la Asignatura:
DESARROLLO DE SISTEMAS BASADOS
EN MICROCOTROLADORES
Profesora:
Aldrin Barreto Flores
Equipo 6

Rugerio Jurez Juan


Arana Aguilar Erick Luis
Mejia Hernandez Davis
Gonzlez Jurez Oswaldo

30 de enero de 2014

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

Prctica 4
Cerradura electrnica implementada en un
Microcontrolador PIC16F877A
Introduccin
Los sistemas con microconroladores tiene como finalidad el proceso de datos. Estos se
obtienen de forma muy variada, puede ser de manera automtica por medio de sensores que
midan parmetros fsicos o de manera manual en cuyo caso tienen que ser suministrados
por los usuarios. Para este ltimo caso se puede usar pulsadores cuando la informacin es
muy simple, tal como se ha hecho hasta ahora, y mediante teclados de mayor o menor
complejidad como los teclados matriciales.
En muchos proyectos tambin es necesario visualizar informacin a travs de una pantalla
de bajo coste. La forma ms utilizada es mediante un display LCD.
Un proyecto el cual puede mostrar el funcionamiento de estos elementos es la realizacin
de una cerradura electrnica.

Objetivo
Implementar

y comprender el funcionamiento de una cerradura electrnica usando


un microcontrolador.

Objetivo Especfico
* Estudiar el funcionamiento de un LCD
* Estudiar la operacin de un teclado
* Estudiar el funcionamiento de la EEPROM
* Estudiar el direccionamiento indirecto
* Estudiar la implementacin de una cerradura electrnica y describir su lgica de
funcionamiento
* Descripcin de cambios y adecuaciones necesarias a las libreras proporcionadas
* Implementar la cerradura electrnica en PIC16F877A

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

Desarrollo
Cerradura Electrnica: la salida se activa cuando una clave de varios dgitos introducida por
teclado sea correcta. El esquema se describe en la figura 1. Tiene una salida
"CerraduraSalida" que, cuando se habilita, activa durante unos segundos el electroimn de
la cerradura permitiendo la apertura de la puerta:
- Si (CerraduraSalida) = 1, la puerta se puede abrir.
- Si (CerraduraSalida) = 0, la puerta no se puede abrir.
Funcionamiento:
- En pantalla visualiza "Introduzca CLAVE". Segn se va escribiendo, visualiza asteriscos
'*'.
- Cuando termine de escribir la clave pueden darse dos posibilidades:
Si la clave es incorrecta la cerradura sigue inactivada, en pantalla aparece el
mensaje "Clave INCORRECTA" durante unos segundos y tiene que repetir de nuevo el
proceso.
Si la clave es correcta la cerradura se activa durante unos segundos y la puerta puede ser
abierta. En pantalla aparece: "Clave CORRECTA" (primera lnea) y "Abra la puerta"
(segunda lnea). Pasados unos segundos, se repite el proceso.

Figura 1

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

El programa de control s expone a continuacin:


__CONFIG
_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST
P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK
ENDC

0x0C

; La clave puede tener cualquier tamao y su longitud se calcula:


#DEFINE
#DEFINE

LongitudClave (FinClaveSecreta-ClaveSecreta)
CerraduraSalida
PORTA,3

; ZONA DE CDIGOS
********************************************************************
ORG
goto
ORG
goto

0
Inicio
4
ServicioInterrupcion

Mensajes
addwf
PCL,F
MensajeTeclee
DT
"Teclee CLAVE:", 0x00
MensajeClaveCorrecta
DT
"Clave CORRECTA", 0x00
MensajeAbraPuerta
DT
"Abra la puerta", 0x00
MensajeClaveIncorrecta
DT
"Clave INCORRECTA", 0x00
;
LeeClaveSecreta
addwf
PCL,F
ClaveSecreta
DT
4h,5h,6h,0Eh
; Ejemplo de clave secreta.
DT
7h,8h
FinClaveSecreta
Inicio call
LCD_Inicializa
bsf
STATUS,RP0
bcf
CerraduraSalida
bcf
STATUS,RP0
call
Teclado_Inicializa
teclado.
call
InicializaTodo
registros.
movlw
b'10001000'
general.
movwf
INTCON
Principal
sleep
pulse alguna tecla.
goto
Principal

; Define como salida.


; Configura las lneas del
; Inicializa el resto de los
; Habilita la interrupcin RBI y la

; Espera en modo bajo consumo que

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

; Subrutina "ServicioInterrupcion" ----------------------------------------------------;


CBLOCK
ContadorCaracteres
GuardaClaveTecleada
ENDC
ServicioInterrupcion
call
Teclado_LeeHex
; Obtiene el valor hexadecimal de
la tecla pulsada.
;
; Segn va introduciendo los dgitos de la clave, estos van siendo
almacenados a partir de
; las posiciones RAM "ClaveTecleada" mediante direccionamiento indirecto
y utilizando el
; FSR como apuntador. Por cada dgito ledo en pantalla se visualiza un
asterisco.
;
movwf
INDF
; Almacena ese dgito en memoria
RAM con
; con direccionamiento indirecto
apuntado por FSR.
movlw
'*'
; Visualiza asterisco.
call
LCD_Caracter
incf
FSR,F
; Apunta a la prxima posicin de
RAM.
incf
ContadorCaracteres,F
; Cuenta el nmero de teclas
pulsadas.
movlw
LongitudClave
; Comprueba si ha introducido
tantos caracteres
subwf
ContadorCaracteres,W
; como longitud tiene la clave
secreta.
btfss
STATUS,C
; Ha terminado de introducir
caracteres?
goto
FinInterrupcion
; No, pues lee el siguiente
carcter tecleado.
;
; Si ha llegado aqu es porque ha terminado de introducir el mximo de
dgitos. Ahora
; procede a comprobar si la clave es correcta. Para ello va comparando
cada uno de los
; dgitos almacenados en las posiciones RAM a partir de "ClaveTecleada"
con el valor
; correcto de la clave almacenado en la posicin ROM "ClaveSecreta".
;
; Para acceder a las posiciones de memoria RAM a partir de
"ClaveTecleada" utiliza
; direccionamiento indirecto siendo FSR el apuntador.
;
; Para acceder a memoria ROM "ClaveSecreta" se utiliza direccionamiento
indexado con el
; el registro ContadorCaracteres como apuntador.
;
call
LCD_Borra
; Borra la pantalla.
clrf
ContadorCaracteres
; Va a leer el primer
carcter almacenado en ROM.

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

movlw
ClaveTecleada
RAM donde se ha
movwf
FSR
ComparaClaves
movf
INDF,W
en RAM.
movwf
GuardaClaveTecleada
despus.
movf
ContadorCaracteres,W
call
LeeClaveSecreta
secreta.
subwf
GuardaClaveTecleada,W
btfss
STATUS,Z
goto
ClaveIncorrecta
incorrecta.
incf
FSR,F
RAM.
incf
ContadorCaracteres,F
ROM.
movlw
LongitudClave
caracteres
subwf
ContadorCaracteres,W
secreta.
btfss
STATUS,C
caracteres?
goto
ComparaClaves
carcter.
ClaveCorrecta
Aparecen los mensajes
movlw
MensajeClaveCorrecta
apertura de la
call
LCD_Mensaje
call
LCD_Linea2
movlw
MensajeAbraPuerta
call
LCD_Mensaje
bsf
CerraduraSalida
segundos.
goto
Retardo
ClaveIncorrecta
movlw
MensajeClaveIncorrecta
call
LCD_Mensaje
Retardo
call
Retardo_2s
call
Retardo_1s
InicializaTodo
bcf
CerraduraSalida
clrf
ContadorCaracteres
movlw
ClaveTecleada
de la RAM
movwf
FSR
tecleada.
call
LCD_Borra
movlw
MensajeTeclee
introduzca la clave.
call
LCD_Mensaje
call
LCD_Linea2
la segunda lnea.

; Apunta a la primera posicin de


; guardado la clave tecleada.
; Lee la clave tecleada y guardada
; La guarda para compararla
; Apunta al carcter de ROM a leer.
; En (W) el carcter de la clave
; Se comparan.
; Son iguales?, Z=1?
; No, pues la clave tecleada es
; Apunta a la prxima posicin de
; Apunta a la prxima posicin de
; Comprueba si ha comparado tantos
; como longitud tiene la clave
; Ha terminado de comparar
; No, pues compara el siguiente
; La clave ha sido correcta.
; correspondientes y permite la
; puerta durante unos segundos.

; Activa la cerradura durante unos

; Desactiva la cerradura.
; Inicializa este contador.
; FSR apunta a la primera direccin
; donde se va a almacenar la clave
; Borra la pantalla.
; Aparece el mensaje para que
; Los asteriscos se visualizan en

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

FinInterrupcion
call
Teclado_EsperaDejePulsar
bcf
INTCON,RBIF
retfie
INCLUDE
INCLUDE
INCLUDE
INCLUDE

<TECLADO.INC>
<LCD_4BIT.INC>
<LCD_MENS.INC>
<RETARDOS.INC>

; Las posiciones de memoria RAM donde se guardar la clave leda se


definen al final, despus
; de los Includes, ya que van a ocupar varias posiciones de memoria
mediante el
; direccionamiento indirecto utilizado.
CBLOCK
ClaveTecleada
ENDC
END

; Fin del programa.

Como se observa este programa se implementa en un PIC16F84A peo para nuestro caso
utilizaremos un PIC16F877A por lo que es necesario realizar algunas modificaciones.

Implementacin del experimento o sistema


Los cambios a realizar en el programa se resumen en estos principales:

Primero: Adaptar las directivas LIST, INCLUDE, CONFIG Y CBLOCK tal como se
muestra en el ejemplo.

Segundo: Poner al cero el bit RP1 del STATUS para acceder al Banco 0.
Tercero: Configurar como digitales las lneas del Puerto A cargando en el registro
ADCON1 el valor adecuado.

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

Cambiar el bus de datos de la librera LCD_4BIT.INC que est en el puerto B por el puerto
C. esto para evitar interferencia de comandos ya que estas mismas lneas son ocupadas por
el teclado.

Adems de las subrutinas necesarias para el funcionamiento se utiliz el direccionamiento


indirecto para poder guardar la clave tecleada el cual se explica a continuacin:
La direccin del dato se encuentra contenida en el registro INDF. Cada vez que se hace
referencia a este se utiliza el contenido del registro FSR para direccionar el operando.
Para el direccionamiento indirecto se utilizan los registro INDF y FSR ubicados dentro de
la zona de registros especiales, concretamente en las posiciones 00h y 04h del Banco 0,
aunque el registro INDF no este implementado fsicamente.
El registro FSR sirve como puntero para el direccionamiento indirecto. Si en cualquier
instruccin se opera con el registro INDF, en realidad se estar operando con la direccin
donde apunte el contenido del registro FSR. Ejemplo:

Figura 2

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

Lo que comprende al teclado matricial se tiene que este est constituido por una matriz de
pulsadores dispuestos en filas y columnas ver figura 3.

Figura 3
Para detectar si hay alguna tecla pulsada se aplica a las filas un nivel bajo y tres altos. Si se
presiona alguna tecla en la fila por lo que se aplica el nivel bajo, ese nivel bajo aparecer en
la columna correspondiente con la que ha hecho el contacto. La subrutina TECLADI.INC
se encarga de toda esta operacin.
Las pantallas de cristal lquido o display LCD para mensajes tiene la capacidada para
mostrar cualquier carcter alfanumrico, permitiendo representar la informacin que genera
cualquier equipo electrnico. La pantalla consta de una matriz de caracteres (normalmente
de 5x7 puntos) distribuidos en una, dos, tres o cuatro lneas de 16 hasta 40 caracteres cada
lnea. El proceso de visualizacin es gobernar por un microcontrolador incorporado a la
pantalla.
En nuestro caso utilizaremos el modulo LCD 1602A el cual posee una zona de memoria
RAM llamada DDRAM donde se almacean los caracteres que se pueden representar. A
travs del bus de datos (DB7-DB0) podemos mandar distintos dados correspondientes a
cada carcter.
A continuacin se muestra una simulacin:

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

Figura 4

Instrumentacin
Material:

Modulo LCD 1602A


Teclado matricial
Oscilador de cristal de 4Mhz
2 capacitores de 22pf
Interruptor pulsador
Led
Resistencia de 1k y 10k.
Potencimetro de 10k.
Microcontrolador PIC16f877A.
Tablilla de prototipos

Equipo:
Fuente de alimentacin de CD
Multmetro
Computadora con el MPLAB instalado
Programador universal o de microcontroladores PIC

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

9. Resultados

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

Ay que mencionar que el teclado matricial que se compr viene con las filas y columnas de
forma invertida de como se muestra en el libro.

Prctica 5. Cerradura Electrnica implementada en un PIC16F877A

11. Conclusiones
El uso de otro microcontrolador para esta prctica implica diversos cambios debido a que cl
PIC16F877A posee mayor capacidad en cuanto a memoria como cantidad de pines ademas que
tiene otras caractersticas que el PIC16F84A no posee como las entradas analgicas del puerto a las
cuales se tuvieron que cambiar a digitales para el correcto funcionamiento.
Esta fue una buena prctica para conocer el funcionamiento de diversos dispositivos y como pueden
interactuar.

12. Referencias
[1] Enrique Palacios, Fernando Ramiro, Microcontrolador PIC16F84A desarrollo
de proyectos, 2004, Mxico, 1-119.

Você também pode gostar