Cerradura electrónica

Soy estudiante de ing eléctrica y necesito que me ayudes con mi proyecto. Si me puedes ayudar con el software implementando un pic16f84, teclado 4*4 matricial, y un lcd 2*16. El hardware ya lo tengo con un circuito, pero necesito el programa que utiliza 4 claves distintas para distintos usuarios.

1 Respuesta

Respuesta
1
Estas con Henry Moreno
Mira te envío el programa del teclado, unicamente no te puedo ayudar mucho ya que estoy en mi tesis. Si tengo tiempo te colaboro con el sistema del lcd. Las claves son fáciles solo ponlo a compara con la instrucción btfss.
list p = 16f84
Radix hex
TECLA equ 0x0a
KEY_1 equ 0x0b
KEY_2 equ 0x0c
KEY_DELAY_1 equ 0x0d
KEY_DELAY_2 equ 0x0e
STATUS equ 0x03
PUERTAB equ 0x06
OPTION_REG equ 0x81
NOT_RBPU equ 0x07
RP0 equ 0x05
PCL equ 0x02
Z equ 0x0c
C equ 0x0c
KEY_SCAN bsf STATUS,RP0 ; Seleccioan pagina 1
movlw b'00001111'
movwf PUERTAB ; RB7-RB4 salidas, RB3-RB0 entradas
bsf OPTION_REG,NOT_RBPU ; Activa cargas pull-up
bsf STATUS,RP0 ; Selecciona pagina 0
movlw 4
movwf KEY_1 ; Numero de columnas a explorar
movlw b'01111111'
movwf TECLA ; Columna a activar
KEY_SCAN_1 movf TECLA,W
movwf PUERTAB ; Activa fila
nop
movf PUERTAB,W
movwf KEY_2
subwf TECLA,W ; Lee las colunmas
btfss STATUS,Z ; Hay alguna tecla pulsada?
goto KEY_SCAN_2 ; Si hay alguna pulsada
bsf STATUS,C ; No hay ninguna en esa fila
rrf TECLA,C ; Seleeciona siguiente fila
decfsz KEY_1,F ; Salta si se han terminado las filas
goto KEY_SCAN_1
movlw 0x80
goto VOLVER ; Retorna codigo 0x80 (no hay pulsacion)
KEY_SCAN_2 movlw .100 ; Bucle de temporizacion de unos 20 ms
movwf KEY_DELAY_1 ; para evitar el rebote de los pulsadores
KEY_SCAN_3 clrf KEY_DELAY_2
clrwdt
KEY_SCAN_4 decfsz KEY_DELAY_2,F
goto KEY_SCAN_4
decfsz KEY_DELAY_1,F
goto KEY_SCAN_3
Movf TECLA, W ; Tras la temporizacion se lee nuevamente
movwf PUERTAB ; si la tecla es la misma. Asi se
nop ; evitan los rebotes
movf PUERTAB,W
subwf KEY_2,W
btfss STATUS,Z ; Es la misma?
goto KEY_SCAN_1 ; No, seguir con la exploracion
movf KEY_2,W ; Si, guardar en variable de salida TECLA el
; valor recogido
VOLVER movwf TECLA
return ; Fin de exploracion
KEY_TABLA movf KEY_1,W
addwf PCL,F ; Calcula desplazamiento
retlw 0x7D ; 0
retlw 0xEE ; 1
retlw 0xED ; 2
retlw 0xEB ; 3
retlw 0xDE ; 4
retlw 0xDD ; 5
retlw 0xDB ; 6
retlw 0xBE ; 7
retlw 0xBD ; 8
retlw 0xBB ; 9
retlw 0x7E ; A
retlw 0x7B ; B
retlw 0x77 ; C
retlw 0xB7 ; D
retlw 0xD7 ; E
retlw 0xE7 ; F
KEY_HEX movf TECLA,W
movwf KEY_2 ; Almacena el codigo temporalmente
clrf KEY_1 ; Contador HEX a 0
KEY_HEX_2 call KEY_TABLA ; Busca codigo en la tabla
subwf KEY_2,W ; Compara con el de la tecla
btfsc STATUS,Z ; Coincide?
goto KEY_HEX_1 ; Si
incf KEY_1,F ; No, incrementa contador HEX
goto KEY_HEX_2
KEY_HEX_1 movf KEY_1,W
movwf TECLA ; Carga contador HEX en la variable de salida
return
end
Muchas gracias si tienes tiempo ayudame con el lcd, por favor es que tengo que entregar el proyecto para el 13 de noviembre si puedes escríbeme. Gracias por tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas