Red de conocimiento informático - Material del sitio web - Cómo funcionan los teclados periféricos

Cómo funcionan los teclados periféricos

¿Alguien sabe cómo funciona un teclado periférico? Si no lo sabes, ¡sígueme para descubrirlo! A continuación se muestra el contenido que compilé, ¡espero que te guste!

Introducción al teclado periférico

El teclado es un conjunto de teclas. Es el dispositivo de entrada más comúnmente utilizado para microcontroladores. El operador puede ingresar datos o comandos a través del teclado para lograr funciones simples. Diálogo persona-computadora. El teclado utilizado por el microcontrolador es un interruptor normalmente abierto. Por lo general, los dos contactos de la tecla están abiertos y los contactos se cierran cuando se presiona la tecla. Los teclados se dividen en teclados codificados y teclados no codificados. El reconocimiento del teclado se puede realizar mediante software o chips especiales.

Hay muchas formas de expandir la interfaz del teclado del microcontrolador MCS-51. Desde la perspectiva de la estructura del hardware, existen aquellas que extienden el teclado a través de la interfaz I/0 del microcontrolador, y las hay. también aquellos que diseñan teclados ampliando la interfaz de E/S, y algunos utilizan un chip de teclado dedicado.

Cómo funciona el teclado

El teclado se divide estructuralmente en teclado independiente y teclado matricial. En términos generales, se utiliza un teclado independiente cuando hay menos teclas y un teclado matricial cuando hay más teclas.

(1) Teclado independiente.

En el sistema de medida y control compuesto por microcontroladores e instrumentos inteligentes, el más utilizado es el teclado independiente. La característica de este tipo de teclado es que el software y el hardware son relativamente simples. La desventaja es que cuando el número de teclas es grande, ocupa una gran cantidad de líneas de puerto. La Figura 1 es un teclado sin codificación diseñado utilizando el puerto P1 del microcontrolador MCS-51.

Figura 1 Teclado independiente

Cuando no se presiona el botón, debido a la resistencia pull-up interna, la interfaz de E/S correspondiente de la CPU es una entrada de alto nivel; Cuando se presiona el botón, la interfaz de E/S correspondiente se convierte en entrada de bajo nivel. Siempre que determine el estado de la interfaz de E/S en su programa, podrá saber qué tecla está apagada. La siguiente es una subrutina de procesamiento de teclas de teclado sin codificación.

JNB P1.0, KEY00 ;Llave en mano 1 Controlador

JNB P1.1, KEY01 ;Llave en mano 1 Controlador

JNB P1.2, KEY02 ; Llave en mano 1 controlador

JNB P1.3, KEY03 ; Llave en mano 1 controlador

JNB P1.4 , KEY04 ; Llave en mano 1 controlador

JNB P1. 5, KEY05 ;Girar llave 1 controlador

JNB P1.6, KEY06 ;Girar llave 1 controlador

JNB P1.7, KEY07 ;Girar llave 1 controlador

RET ;No se presiona ninguna tecla, regresa

TECLA00:

RET

TECLA01:

RET

?

(2) Teclado matricial.

Los teclados matriciales se utilizan cuando hay una gran cantidad de teclas. Están compuestos por filas y columnas, y las teclas se ubican en la intersección de filas y columnas. La estructura de 3*3 filas y columnas puede formar un teclado con 9 teclas. Asimismo, 4*4 filas y columnas forman un teclado de 16 teclas. Obviamente, cuando el número de teclas es grande, el teclado matricial ahorra muchas interfaces de E/S en comparación con el teclado independiente.

2. Método de reconocimiento de teclas del teclado.

(1) Método de escaneo.

A continuación se toma como ejemplo presionar la tecla K2 en la Figura 2 para ilustrar el método de identificación de esta tecla.

Figura 2 8031 ​​conectado al teclado

Hay dos métodos de escaneo: escaneo de filas y escaneo de columnas No importa cuál se use, el efecto es el mismo, pero el. El método de procesamiento en el programa es diferente. A continuación se utiliza el método de escaneo de columnas como ejemplo para presentar el método de escaneo para identificar claves. Primero, en el programa de procesamiento de claves, presione P1.4-P1.7 hacia abajo en secuencia. Solo uno de P1.4-P1.7 está bajo en un momento determinado.

