Sei sulla pagina 1di 31

CERRADURA ELECTRNICA MULTIUSUARIO PARA PUERTAS INTERIORES DE ALTA SEGURIDAD UNIVERSIDAD NACIONAL DE SAN AGUSTN FACULTAD DE PRODUCCIN Y SERVICIOS

ESCUELA PROFESIONAL DE INGENIERIA ELECTRNICA TITULO DEL TRABAJO CERRADURA ELECTRNICA MULTIUSUARIO AREQUIPA PERU 2000 TABLA DE CONTENIDOS Prologo...................................................................................................4 Introduccin...........................................................................................6 Especificaciones.....................................................................................7 Grafico de teclado...................................................................................8 Grafico visualizacin de display............................................................10 Diagrama de bloques del hardware........................................................12 Diagrama de bloques del software.........................................................13 Tabla de la estructura de datos...............................................................13 Grficos de lectura de teclado................................................................1417 Flujo grama de la estructura del programa.............................................19 Flujo grama de los modos de usuario.....................................................20 Flujo grama de modo superusuario.........................................................21 Diagrama esquemtico completo............................................................22 Cdigo fuente del programa....................................................................22 Conclusiones y consideraciones finales..................................................36 Bibliografa.............................................................................................36 1

Apndice A Clculos de Tiempos.......................................................37 Apndice B Datos tcnicos de los componentes...................................39 Apndice C Emulador..........................................................................CD PROLOGO OBJETIVOS El presente trabajo fue concebido con los siguientes objetivo: Desarrollar una aplicacin con microcontrolador ya que el desarrollo de la electrnica digital y en general de toda la electrnica tiene una tendencia la reduccin del hardware que se utiliza, tomando como una alternativa altamente eficiente y rentable la implementacin por software mediante dispositivos programables como son los microcontroladores (8052) los cuales hacen posible la implementacin de aplicaciones en una forma mas sencilla. Dar una visin practica de los principios de diseo de sistemas implementados con microcontroladores. Convencer a la necesidad de la implementacin de los diseos tradicionales con aplicaciones empleando microcontroladores. Ensear ha manejar las herramientas de diseo con microcontroladores. METODOLOGA Sea ha procurado dar una distribucin adecuada de los contenidos de acuerdo a las etapas en las que se ha desarrollado el proyecto. Comenzamos haciendo una introduccin al desarrollo del sistema , se describir en forma detallada las especificaciones necesarias que se han considerado en el desarrollo de nuestro sistema . Plantearemos la estructura que tendr nuestro programa de software en forma de flujo gramas el cual ser muy til para la elaboracin del cdigo y posterior mejora en el. Se diseara un detallado y elaborado circuito esquemtico el cual ser definitivo para la implementacin final de dicho sistema . Se documentara en forma detallada cara parte de nuestro programa, se incluir todo el cdigo fuente en ensamblador debidamente documentado. Referiremos las consideraciones y conclusiones finales necesarias obtenidas a la finalizacin de dicho proyecto. Finalmente ajuntaremos algunos apndices que contendrn la descripcin del simulador usado, las caractersticas de los circuitos usados y todos los clculos justificativos HERRAMIENTAS UTILIZADAS Se utilizo el PK51 VISION COMPILADOR, y el simulador DSCOPE para 8052, se utilizo tambin en el dibujo del circuito esquemtico el programa CIRCUIT MAKER 6, y ORCAD 9. INTRODUCCIN

El proyecto que se va ha desarrollar ha sido considerado en un supuesto contrato que nos ha hecho una empresa fabricante de puertas de alta seguridad TRANQUERA la cual esta desarrollando una puerta interior para el LABORATORIO DE MUESTRAS CLINICAS de la Universidad Nacional de San Agustn. La empresa fabricante de puertas TRANQUERA nos ha hecho un subcontrato para el diseo e implementacin tan solo de la parte electrnica, pues ellos se encargaran del desarrollo de la parte elctrica y mecnica de dicha. En general nuestro trabajo constara del diseo e implementacin de una cerradura multiusuario. ESPECIFICACIONES Hemos desarrollado un pequeo proyecto suponiendo que hemos sido contratados por una empresa fabricante de puertas de alta seguridad para disear y fabricar la parte electrnica de una cerradura multiusuario. El sistema estar colocado en puertas interiores, es decir, no estar en la calle. Controlar accesos a laboratorios. En definitiva, se usar en recintos donde el acceso deba estar muy restringido y controlado. Habr un mximo de 20 usuarios, contando adems con un superusuario que se encargar de la gestin del sistema. Tambin contar cada usuario con un nmero de accesos autorizados determinado por el superusuario (de 0 a 99), de manera que, por ejemplo, un empleado de la limpieza solo podr acceder al recinto un par de veces diarias, y el encargado del lugar, 50. Las claves de cada usuario sern de seis dgitos, para entrar debern pulsarse despus del nmero de usuario (1 a 20). El superusuario ser el 0, y cuando entre en el sistema, podr modificar la clave y el nmero de accesos autorizados de cualquier usuario incluyendo su misma clave. Adems, podr bloquear el sistema para que nadie entre y poner los contadores de entradas a cero. La entrada de datos se har por medio de un teclado con 12 pulsadores y el control del sistema se llevar por medio de dos displays de siete segmentos.

