sistema de caja fuerte

20
ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL FIEC Laboratorio de MicroControladores Proyecto del Primer Parcial Sistema de Seguridad Caja Fuerte Integrante: Brian Laaz Ochoa Paralelo: # 7 2014 – I TÉRMINO

Upload: verito-ochoa

Post on 19-Jan-2016

106 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Sistema de Caja Fuerte

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL

FIEC

Laboratorio de MicroControladores

Proyecto del Primer Parcial

Sistema de Seguridad Caja Fuerte

Integrante:

Brian Laaz Ochoa

Paralelo: # 7

2014 – I TÉRMINO

Page 2: Sistema de Caja Fuerte

1. ENUNCIADO DEL PROYECTO

SISTEMA DE SEGURIDAD CAJA FUERTESe tendrá un sistema de seguridad de una caja fuerte, en donde se requiere un controlador para el ingreso y comprobación de la clave de 4 dígitos que abrirá el cerrojo, la clave correcta se encontrara almacenada en una variable dentro del programa. El usuario podrá tener como máximo 3 errores, es decir:Error #1 Encenderá el primer LEDError #2 Encenderá el segundo LEDError #3 Parpadearan los tres LEDs durante a una frecuencia de 60Hz indicando un tipo de alerta, además se encenderá un speaker emitirá un sonido de alarma, el pic se mantendrá en este estado hasta realizar un reinicio del mismo.

Se tendrán 4 DISPLAY (Usar técnica de Multiplexacion para ahorrar pines) para mostrar los números que vaya ingresando el usuario, la forma de ingresar los números será la siguiente debajo de cada display deberá haber un pulsador el cual mediante él envía de un alto incremente el valor en el respectivo display al final para comprobar si la clave es correcta se adicionara un switch para indicar que debe proceder hacer la comparación del valor ingresado por el usuario y el q está dentro de una.

2. DIAGRAMA DE BLOQUES

Page 3: Sistema de Caja Fuerte

3. DIAGRAMA DE FULO FUNCIONAL DEL PROGRAMA PRINCIPAL

Page 4: Sistema de Caja Fuerte

INTERRUPCIONES

Page 5: Sistema de Caja Fuerte

4. DESCRIPCION DEL ALGORITMO O ESTRATEGIA UTILIZADA

PROGRAMA PRINCIPAL

1. Se realiza un seteo de los puertos

2. Se inicializa las variables

3. Se presionan los pulsadores para el ingreso de la clave, la cual está configurada

en el PORTA.

4. Se presiona la tecla de comprobar para verificar si la clave ingresada es

correcta

5. Si es correcta vuelve al inicio del programa, caso contrario al primer error se

enciende uno de los tres led´s que lo hemos configurado en el PORTD.

6. Al tercer error se encenderá los tres leds y adicional una alarma, y volverá al

estado inicial si se presiona el botón reset

INTERRUPCION

1. Se mueven los numero1 y numero 2 a w

2. Manda a llamar a la tabla

3. Retorna el codigo de 7 segmentos

4. Se muestran en el puerto b

5. Se mueven numero3 y numero 4 a w

6. Manda a llamat a la tabla

7. Retorna el codigo de 7 segmentos

8. Se muestran en el puerto c

9. Borra las banderas

Page 6: Sistema de Caja Fuerte

5. LISTADO DEL PROGRAMA FUENTE EN LENGUAJE ENSAMBLADOR CON COMENTARIOS

;**********************************************************; NOMBRE: caja fuerte.asm; FECHA: 26/06/2014; VERSION: 1.00; PROGRAMADOR: Brian Laaz;**********************************************************;DIRECTIVAS

LIST p=16F887 ;Tipo de microcontroladorINCLUDE P16F887.INC ;Define los SFRs y bits del

;P16F887

__CONFIG _CONFIG1, _CP_OFF&_WDT_OFF&_XT_OSC;Setea parámetros de ;configuración

errorlevel -302 ;Deshabilita mensajes de ;advertencia por cambio bancos

CBLOCK0X020contador ;Cuenta 100 interrupcionesuni_coddec_codselnum1num2num3num4c1c2c3c4con1con2con3cont1cont2cont3ENDC

