Anda di halaman 1dari 3

Curso: Sistemas Digitales II

Tema: Teclado Matricial 4x4

TECLADO MATRICIAL 4X4


Introduccin:
Los sistemas con micro controladores tienen como finalidad el proceso de datos. stos se
obtienen de formas muy variadas puede ser de manera automtica por medio de sensores
que midan parmetros fsicos o de manera manual, en cuyo caso tienen que ser
suministrados por los usuarios. Para este ltimo caso se pueden usar pulsadores cuando la
informacin es muy simple, tal como se ha hecho hasta ahora, o mediante teclados de
mayor o menor complejidad.
Descripcin: Dispositivo de entrada de datos que consta de 16 teclas o pulsadores,
dispuestos e interconectados en filas y columnas. Dispone de un conector SIL (Single In
Line) macho de 8 pines que se corresponden con las 4 filas y las cuatro columnas de las
que dispone.

Funcionamiento: En la siguiente figura vemos el esquema de conexionado interno del


teclado matricial y sus correspondientes pines de salida numerados de izquierda a derecha
mirando el teclado tal y como se ve en la foto anterior. Cuando se presiona un pulsador se
conecta una fila con una columna, teniendo en cuenta este hecho es muy fcil averiguar
que tecla fue pulsada. Tambin podemos ver el conexionado tpico con el puerto B del C
PIC.
Las resistencias de 2k2 son necesarias para poder compartir el puerto del pic
independientemente del teclado y por ejemplo poder conectar un LCD o una barra de leds
al mismo tiempo. Durante la fase de lectura del teclado la mitad de la puerta B es
configurada como entrada y la otra mitad como lectura y durante la escritura en el lcd o otro
sistema, la puerta B es configurada como salidas. Entonces se podran cortocircuitar
accidentalmente las salidas de los puertos provocando su destruccin, si pulssemos
alguna tecla es ese momento con lo que al poner estas resistencias evitamos este hecho y
as si se produjera el cortocircuito tan solo circulara una pequea corriente y el puerto del
C no correra ningn riesgo.
La siguiente librera configura las salidas y entradas para usar el teclado escanea las teclas
y si es pulsada alguna retorna el valor de tecla en modo hexadecimal para ser mostrado
directamente en un display LCD. Las variables y subrutinas utilizadas son
KB_Port
KB_Scan
Tecla

Configura los puertos B del PIC para ser usados con


el teclado.
Escanea todas las teclas y devuelve la tecla pulsada
en formato Hexadecimal.
Variable en donde se devuelve la tecla pulsada

Docente: Ing. Jos Estrada Montes

Curso: Sistemas Digitales II


Tema: Teclado Matricial 4x4

RUTINA
Descripcin: Para controlar el teclado, los puertos del C conectados a las filas se
programan como salidas y los conectados a las columnas del teclado se programan como
entradas, tambin se activan las resistencias de polarizacin internas en los puertos de
salida. Esto se hace mediante la llamada a la etiqueta "KB_Port" que inicializa los puertos
para ser usados con el teclado matricial.
KB_Port

;Inicializa la puerta B para las entradas del


;teclado. Programa RB0-3 como salidas y RB4-7
;entradas con las resistencias de polarizacin
;habilitadas------------------------------------------BSF
STATUS,RP0
;Selecciona Pagina 1 (Banco)
MOVLW 0F0h
;PB4-7 como entradas
MOVWF TRISB
;y PB0-3 como salidas
BSF
OPCION,RBPU ;Habilita R de polarizacin en entradas
BCF
STATUS,RP0
;Vuelve a la pagina 0 (Banco)
RETURN
;Retorna.

Ahora para saber que tecla esta siendo pulsada necesitamos escanear el teclado, y esto se
consigue mediante la siguiente rutina que consiste en ir poniendo una a una las lneas RB0
a RB3 (conectadas a las filas del teclado) a nivel bajo ya que estas salidas tienen
conectada la resistencia de polarizacin a Vcc y por lo tanto estn siempre a nivel lgico
alto. Cada vez que una fila se pone a nivel bajo se hacen 4 comprobaciones para ver si
una de las cuatro columnas se a puesto a nivel bajo y as saber la tecla pulsada.
KB_Scan
CLRF
INCF
MOVLW
MOVWF
NOP
Cheq_Col BTFSS
GOTO
INCF
BTFSS
GOTO
INCF
BTFSS
GOTO
INCF
BTFSS
GOTO
INCF