El funcionamiento ser el siguiente: partiendo del estado de espera (standby), en el que se visualizar (1) en el display, se introduce el nmero de usuario (00 para superusuario), y aparece dicho nmero en el display, a continuacin se introduce la clave de 6 dgitos, los cuales no se visualizan por razones obvias. Si la clave ha sido correcta y no se trata del superusuario, se abre la puerta durante unos segundos al tiempo que aparece (2) en el display, volviendo a standby. En caso de que la clave haya sido incorrecta, aparecer (3) en el display durante unos segundos para volver despus a standby. En caso de que la clave haya sido correcta y se trate del superusuario, se visualizar (4) en el display, indicando que se espera el nmero de usuario a modificar o bien la orden de borrar contadores o de bloqueo del sistema. Si pulsamos una de las teclas numricas, diremos al sistema que modificaremos lo que atae a ese usuario, visualizndose su nmero en el display. En primer lugar, debemos introducir su clave, que quedar grabada en la memoria y ser la que deber utilizar dicho usuario de aqu en adelante. Al introducir el sexto dgito de la clave, se pedir el nmero de accesos autorizados para el usuario en cuestin visualizndose (5) en el display (excepto que superusuario est modificando superusuario, en cuyo caso la operacin terminar con 3

la introduccin de la clave). Para ello, se introducirn primero decenas y luego unidades, de manera que si los accesos autorizados son 2, teclearemos 02. Despus de esto, volveremos al estado de standby, visualizndose (1). Si se entra al sistema como superusuario, se pueden tambin borrar los contadores simplemente pulsando la tecla indicada para ello despus de la clave. Existe la posibilidad de bloquear el sistema, impidiendo la entrada a todos los usuarios, pulsando en modo superusuario la tecla de bloqueo, con lo que aparece en el display (6). De este estado de bloqueo solo es posible salir tecleando directamente la clave de superusuario.

DISPLAY

Se montar el teclado y el display sobre un circuito impreso y el resto del circuito en otro. Se interconectarn ambos por medio de una cinta de 20 conductores y la separacin mxima entre placas ser de 20 cms. La fuente de alimentacin ser blindada y con una batera de emergencia. El circuito no estar sometido a fuertes vibraciones ni a cambios bruscos de temperatura ni a humedades extremas, as como tampoco tendr que soportar fluctuaciones importantes de tensin. La salida para activar la cerradura ser de 5V, 100mA. El sistema deber contar con un sistema guardin 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 presentacin del prototipo y de tres a seis meses la entrega del producto, dependiendo de la cantidad de unidades pedidas. El sistema se construye a partir de un microcontrolador 8052. La velocidad de reloj se fija a 1 MHz no siendo necesaria una velocidad mayor para el correcto funcionamiento del aparato. Con el objeto de simplificar el hardware en lo posible, se prescinde de toda circuitera asociada al teclado, haciendo una conexin matricial de los contactos del mismo (un terminal por fila, uno por columna) y conectando los siete terminales resultantes a uno de los puertos del microcontrolador. De esta manera, complicamos un poco el software pero obtenemos un ahorro importante en los costos de produccin. DIAGRAMA DE BLOQUES DE HARDWARE A continuacin se muestra el esquema elctrico del circuito, obviando alimentaciones y circuitera de reloj: Se utiliza un display de nodo comn, las resistencias limitadoras podran ser de 330 ohmios. El buffer que maneja la cerradura debe ser capaz de suministrar la corriente solicitada (100 mA), podra ser un ULN 2003. En cuanto a los inversores que manejan el display, podran obtenerse mediante dos circuitos integrados 7405. Se opta por subcontratar la fabricacin de la fuente de alimentacin y del teclado, as como el diseo y fabricacin de las placas de circuito impreso. 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 despus un test de botn liberado para volver de nuevo a la lectura del teclado. Quiz la parte ms interesante del programa es la propia lectura del teclado, que se hace rastreando, es decir, 4

