Logica de una matriz de leds

Hola tengo un problema con la logica de una matriz de leds de 5x16 no se ni por donde empezar habia pensado algo como esto

PORTB PORTD
P O O O O O O O O O O O O O O O O
O O O O O O O O O O O O O O O O O
R O O O O O O O O O O O O O O O O
T O O O O O O O O O O O O O O O O
C O O O O O O O O O O O O O O O O

ejemplo al escribir la letra U habia pensado mandar b'00000001' el puerto D y b'00000000' el puerto C y asi encender la primera columna, luego viene mi problema ya que para mandar la siguiente columna pensaba mandar b'00000011' al puerto D y b'00001111' en el puerto C pero mi pregunta es como hacer para que no se apague la primera columna que ya habia hecho y que ya habia trasladado al bit 2 del puerto D ya que cuando ponga en uno los 4 bits menos significativos del puerto C se apagaran esos ya que toda la columna esta en 1, espero puedan ayudarme porque estoy muy desorientado :oops:
Gracias
 
Ok.. aunque el tema esta repetido creo que el problema no esta en la estructura del codigo sino de entender el concepto de multiplexacion, asi que no lo mandare a moderacion

Por otro lado... efectivamente tienes razon... si enciendes la siguiente columna forzosamente tienes que apagar la primera... el truco esta en hacerlo tan rapido que al ojo humano le parezca que todas estan encendidas... a este concepto se le llama multiplexado

funciona asi:

colocas el dato de la columna 1 (port C) y la habilitas (port D), despues colocas el dato de la columna 2, deshabilitas la columna 1 y habilitas la 2... despues colocas el dato de la columna 3 la habilitas y deshabilitas la 2... y asi hasta terminar.. .despues el proceso comienza de nuevo indefinidamente...

Ahora... para matrices muy largas en vez de multiplexar las columnas multiplexas las filas... asi no pierdes tanto tiempo ni luminosidad en los leds...

http://www.ucontrol.com.ar/wiki/index.php/Funcionamiento_de_una_matriz_de_LEDs
 
nop... mientras hagas barridos suficientemente rapido puedes usar la circuiteria que gustes, en mi caso siempre me ha gustado usar transmision paralela y latches tipo D, otros usaran deserializadores y 74ls164 y otros tendran otras ideas...

Es a gusto del cliente ;)
 
Si lo haces con programacion, es un ciclo infinito que barre las filas. Hice eso en el graficador de mi amplificador usando un AVR.
Con que hagas un barrido total de todas las filas en unas 60 veces por segundo, no sera perceptible por el ojo humano.
Ahora, con la luminosidad, utiliza leds de ultra brillo, ya que si tienes por ejemplo, 4 columnas, cada led encendera de manera perceptible por el ojo, a 1/4 de su brillo total. Si tienes 8, entonces a 1/8.
Ahora que puedes sobrecargar un poco los leds si usas un barrido muy rapido.
No hay de otra, usando barrido como en las televisiones con cinescopio.
 
Lo que deberias tener en cuenta ahi es el duty, si hacemos lo que dice antiworldx (yo lo suelo hacer con 50 hz en vez de 60 hz, pero es a gusto de c/u), la corriente que le tenes que suministrar a los leds debera ser:

ILed=IefLed/raiz(duty)

Esta relacion sale de calcular el valor eficaz de la corriente del led, entonces si vos quisieras por ej. que los leds se comportaran como si tuvieran 10mA, la corriente que le vas a tener que entregar a los leds sera:

ILed=10mA/raiz(duty)

Supone que tu matriz es de 8 filas x 10 columnas, si usas un uC con 8 puertos de salida y te encargas de iluminar todas las filas al mismo tiempo, la idea sera ir iluminando columna x columna, como son 10 columnas, tu duty sera 1/10:

ILed=10mA/raiz(1/10)=31,62mA

Asi que ojo con eso, deberas diseñar un circuito tal que se banque 32 mA por cada columna para optener un brillo eficaz igual a lo que obtendrias con 10mA de continua.
 
Exactamente, ahora pregunto yo en relacion que es algo que no tengo muy claro. Segun entiendo, para que los leds soporten esa sobrecarga, deben tener un tiempo de enfriamiento, y un tiempo maximo que estara encendido, que son de orden de microsegundos. La pregunta es, si a relativas bajas frecuencias como son 60 hz, 100hz, o aprox, en vez de los 40khz que utiliza un emisor IR, no habra problema de sobrecalentamiento de la pastilla de silicio?
 
Hola gente, alguien tiene idea de como hacer el barrido en c, tengo una matriz de7 filas x 40 columnas. estoy utilizando un micro silabs, da igual el micro, utilizo reg. de desplazamiento 74HC164. saludos gracias.
estuve viendo el link de arriba, pero no me cierra bien...
 
Atrás
Arriba