Tecla
Tecla,f
0Eh
PORTB
PORTB,4
antirebotes
Tecla,f
PORTB,5
antirebotes
Tecla,f
PORTB,6
antirebotes
Tecla,f
PORTB,7
antirebotes
Tecla,f

Ultima_Tecla
MOVLW d'17'
SUBWF Tecla,w
BTFSC
STATUS,Z
GOTO
NTeclas
BSF
STATUS,C
RLF
PORTB,f
GOTO
Cheq_Col
NTeclas CLRF Tecla
RETURN
antirebotes

;Escanea el teclado
;Borra Tecla y
;prepara Tecla para primer cdigo.
;Saca 0 a la primera fila
;de la Puerta B
;Nada para estabilizacin de seal.
;Primera columna = 0
;Sale si se ha pulsado tecla.
;Si no tecla pulsada, incrementa tecla.
;Segunda columna = 0
;Sale si se ha pulsado tecla.
;Si no tecla pulsada, incrementa tecla.
;Tercera columna = 0
;Sale si se ha pulsado tecla.
;Si no tecla pulsada, incrementa tecla.
;Cuarta columna = 0
;Sale si se ha pulsado tecla.
;Si no tecla pulsada, incrementa Tecla.
;comprueba si se a escaneado todo el teclado
;Carga W con el nmero de Teclas + 1.
;y lo compara con el valor actual de Tecla.
;Si Tecla + 1 = valor actual.
;No ha sido pulsada ninguna tecla.
;Pone a 1 Bit C.
;as la Fila 1 pasa a 1 con la rotacin a izqda.
;Coloca variable Tecla a 0
;y regresa.

;ahora se espera a que la tecla sea soltada para evitar rebotes


;y reactivaciones de tecla
;esta parte puede ser eliminada si para nuestro proyecto no es necesaria
;o es un inconveniente.

Espera1 BTFSS
GOTO
Espera2 BTFSS
GOTO
Espera3 BTFSS
GOTO
Espera4 BTFSS
GOTO

MOVF
CALL

PORTB,4
Espera1
PORTB,5
Espera2
PORTB,6
Espera3
PORTB,7
Espera4

Tecla,w
T_Conv

;Si no se suelta la tecla FILA 1


;vuelve a esperar.
;Si no se suelta la tecla FILA 2
;vuelve a esperar.
;Si no se suelta la tecla FILA 3
;vuelve a esperar.
;Si no se suelta la tecla FILA 4
;vuelve a esperar.

;pone en w el numero contenido en la variable


;llama a la tabla de conversion y retorna

Docente: Ing. Jos Estrada Montes

Curso: Sistemas Digitales II


Tema: Teclado Matricial 4x4
MOVWF Tecla
RETURN

T_Conv ADDWF
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW

PCL,1
'0'
'1'
'4'
'7'
'A'
'2'
'5'
'8'
'0'
'3'
'6'
'9'
'B'
'F'
'E'
'D'
'C'

;con el valor en hexadecimal y lo pone en la variable.


;vuelve al programa principal que hizo la llamada

;Tecla n0 = 0
;Tecla n1 = 1
;Tecla n2 = 4
;Tecla n3 = 7
;Tecla n4 = A
;Tecla n5 = 2
;Tecla n6 = 5
;Tecla n7 = 8
;Tecla n8 = 0
;Tecla n9 = 3
;Tecla n10 = 6
;Tecla n11 = 9
;Tecla n12 = B
;Tecla n13 = F
;Tecla n14 = E
;Tecla n15 = D
;Tecla n16 = C

PROYECTO
CUESTIONARIO
Cmo modificara el programa anterior a fin de obtener el mismo
resultado pero usando interrupciones?
Cul es la razn por el cual se usa un teclado 4x4 en un PIC16F84A?
Disee un programa que guarde en la memoria EEPROM el valor de la
tecla pulsada en el Teclado Hexadecimal.
Por qu se usan las resistencias internas del Co activadas por
software (registro OPTION Bit RBPU)?
Disee un programa usando el teclado 4x4 de tal modo que cuando se
pulse pueda ser mostrado en el Display a 7 segmentos. Este programa
debe usar subrutinas del manejo del teclado
CONCLUSIONES

Docente: Ing. Jos Estrada Montes

Anda mungkin juga menyukai