ponemos un 0 lgico en el pin correspondiente a la primera columna (P1.0) con todos los dems a 1, despus 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. En cuanto a la estructura de datos utilizada, se almacenan todos los datos de cada usuario en ocho bytes consecutivos de memoria RAM interna. Un byte por dgito de la clave, uno para el nmero de accesos autorizados y otro ms como contador de accesos. Obviamente, el superusuario solo necesita de seis bytes, ya que no tiene limitado el nmero de accesos al sistema. 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. Tenemos implementado un base de registros donde el programa de acuerdo a los acontecimientos el programa sabe a donde debe de ir, esta tabla de registros direcciona todas las acciones del sistema, como el ingreso de los usuarios que se hace de acuerdo a una tabla en la cual se registra todos los datos de los usuarios en memoria. Despus tenemos la rutina de captura de clave que se va almacenar en algunos registros de modo que al concluir el ingreso del ultimo digito de la clave paso siguiente pasa a verificar si la clave que se ha digitado es la correcta y a quien pertenece si a un usuario normal o al superusuario. 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 errneamente 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. Si decide modificar un usuario (inclusive el superusuario) puede cambiar la clave ingresando la nueva clave, y darle un numero de accesos (entradas por la puerta excepto superusuario) , en ese orden y ah finaliza modo superusuario y regresa al modo stand by. 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 combinacin 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 elaboracin del proyecto y que sern 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 ORG 000 ;SALTO AL INICIO AJMP INICIO ORG 000BH ;VECTOR DE INTERRUPCION TIMER 0 AJMP TIMER ORG 001BH ;VECTOR DE INTERRUPCION TIMER 1 AJMP PAUSA INICIO: MOV TMOD,#000010001B ;INICIALIZAMOS LOS TIMER EN MODO 1 MOV IE,#010001010B ;HABILITAMOS INTERRUPCION TIMER 0,1 MOV R1,#30H ; MOV R2,#06H ;LE DAMOS UNA CLAVE AL SUPERUSUARIO MOV P2,#000000000B;BLANQUEMOS DISPLAY UNO

MOV P0,#000000000B;BLANQUEMOS DISPLAY DOS CLAVIN: MOV @R1,#010000010B ;PARA QUE PUEDA ENTRAR INC R1 DJNZ R2,CLAVIN MOV A,#ESP ;SACAMOS UN SIMBOLO EN LO QUE HACEMOS UN MOV P0,A ;DELAY LCALL DELAY ;HACEMOS EL DELAY MOV A,#RAYA ;VISUALIZAMOS UNA RAYA (STANDBY) MOV P0,A MOV A,R1 PUSH ACC MOV R1,#2FH MOV @R1,#03H POP ACC MOV R1,A ; ;RUTINA DE TESTEO DE TECLADO TSTON: MOV A,#0FEH ;TESTEO DE LA PRIMERA COLUMNA DEL TECLADO MOV P1,A ; CPL A ;COMPLEMENTAMOS LO SACADO POR EL PTO. MOV R7,A ;GUARDAMOS EN R7 MOV A,P1 ;LEEMOS DEL PUERTO ORL A,#0FH ;PONEMOS A UNO LOS 4 DE MENOR PESO (COLUMNAS) CPL A ;COMPLEMENTAMOS JNZ BOTON ;SI NO ES CERO, SE HA PULSADO UNA TECLA MOV A,#0FDH ;TESTEO DE LA SEGUNDA COLUMNA

MOV P1,A CPL A MOV R7,A MOV A,P1 ORL A,#0FH CPL A JNZ BOTON MOV A,#0FBH ;TESTEO DE LA TERCERA COLUMNA MOV P1,A CPL A MOV R7,A MOV A,P1 ORL A,#0FH CPL A JNZ BOTON SJMP TSTON ;EMPEZAMOS DE NUEVO TSTOFF: MOV A,#0F0H ;AQUI SE TESTEA SI SE HA DEJADO DE PULSAR LA TECLA MOV P1,A ;SACAMOS UN CERO POR TODAS LAS COLUMNAS MOV A,P1 ;LEEMOS DEL PUERTO ORL A,#0FH ;PONEMOS A UNO TODOS LOS 4 DE MENOR PESO (COLUMNAS) CPL A ;COMPLEMENTAMOS JNZ TSTOFF ;SI NO ES CERO, LA TECLA SIGUE PULSADA, VUELTA ATRAS MOV R7,#0FFH ;HACEMOS UN PEQUEO DELAY PARA EVITAR POSIBLES DLY: DJNZ R7,DLY ;REBOTES MOV A,#0F0H ;VOLVEMOS A HACER EL TEST MOV P1,A

