01.11.2012 Views

El Teclado matricial

El Teclado matricial

El Teclado matricial

SHOW MORE
SHOW LESS

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..

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!