El Teclado matricial
El Teclado matricial
El Teclado matricial
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
0 1 2 3<br />
4 5 6 7<br />
8 9 A B<br />
C D E F<br />
<strong>El</strong> <strong>El</strong> <strong>Teclado</strong> <strong>Teclado</strong> <strong>matricial</strong><br />
<strong>matricial</strong><br />
<strong>Teclado</strong> <strong>matricial</strong><br />
Renglón 0<br />
Renglón 1<br />
Renglón 2<br />
Renglón 3<br />
Columna 3<br />
Columna 2<br />
Columna 1<br />
Columna 0<br />
Microcontroladores<br />
M.C. M.C.<br />
Carlos E. Canto Quintal<br />
Microcontroladores<br />
Los teclados <strong>matricial</strong>es son<br />
ensamblados en forma de matriz ,<br />
como se ilustar en la figura. figura.<br />
<strong>El</strong> diagrama muestra un teclado<br />
como una matriz de 4X4 - 16<br />
teclas configuradas en 4<br />
columnas y 4 renglones. renglones.<br />
Cuando no se ha oprimido<br />
ninguna tecla, tecla,<br />
(todos ( todos las teclas<br />
abiertas) abiertas)<br />
no hay conexión conexi entre<br />
renglones y columnas .<br />
Cuando se oprime una tecla se<br />
hace una conexión conexi entre la<br />
columna y el renglón rengl de la tecla. tecla.
Decodificador de teclado<br />
Microcontroladores<br />
Muchos teclados comerciales ya traen incluido su decodificador,<br />
decodificador,<br />
que escanena<br />
el teclado y si, si,<br />
una tecla es presionada,<br />
presionada,<br />
regresa un número mero que identifica la<br />
tecla. tecla.<br />
Otra alternativa es adquirir por separado un chip decodificador y conectarlo al<br />
teclado. teclado<br />
<strong>El</strong> decodificador mostrado tiene 8 entradas; entradas;<br />
las 4 entradas “X” son conectadas a<br />
las 4 columnas del teclado y las 4 entradas “Y Y “son son conectadas al los 4<br />
renglones. renglones.<br />
No se muestran los capacitores que gobiernan la rapidez a la que se<br />
escanea el teclado. teclado.<br />
Cuando se oprime una tecla el código digo de 4 bits de la tecla ( con 16 teclas, teclas,<br />
los<br />
códigos digos están est entre 0000 y1111 en binario) binario)<br />
aparecerá aparecer en las 4 líneas neas de salida<br />
y la línea nea de dato disponible (DA) se pone en BAJO. Si se conecta a una línea nea de<br />
interrupción interrupci el microporcesador será ser interrumpido cuando se oprima alguna<br />
tecla. tecla.<br />
La Rutina de Servicio de la Interrupción,<br />
Interrupci , entonces lee los 4 bits y procesa<br />
el dato .<br />
<strong>El</strong> chip del decodificador se encarga de eliminar el rebote de las teclas, teclas,<br />
lo que<br />
libera al programador de esta responsabilidad,<br />
responsabilidad,<br />
esto es una ventaja al usar un<br />
chip decodificador.<br />
decodificador.<br />
M.C. M.C.<br />
Carlos E. Canto Quintal<br />
DECODIFICADOR DE TECLADO MATRICIAL HEXADECIMAL<br />
F E<br />
B A<br />
77 66<br />
33 22<br />
D C<br />
99 88<br />
55 44<br />
11 00<br />
X4<br />
X3<br />
X2<br />
X1<br />
Y4<br />
Y3<br />
Y2<br />
Y1<br />
Q1<br />
Q2<br />
Q3<br />
Q4<br />
DA<br />
OE<br />
Decodificador de teclado de<br />
4X4<br />
Microcontroladores<br />
INT
MM74C922 • MM74C923<br />
16-Key Encoder • 20-Key Encoder<br />
Microcontroladores<br />
M.C. M.C.<br />
Carlos E. Canto Quintal<br />
Conexión Conexi n de un LCD y un <strong>Teclado</strong> Matricial de 16 teclas al µ8051 8051<br />
3<br />
7<br />
B<br />
F<br />
2<br />
6<br />
A<br />
E<br />
+Vcc<br />
1<br />
5<br />
9<br />
D<br />
0<br />
4<br />
8<br />
C<br />
4.7 KΩ<br />
ren0<br />
ren1<br />
ren2<br />
ren3<br />
Col 0<br />
Col 1<br />
Col 2<br />
Col 3<br />
P3.0<br />
P3.1<br />
P3.2<br />
P3.3<br />
P3.4<br />
P3.5<br />
P3.6<br />
P3.7<br />
P1.7<br />
P1.6<br />
P1.5<br />
P1.4<br />
P1.3<br />
P1.4<br />
DB7<br />
DB6<br />
DB5<br />
DB4<br />
RS E R/W<br />
Microcontroladores<br />
10 KΩ
Tareas básicas a realizar para un teclado <strong>matricial</strong><br />
regresar<br />
No<br />
0 1 2 3<br />
4 5 6 7<br />
8 9 A B<br />
C D E F<br />
Checar<br />
Checar<br />
si<br />
si<br />
se<br />
se<br />
se<br />
se<br />
oprimió<br />
oprimió<br />
alguna<br />
alguna<br />
tecla<br />
tecla<br />
Se<br />
Se<br />
oprimió<br />
oprimió<br />
alguna<br />
alguna<br />
Tecla<br />
Tecla<br />
?<br />
?<br />
Si<br />
Rastrear<br />
Rastrear<br />
renglones<br />
renglones<br />
Para<br />
Para<br />
encontrar<br />
encontrar<br />
la<br />
la<br />
columna<br />
columna<br />
de<br />
de<br />
la<br />
la<br />
tecla<br />
tecla<br />
oprimida<br />
oprimida<br />
Descifrar<br />
Descifrar<br />
o<br />
o<br />
decodificar<br />
decodificar<br />
que<br />
que<br />
tecla<br />
tecla<br />
se<br />
se<br />
oprimió<br />
oprimió<br />
Se<br />
Se<br />
cargan<br />
cargan<br />
ceros<br />
ceros<br />
a<br />
a<br />
todos<br />
todos<br />
los<br />
los<br />
renglones<br />
renglones<br />
en<br />
en<br />
el<br />
el<br />
Puerto<br />
Puerto<br />
C ,<br />
,<br />
se<br />
se<br />
leen<br />
leen<br />
las<br />
las<br />
columnas<br />
columnas<br />
y<br />
y<br />
se<br />
se<br />
pregunta<br />
pregunta<br />
si<br />
si<br />
son<br />
son<br />
puros<br />
puros<br />
unos<br />
unos<br />
Microcontroladores<br />
Se<br />
Se<br />
carga<br />
carga<br />
cero<br />
cero<br />
a<br />
a<br />
los<br />
los<br />
renglones<br />
renglones<br />
uno<br />
uno<br />
a<br />
a<br />
uno<br />
uno<br />
hasta<br />
hasta<br />
que<br />
que<br />
se<br />
se<br />
encuentre<br />
encuentre<br />
la<br />
la<br />
columna<br />
columna<br />
donde<br />
donde<br />
está<br />
está<br />
la<br />
la<br />
tecla<br />
tecla<br />
oprimida<br />
oprimida<br />
Una<br />
Una<br />
vez<br />
vez<br />
identificada<br />
identificada<br />
la<br />
la<br />
columna<br />
columna<br />
y<br />
y<br />
conociendo<br />
conociendo<br />
el<br />
el<br />
renglón<br />
renglón<br />
se<br />
se<br />
aplica<br />
aplica<br />
el<br />
el<br />
algoritmo<br />
algoritmo<br />
para<br />
para<br />
obtener<br />
obtener<br />
el<br />
el<br />
binario<br />
binario<br />
de<br />
de<br />
la<br />
la<br />
tecla<br />
tecla<br />
oprimida<br />
oprimida<br />
¿Cómo saber que tecla se oprimió?<br />
RENGLÓN 0<br />
RENGLÓN 1<br />
RENGLÓN 2<br />
RENGLÓN 3<br />
COLUMNA 3<br />
COLUMNA 2<br />
COLUMNA 1<br />
COLUMNA 0<br />
TECLA = 4xRi + Cj<br />
M.C. M.C.<br />
Carlos E. Canto Quintal<br />
Microcontroladores<br />
Donde:<br />
Tecla=la tecla oprimida en binario<br />
Ri= # del renglón escaneado<br />
Cj= #.de la columna donde se encontró la tecla<br />
Ejemplo,si Ejemplo se oprimió la tecla 6,<br />
ésta se encuentra en el renglón 1 y<br />
columna 2, entonces:<br />
Tecla=4x1+2=6
et<br />
Inicio<br />
Inicio<br />
mandar<br />
mandar<br />
ceros<br />
ceros<br />
a<br />
a<br />
los<br />
los<br />
renglones<br />
renglones<br />
leer<br />
leer<br />
las<br />
las<br />
columnas<br />
columnas<br />
SI columnas<br />
columnas<br />
en<br />
en<br />
1’s?<br />
1’s?<br />
NO<br />
contador<br />
contador<br />
de<br />
de<br />
renglón<br />
renglón<br />
a<br />
a<br />
0<br />
0<br />
Ri�0<br />
Ri�0<br />
Inicializar<br />
Inicializar<br />
rastreo<br />
rastreo<br />
de<br />
de<br />
renglones<br />
renglones<br />
Scan�11111110<br />
Scan�11111110<br />
Diagrama de flujo del programa del teclado <strong>matricial</strong><br />
rastreo<br />
rastreo<br />
de<br />
de<br />
renglón<br />
renglón<br />
i<br />
i<br />
Renglones<br />
Renglones<br />
�Scan<br />
�Scan<br />
leer<br />
leer<br />
las<br />
las<br />
columnas<br />
columnas<br />
columnas<br />
columnas<br />
en<br />
en<br />
1’s?<br />
1’s?<br />
columna<br />
columna<br />
0=0<br />
0=0<br />
?<br />
?<br />
NO<br />
columna<br />
columna<br />
1=0<br />
1=0<br />
?<br />
?<br />
NO<br />
columna<br />
columna<br />
2=0<br />
2=0<br />
?<br />
?<br />
NO<br />
columna<br />
columna<br />
3=0<br />
3=0<br />
?<br />
?<br />
MOV P3,#0F0H<br />
MOV A,P3<br />
CJNE A,#0F0H,SCAN_REN<br />
RET<br />
SCAN_REN: MOV R0,#00<br />
MOV P3,#0FEH<br />
MOV A,P3<br />
ANL A,#0F0H<br />
CJNE A,#0FH,SCAN_COL<br />
INC R0<br />
SI<br />
SI<br />
SI<br />
SI<br />
SI<br />
Ri<br />
Ri<br />
�<br />
�<br />
Ri+1<br />
Ri+1<br />
col�<br />
col�<br />
0<br />
0<br />
Col�<br />
Col�<br />
1<br />
1<br />
col�<br />
col�<br />
2<br />
2<br />
Col�<br />
Col�<br />
3<br />
3<br />
Desplaza Scan<br />
Desplaza Scan<br />
A la izquierda<br />
A la izquierda<br />
Microcontroladores<br />
NO<br />
Ri=4?<br />
Ri=4?<br />
Tecla�4*Ri<br />
Tecla�4*Ri<br />
+col<br />
+col<br />
ret<br />
M.C. M.C.<br />
Carlos E. Canto Quintal<br />
SI<br />
Microcontroladores
RR A (Rotate Right the Accumulator)<br />
Microcontroladores<br />
Esta instrucción instrucci n rota el contenido del acumulador hacia la derecha:<br />
cada bit es desplazado una localidad hacia la derecha, donde el bit 0 se<br />
va al bit 7.<br />
RL A (Rotate ( Rotate Left the Accumalator)<br />
Accumalator<br />
M.C. M.C.<br />
Carlos E. Canto Quintal<br />
Microcontroladores<br />
Esta instrucción instrucci n rota el contenido del acumulador hacia la izquierda:<br />
Cada bit es desplazado una localidad hacia la izquierda , tal que el bit 7<br />
se va al bit 0
RRC A (Rotate ( Rotate Right through the Carry )<br />
Microcontroladores<br />
Esta instrucción instrucci n rota el contenido del acumulador hacia la derecha a<br />
través trav s del Acarreo ( C ) :<br />
Cada bit es desplazado una localidad hacia la derecha , donde el bit 0 se<br />
va al bit de acarreo (C) del PSW, mientras que el acarreo se va al bit 7<br />
(esto es: si el acarreo tenía ten a 1 antes de la ejecución ejecuci n de RRC A, entonces el<br />
bit 7 del acumulador contendrá contendr un 1 después despu s de la ejecución ejecuci n del RRC A.<br />
Otra alternativa<br />
M.C. M.C.<br />
Carlos E. Canto Quintal<br />
Microcontroladores<br />
• Mientras no se oprima ninguna tecla el programa<br />
escanea renglón 0, renglón1, renglón 2, renglón 3 y se<br />
regresa de nuevo al renglón 0 continuamente.<br />
• cuando se oprime una tecla, el número de esa tecla es<br />
puesto en R0.<br />
• Ya que el número de la tecla presionada será<br />
almacenada en R0, R0 inicialmente es 0. Cada tecla es<br />
escaneada y sino es la tecla oprimida, R0 es<br />
incrementado, de esa forma cuando la tecla oprimida es<br />
encontrada , R0 contendrá el número de la tecla.<br />
• la bandera de propósito general F0, será usada por la<br />
subrutina de scaneo de las columnas, para indicar<br />
cuando una tecla se oprimió o no en esa columna. Si al<br />
regresar de la subrutina F0 es “1”, significa que la tecla<br />
fue encontrada..