MOV A,P1 ORL A,#0FH CPL A JNZ TSTOFF AJMP TSTON ;SI PASA EL TEST, VOLVEMOS A VER SI SE PULSA OTRA ; ;TABLA DE REGISTROS Y TOMA DE DECICIONES BOTON: ORL A,R7 ;INCLUIMOS EN A, LA COLUMNA QUE SE TESTEABA MOV R7,A ;LO GUARDAMOS EN R7 (TECLA PULSADA) ;LO SIGUIENTE, SON SALTOS CONDICIONALES SEGUN ESTADO MOV A,R0 ;R0 ES EL REGISTRO DE ESTADO CJNE A,#00,SIGA ;SI ES 00, HEMOS INTRODUCIDO USUARIO DECENAS AJMP TECLA SIGA: CJNE A,#01,SIG0 ;SI ES 01, HEMOS INTRODUCIDO USUARIO UNIDADES AJMP TECLA SIG0: CJNE A,#002,SIG1 ;SI 02, HEMOS INTRODUCIDO PRIMER DIGITO CLAVE AJMP PRIMER SIG1: CJNE A,#003,SIG2 ;SI 03, EL SEGUNDO AJMP SEGUN SIG2: CJNE A,#004,SIG3 ;SI 04, TERCERO AJMP TERCE SIG3: CJNE A,#005,SIG4 ;SI 05, EL CUARTO AJMP CUART SIG4: CJNE A,#006,SIG5 ;SI 06, EL QUINTO AJMP QUINT SIG5: CJNE A,#007,SIG6 ;SI 07, EL SEXTO, RECONOCEMOS CLAVE

10

AJMP CLAV SIG6: CJNE A,#010H,SIG7 ;SI 10H, MODO SUPERUSUARIO, HEMOS INTRODUCIDO AJMP TECLA ;LAS DECENAS DEL NUMERO DEL USUARIO A MODIFICAR SIG7: CJNE A,#011H,SIG8 ;SI 11H, MODO SUPERUSUARIO, HEMOS INTRODUCIDO AJMP TECLA ;LAS UNIDADES DEL NUMERO DEL USUARIO A MODIFICAR SIG8: CJNE A,#012H,SIG9 ;SI 12H, HEMOS INTRODUCIDO PRIMER DIGITO CLAVE A AJMP SCLAV ;MODIFICAR SIG9: CJNE A,#013H,SIG10 ;SI 13H, SEGUNDO AJMP SCLAV SIG10: CJNE A,#014H,SIG11 ;SI 14H, TERCERO AJMP SCLAV SIG11: CJNE A,#015H,SIG12 ;SI 15H, CUARTO AJMP SCLAV SIG12: CJNE A,#016H,SIG13 ;SI 16H, QUINTO AJMP SCLAV SIG13: CJNE A,#017H,SIG14 ;SI 17H, SEXTO AJMP SCLAV SIG14: CJNE A,#018H,SIG15 ;SI 18H, HEMOS INTRODUCIDO DECENAS DE ACCESOS AJMP SVECE ;AUTORIZADOS SIG15: CJNE A,#019H,SIG16 ;UNIDADES AJMP SVECE SIG16: CJNE A,#020H,SIG17 ;SI 20H, ESTADO BLOQUEADO, SE HA INTRODUCIDO AJMP PRIMER ;PRIMER DIGITO DE CLAVE SIG17: CJNE A,#021H,SIG18 ;SEGUNDO AJMP SEGUN SIG18: CJNE A,#022H,SIG19 ;TERCERO

11