;**********************************************************

Page 7: Sistema de Caja Fuerte

;PROGRAMAORG 0x00 ;Vector de RESETGOTO MAINORG 0x04 ;Vector de interrupciónGOTO Interrupcion ;Va a rutina de interrupción

;DURANTE LA INTERRUPCION SE CUENTAN 100 INTERRUPCIONES;PARA COMPLETAR 10x100=1000ms. Interrupcion

movf sel,w ;Se mueve a si mismo para afectar banderabtfss STATUS,2 ;sel=0 refresca dig1; sel=1 refresca dig2goto dig2

dig1 movf num2,w call tablamovwf uni_codmovf uni_cod,wbsf PORTA,0bsf PORTA,1movwf PORTBmovf num4,w call tablamovwf uni_codmovf uni_cod,wmovwf PORTCbcf PORTA,0comf sel,fgoto Seguir

dig2movf num1,w call tablamovwf dec_codmovf dec_cod,wbsf PORTA,0bsf PORTA,1movwf PORTBmovf num3,w call tablamovwf dec_codmovf dec_cod,wmovwf PORTCbcf PORTA,1

Page 8: Sistema de Caja Fuerte

comf sel,f

Seguir bcf INTCON,T0IF ;Repone flag del TMR0 movlw ~.39

movwf TMR0 ;Repone el TMR0 con ~.39 retfie ;Retorno de interrupción

MAIN;SETEO DE PUERTOS

BANKSEL ANSEL ;Selecciona el Bank3CLRF ANSELCLRF ANSELHBANKSEL TRISA ;Selecciona el Bank1MOVLW b'00111100'MOVWF TRISA ;PORTA configurado como salidaCLRF TRISB ;PORTB configurado como salidaCLRF TRISCclrf TRISDmovlw b'11111111'movwf TRISE

;INICIALIZACION BANKSEL PORTA ;Selecciona el Bank0CLRF PORTA ;Borra latch de salida de PORTBCLRF PORTB ;Borra latch de salida de PORTCclrf PORTCclrf PORTEclrf PORTDclrf selmovlw b'00000000'movwf num1movwf num2movwf num3movwf num4movlw .1movwf c1movlw .2movwf c2movlw .3movwf c3movlw .4

Page 9: Sistema de Caja Fuerte

movwf c4

;PROGRAMACION DEL TMR0banksel OPTION_REG ;Selecciona el Bank1movlw b'00000111' ;TMR0 como temporizadormovwf OPTION_REG ;con preescaler de 256 BANKSEL TMR0 ;Selecciona el Bank0movlw .217 ;Valor decimal 217movwf TMR0 ;Carga el TMR0 con 217

;PROGRAMACION DE INTERRUPCIONmovlw b'10100000'movwf INTCON ;Activa la interrupción del TMR0movlw .100 ;Cantidad de interrupciones a contarmovwf contador ;Nº de veces a repetir la interrupción

Loopnopbtfsc PORTA,2GOTO digito1btfsc PORTA,3GOTO digito2btfsc PORTA,4GOTO digito3Btfsc PORTA,5GOTO digito4Btfsc PORTE,0GOTO COMPROBARgoto Loop

digito1incf num1movlw .10subwf num1,wbtfsc STATUS,Zclrf num1call retardcall retardgoto Loop

digito2incf num2

Page 10: Sistema de Caja Fuerte

movlw .10subwf num2,wbtfsc STATUS,Zclrf num2call retardcall retardgoto Loop

digito3incf num3movlw .10subwf num3,wbtfsc STATUS,Zclrf num3call retardcall retardgoto Loop

digito4incf num4movlw .10subwf num4,wbtfsc STATUS,Zclrf num4call retardcall retardgoto Loop

COMPROBAR

movf c1,W subwf num1,W btfsc STATUS,Z

goto soniguales1goto fail

soniguales1 movf c2,W subwf num2,W btfsc STATUS,Z

goto soniguales2goto fail

Page 11: Sistema de Caja Fuerte

