El teclado más básico se implementa usando pulsadores, pero requiere un pin del microcontrolador por cada tecla. Por ello, solo es viable en sistemas que necesiten un número reducido de teclas.
Circuito básico

Pulsador conectado al pin P0 con resistencia pull-up de 10kΩ a Vcc.

Al presionar un pulsador se producen rebotes: oscilaciones rápidas e irregulares en la señal antes de estabilizarse, como muestra la forma de onda del osciloscopio. Estos efectos indeseables deben eliminarse para garantizar lecturas correctas.
Se añade un condensador en paralelo con el pulsador, aprovechando el disparador Schmitt interno o externo del microcontrolador para filtrar los rebotes.
Al detectar el primer flanco de bajada, se genera un retardo temporal que permite que la señal se estabilice antes de leer el estado definitivo.
Existen dos configuraciones de hardware para eliminar rebotes en pulsadores:

Condensador conectado a GND junto al pulsador, usando el disparador Schmitt interno del microcontrolador.

Se añade un disparador Schmitt externo entre el circuito RC y el pin P0 del microcontrolador para mayor robustez.
Existen tres métodos para que el microcontrolador gestione la lectura de periféricos como un teclado:
El µP espera a que el periférico responda. El proceso principal queda detenido hasta que se pulse una tecla.
El µP consulta de forma periódica el estado del periférico. Si no hay pulsación, continúa con otras tareas y vuelve a consultar tras un retardo.
El µP responde al periférico cuando éste le interrumpe. El proceso principal no se detiene; la interrupción se atiende al producirse el evento.



Un teclado matricial es un arreglo de interruptores conectados de forma que la activación de cualquiera de ellos une un terminal de una columna con un terminal de una fila. Al presionar el pulsador "1", se comunica la COLUMNA 1 con la FILA 1.

La cantidad de columnas y filas depende de la distribución física y del número de pulsadores requeridos en el teclado.
Para una matriz de 4 columnas × 4 filas, se obtienen 16 pulsadores en total, usando únicamente 8 pines del microcontrolador. Esta es la configuración más habitual en sistemas embebidos.


Teclas numéricas (azul): 0–9. Teclas especiales (rojo): A, B, C, D, *, #.
Para detectar qué tecla fue pulsada, se aplica un nivel lógico "0" a cada fila de forma secuencial. Por ejemplo, para detectar las teclas 1, 2, 3 y A, se aplica "0" a la FILA 1 y se leen las columnas.


El MM74C922 es un codificador de teclado que gestiona automáticamente el barrido de una matriz 4×4 (teclas 0–15). Cuando se pulsa una tecla, activa la señal DA y presenta el código de 4 bits en las salidas A–D, conectadas directamente al bus de datos.
Fundamentos de diseño e implementación de teclados matriciales para sistemas microprocesados, incluyendo técnicas de eliminación de rebotes y procedimientos de entrada/salida.