AJMP TERCE SIG19: CJNE A,#023H,SIG20 ;CUARTO AJMP CUART SIG20: CJNE A,#024H,SIG21 ;QUINTO AJMP QUINT SIG21: CJNE A,#025H,SIG22 ;SEXTO, VERIFICA CLAVE AJMP CLAV SIG22: MOV R0,#00 ;SI NO ES NADA DE LO ANTERIOR, HA HABIDO AJMP TSTOFF ;ALGUN ERROR, NOS PONEMOS EN STDBY Y ATRAS ; ;TABLA DE COMPARACION DE TECLAS TECLA: MOV A,R7 ;METEMOS EN A LA TECLA PULSADA CJNE A,#010000010B,SIG23 ;UN CERO AJMP T SIG23: CJNE A,#000010100B,SIG24 ;UN UNO AJMP TA SIG24: CJNE A,#000010010B,SIG25 ;UN DOS SJMP T2 SIG25: CJNE A,#000010001B,SIG26 SJMP T3 SIG26: CJNE A,#000100100B,SIG27 SJMP T4 SIG27: CJNE A,#000100010B,SIG28 SJMP T5 SIG28: CJNE A,#000100001B,SIG29 SJMP T6

12

SIG29: CJNE A,#001000100B,SIG30 SJMP T7 SIG30: CJNE A,#001000010B,SIG31 SJMP T8 SIG31: CJNE A,#001000001B,SIG32 SJMP T9 SIG32: MOV A,R0 ;SI NO ES NADA DE LO ANTERIOR, VEMOS SI CJNE A,#00,ESTU0 ;ESTAMOS EN SUPERUSUARIO, LO QUE QUIERE AJMP TSTOFF ;DECIR QUE ESTAMOS BLOQUEANDO O BORRANDO ;CONTADORES. SI NO ESTAMOS EN SUPER, ;SIMPLEMENTE NO TOMAMOS EN CUENTA LA TECLA

;;ASIGN REAL DE VALORES A LAS TECLAS Y VALORES DE DISPLAY T: MOV A,#CERO MOV R5,#00 SJMP NUMER TA: MOV A,#UNO ;DAMOS VALOR AL NUMERO QUE HEMOS PULSADO MOV R5,#001 ;ALMACENAMOS EL VALOR A SALIR POR EL DISPLAY SJMP NUMER T2: MOV A,#DOS MOV R5,#002 SJMP NUMER T3: MOV A,#TRES MOV R5,#003 SJMP NUMER T4: MOV A,#CUATRO MOV R5,#004 13

SJMP NUMER T5: MOV A,#CINCO MOV R5,#005 SJMP NUMER T6: MOV A,#SEIS MOV R5,#006 SJMP NUMER T7: MOV A,#SIETE MOV R5,#007 SJMP NUMER T8: MOV A,#OCHO MOV R5,#008 SJMP NUMER T9: MOV A,#NUEVE MOV R5,#009 SJMP NUMER ESTU0: CJNE A,#01H,ESUPER AJMP TSTOFF ESUPER: MOV A,R7 ;SI ES SUPERUSUARIO Y HEMOS PULSADO CJNE A,#11000010B,NEXT ;UNA COMBINACION DE TECLAS AJMP ATAJO ;ABRE LA PUERTA, O HEMOS PULSADO NEXT: CJNE A,#010000001B,SIG33 ;LA TECLA DE CLEAR, SALTAMOS ALLI AJMP CLEAR SIG33: AJMP BLOQ ;SI NO, ES QUE HEMOS PULSADO LA DE ;BLOQUEO ;

14

;RUTINA PARA LA COMPOCISION DE NUMEROS (DECENAS UNIDADES) DE LOS USUARIOS NUMER: MOV B,A ;IDENTIFICAMOS EL NUMERO DE USUARIO MOV A,R0 ;QUE SE HA INTRODUCIDO POR EL TECLADO CJNE A,#10H,SIG34 SJMP DECEN SIG34: CJNE A,#00H,UNITD ;SI ES 00 HEMOS INGRESADO DECENAS DECEN: MOV P2,B ;LAS DECENAS SE MULTIPLICAN POR 10 MOV A,R5 ;Y SE ALMACENA EN R6 MOV B,#0AH MUL AB MOV R6,A INC R0 AJMP TSTOFF UNITD: INC R0 MOV P0,B ;SI SON UNIDADES LAS SUMAMOS CON LAS MOV A,R5 ;DECENAS ADD A,R6 ; ;TABLA DE USUARIOS CJNE A,#000,NEXT1 ;SI HEMOS INTRODUCIDO USUARIO CERO SJMP U0 NEXT1: CJNE A,#001,NEXT2 ;UN UNO SJMP U1 NEXT2: CJNE A,#002,NEXT3 ;UN DOS SJMP U2 NEXT3: CJNE A,#003,NEXT4