Al leer una línea de bajo voltaje, puede determinar qué tecla se presionó según el estado de esa línea. Por ejemplo, cuando se presiona el botón 2, la línea de columna P1.5 tiene un nivel bajo y el estado de la línea de columna de lectura P1.0 baja, lo que muestra que el botón K2 está presionado. Generalmente, las claves se procesan en dos pasos en el método de escaneo. El primer paso es determinar si se ha presionado una tecla. Si la fila tiene un nivel bajo, significa que se ha presionado una tecla. Cuando se determina que se presiona una tecla, las líneas de las columnas se hacen en secuencia, se leen las líneas de las columnas y luego se determina qué tecla se presiona.

(2) Método de inversión de filas.

El método de escaneo consiste en escanear y consultar fila por fila o columna por columna. Cuando se presiona una tecla en la última columna, se requieren múltiples escaneos para finalmente obtener los valores de fila y columna de esta clave. . El método de inversión de filas es obviamente mucho más simple. No importa en qué columna se presione la tecla, el valor de la fila donde se encuentra la clave se puede obtener en dos pasos. La Figura 4.38 todavía se utiliza como ejemplo para presentar el método de inversión de filas.

Primero, use las filas P1.0-P1.3 como filas de entrada, las filas de columnas P1.4-P1.7 como filas de salida, y las salidas de las filas de salida son todas bajas, lea el estado de la fila , la fila con nivel bajo es la fila donde se encuentra el botón. Luego use la línea de la columna como línea de entrada, la línea de la fila como línea de salida y envíe la línea de salida a un nivel bajo. Lea el estado de la línea de la columna. Luego, la línea de la columna con un nivel bajo es la columna clave. Combinando los resultados de los dos pasos anteriores, se determina la fila y la columna de la clave para identificar la tecla presionada.

Supongamos que se presiona el botón 10, en el primer paso, P1.3-P1.0 son todos de nivel bajo, lea el valor de P1.4-P1.7, luego P1.5 es de nivel bajo ; en el segundo paso, las salidas de P1.4-P1.7 son todas de nivel bajo, lea P1.3-P1.0 y P1.2 es de nivel bajo. A partir de esto podemos determinar que se presiona una tecla en la fila 3, columna 2, y esta tecla es la tecla K10.

3. Circuito de interfaz del teclado

El diseño del teclado del microcontrolador MCS-51 se puede controlar de manera flexible de acuerdo con la situación real del sistema del microcontrolador. Cuando se utiliza un microcontrolador con memoria de programa interna, si la interfaz de E/S del microcontrolador es suficiente, puede usar directamente la interfaz de E/S del microcontrolador para conectarse al teclado. Si la interfaz de E/S no es suficiente, puede usar la interfaz de E/S de expansión para conectar el teclado y, a veces, también puede usar un chip de interfaz de teclado dedicado.

(1) Utilice la interfaz de E/S del microcontrolador para conectar el teclado.

Hay dos situaciones cuando se utiliza la interfaz de E/S del microcontrolador MCS-51 para conectarse al teclado. Una es cuando P0, P1, P2 y P3 son entradas/salidas normales que puede utilizar. cualquier interfaz de E/S para conectarse al teclado; en segundo lugar, cuando el sistema del microcontrolador necesita expandir la memoria del programa, la memoria de datos y las E/S, dado que P0 y P2 se utilizan como buses de datos de direcciones, el teclado extendido solo puede usarse. el puerto P1 y el puerto P3. La Figura 2 muestra un teclado matricial de 4*4 diseñado utilizando el puerto P1 del microcontrolador MCS-51.

Cabe señalar que si utiliza el puerto P0 para diseñar un teclado, debe proporcionar una resistencia pull-up para la línea del puerto P0, y su tamaño es generalmente de 2-10 kN.

(2) Diseñe el teclado utilizando la interfaz de E/S extendida.

En términos de expansión del bus del microcontrolador MCS-51, el puerto P0 y el puerto P2 se utilizan como bus de datos y bus de direcciones respectivamente, mientras que el puerto P1 y el puerto P3 tienen otros usos. La expansión del teclado puede utilizar el puerto de E/S extendido. El teclado matricial de 4*4 diseñado con el puerto de PC de 8255 se muestra en la Figura 3. El teclado de codificación diseñado con el puerto de PC de 8255, PC0-PC3 son entradas de fila y PC4-PC7 son salidas de columna.

Figura 3 Diagrama de conexión entre el 8255 y el teclado.

(3) Antirrebote de teclas.

Dado que el interruptor de llave habitual es un interruptor mecánico, cuando el interruptor se cierra y se abre, no se enciende y apaga de forma inmediata y estable, sino que va acompañado de una serie de vibraciones en el momento de cerrarse y apertura.

