Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MULTIUSUARIO PARA
PUERTAS INTERIORES DE
ALTA SEGURIDAD
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN
AREQUIPA – PERU
2000
TABLA DE CONTENIDOS
Prologo...................................................................................................4
Introducción...........................................................................................6
Especificaciones.....................................................................................7
Grafico de teclado...................................................................................8
Bibliografía.............................................................................................36
Apéndice C “Emulador”..........................................................................CD
PROLOGO
• OBJETIVOS
• METODOLOGÍA
• HERRAMIENTAS UTILIZADAS
ESPECIFICACIONES
Hemos desarrollado un pequeño proyecto suponiendo que hemos sido
contratados por una empresa fabricante de puertas de alta seguridad para diseñar y
fabricar la parte electrónica de una cerradura multiusuario.
Las claves de cada usuario serán de seis dígitos, para entrar deberán
pulsarse después del número de usuario (1 a 20).
Teclado
1 2 3
4 5 6
7 8 9
Bloqu 0 Clear
Stand – by (1)
Puerta abierta (2)
El sistema deberá contar con un sistema guardián que no permita que se este probando
claves en forma aleatoria este los pondrá el sistema bloqueado por un tiempo necesario como
una medida de seguridad.
Los plazos de entrega se fijan en un mes para la entrega de documentos, dos meses
para la presentación del prototipo y de tres a seis meses la entrega del producto, dependiendo
de la cantidad de unidades pedidas.
Se utiliza un display de ánodo común, las resistencias limitadoras podrían ser de 330
ohmios. El buffer que maneja la cerradura debe ser capaz de suministrar la corriente solicitada
(100 mA), podría ser un ULN 2003. En cuanto a los inversores que manejan el display,
podrían obtenerse mediante dos circuitos integrados 7405.
DIAGRAMA DE SOFTWARE
En cuanto al software, se basa en una lectura continua del teclado, saltando a uno u otro sitio
dependiendo de un registro de estado, haciendo después un test de botón liberado para volver
de nuevo a la lectura del teclado.
Quizá la parte más interesante del programa es la propia lectura del teclado, que se
hace “rastreando”, es decir, ponemos un 0 lógico en el pin correspondiente a la primera
columna (P1.0) con todos los demás a 1, después leemos del puerto y miramos si tenemos un
0 en alguna de las filas (P1.4 a P1.7), lo cual querrá decir que hemos presionado uno de los
botones.
Estructura de datos
Primer dígito de la clave
Segundo dígito de la clave
Tercer dígito de la clave
Cuarto dígito de la clave
Quinto dígito de la clave
Sexto dígito de la clave
Nº máximo de accesos permitidos
Contador de accesos
Debemos precisar que existe una rutina de testeo de tecla presionada que se llama
TESTOFF, que detecta si la tecla ha dejado de ser presionada para poder continuar con el
testeo para ver que otra tecla se presiono.
Si la clave es incorrecta va hacia una subrutina que resetea todos los valores para que
se digite de nuevo al usuario y luego la clave, si se introdujo erróneamente la clave el
programa entra en un estado bloqueado durante 5 minutos, este estado no puede ser parado
por nadie, si la clave ha sido correcta y si es usuario normal se abre la puerta y se cuenta una
entrada a favor del usuario, si el usuario es el superusuario, lo siguiente es ingresar el numero
de usuario a modificar o si desea limpiar todas las entradas de los contadores de los usuarios o
bloquear el teclado.
Debemos hacer algunas precisiones acerca del criterio de seguridad que se pensó y de
acuerdo a la necesidad de nuestro cliente, el superusuario no tiene por que saber las claves de
los usuarios dicha clave es solo responsabilidad del los usuarios, el sistema es totalmente
flexible en cuanto a las claves todas las claves se pueden cambiar, se pensó en un criterio para
que el superusuario pueda ingresar por la puerta con una combinación de dos teclas, mas es
potestad del cliente si es que el superusuario pueda entrar o no, se considero que en
superusuario pueda abrir la puerta en este caso mas no se va describir cuales son las dos
teclas.
Presentamos algunos flujo gramas que se utilizaron en la elaboración del proyecto y que serán
útiles a un mejor entendimiento del lector.
CODIGO FUENTE COMPLETO
ESP EQU 001110000B ; ESTOS SON LOS CODIGOS QUE DEBEN SALIR POR LOS
LAA EQU 011110111B ; PUERTOS P0 Y P2 PARA VISUALIZAR LOS DISTINTOS
LAE EQU 001111001B ; SIMBOLOS EN EL DISPLAY.
LAU EQU 000111110B ; EL DE LA 'A' PONE TAMBIEN A 1 EL BIT QUE ABRE
LAV EQU 000110001B ; LA PUERTA
RAYA EQU 001000000B
LAL EQU 000111000B
CERO EQU 000111111B
UNO EQU 000000110B
DOS EQU 001011011B
TRES EQU 001001111B
CUATRO EQU 001100110B
CINCO EQU 001101101B
SEIS EQU 001111101B
SIETE EQU 000000111B
OCHO EQU 001111111B
NUEVE EQU 001100111B
;--------------------------------------------------------------------
;RUTINA DE TESTEO DE TECLADO
;--------------------------------------------------------------------
;TABLA DE REGISTROS Y TOMA DE DECICIONES
SIG8: CJNE A,#012H,SIG9 ;SI 12H, HEMOS INTRODUCIDO PRIMER DIGITO CLAVE
A
AJMP SCLAV ;MODIFICAR
;--------------------------------------------------------------------
;TABLA DE COMPARACION DE TECLAS
;--------------------------------------------------------------------------
-----;ASIGNACION REAL DE VALORES A LAS TECLAS Y VALORES DE DISPLAY
T: MOV A,#CERO
MOV R5,#00
SJMP NUMER
UNITD: INC R0
MOV P0,B ;SI SON UNIDADES LAS SUMAMOS CON
LAS
MOV A,R5 ;DECENAS
ADD A,R6
;--------------------------------------------------------------------
;TABLA DE USUARIOS
;--------------------------------------------------------------------
;REGISTRO EN MEMORIA DE USUARIOS
;--------------------------------------------------------------------
CLEAR: MOV R2,#14H ;PARA BORRAR TODOS LOS CONTADORES (SON 20)
MOV R1,#3DH ;METEMOS EN R1 LA PRIMERA DIRECCION
BUCLE: MOV A,#00 ;PONEMOS UN CERO EN LA DIRECCION
MOV @R1,A ;APUNTADA POR R1
MOV A,R1 ;LE SUMAMOS 8
ADD A,#08 ;A R1
MOV R1,A
DJNZ R2,BUCLE ;SE DECREMENTA R2, SI NO HA LLEGADO A 0,SIGUE
MOV R0,#00 ;VOLVEMOS A STAND-BY SI HEMOS TERMINADO
MOV A,#RAYA
MOV P0,A
MOV P2,#00
AJMP TSTOFF
;--------------------------------------------------------------------
BLOQ: MOV R1,#30H ;SI BLOQUEAMOS, DEJAMOS PREPARADO EL SISTEMA
MOV R0,#20H ;PARA SER DESBLOQUEADO SOLO POR EL SUPERUSUARIO
MOV A,#LAL ;PONEMOS UNA 'L' EL EL DISPLAY
MOV P0,A
MOV P2,#00
AJMP TSTOFF
;--------------------------------------------------------------------
;COMPARACION DE CLAVE
INC R1
MOV A,R4 ;TERCERO
XRL A,@R1
ADD A,R6
MOV R6,A
INC R1
MOV A,R5 ;CUARTO
XRL A,@R1
ADD A,R6
MOV R6,A
INC R1
MOV A,B ;QUINTO
XRL A,@R1
ADD A,R6
MOV R6,A
INC R1
MOV A,R7 ;SEXTO
XRL A,@R1
ADD A,R6
JNZ MAL
MOV A,R1
PUSH ACC
MOV R1,#2FH
MOV @R1,#03
POP ACC
MOV R1,A
;--------------------------------------------------------------------
SCLAV: MOV A,R7 ;AQUI SE GUARDA LA CLAVE DE UN USUARIO
MOV @R1,A ;SE METE EL DIGITO EN LA POSICION DE
INC R1 ;MEMORIA APUNTADA POR R1
INC R0 ;INCREMENTAMOS REGISTRO DE ESTADO
MOV A,R0
CJNE A,#018H,SALTO ;SI EL ESTADO NO ES 1H, SEGUIMOS
MOV A,R1
CJNE A,#036H,SIGUE ;SI NO ESTAMOS DETERMONANDO CLAVE DE
SJMP VUELVE ;SUPERUSUARIO, SEGUIMOS CON ACCESOS
SIGUE: MOV A,#LAV ;AUTORIZADOS
MOV P0,A
MOV P2,#00
SALTO: AJMP TSTOFF
;--------------------------------------------------------------------
SVECE: MOV A,R7
• Las consideraciones necesarias para que el sistema no falle por la perdida de energía
eléctrica, evento que ocasionaría el borrado de los datos almacenados (password
,#accesos) en la memoria RAM del microcontrolador. Hemos visto la necesidad del
uso de un sistema de alimentación de emergencia como un UPS que estabilice la
energía eléctrica y que pueda alimentar al sistema para resguardar los datos.
• Se incluyo como una medida que mejore la seguridad del sistema la inclusión de seis
dígitos numéricos en la clave de usuario y una rutina guardián que no permita el
manipuleo indebido de las claves.
Bibliografía
• GONZALES VASQUES, JOSE ADOLFO
Microprocesadores , fundamentos diseño y aplicación
• WWW.KEIL.COM
APÉNDICE A
tiempo de retardo
valor del bucle =
ciclo de maquina
3ms
valor del bucle = ≅ 255 = FFh
12 µs
Valor de bucle.- es el valor de repeticiones que hace el programa cuando se encuentra
en un bucle.
Si sabemos que el máximo valor que puede contar el TIMER 0 es de FFFFh o 65535
entonces:
El tiempo necesario para este retardo fue considerado en 5 min.= 300 seg.
Si contamos hasta FFFFh han transcurrido 078642 seg. Para 5 min. Necesitamos que
esta cuenta se repita aproximadamente 381 veces para que se llegue al tiempo
establecido, pero para salvar el problema de almacenar en un registro (de 8 bits) el
numero cuenta que es de 12 bits entonces partimos la cuenta en 2.
d) PROBABILIDADES