Está en la página 1de 2

Como multiplexar una matriz de LEDs

Ya empezó un nuevo año así que vamos a empezar con un nuevo tutorial, esta vez con un cómo sobre
multiplexación, cómo multiplexar una matriz de leds.

Si se quisiera controlar una sola columna de una matriz de 5×7 leds se necesitaría un puerto completo
de un pic, 7 pines para controlar las filas y 1 para controlar la columna, eso significa que para controlar
todos los leds de la matriz se necesitarían 4 puertos de 8 bits, demasiado para un microcontrolador,
sobre todo para un 16F628a.

Para reducir el número de pines requeridos las cinco columnas de la matriz son multiplexadas, esto
significa que solamente se necesitarán siete pines, uno por cada fila de la matriz, y cinco para habilitar
cada una de las columnas.

Usando un pic 16F628a se puede utilizar el puerto B para controlar las filas y el puerto A para las
columnas. La técnica de multiplexación consiste en mostrar una columna a la vez, mientras eso se haga
lo suficientemente rápido parecerá que todas las columnas están encendidas a la vez y no se verá
ningún parpadeo, por esa misma razón la base de tiempo para la multiplexación es muy importante por
lo que se utiliza la interrupción del timer 2 para esa tarea.

La multiplexación es muy sencilla y se ejecuta dentro de la rutina de interrupción del timer 2, se realiza
más o menos de la siguiente manera:

Espera interrupción

Se deshabilitan las columnas

Se escribe en el puerto B el valor de las filas

Se habilita la primer columna

Espera interrupción

Se deshabilitan las columnas

Se escribe en el puerto B el valor de las filas

Se habilita la siguiente columna

Espera interrupción

Así se repite hasta llegar a la quinta columna, entonces la ejecución de la multiplexación vuelve al
principio y se vuelve a repetir.

El programa de ejemplo muestra en conteo descendente los números del 9 al 0. La multiplexación se


lleva a cabo en la rutina de interrupción del timer 2. El programa principal lo que hace es leer un número
almacenado en una variable (un registro de memoria) y decodificarlo para ser desplegado en la matriz,
como la matriz es de 5 columnas para decodificar el número se necesitan 5 registros donde se guardaran
los valores de las filas de cada columna.

El diagrama del circuito de ejemplo es el siguiente:

Fuente Online

• http://mksdgo.homelinux.com/dat/matrix.php