15

SJMP U3 NEXT4: CJNE A,#004,NEXT5 SJMP U4 NEXT5: CJNE A,#005,NEXT6 SJMP U5 NEXT6: CJNE A,#006,NEXT7 SJMP U6 NEXT7: CJNE A,#007,NEXT8 SJMP U7 NEXT8: CJNE A,#008,NEXT9 SJMP U8 NEXT9: CJNE A,#009,NEXT10 SJMP U9 NEXT10: CJNE A,#010,NEXT11 SJMP U10 NEXT11: CJNE A,#011,NEXT12 SJMP U11 NEXT12: CJNE A,#012,NEXT13 SJMP U12 NEXT13: CJNE A,#013,NEXT14 SJMP U13 NEXT14: CJNE A,#014,NEXT15 SJMP U14 NEXT15: CJNE A,#015,NEXT16 SJMP U15 NEXT16: CJNE A,#016,NEXT17

16

SJMP U16 NEXT17: CJNE A,#017,NEXT18 SJMP U17 NEXT18: CJNE A,#018,NEXT19 SJMP U18 NEXT19: CJNE A,#019,NEXT20 SJMP U19 NEXT20: CJNE A,#020,NEXT21 SJMP U20 NEXT21: MOV R0,#00H MOV R1,#00H MOV P2,#00 MOV P0,#RAYA AJMP TSTOFF ; ;REGISTRO EN MEMORIA DE USUARIOS U0: MOV R1,#30H ;PARA CADA USUARIO CARGAMOS R1 CON SJMP YA ;LA DIRECCION DE SU REGISTRO U1: MOV R1,#36H SJMP YA U2: MOV R1,#3EH SJMP YA U3: MOV R1,#46H SJMP YA U4: MOV R1,#4EH SJMP YA

17

U5: MOV R1,#56H SJMP YA U6: MOV R1,#5EH SJMP YA U7: MOV R1,#66H SJMP YA U8: MOV R1,#6EH SJMP YA U9: MOV R1,#76H SJMP YA U10: MOV R1,#7EH SJMP YA U11: MOV R1,#86H SJMP YA U12: MOV R1,#8EH SJMP YA U13: MOV R1,#96H SJMP YA U14: MOV R1,#9EH SJMP YA U15: MOV R1,#0A6H SJMP YA U16: MOV R1,#0AEH SJMP YA U17: MOV R1,#0B6H SJMP YA

18

U18: MOV R1,#0BEH SJMP YA U19: MOV R1,#0C6H SJMP YA U20: MOV R1,#0CEH SJMP YA YA: AJMP TSTOFF ; 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 STANDBY 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

19

MOV P2,#00 AJMP TSTOFF ; ;COMPARACION DE CLAVE PRIMER: MOV A,R7 ;EL PRIMER DIGITO DE LA CLAVE SE GUARDA EN MOV R2,A ;R2 INC R0 ;SE INCREMENTA REGISTRO DE ESTADO AJMP TSTOFF SEGUN: MOV A,R7 ;EL SEGUNDO EN R3 MOV R3,A INC R0 AJMP TSTOFF TERCE: MOV A,R7 ;EL TERCERO EN R4 MOV R4,A INC R0 AJMP TSTOFF CUART: MOV A,R7 ;EL CUARTO EN R5 MOV R5,A INC R0 AJMP TSTOFF QUINT: MOV A,R7 ;EL QUINTO EN R4 MOV B,A INC R0 AJMP TSTOFF CLAV: MOV A,R2 XRL A,@R1 ;OREXCLUSIVA ENTRE PRIMER DIGITO Y REGISTRO

20

MOV R6,A INC R1 ;INCREMENTAMOS REGISTRO INDICE MOV A,R3 ;SEGUNDO DIGITO XRL A,@R1 ADD A,R6 MOV R6,A 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

21