Para garantizar que la CPU solo maneje un cierre de tecla, es necesario realizar un procesamiento antirrebote en el programa o hardware. Para ahorrar hardware, generalmente en sistemas de microcomputadoras de un solo chip, generalmente no se usa el método de hardware para eliminar la fluctuación de teclas, pero se usa el método de software para eliminar la fluctuación.

Es decir, después de detectar que el botón está cerrado, se retrasará durante 5 a 10 ms, de modo que la fluctuación previa al retardo desaparezca y luego se detecte nuevamente el estado del botón. Si el nivel del estado cerrado aún se mantiene, se confirma que el botón está cerrado. De hecho, el botón está presionado. Cuando se detecta una liberación de clave, también se debe dar un retraso de 5 a 10 milisegundos para permitir que la inquietud desaparezca después del retraso y luego se transfiera al controlador de claves. El siguiente es un programa de teclas con función anti-vibración, que solo realiza el procesamiento de teclas cuando se presiona y luego se suelta la tecla.

KEY_00:

JB P1.0, KEY_01 ;No se presionó ninguna tecla, verifique la siguiente tecla

LCALL DELAY ;Retraso 10 ms

JNB P1.0, $ ;La tecla ha sido presionada, esperando

LCALL DELAY ;La tecla ha sido liberada, demora 10ms

JB P1.0, KEY_00 ;Se completó una pulsación de tecla , Ir al controlador de teclado

KEY_01:

RET

(4) Codificación del teclado.

Para un teclado independiente, el número de teclas es pequeño y se puede codificar de forma flexible según la situación real. Para un teclado matricial, la posición de la tecla está determinada únicamente por el número de fila y el número de columna, por lo que el número de fila y el número de columna están codificados en binario respectivamente, y luego los dos valores se combinan en un byte, donde el 4 alto Los bits son el número de fila y los 4 bits inferiores son el número de columna. Por ejemplo, cuando se presiona la décima tecla, el número de columna vuelve a leer el valor de 1011 y el número de fila vuelve a leer el valor de 1101. Los dos valores se combinan en 11011011 = 0DBH. Según este valor, puede. ser transferido al manejador de la décima clave. Aunque este método es simple, es muy discreto y debe combinarse con el circuito de hardware al leer el programa. Los valores clave leídos también se pueden calcular de cierta manera para calcular los valores clave correspondientes para la relajación, pero esto aumentará la carga de trabajo del programa. Por lo tanto, los programas de procesamiento de teclado en la mayoría de los sistemas de microcontroladores solo se basan en la relajación. en los valores clave leer de nuevo el cambio.

(5) Chips de teclado especiales de uso común.

Ya sea que use la interfaz de E/S de la CPU para expandir el teclado o use el chip de E/S extendido para expandir el teclado, debido a la expansión de la interfaz de E/S común, si desea Diseñe un programa de teclado especial en el programa del microcontrolador. Especialmente para teclados matriciales, el programa es relativamente complicado. Por lo tanto, en algunos sistemas de microcontroladores más complejos, puede optar por diseñar un chip de teclado para un teclado dedicado. Los chips de expansión de teclado más utilizados ahora incluyen Intel8279, CH451, ICM7218, PCF8574, etc.

(6) Control por microcontrolador del teclado.

En el diseño del sistema de aplicación del microcontrolador, para ahorrar hardware, ya sea un teclado independiente o un teclado matricial, el microcontrolador tiene tres formas de controlar el teclado.

El programa controla el modo de escaneo.

En este método, solo cuando el microcontrolador está inactivo, se puede llamar a la subrutina de escaneo del teclado para verificar si el estado de entrada del teclado ha cambiado.

ii ​​Modo de escaneo programado.

El microcontrolador también puede escanear el teclado de forma cronometrada, es decir, el microcontrolador escanea el teclado cada cierto tiempo. En este método, el temporizador interno del microcontrolador generalmente se usa para generar una interrupción temporizada de 10 ms, y la CPU escanea el teclado en respuesta a la solicitud de interrupción temporizada para verificar si se presionó alguna tecla en el teclado.

iii Interrumpir el método de escaneo.

Aunque la programación es sencilla cuando se utiliza la consulta de programa y el escaneo programado del teclado, el teclado básicamente no funciona durante la mayor parte del tiempo que el sistema microcontrolador está en ejecución. Para mejorar aún más la eficiencia de la CPU, se pueden utilizar métodos de interrupción. Cuando la acción de una tecla del teclado genera una interrupción, la CPU responde a la interrupción del teclado, ejecuta el programa de interrupción del teclado, identifica el número de tecla de la tecla presionada y la maneja en consecuencia.