Sunteți pe pagina 1din 8

Material

- PIC16F84A.
- Decodificador 74LS47
- Un driver LB1649 con base.
- Un driver L293D con base.
- 6 resistencias de 330 Ohms.
- Un motor a pasos de 12 V.
- Madera.
- Tornillos y clavos.
- Una pila de 9V.
- Un eliminador de 12 V.
- Fuente de 5V.

Herramientas
- Taladro.
- Martillo.
- Sierra.
- Cautín.
- Desarmador.
- Soldadura

Diagrama de Conexión
Control del Motor a Pasos (Elevador)
Motor
a
Pasos

PORTB bit 0
M
L293D

PORTB bit 1

PORTB bit 2

PORTB bit 3
Control Motor DC (Puerta Elevador)

PORTB bit 4

LB1649

PORTB bit 5

Circuito Físico

PIC16F84A 74LS47
Botones

L293D LB1649

Salidas para Salidas para


Motor a Puerta de
Pasos Elevador

1
;La entrada de bits es:
;PORTA bit 0 --> Planta Baja
;PORTA bit 1 --> Piso 1
;PORTA bit 2 --> Piso 2
;
;La salida de bits es:
; bit mas significativo bit menos significativo
;PORTB = 00 00 0000
; Display 7 segmentos | Puerta elevador | Motor a pasos

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

LIST P=16F84
INCLUDE <P16F84.INC>

CBLOCK 0x0C ;Variables a Utilizar


tiempo
puerta
PB
piso1
piso2
estado
vueltas
var1
var2
var3
ENDC

ORG 0

Inicio bsf STATUS,RP0 ;Configuración de Puertos


clrf TRISB
movlw b'00000111'
movwf TRISA
bcf STATUS,RP0

Inicializacion movlw d'255' ;Inicialización de Variables


movwf tiempo
movlw d'255'
movwf puerta
movlw d'1'
movwf PB
movlw d'2'
movwf piso1
movlw d'3'
movwf piso2
movlw d'2'
movwf estado
movlw d'25'
movwf vueltas
movlw d'255'
movwf var2
movlw d'25'
movwf var3

Principal btfsc PORTA,0 ;Menú principal, establece la acción


goto PisoPB ;de Planta baja, primer o segundo
btfsc PORTA,1 ;piso de acuerdo al boton presionado
goto PisoUno

2
btfsc PORTA,2
goto PisoDos
goto Principal

PisoPB movf estado,W ;Si es presionado el boton de PB


movwf var1 ;determina la accion a realizar
movf PB,W
call PuertasPB
decfsz var1,F
goto Abajo2PB
goto AbajoPB

PuertasPB decfsz var1,F ;Si se esta en PB Abre y Cierra puertas


return
movlw b'00010000'
movwf PORTB
call Retardo2
movlw b'00100000'
movwf PORTB
call Retardo2
movlw b'00000000'
movwf PORTB
movlw d'1'
movwf estado
goto Principal

Puertas movlw b'00010000' ;Función independiente que abre y cierra


addwf PORTB,F ;puertas en cualquier estado
call Retardo2
movlw b'00010000'
subwf PORTB,F
movlw b'00100000'
addwf PORTB,F
call Retardo2
movlw b'00100000'
subwf PORTB,F
return

AbajoPB movlw b'01001000' ;Si se esta en piso 1 baja


movwf PORTB
call Retardo1
call Retardo1
movlw b'01000100'
movwf PORTB
call Retardo1
call Retardo1
movlw b'01000010'
movwf PORTB
call Retardo1
call Retardo1
movlw b'01000001'
movwf PORTB
call Retardo1
call Retardo1
decfsz vueltas,F
goto AbajoPB
movlw d'1'
movwf estado
movlw d'25'

3
movwf vueltas
movlw b'00000000'
movf PORTB
call Puertas
goto Principal

Abajo2PB movf vueltas,W ;Si se esta en piso 2 baja el doble


addwf vueltas,F ;vueltas=vueltas+vueltas
goto Abajo2PB_1

Abajo2PB_1 movlw b'10001000' ;Mueve a PB desde piso 2


movwf PORTB
call Retardo1
call Retardo1
movlw b'10000100'
movwf PORTB
call Retardo1
call Retardo1
movlw b'10000010'
movwf PORTB
call Retardo1
call Retardo1
movlw b'10000001'
movwf PORTB
call Retardo1
call Retardo1
decfsz vueltas,F
goto Abajo2PB_1
movlw d'1'
movwf estado
movlw d'25'
movwf vueltas
movlw b'00000000'
movf PORTB
call Puertas
goto Principal

