Cómo multiplexar una matriz de leds
January 5, 2008 at 12:48 pm | In Multiplexación, Rutinas, Tutorial | 27 CommentsYa 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 estan 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:

Pueden ver un video de este ejemplo en YouTube
Descargar código: Multiplexar una matriz de 5×8 leds
Este tutorial está basado en el tutorial How to multiplex a matrix of LED’s.
27 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.
Hola, encontre tu video en youtube y ahi conoci este foro, esta muy bien explicado como manejar la matriz, yo estoy tratando de hacer un proyecto para manejar una marquesina de 7×32 leds pero empezare haciendo algo sencillo como este ejemplo, si tuviera problemas espero que me puedas ayudar.
Comment by Fer — January 8, 2008 #
Habia olvidado actualizar el post para incluir el enlace al video de youtube, gracias por recordarmelo.
Me da gusto que encuentres el tutorial bien explicado, espero que puedas realizar tu proyecto y si surge cualquier problema me gustaria que preguntaras que tal vez pueda ayudar en algo.
Comment by micropic — January 9, 2008 #
[...] el tutorial sobre MPLAB, el tutorial mas visto y el que ha tenido mayor éxito, aunque el reciente sobre multiplexacion de leds se encamina a convertirse también en un clásico. En aquella ocasión prometí [...]
Pingback by Cumplimos un año « MicroPIC — January 10, 2008 #
Hola, primero que nada debo felicitarte tu blog esta excelente, estoy haciendo varios trabajos con PIC y me has ayudado muchisimo. Me encuentro tratando de controlar una matriz de Led’d de varias colunmas, aprox 80 con 7 Filas, utilizare unos latch para poder llevarla hacia ella, sin embargo no se aun como seleccionare o como mando esa informacion serial por filas.. Que podrias recomendarme?
Comment by Fernanda — January 19, 2008 #
Hola Fernanda, gracias por tu comentario. Sobre lo que preguntas, para poder controlar una matriz con tantas columnas yo te recomendaria que el control de las columnas lo hagas con registros de corrimiento (como el 74LS194 por ejemplo), yo lo que he hecho es utilizar un puerto del pic para mandar los valores de las filas y al mismo tiempo recorrer un “0″ o un “1″ por las columnas mediante los registros 74ls194, al mismo tiempo que se envia la fila se puede enviar una señal de reloj para que los registros realicen el corrimiento del “0″ o el “1″ (dependiendo del tipo de matriz que utilices) por las columnas.
Espero que mi comentario te sea de ayuda y espero que sigas visitando este sitio!
Comment by micropic — January 19, 2008 #
muy bueno..estoy tratando de hacer que los numeros se desplacen en la matriz, utilizando lenguaje pbasic pero no lo he podido hacer, me podrias guiar en mi proposito.
saludos
Comment by DIDIER — March 20, 2008 #
oye esta padre to blog y muy interesante la informacion aqui descrita, oye no me podras mandar el circuito del programador para este pic porfas me interesa para programar o cualquier otro circuito para programar este y otros pics, suerte con tu blog espero poder mandarte algunas cosillas que pueda hacer con leds gracias mi orreo es tl081a@hotmail.com
Comment by marco — March 20, 2008 #
!!!!!!!!!!hoooooolaaa!!!!!!!!!! a todos mi duda es como introducir datos en la memoria eeprom no se como meter los datos como por ejeplo mi nombre se los agradesere un monton por fa
Comment by luis carlos — June 18, 2008 #
Hola Hola Hola, soy nuevo en esto de pic eh echo varios proyectos pero en PCB wizard
, deje de hacerlos porque ese programa, no tenia mucha libreria bueno, quisiera una ayuda, yo tengo Eagle Layouts 5.0.0 y ya descargue esa libreria para hacer este proyeto, pero en el Eagle no encuentro el circuito
, ok, entonse para los codigos ya instale el MPLAB pero no se poner los codigos bueno ya se por el tutorial, pero no se como hacer para que me funcione con el circuito que are en Eagle y cosas asi, me ayudan mi email es CCCDigital_argenis@hotmail.com porfabor
Comment by cccdigital — June 27, 2008 #
Hola:
Muy buena el trabajo, con ejemplos y todo en youtube.
Un cordial saludos.
Comment by Meta — July 31, 2008 #
hola amigo muy buen aporte me preguantaba si tu me podrias ayudar con el funcionamiento de un cartel completo de dicha matriz el funcionamiento con un registro de desplazamiento para hacer el multiplexado es lo que no entiendo.
gracias por la informacion!!
Comment by §carll — August 21, 2008 #
hola que tal tengo un problema quiero conectar una entrada de 8 bits que me controle una salida del mismo tamaño pero conectados con un solo cable, como lo puedo lograr porfavor ayudenme
Comment by anime — September 14, 2008 #
ola a todos muy bueno el articul estoy en visperas de hacer este proyecto solo q soy nuevo en esto de los microcontroladores y lo q no tengo claro es en que programa puedo hacer el codigo no se si me pueden recomendar alguno estoy aprendiendo a utilizar el PROVIEW32, tambien teng una duda el codigo es el que se va a grabar en el microcontrolador tengo esas dudas espero y alguien me pueda ayudar a resolverlas porfavor desde ya muchas gracias mi correo es aldothefenix@hotmail.com
Comment by aldo — October 12, 2008 #
por falta de tiempo tengo un proyecto guardado con Hardware y una Multiplexacion que si no comienzo con algo simple como la de 5×7 que esta muy buena los consumos por led, en un panel de 6 metros x 1,50 aloja…
Tengo un proyecto ya esta terminado y se guardo porque sus costos son caros… con sus placas tenemos mandos a distancia con spartan3 para cambiar el texto via sms (mensaje Texto Celular), el PCB, EL PIC funcionando el software para el espartan esta funcionando si se conecta al Nokia se puede cambiar el texto en la empresa hicieron las pruebas salieron perfecto, y quiero entender la logica de la Multiplexacion asi puedo armar los paneles, el tema es que la tricromia la hace cada pixel es RGB de leds 96×48 pixeles
Ledhttps://www.digilentinc.com/Products/Detail.cfm?Prod=S3BOARD&Nav1=Products&Nav2=Programmab
BUENO, la pregunta es si este modulo ya esta trabajando o tenes alguna experiencia con este tipo de proyecto, espero tu respuesta Atte Marcelo.-
Comment by Marcelo — November 24, 2008 #
epa gente bueno he estado invirtiendo en un proyecto HACER UNA MATRIZ DE LEDS de 24x 7 y controlarla solo por un ordenador “SIN NECESIDAD DE USAR PICS” he diseñado y desarroyado el hardware para realizarlo solo necesito ayuda con el software PUEDEN ENCONTRAR AQUI TODO LO RELACIONADO MAS UN VIDEO QUE DEMUESTRA EL FUNCIONAMIENTO DEL HARDWARE porfavor si tenes idea de como hacer un software que pueda controlar el dispositivo estoy a su total disposicion gracias
Comment by lemys — December 9, 2008 #
huy casi lo olvido aqui esta el link donde describo paso a paso el funcionamiento del hardwareo circuiteria http://www.lemys.marmas.org/node/17
Comment by lemys — December 9, 2008 #
Esta muy padre tu proyecto, pero crees que se pueda aplicar dentro del sistema minimo con un procesador 8088 de intel???? me ayudaria de mucho, suerte amigos y bye!!!
Comment by HackNeo — January 3, 2009 #
oye micropic quisieras que ma ayudaras a realizar este montaje ya que soy un novato en pic´s y me gustaria mucho empezar por aqui ya tengo el programa pero quisiera ver si me puede colaborar con el diagrama del circuito, le agradezco mucho en lo que me pueda colaborar
alejandro
Comment by alejandro — March 7, 2009 #
Primero que nada gracias por los articulos, los encontré muy utiles. Y segundo, dado que soy un novato total, queria saber como seria la programación para este tutorial pero en Basic de PIC Simulator IDE. Tengo un proyecto realizado para controlar 8 leds y lo programé con ese lenguaje, y ahora quiero intentar el multiplexado. Desde ya muchas gracias.
Comment by el endemoniau — April 23, 2009 #
En mi caso necesito 2 modulos de 5*8 la cosa es que tengo en mente un diseño economico y sencillo, 1 teclado ps2, 3 matrix de led 7*5, o 8*5 y algo un pic supongo… la idea parecida pero no quiero un letrero que tenga desplazamiento…si no retenimiento me explico cada letra(o tecla) corresponda a un led si la aprieto una ves se enciende si la vuelvo apretar se apaga y un seguro digamos si aprieto una tecla+enter se mantedra encendida hasta que le de nuevamente la tecla +enter …se entiende si tienes alguna sugerencia respondeme algo, especialmente como trasformar los datos del teclado a una lectura digamos lineal de 0 a 80, 90 o 100 gracias.. Salu2
Comment by Mike9 — May 4, 2009 #
hola a tòdo souy estud’iandte de ingenieria electronica y aficionado a la proyectòs que sean cheveres , tengpo el prgramadpr de microchip y los programas para ello si alguien tiene un tutorial de como hacer un codigoe n este programa lo agradeceria que me lo envien a mi correo werneybarajas@hotmail.com
Comment by werney — May 7, 2009 #
Hola lo felicito soy nuevo y veo que usted ayuda quiero pasar archivos ya copilados a .hex volver a asm par modificarlos gracias
Comment by jesy o — May 22, 2009 #
Muito bom, acabei de encontrar esta página na web e gostei muito da explicação, sou aqui do Brasil e já a alguns dias estou tentando programar uma matriz 5X7 no entando não estou conseguindo, no entando não tinha encontrado uma explicação tão boa quanto esta, muito obrigado, eu não sei programar em assembler no entando vou tentar entender o seu código para quem sabe conseguir fazer o meu em linguagem “C”, caso você tenha tambem experiência em Linguagem C e puder me ajudar fico Grato, abraços!!!
Comment by Edu — May 25, 2009 #
e-mail..
Comment by Edu — May 25, 2009 #
Soy un rofano con mucho interes en la electronica, pero no entiendo porque si alimentas las 7 filas y la columna, por ejemplo, numero 1 ¿por que no se enciende toda la columna?
Comment by Chemi — July 17, 2009 #
Buenos dias, como puedo hacer para adaptar este proyecto en el pic 84, tengo muy poca experiencia en esto, no es muy complicado?? gracias.
Comment by Miguel Angel — August 11, 2009 #
hola encontre esta pagina donde se construye una matriz de leds alguin me puede decir si funciona de verdad soy nuevo y quisiera construir esa matriz
la pagina es
http://mksdgo.homelinux.com/dat/matrix.php
Comment by rodrigo — September 11, 2009 #