Está en la página 1de 2

Universidad de Zaragoza

Dpto. de Ingeniera Electrnica y Comunicaciones

Sistemas Electrnicos Digitales


Tema:02 Tcnicas de entrada/salida Tcnicas de barrido del teclado.
Tecla Sin Resistencia Flotante 0 1 R Pull-up en la entrada 1 0 1 R Pull-down en la entrada 0 0 1

Escuela Universitaria Politcnica de Teruel

1.-Introduccin.
Existe una gran confusin en las tcnicas de barrido de teclado. Este documento es un suplemento a los apuntes de la asignatura y ayudar a desarrollar software para la gestin de teclados.
No pulsada Pulsada, bit de salida=0 Pulsada, bit de salida=1

P_C0 1 2 3

P_C1 P_C2

P_C3

Con la resistencia de tipo pull-down, los valores en la lnea de entrada ser 0 cuando no se pulsa la tecla y el valor 1 se puede detectar escrito en el puerto de salida. Con resistencias de tipo pull-up el valor en la lnea de entrada es 1 mientras no se pulse una tecla y se puede detectar un valor 0 escrito en el puerto de salida.

4.-Dos grupos de resistencias.


P_D4 P_D3 P_D2

2.- Hardware bsico.


Cada tecla dispone de dos contactos, uno de ellos asociado a una fila y el otro a una columna. Cuando se pulsa una tecla, la fila y la columna asociada se conectan entre s. Las tensiones llegan al teclado mediante las lneas de un puerto de salida o la tensin de alimentacin suministrada mediante resistencias (pull-up si se conectan a la tensin de alimentacin o pull-down si se conectan a tierra). A partir de este momento analizaremos Esquemas de barrido. Generacin de interrupciones. Pulsado simultneo de teclas.

En principio no es importante si las resistencias son de tipo pull-up o pull-down. Tampoco lo es cual de los dos puertos hace el papel de entrada y cual el de salida. Tambin se puede utilizar dos juegos de resistencias, uno para las filas y otro para las columnas. Las resistencias no interfieren con las lneas de los puertos y ambos se pueden utilizar, bien como salida o bien como entrada. En el siguiente ejemplo se utilizarn dos juegos de resistencias de tipo pull-up, aunque se puede fcilmente extrapolar los razonamientos a juegos de resistencias de tipo pull-down o de tipo pull-up/pull-down. Esta es una posible secuencia. 1) Encontrar columnas. Configurar en el puerto C (filas) como entrada ($00 en DDRC). Configurar el puerto D (columnas) como salida ($FF en DDRD) y escribir $00 en PORTD. Leer el puerto C y la lnea con un valor 0 es la columna pulsada. 2) Buscar filas Configurar el puerto D (Columnas) como entrada ($00 en DDRD) Configurar el puerto C (filas) como salidas ($FF en DDRC) y escribir $00 en PORTC. Leer el puerto D y la lnea (bit) con un valor 0 es la fila pulsada. Este cdigo es realmente sencillo de escribir, pero tambin es el tipo de

3.- Esquemas de barrido de teclado.


Cuando se pulsa una tecla, se establece una conexin entre el puerto C y el puerto D. Esto es, un valor escrito en un puerto se puede leer en el otro. Pero Qu valor se lee cuando no se establece esta conexin?. Las resistencias de tipo pull-up y pull-down, se utilizan para definir los valores de tensin y evitar los valores El valor de la resistencia debe ser suficientemente alto como para que el puerto de lectura pueda asumir los valores de intensidad que se establecen.

10-feb-00

Curso 99/00

Universidad de Zaragoza
Dpto. de Ingeniera Electrnica y Comunicaciones

Sistemas Electrnicos Digitales


Tema:02 Tcnicas de entrada/salida Tcnicas de barrido del teclado. las lneas del puerto D. Si se conectan las tres lneas del puerto D de una puerta NAND de tres entradas, cada vez que pulse una tecla la salida de la puerta NAND valdr 1. Entonces aparece un flanco positivo que se puede detectar por el STAF.

Escuela Universitaria Politcnica de Teruel

resultados que da resultados errneos cuando se pulsan varias teclas a la vez.

4.1.-Barrido del teclado.


Slo se utilizar un nico juego de resistencias cuando es importante disminuir el hardware. En lo sucesivo slo supondremos un conjunto de resistencias de tipo pull-up. Con un solo grupo de resistencias, ste se debe conectar al puerto de entrada y el cdigo es un poco ms complicado (no mucho). Supongamos que las resistencias se conectan al puerto D, que es el utilizado como lneas de entrada, mientras que el puerto C es de salida. Como las lneas de los puertos no van a cambiar de direccin se mantendrn los valores $00 en DDRD y $FF en DDRC en la fase de inicializacin. La fila y la columna de la tecla pulsada a la vez. El procedimiento es el siguiente. 1) Enviar el valor %XXXX1110 al puerto C (comprobar la fila 1). 2) Leer el puerto D El bit con un valor 0 es la columna de la tecla pulsada. Si no hay 0, ir a la siguiente columna. 3) Comprobar las siguiente filas escribiendo en el puerto C los valores %XXXX1101 para la fila 2. %XXXX1011 para la fila 3. %XXXX0111 para la fila 4. 4) Completar el bucle desde el paso 2. Esta tcnica requiere de bucles (implica retardos), pero permite conocer fcilmente el valor de la tecla mediante una tabla de verdad. Sin embargo, cuando se pulsan dos teclas de la misma columna se puede establecer un cortocircuito entre una lnea de salida con valor 0 y otra lnea de salida con valor 1. Adems de los prcticamente seguros daos en el puerto de salida aparece una ambigedad en los valores de tensin.

4.3.- Cortocircuitos entre las lneas de salida.


No debemos preocuparnos de los cortocircuitos mientras esperamos la interrupcin ya que todas las lneas de salida tienen el mismo voltaje. En el proceso de barrido, dos tensiones de salida diferentes no se pueden conectar si configuramos como lnea de salida a un 1) Escribir %XXXX0001 en DDRC. 2) Escribir %XXXX0000 en PORTC (comprueba la fila 1). Leer el puerto D El bit con valor 0 es la columna de la tecla pulsada. Si no hay valor 0, ir a la siguiente fila. 3) Comprobar las siguientes filas escribiendo en el registro DDRC %XXXX0010 para la fila 2. %XXXX0100 para la fila 3. %XXXX1000 para la fila 4. 4) Completar el bucle desde el paso 2.

5.-Comentarios finales. 5.1.-Hardware vs. Software.


Algunas limitaciones en el hardware se pueden superar con un cdigo depurado, mientras que un poco ms de hardware puede hacer un cdigo ms sencillo.

5.2.- Seguridad.
El ciclo de barrido suele ser corto en modo de operacin normal, de forma que no se suelen dar daos por cortocircuitos . Sin embargo, en procesos de depuracin estos ciclos pueden ser mucho ms largos: El diseo debe estar protegido frente este problema.

4.2 Generacin de una interrupcin.


De nuevo suponemos el puerto D como entrada, con resistencias de tipo pull-up, y podemos detectar un valor 0 escrito en el puerto C cuando se pulsa la tecla apropiada. Si todos los valores del puerto C son 0, cada vez que pulsemos una tecla aparecer un cero en alguna de

10-feb-00

Curso 99/00