PisoUno movf estado,W ;Si es presionado el boton de Piso1


movwf var1 ;determina la accion a realizar
movf piso1,W
call P1PB
decfsz var1,F
goto P1P2
goto P1aP1

P1PB decfsz var1,F ;se presiona piso1 ¿estado PB?


return

P1PB1 movlw b'00000001' ;Se eleva al piso 1


movwf PORTB
call Retardo1
call Retardo1
movlw b'00000010'
movwf PORTB
call Retardo1
call Retardo1
movlw b'00000100'
movwf PORTB
call Retardo1
call Retardo1

4
movlw b'00001000'
movwf PORTB
call Retardo1
call Retardo1
decfsz vueltas,F
goto P1PB1
movlw d'2'
movwf estado
movlw d'25'
movwf vueltas
movlw b'01000000'
movf PORTB
call Puertas
goto Principal

P1aP1 movlw b'01010000' ;abre y cierra puerta si estado=piso1


movwf PORTB ; y boton presionado es piso1
call Retardo2
movlw b'01100000'
movwf PORTB
call Retardo2
movlw b'01000000'
movwf PORTB
movlw d'2'
movwf estado
goto Principal

P1P2 movlw b'10001000' ;Si estado=piso2 y presiona piso1


movwf PORTB ;baja a piso1
call Retardo1
call Retardo1
movlw b'10000100'
movwf PORTB
call Retardo1
call Retardo1
movlw b'10000010'
movwf PORTB
call Retardo1
call Retardo1
movlw b'10000001'
movwf PORTB
call Retardo1
call Retardo1
decfsz vueltas,F
goto P1P2
movlw d'2'
movwf estado
movlw d'25'
movwf vueltas
movlw b'01000000'
movf PORTB
call Puertas
goto Principal

PisoDos movf estado,W ;Si es presionado el boton de Piso2


movwf var1 ;determina la accion a realizar
movf piso2,W
call P2PB
decfsz var1,F
goto P2aP2

5
goto P2P1

P2PB decfsz var1,F ;Si estado=1 y boton=piso2 entonces


return ;sube hasta piso2
movf vueltas,W
addwf vueltas,F
goto P2PB_1

P2PB_1 movlw b'00000001'


movwf PORTB
call Retardo1
call Retardo1
movlw b'00000010'
movwf PORTB
call Retardo1
call Retardo1
movlw b'00000100'
movwf PORTB
call Retardo1
call Retardo1
movlw b'00001000'
movwf PORTB
call Retardo1
call Retardo1
decfsz vueltas,F
goto P2PB_1
movlw d'3'
movwf estado
movlw d'25'
movwf vueltas
movlw b'00000000'
movf PORTB
call Puertas
goto Principal

P2P1 movlw b'01000001' ;Si estado=2 y boton=piso2 entonces


movwf PORTB ;sube de piso1 a piso2
call Retardo1
call Retardo1
movlw b'01000010'
movwf PORTB
call Retardo1
call Retardo1
movlw b'01000100'
movwf PORTB
call Retardo1
call Retardo1
movlw b'01001000'
movwf PORTB
call Retardo1
call Retardo1
decfsz vueltas,F
goto P2P1
movlw d'3'
movwf estado
movlw d'25'
movwf vueltas
movlw b'10000000'
movf PORTB
call Puertas

6
goto Principal

P2aP2 movlw b'10010000' ;si estado=3 y boton=piso2 entonces


movwf PORTB ;abre y cierra puerta
call Retardo2
movlw b'10100000'
movwf PORTB
call Retardo2
movlw b'10000000'
movwf PORTB
movlw d'3'
movwf estado
goto Principal

Retardo1 decfsz tiempo,F


goto Retardo11
movlw d'255'
movwf tiempo
movlw d'255'
movwf var2
return

Retardo11 decfsz var2,F


goto Retardo11
movlw d'255'
movwf var2
goto Retardo1

Retardo2 decfsz puerta,F


goto Retardo22
movlw d'255'
movwf puerta
movlw d'255'
movwf var2
return

Retardo22 decfsz var2,F


goto Retardo222
movlw d'255'
movwf var2
goto Retardo2

Retardo222 decfsz var3,F


goto Retardo222
movlw d'25'
movwf var3
goto Retardo22

END

S-ar putea să vă placă și