soniguales2 movf c3,W subwf num3,W btfsc STATUS,Z

goto soniguales3goto fail

soniguales3 movf c4,W subwf num4,W btfsc STATUS,Z

goto abiertogoto failgoto retorno

abiertobsf PORTD,3call retardcall retardcall retardgoto retorno

failbsf STATUS,0rlf PORTDcall retardcall retard

call retardbtfsc PORTD,2goto fallagoto Loop

fallaclrf PORTDcall retardobsf PORTD,0bsf PORTD,1bsf PORTD,2bsf PORTD,3call retardoclrf PORTD

Page 12: Sistema de Caja Fuerte

call retardobsf PORTD,0bsf PORTD,1bsf PORTD,2bsf PORTD,3call retardoclrf PORTDcall retardobsf PORTD,0bsf PORTD,1bsf PORTD,2bsf PORTD,3call retardoclrf PORTDcall retardobsf PORTD,0bsf PORTD,1bsf PORTD,2bsf PORTD,3call retardoclrf PORTDcall retardobsf PORTD,0bsf PORTD,1bsf PORTD,2bsf PORTD,3call retardoclrf PORTDcall retardobsf PORTD,0bsf PORTD,1bsf PORTD,2bsf PORTD,3call retardogoto falla

retorno goto MAIN; TABLA DE CONVERSION---------------------------------------------------------

tabla ADDWF PCL,F ; PCL + W -> PCL

Page 13: Sistema de Caja Fuerte

; El PCL se incrementa con el ; valor de W proporcionando un ; salto

RETLW 0x3F ; Retorna con el código del 0RETLW 0x06 ; Retorna con el código del 1RETLW 0x5B ; Retorna con el código del 2RETLW 0x4F ; Retorna con el código del 3RETLW 0x66 ; Retorna con el código del 4RETLW 0x6D ; Retorna con el código del 5RETLW 0x7D ; Retorna con el código del 6RETLW 0x07 ; Retorna con el código del 7RETLW 0x7F ; Retorna con el código del 8RETLW 0x67 ; Retorna con el código del 9

retard clrf con1 clrf con2 MOVLW .2 MOVWF con3reta2 decfsz con1 ; Decrements "counter1" by 1. If result is 0 goto reta2 ; skip next instruction decfsz con2 ; Decrements "counter2" by 1. If result is 0 goto reta2 ; skip next instruction decfsz con3 ; Decrements "counter2" by 1. If result is 0 goto reta2 ; skip next instruction

return

retardo clrf cont1

movlw .28 movwf cont2

reta1 decfsz cont1 ; Decrements "counter1" by 1. If result is 0 goto reta1 ; skip next instruction decfsz cont2 ; Decrements "counter2" by 1. If result is 0 goto reta1 ; skip next instruction

return

END

Page 14: Sistema de Caja Fuerte

6. SIMULACION DEL CIRCUITO ARMADO EN PROTEUS

RE3/MCLR/VPP1

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT33

RB1/AN10/C12IN3-34

RB2/AN835

RA7/OSC1/CLKIN13

RA6/OSC2/CLKOUT14

RD5/P1B28

RD6/P1C29

RD7/P1D30

RC4/SDI/SDA23

RC5/SDO24

RC3/SCK/SCL18

RC2/P1A/CCP117

RC1/T1OSI/CCP216

RC0/T1OSO/T1CKI15

RB7/ICSPDAT40

RB6/ICSPCLK39

RB5/AN13/T1G38

RB4/AN1137

RD322

RD221

RD120

RD019

RC7/RX/DT26

RC6/TX/CK25

RE2/AN710

RE1/AN69

RE0/AN58

RA3/AN3/VREF+/C1IN+5

RD427

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

R1

330R2

330R3

330R4

330R5

330R6

330R7

330

T2

12

1 2

a1b1c1d1e1f1g1

a1 b1 c1 d1 e1 f1 g1a2 b2 c2 d2 e2 f2 g2

a2b2c2d2e2f2g2

R10

330R11

330R12

330R13

330R14

330R15

330R16

330

1 2

T1

T3T4

R8

10k

T4R9

10k

T3R17