MOV A,R1 PUSH ACC MOV R1,#2FH MOV @R1,#03 POP ACC MOV R1,A MOV A,R1 ;SI NO TENEMOS R1 EN 35H, NO ES SUPER CJNE A,#35H,NORMAL ;USUARIO, ES UNO NORMAL MOV A,R0 CJNE A,#25H,SUP_US ;SI ESTAMOS EN ESTADO 25H ES DESBLOQUEO SJMP VUELVE SUP_US: MOV R0,#10H ;SI ES UN ACCESO SUPERUSUARIO, PONEMOS MOV A,#LAU ;REGISTRO DE ESTADO A 10H Y VISUALIZAMOS MOV P0,A ;UNA 'U' MOV P2,#00 AJMP TSTOFF NORMAL: INC R1 ;SI ES USUARIO NORMAL, COMPROBAMOS SI MOV A,@R1 ;HA AGOTADO SUS ACCESOS AUTORIZADOS INC R1 XRL A,@R1 ;SI ES ASI, SALTAMOS A VUELVE (NO ABRE) JZ VUELVE INC @R1 ;SI NO, INCREMENTAMOS CONTADOR Y ATAJO: MOV A,#LAA ;ABRIMOS PUERTA MOV P0,A MOV P2,#00 ACALL DELAY

22

SJMP VUELVE MAL: MOV A,#LAE ;PONEMOS UNA 'E' EN EL DISPLAY MOV P2,#00 MOV P0,A ACALL DELAY ;POR UNOS SEGUNDOS MOV R1,#2FH DEC @R1 MOV A,@R1 JNZ CONTIN ACALL SECUR CONTIN: MOV A,R0 CJNE A,#025H,VUELVE ;SI NO ESTA BLOQUEADO, SALTAMOS AJMP BLOQ ;SI LO ESTA, DEJAMOS TODO COMO ESTABA VUELVE: MOV R0,#00 ;DEJAMOS EL SISTEMA EN STANDBY MOV A,#RAYA MOV P0,A MOV P2,#00 AJMP TSTOFF ; 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

23

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 CJNE A,#010000010B,SIG35 ;SI HEMOS PULSADO UN CERO SJMP N0 SIG35: CJNE A,#000010100B,SIG36 ;UN UNO SJMP N1 SIG36: CJNE A,#000010010B,SIG37 ;UN DOS SJMP N2 ; ; SIG37: CJNE A,#000010001B,SIG38 SJMP N3 SIG38: CJNE A,#000100100B,SIG39 SJMP N4 SIG39: CJNE A,#000100010B,SIG40 SJMP N5 SIG40: CJNE A,#000100001B,SIG41 SJMP N6 SIG41: CJNE A,#001000100B,SIG42 SJMP N7 SIG42: CJNE A,#001000010B,SIG43

24

SJMP N8 SIG43: CJNE A,#001000001B,SIG44 SJMP N9 SIG44: AJMP TSTOFF ;SI NO HEMOS PULSADO NINGUN NUMERO, NI CASO N0: MOV A,#CERO ;PREPARAMOS PARA VISUALIZAR EN DISPLAY MOV R6,#00 ;GUARDAMOS UN CERO EN R6 SJMP ESCRIB N1: MOV A,#UNO ;LO MISMO PARA EL UNO MOV R6,#01 SJMP ESCRIB N2: MOV A,#DOS MOV R6,#02 SJMP ESCRIB N3: MOV A,#TRES MOV R6,#03 SJMP ESCRIB N4: MOV A,#CUATRO MOV R6,#04 SJMP ESCRIB N5: MOV A,#CINCO MOV R6,#05 SJMP ESCRIB N6: MOV A,#SEIS MOV R6,#06 SJMP ESCRIB N7: MOV A,#SIETE

25

MOV R6,#07 SJMP ESCRIB N8: MOV A,#OCHO MOV R6,#08 SJMP ESCRIB N9: MOV A,#NUEVE MOV R6,#09 SJMP ESCRIB ESCRIB: MOV B,A MOV A,R0 CJNE A,#18H,UNIDAD ;SI EL ESTADO NO ES 18H, SON UNIDADES MOV P2,B ;MOSTRAMOS POR EL DISPLAY 0 MOV A,R6 MOV B,#0AH ;SI NO, MULTIPLICAMOS POR 10 MUL AB MOV @R1,A ;GUARDAMOS EN POSICION DE MEMORIA INC R0 AJMP TSTOFF UNIDAD: MOV P0,A ;SI SON UNIDADES, SE LO SUMAMOS A LO MOV A,R6 ADD A,@R1 ;DE LAS DECENAS MOV @R1,A ACALL DELAY ;HACEMOS UN DELAY PARA QUE SE VEA EL MOV A,#RAYA ;DIGITO PULSADO EN EL DISPLAY MOV P0,A ;DEJAMOS TODO COMO ANTES MOV P2,#00

26

