Teclado Matricial 4x3.
Esta rutina es una adaptación de la rutina original del Teclado Matricial 4x4 hecha por petición popular (ok, un solo comentario, pero alguien lo pidió). La lógica del manejo del teclado matricial 4x3 es la misma que para el teclado 4x4, el nibble bajo del puerto B se configura como salida y el nibble alto como entrada. Se recorre un cero por el nibble bajo y se va incrementando un puntero que es el que nos ayuda a saber exactamente que tecla se presionó.
Como este teclado cuenta con solo 12 teclas, el puntero llegará hasta 12 y si no se presionó ninguna tecla para entonces la rutina que explora el teclado volverá a empezar. En realidad la lógica es la misma que para el teclado matricial de 16 teclas, así que si desean leer la explicación completa lo pueden hacer en la página del teclado matricial 4x4.
Este es el diagrama de conexión del teclado en un pic 16f628a.
Descargar el código: Teclado Matricial 4×3.
Con esto vuelvo después de unos meses, espero no tardarme tanto para volver a actualizar el blog. Como siempre sus comentarios son bien recibidos y se aceptan sugerencias para futuros tutoriales.
Hola, esta pagina me parece EXCELENTE un 11 a sus creadores...
ResponderEliminarEh venido siguiendo sus aportes y realmente funcionan, estoy probando este y en su defecto no me funciona de manera correcta, podrian checar si ahy algun problema con el .asm.
Graciasss XD
Hola muy excelente esta pagina, have tiempo queries esto, Una pregunta, algiien podrida hacer el codigi en basic y no en emsambler
EliminarESTA PAGINA ES MUY BUENA E INTERESANTE MUCHAS GRACIAS POR SUS APORTES
ResponderEliminarSaludos. Estan buenos los proyectos, dime si podrias hacer que en vez de dar salida para 7 segmentos la diera en bcd? Gracias.
ResponderEliminarANONIMO....LES AGRADESCO POR ESTA BUENA INFORMACION
ResponderEliminarcon que programa se compila el lenguage?
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarhola tengo este codigo pero kuando presiono solo parpadea y no sale el numero fijo en el display,,,,,
ResponderEliminarinclude "p16f84a.inc"
LIST P=16f84a
__CONFIG _WDT_OFF & _XT_OSC
KEY EQU 0x0C
TEMP EQU 0x0D
COUNT EQU 0x0E
org 0x00 ; Inicio de programa
bsf STATUS,5 ; Inicio configuracion E/S
clrf PORTA ; Puerto A como salida
movlw 0xF0
movwf PORTB
bcf STATUS,5 ; Fin configuracion E/S
bsf PORTA,0
BEGIN: clrf KEY
incf KEY,1
movlw 0x01
movwf PORTB
KEY_V: btfsc PORTB,4 ; Verificar tecla pulsada en columna 1
goto CON2 ; Ir a CON2 si se pulsa tecla
incf KEY,1 ; Incrementar KEY si no se pulsa tecla
btfsc PORTB,5 ; Verificar tecla pulsada en columna 2
goto CON2 ; Ir a CON2 si se pulsa tecla
incf KEY ; Incrementar KEY si no se pulsa tecla
btfsc PORTB,6 ; Verificar tecla pulsada en columna 3
goto CON2 ; Ir a CON2 si se pulsa tecla
incf KEY ; Incrementar KEY si no se pulsa tecla
btfsc PORTB,7 ; Verificar tecla pulsada en columna 4
goto CON2 ; Ir a CON2 si se pulsa tecla
incf KEY ; Incrementar KEY si no se pulsa tecla
movlw 0x11
subwf KEY,0
btfsc STATUS,2 ; Comprueba si llego a ultima tecla
goto CON1
bcf STATUS,0 ; Poner C=0
rlf PORTB,1
goto KEY_V
CON1: clrf KEY
goto DISP
CON2: movf KEY,0
movwf TEMP ; Retiene ultima tecla pulsada
DISP: bsf STATUS,5 ; Inicio configuracion E/S
clrf PORTB ; PortB como salida
bcf STATUS,5 ; Fin configuracion E/S
movf TEMP,0
call CONV
movwf PORTB ; Mostrar tecla pulsada en display
bcf PORTA,0 ; Habilitar display
nop
bsf PORTA,0 ; Deshabilitar display
bsf STATUS,5 ; Inicio configuracion E/S
movlw 0xF0
movwf PORTB
bcf STATUS,5 ; Fin configuracion E/S
goto BEGIN
;Subroutines
CONV: addwf PCL,1 ;Convierte hexadecimal a 7 segmentos
retlw 0x00 ;" "
retlw 0x0C ;1 tecla 1
retlw 0xB6 ;2 tecla 2
retlw 0x9E ;3 tecla 3
retlw 0xE2 ;F tecla 4
retlw 0xCC ;4 tecla 5
retlw 0xDA ;5 tecla 6
retlw 0xFA ;6 tecla 7
retlw 0xF2 ;E tecla 8
retlw 0x0E ;7 tecla 9
retlw 0xFE ;8 tecla 10
retlw 0xDE ;9 tecla 11
retlw 0xBC ;D tecla 12
retlw 0xEE ;A tecla 13
retlw 0x7E ;0 tecla 14
retlw 0xF8 ;B tecla 15
retlw 0x72 ;C tecla 16
retlw 0x00 ;" "
end
El puerto A, debe de llevar resistencias para el display, de 220 o 330 ohm.
ResponderEliminarSi no las tiene, los diodos LED, se quemaran por tanta corriente.
Utiliza nuestro foro de electronica si tienes dudas no relacionadas con este tema.