10k

T2R18

10k

T1

L1L2L3

D1LED-GREEN

D2LED-YELLOW

D3LED-RED

L1 L2 L3

R23

10k

PROBAR

PROBAR

LS1

SPEAKER

R1910k

RE3/MCLR/VPP1

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT33

RB1/AN10/C12IN3-34

RB2/AN835

RA7/OSC1/CLKIN13

RA6/OSC2/CLKOUT14

RD5/P1B28

RD6/P1C29

RD7/P1D30

RC4/SDI/SDA23

RC5/SDO24

RC3/SCK/SCL18

RC2/P1A/CCP117

RC1/T1OSI/CCP216

RC0/T1OSO/T1CKI15

RB7/ICSPDAT40

RB6/ICSPCLK39

RB5/AN13/T1G38

RB4/AN1137

RD322

RD221

RD120

RD019

RC7/RX/DT26

RC6/TX/CK25

RE2/AN710

RE1/AN69

RE0/AN58

RA3/AN3/VREF+/C1IN+5

RD427

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

R1

330R2

330R3

330R4

330R5

330R6

330R7

330

T2

12

1 2

a1b1c1d1e1f1g1

a1 b1 c1 d1 e1 f1 g1a2 b2 c2 d2 e2 f2 g2

a2b2c2d2e2f2g2

R10

330R11

330R12

330R13

330R14

330R15

330R16

330

1 2

T1

T3T4

R8

10k

T4R9

10k

T3R17

10k

T2R18

10k

T1

L1L2L3

D1LED-GREEN

D2LED-YELLOW

D3LED-RED

L1 L2 L3

R23

10k

PROBAR

PROBAR

LS1

SPEAKER

R1910k

Page 15: Sistema de Caja Fuerte

RE3/MCLR/VPP1

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT33

RB1/AN10/C12IN3-34

RB2/AN835

RA7/OSC1/CLKIN13

RA6/OSC2/CLKOUT14

RD5/P1B28

RD6/P1C29

RD7/P1D30

RC4/SDI/SDA23

RC5/SDO24

RC3/SCK/SCL18

RC2/P1A/CCP117

RC1/T1OSI/CCP216

RC0/T1OSO/T1CKI15

RB7/ICSPDAT40

RB6/ICSPCLK39

RB5/AN13/T1G38

RB4/AN1137

RD322

RD221

RD120

RD019

RC7/RX/DT26

RC6/TX/CK25

RE2/AN710

RE1/AN69

RE0/AN58

RA3/AN3/VREF+/C1IN+5

RD427

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

R1

330R2

330R3

330R4

330R5

330R6

330R7

330

T2

12

1 2

a1b1c1d1e1f1g1

a1 b1 c1 d1 e1 f1 g1a2 b2 c2 d2 e2 f2 g2

a2b2c2d2e2f2g2

R10

330R11

330R12

330R13

330R14

330R15

330R16

330

1 2

T1

T3T4

R8

10k

T4R9

10k

T3R17

10k

T2R18

10k

T1

L1L2L3

D1LED-GREEN

D2LED-YELLOW

D3LED-RED

L1 L2 L3

R23

10k

PROBAR

PROBAR

LS1

SPEAKER

R1910k

RE3/MCLR/VPP1

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT33

RB1/AN10/C12IN3-34

RB2/AN835

RA7/OSC1/CLKIN13

RA6/OSC2/CLKOUT14

RD5/P1B28

RD6/P1C29

RD7/P1D30

RC4/SDI/SDA23

RC5/SDO24

RC3/SCK/SCL18

RC2/P1A/CCP117

RC1/T1OSI/CCP216

RC0/T1OSO/T1CKI15

RB7/ICSPDAT40

RB6/ICSPCLK39

RB5/AN13/T1G38

RB4/AN1137

RD322

RD221

RD120

RD019

RC7/RX/DT26

RC6/TX/CK25

RE2/AN710

RE1/AN69

RE0/AN58

RA3/AN3/VREF+/C1IN+5

RD427

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

R1

330R2

330R3

330R4

330R5

330R6

330R7

330

T2

12

1 2

a1b1c1d1e1f1g1

a1 b1 c1 d1 e1 f1 g1a2 b2 c2 d2 e2 f2 g2

a2b2c2d2e2f2g2

R10

330R11

330R12

330R13

330R14

330R15

330R16

330

1 2

T1

T3T4

R8

10k

T4R9

10k

T3R17

10k

T2R18

10k

T1

L1L2L3

D1LED-GREEN

D2LED-YELLOW

D3LED-RED

L1 L2 L3

R23

10k

PROBAR

PROBAR

LS1

SPEAKER

R1910k

Page 16: Sistema de Caja Fuerte

RE3/MCLR/VPP1

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT33

RB1/AN10/C12IN3-34

RB2/AN835

RA7/OSC1/CLKIN13

RA6/OSC2/CLKOUT14

RD5/P1B28

RD6/P1C29

RD7/P1D30

RC4/SDI/SDA23

RC5/SDO24

RC3/SCK/SCL18

RC2/P1A/CCP117

RC1/T1OSI/CCP216

RC0/T1OSO/T1CKI15

RB7/ICSPDAT40

RB6/ICSPCLK39

RB5/AN13/T1G38

RB4/AN1137

RD322

RD221

RD120

RD019

RC7/RX/DT26

RC6/TX/CK25

RE2/AN710

RE1/AN69

RE0/AN58

RA3/AN3/VREF+/C1IN+5

RD427

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

R1

330R2

330R3

330R4

330R5

330R6

330R7

330

T2

12

1 2

a1b1c1d1e1f1g1

a1 b1 c1 d1 e1 f1 g1a2 b2 c2 d2 e2 f2 g2

a2b2c2d2e2f2g2

R10

330R11

330R12

330R13

330R14

330R15

330R16

330

1 2

T1

T3T4

R8

10k

T4R9

10k

T3R17

10k

T2R18

10k

T1

L1L2L3

D1LED-GREEN

D2LED-YELLOW

D3LED-RED

L1 L2 L3

R23

10k

PROBAR

PROBAR

LS1

SPEAKER

R1910k

7. CONCLUSIONES En este proyecto aprendimos el importante uso de los contadores,

programándolos para el PIC 16F887, lo que es básico en cuestiones de desarrollo de cualquier otro proyecto que necesite llevar algún tipo de conteo a determinada frecuencia, además aplicamos la técnica usada para darle el tiempo de retardo de conteo deseado, haciendo posible el control del mismo

El timer0 puede funcionar como temporizador o como contador. En modo temporizador el valor del registro TMR0 se incrementa con cada ciclo de instrucción. En modo contador el valor del registro TMR0 se incrementa en cada flanco. En ambos casos al desbordarse (pasar de FFh a 00h) el registro TMR0 la bandera de interrupción del timer 0 (bit T0IF del registro INTCON) se pone en 1.

La frecuencia trabajada en los leds no fue la de 60hz ya que a dicha frecuencia no se observaba con claridad el parpadeo de los leds se trabajo a frecuencia mayor

Page 17: Sistema de Caja Fuerte

8. RECOMENDACIONES

Se recomienda utilizar varias subrutinas dentro de un programa para

facilitar la resolución del problema. Como se observó en el proyecto, las

rutinas de tablas nos ayudaron a obtener el código que representaría las

unidades y las decenas de los segundos de nuestro cronometro para

atletismo y así se pudo resolver el problema de manera efectiva y

estructurada

Se debe revisar los mensajes y advertencias que se obtienen luego de que

se realiza la compilación del programa en el MPLAB, aunque en ciertas

ocasiones la compilación termina satisfactoriamente hay que tener en

cuenta lo que dicen estos mensajes para prevenir errores.

Utilizar el software conocido como Microsoft Visio para realizar los

diagramas de flujo correcto de nuestro proyecto ya que de esta manera

podemos comprender como es su funcionamiento.

Familiarizarnos con los Datasheet de los microcontroladores. Nos sirve de

mucho ya que cada uno de ellos contiene información valiosa de cómo usar

los microcontroladores y bajo que parámetros puede trabajar.