MOV R0,#00H AJMP TSTOFF ; DELAY: MOV TL0,#00 ;RUTINA DE RETARDO, CONTAMOS MOV TH0,#00 ;CINCO VECES HASTA FFFFH MOV A,#05 MOV TCON,#00010000B ESPERA: JNZ ESPERA MOV TCON,#00 RET TIMER: MOV TL0,#00 MOV TH0,#00 DEC A RETI ; SECUR: MOV TL1,#00 ;RUTINA DE SEGURIDAD ESPERAMOS MOV TH1,#00 ;APROXIMADAMENTE 5 MINUTOS MOV A,#0FFH ;MIENTRAS TODO ESTA BLOQUEADO MOV R7,#00 TERMIN: MOV TCON,#01000000B CICLO: JNZ CICLO MOV TCON,#00 INC R7 CJNE R7,#01,SIG45 MOV A,#5DH AJMP TERMIN

27

SIG45: MOV R1,#2FH MOV @R1,#03 RET PAUSA: MOV TL1,#00 MOV TH1,#00 DEC A RETI ; END

CONCLUSIONES Y CONSIDERACIONES FINALES Por una parte hay que mencionar que la inclusin de ms usuarios pasa ineludiblemente por la incorporacin de memoria RAM externa, lo cual complica considerablemente el diseo (software y hardware) y conlleva un incremento muy importante del costo. Como una medida para asegurarnos un cliente, nos abstenemos de entregar al mismo el cdigo de nuestro programa, de esta manera siempre le saldr ms barato con nosotros una modificacin. Las consideraciones necesarias para que el sistema no falle por la perdida de energa elctrica, evento que ocasionara el borrado de los datos almacenados (password ,#accesos) en la memoria RAM del microcontrolador. Hemos visto la necesidad del uso de un sistema de alimentacin de emergencia como un UPS que estabilice la energa elctrica y que pueda alimentar al sistema para resguardar los datos. Se incluyo como una medida que mejore la seguridad del sistema la inclusin de seis dgitos numricos en la clave de usuario y una rutina guardin que no permita el manipuleo indebido de las claves. Proporcionamos un acceso para el superusuario con la sola combinacin de dos teclas, esto permitir el ingreso por la puerta un numero indefinido de veces. Consideramos necesario aclarar la participacin de nuestra empresa a limitarnos a el diseo e implementacin tan solo electrnica del hardware y software detallado claramente en este informe, la parte mecnica, elctrica, la puerta en si y la cerradura electromagntica ser construida ntegramente por la empresa TRANQUERA fabricante de puertas de alta seguridad para la cual realizamos el siguiente trabajo. Bibliografa GONZALES VASQUES, JOSE ADOLFO

28

Microprocesadores , fundamentos diseo y aplicacin MARTINEZ PEREZ, JAVIER; BARRON RUIZ MARIANO Introduccin a los microcontroladores hardware software y aplicaciones REVISTA SABER ELECTRNICA N6 AO 10 pag. 4244 CATALOGO FARNELL ELECTRONIC WWW.KEIL.COM APNDICE A CALCULO DEL RETARDO PARA EL ANTI REBOTE Consideramos necesario un retardo de 3ms para lo cual calculamos el valor de nuestro bucle. Valor de bucle. es el valor de repeticiones que hace el programa cuando se encuentra en un bucle. CALCULO DE RETARDO PARA DELAY Consideramos necesario un tiempo de 4 seg. para lo cual calculamos el valor de nuestro bucle. Si sabemos que el mximo valor que puede contar el TIMER 0 es de FFFFh o 65535 entonces: CALCULO DEL TIEMPO PARA RUTINA DE SEGURIDAD 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. PROBABILIDADES Se ha pensado en una clave de seis digitos de manera que disminuya nuestra probabilidad de encontrar la clave de usuario.

29

APNDICE B DATOS TECNICOS DE LOS COMPONENTES USADOS Sexto dgito de la clave Quinto dgito de la clave Tercer dgito de la clave Cuarto dgito de la clave Primer dgito de la clave Contador de accesos N mximo de accesos permitidos Segundo dgito de la clave Estructura de datos 0 Bloqu 8 9 Clear 6 5

30

7 4 3 2 1 Teclado Especificacin Bloqueo de la cerradura Puesta a cero de los contadores Stand by (1) Puerta abierta (2) En caso de clave errnea (3) En estado de superusuario (4) Esperando n de accesos autorizados (5) Estado bloqueado (solo permite usarlo al superusuario ) (6) Se visualiza el n de usuario al acceder al sistema

31

Potrebbero piacerti anche