22
Teclado Detección de una tecla pulsada.

Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Embed Size (px)

Citation preview

Page 1: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Teclado

Detección de una tecla pulsada.

Page 2: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Estructura de un teclado I

• Se trata de una matriz de pulsadores.

• Las columnas están pulled up a una tensión de referencia.

• X están configuradas como salida

• Y estánconfiguradas como entrada

X

X

X

X

Y Y Y Y

5V

Page 3: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Estructura de un teclado II

• En las intersecciones están los pulsadores.

• El pulsador pone en contacto la fila con la columna correspondiente

X

X

X

X

Y Y Y Y

5V

Page 4: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Funcionamiento I

• En estado de reposo las columnas reciben toda la tensión de referencia

• El estado de las entradas Y es de 1 lógico

X

X

X

X

1 1 1 1

5V

Page 5: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Funcionamiento II

• Al pulsar una tecla se establece un puente entre la fila y la columna.

• Si la X correspondiente está a tierra toda la corriente derivará hacia ella quedando la entrada Y respectiva en contacto con tierra

X

X

0

X

1 1 0 1

5V

Page 6: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Procedimiento.

• El procedimiento para trabajar con el teclado es activar todas las salidas (0 lógico) y esperar a que una de las entrada se active

0

0

0

0

1 1 1 1

5V

Page 7: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Procedimiento

• Cuando se ha detectado una entrada activa, se vuelven a desactivar todas las salidas y se procede a explorar el teclado fila a fila

0

0

0

0

1 1 0 1

5V

Page 8: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Procedimiento

0

1

1

1

1 1 1 1

5V

1

0

1

1

1 1 1 1

5V

1

1

1

0

1 1 1 1

5V

1

1

0

1

1 1 0 1

5V

Page 9: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Procedimiento

• Al detectar la columna ya tenemos identificada la tecla pulsada con un “código de tecla”

XXXXYYYY1 1 0 1 1 1 0 1

1

1

0

1

1 1 0 1

Page 10: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Procedimiento

• Este código de tecla debe luego traducirse al código del carácter asignado a la tecla

11011101 -----> 9Código ascii del 9:00111001 (39h)

1 2 3

4 5 6

7 8

C0 A B

F

E

D9

Page 11: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Conexión al PIC

• Las ocho líneas del teclado están conectadas al Puerto B

• RB0..RB3 se deben configurar como entrada

• RB4..RB7 se deben configurar como salida

RB4

RB5

RB6

RB7

RB0 RB1 RB2 RB3

5V

Page 12: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Conexión al PIC

• Para proporcionarle tensión al sistema las líneas de salida del puerto B deben estar activadas a pull up

Page 13: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Rebotes

• La pulsación es un hecho eléctrico que puede causar cierta inestabilidad.

• Cuando se detecta una pulsación hay que distinguirla de un rebote producido por una pulsación previa

5v

0v

0v

5v

Page 14: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

ReboteSi cada ciclo de instrucción dura un micro segundo, es posible muestrear (leer por el puerto) 1000 veces la señal.Antes de que la señal se estabilice podemos hacer muchas lecturas

0v

5v

1ms

Page 15: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Rebote

• La manera de evitar los rebotes es esperar un cierto retardo tras haber detectado la pulsación de una tecla y comprobar nuevamente su estado

0v

5v

Detección errónea de pulsación de tecla

Comprobación de la pulsación

5ms

Page 16: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Fin de pulsación

• Otro problema es el de las lecturas múltiples de la misma pulsación.

• Para evitarlo hay que esperar a que la tecla deje de estar pulsada antes de devolver el código

0v

5v

Tecla pulsada fin de pulsación

5v

0v

Page 17: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Programación. Tablas

• En la programación el aspecto más relevante es el de la traducción de código de tecla a código ascii

• Para ello lo más cómodo es emplear tablas

inicio movlw 34hmovwf numeromovlw 0ffhmovwf cont

otro incf cont,1Call codigonumerosubwf numero,0btfss STATUS,Zgoto otro

;En W queda el numero que designa el código ascii 34hfin goto fincodigonumero movf cont,w addwf PCL retlw 30h; código ascii del cero

retlw 31h; código ascii del unoretlw 32hretlw 33hretlw 34hretlw 35hretlw 36hretlw 37hretlw 38hretlw 39h; código ascii del nueve

Page 18: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Programación. Tablas

• Mediante las instrucciones de sumar a PCL y retlw se van recuperando valores y comparándolos con el de referencia.

• Cont va llevando la cuenta y al final indicará la posición del valor encontrado

inicio movlw 34hmovwf numeromovlw 0ffhmovwf cont

otro incf cont,1Call codigonumerosubwf numero,0btfss STATUS,Zgoto otro

;En W queda el numero que designa el código ascii 34hfin goto fincodigonumero movf cont,w addwf PCL retlw 30h; código ascii del cero

retlw 31h; código ascii del unoretlw 32hretlw 33hretlw 34hretlw 35hretlw 36hretlw 37hretlw 38hretlw 39h; código ascii del nueve

Page 19: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Programación.Tablas

• Hay que tener cuidado con el manejo de PCL como mecanismo de salto.

• PCL solo actúa en ámbito de página PCLATH

00000001 PCLATH=000020003......00ff01000101 PCLATH=101020103......01ff02000201 PCLATH=202020203......02ff03000301 PCLATH=303020303......03ff

!cuidado¡

Page 20: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Programación. Tablas

• Si la tabla se encuentra en una página diferente a la 0 es necesario actualizar previamente el PCLATH antes de saltar a la tabla

inicio movlw 34hmovwf numeromovlw 0ffhmovwf cont

MOVLW HIGH codigonumeroMOVWF PCLATH

otro incf cont,1Call codigonumerosubwf numero,0btfss STATUS,Zgoto otro

;En W queda el numero que designa el código ascii 34hfin goto fincodigonumero movf cont,w addwf PCL retlw 30h; código ascii del cero

retlw 31h; código ascii del unoretlw 32hretlw 33hretlw 34hretlw 35hretlw 36hretlw 37hretlw 38hretlw 39h; código ascii del nueve

Page 21: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

Programación. Tablas

• Las tablas no pueden saltar los límites de una página PCLATH.

• Ubicar las tablas de forma segura usando la directiva org

00000001

PCLATH=0 00020003

......00ff

0100PCLATH=1 0101

01020103

......01ff

0200PCLATH=2 0201

02020203

......02ff

0300PCLATH=3 0301

03020303

......03ff

codigonumero movf cont,w addwf PCL retlw 30h;

retlw 31h; retlw 32hretlw 33hretlw 34hretlw 35hretlw 36hretlw 37hretlw 38hretlw 39h;

Page 22: Teclado Detección de una tecla pulsada.. Estructura de un teclado I Se trata de una matriz de pulsadores. Las columnas están pulled up a una tensión de

FIN