# Matriz de LEDs de 7x40 con AT89C52



## DonGato (Abr 24, 2009)

Hola a todos los amigos del foro. 
Quiero realizar un letrero con matriz de LEDs de 7x40.  En el foro encuentro mucha información al respecto, pero casi siempre estos proyectos estan controlados por PICs. 
He intentado varias veces de armar un grabador para PICs, pero siempre me fallaron, entonces decidí trabajar con el microcontrolador AT89C52, del cual ya armé su grabador y me funciona muy bien... Ya hize varios pequeños proyectos controlando encendidos de LEDs y cosas asi... Pero ahora en la matriz de LEDs que quiero realizar tengo problemas en el
multiplexado (en la programación).
Para programar estoy utilizando el Keil uVision3, en assembler. Ahi es donde tengo problema. Les ruego si es que alguien tuviera algun ejemplo de estos programas para el AT89C52. Les quedaré infinitamente agradecido.

En la próxima adjuntaré el esquema del circuito que estoy realizando.. (compré 5 matrices de 8x8 dada uno)
Gracias... Adiós.


----------



## wacalo (Abr 25, 2009)

Hola: 
Yo hice un letrero con matriz de leds hace como 8 años. El software lo hice con el Ensamblador de Keil.
Ahora no me encuentro en mi casa y no tengo a mano el software, si te sirve que esté en ensamblador , te lo puedo enviar cuando vuelva a casa. Si mal no recuerdo el software completo consta de 4 programas separados, que luego de ensamblados son enlazados juntos para formar el programa completo (el programa completo en ensamblador debe tener mas de 2000 líneas de código).
En cuanto al hardware, el letrero consta de 96 columnas x 7 filas, o sea para la carga de datos uso 12 registros de desplazamientos (serial in/ parallel out) de 8 bits, y para el manejo de las filas uso 7 transistores.
Bueno, si te interesa házmelo saber y el martes o miércoles te envío lo que tengo.
Saludos.


----------



## DonGato (Abr 25, 2009)

Hola Wacalo,
Por supuesto que me interesa el software que mencionas de 7 filas x 96 columnas en ensamblador de Keil.
Estare esperando cualquier respuesta y desde ya muchas gracias por el mensaje.. muchos saludos.. adiós


----------



## wacalo (May 6, 2009)

Hola Don Gato: No te puedo enviar el archivo porque me dicen que es demasiado grande (tiene 4700 líneas de código), si me das una dirección de e-mail te lo puedo enviar.
Saludos.


----------



## Chico3001 (May 6, 2009)

wacalo dijo:
			
		

> Hola Don Gato: No te puedo enviar el archivo porque me dicen que es demasiado grande (tiene 4700 líneas de código), si me das una dirección de e-mail te lo puedo enviar.
> Saludos.



Si gustas puedes enviarle un mensaje privado a  Andres Cuenca para que el lo suba y todos podamos verlo


----------



## DonGato (May 6, 2009)

Hola Wacalo,
Agradeceré mucho el envío del archivo que mencionas, mi dirección es "e.bambrukARROBAseznam.cz", (no me acepta el foro escribir el signo de arroba). He logrado hacer correr letras en 7 filas y 8 columnas, tambien he intentado demultiplexar con dos SN74LS138 para controlar 16 columnas con un solo puerto, pero eso tadavia no lo logro, espero pronto entender el manejo de estos DMUXs.. El programa lo hize en C y no en assembler como hubiera deseado. El ejemplo del que me hablas de seguro me ayudara mucho, gracias, hasta una proxima.


----------



## wacalo (May 10, 2009)

Hola DonGAto:
Te mandé el programa a tu correo (espero que esté bien la dirección)
En cuanto a que le envíe en mensaje privado a Andres Cuenca, cuando abro el link que me dan no encuentro opción para enviar archivos adjuntos.
Voy a intentar mandarlo comprimido.


----------



## Carlos Rubio (May 13, 2009)

Hola soy nuevo en el foro, me gustaria realizar el cartel, hace rato que quiero hacer un cartel con matriz de leds no nunca pude porque no soy muy habil para programar, podrias pasarme algun codigo hecho en C para abrirlo con el KEIL para poder hacer uno?. saludos carlos


----------



## Carlos Rubio (May 13, 2009)

Estoy utilizando micros atmel at89s52 y tengo un circuito con registros de desplazamiento, pero nose como hacer para barrer la matriz, NECESITO AYUDA! gracias amigos


----------



## DonGato (May 16, 2009)

Hola Carlos, te recomiendo que comienzes con una matriz de 8x8, ya que podrias controlar con un puerto 8 filas y con otro 8 columnas, y en el futuro puedes ir aumentado de tamaño. Aqui incluyo un programa en C que lo puedes abrir con Keil y presisamente es para hacer correr una letra en una matriz de 8x8; también incluyo los archivos de retardo que tienen que añadirse al programa. Con el puerto P1 se controla un rotador (columnas), con el purto P2 se envian los datos para la letra.
Nota: yo estoy trabajando con AT89C51, no sé que diferencias hay con el AT89S51, espero que no tengas problemas en este detalle. saludos.


----------



## DonGato (May 16, 2009)

El programa


----------



## Carlos Rubio (May 19, 2009)

Hola don gato, sos un genio, muy buena onda la tuya. Queria saber si tenias para pasarme algun hardware, como para saber en base a que cristal hiciste los retardos, y que tipo de salidas tengo que utilizar, osea si a la hora de barrer los hace por flanco positivo o negativo... como para saber que tipo de transistores utilizar(PNP o NPN)
si tenes alguna placa armada o algun archivo del pcb mandamelo si podes. gracias
PD: si me podes mandar como conectarlo estaria buenisimo. muchas gracias saludos carlos


----------



## DonGato (May 31, 2009)

Hola Carlos,
No pude responder rápido. Algo del hardware:
Cristal:     11.0592 MHz.
El puerto 1 (columnas) hace rotar un 1, pero necesitamos que rote un 0, para ello usamos un el negador 7404,
y del negador recién conectamos a las columnas de la matriz.
El puerto 2 (filas) envia los datos de para formar la letra, se activa con 1 lógico, por ejemplo 0000 0001B te activa 
la primera fila.
Las filas directamente conectadas a las filas producen que los LEDs de la matriz brillen muy tenue; por eso se conveniente 
amplificar la señal de Vcc con un transistor BC548 (NPN) y asi lograr un mayor brillo. 
No tengo una placa armada, solo armé en proto.
Espero que te vaya bien en el armado, si no, avisas y en una próxima envío un esquema dibujado.
Aquí adjunto la hoja de datos del negador 7404.


----------



## Carlos Rubio (Jun 1, 2009)

si tenes un circuito esquematico joya, buen espero respuestas saludos carlos.


----------



## frobangro (Dic 19, 2009)

bueno amigos del foro yo estoy armando una matriz de 8x8 pero con atmega 16 (aunke da lo mismo usar el atmega8) tengo el pseudocodigo ..dentro de un rato les paso la simulacion y los archivos  apenas acabe de corregir algunos errores de los tiempos ....si alguien tambien esta haciendolo con atmega16 quisiera que comenten sobre su proyecto   .....bye


----------



## ga7i70 (Dic 31, 2009)

mesecito ayuda con el circuito e wacalo, cual seria el circuito y de ahi como lo controlo mediante una pc


----------



## cosmefulanito04 (Ene 4, 2010)

Yo lo que haria es usar 7 puertos del AT89C52, y conectarlos a las 7 filas de cada led de las 40 columnas, de forma tal que al poner en 1 esos 7 puertos, se encienden 7 leds de las 7 filas de 1 sola columna y mediante un circuito y el uso de al menos 6 puertos mas ir variando las columnas a que queres habilitar.

Dependiendo de la corriente que le entregues a esos leds, que no creo que supere los 20mA, podrias usar un buffer entre los 7 puertos y los 7 leds de las 7 filas (los 74Hc creo q se bancan 24mA a la salida, habria que ver las hojas de datos, sino podrias usar un TTL), y usando varios decos para lograr 40 selecciones y usando 40 bc548 como llaves, elegis que columna habilitar.

Para hacer esto, deberias tener en cuenta que el tiempo entre la 1era columna hasta la ultima, debera ser de menos de 20mSeg que es el tiempo en el que el ojo humano retiene una imagen.

Pd: pensa q el 89s52 (me imagino q el AT89C52 debe ser parecido) a la salida entrega como max. 25 mA entre todas los puertos juntos y no mas de 10 mA (creo) por cada puerto, sin q este este conectado a algo, osea podrias sacar 10mA de la pata 2.0, si ninguna otra pata del puerto 2 esta conectada a algo, es por eso q debes usar un buffer o un transistor, tal como hiciste.

*Editado:*

Aca te va un esquema de lo que te mencionaba:







Resumen de como funciona:

Se usa el puerto 2 del 8051 para manejar c/leds de c/fila. Por medio de un buffer inversor 74hc04 (tene en cuenta esto en el codigo) que suministra 25mA a la salida, con al menos 5v +/- 0,5v en esta condicion. Las salidas del buffer se conectan a los anodos de todos los leds por medio de una resistencia de 470ohm (este valor impone la corriente por los leds, 10 mA por cada led). Entonces, la maxima corriente que pasara por el bc548 sera de 70mA en el peor caso, y sabiendo que el mismo se banca hasta 100mA no deberias tener problemas. 

*Aca es donde habria que hacer una aclaracion, como mencione antes, si necesitas que en 20 mSeg enciendan todos las columnas, el duty para cada columna sera de 1/40, por lo tanto en este pequeño lapso los 10 mA no son suficientes, ya que la corriente eficaz en ese led sera muy baja: Ief=Iled*raiz(duty), si nosotros queremos que nuestra corriente eficaz por el led sea de 10mA, entonces Iled=10mA/raiz(1/40)=68mA. En otras palabras, cada vez que encendes un led, le tenes que entregar en ese pequqñisimo lapso, 68mA para lograr una corriente eficaz de 10mA durante todo el periodo. Entonce el problema estara en lo maximo que soportan los buffer (25mA) y lo maximo que soportan los Bc548. Entonces, si al led le entregamos 10mA tal como esta el circuito, el led tendra una corriente eficaz de 1,5mA, con lo cual su brillo sera bajo. Te sugiero que si tratas de levantar esa corriente, en vez de usar un buffer 74hc04, te recomendaria que uses un udn2981 que se bancan hasta 500 mA y a la salida en vez de usar bc548, usar Bd437 o varios buffers uln2803 que se bancan 500mA tb (aca ya estamos hablando de un costo mayor, no es lo mismo 40 bc548 q 40 bd437 o 5 uln2803).*

Siguiendo con el circuito, despues tenes la parte de la habilitacion de c/columna, para eso podes usar 5 decodificadores controlados con el puerto 1.0 a 1.5 del 8051, de esa forma vas habilitando un 548 a la vez. 

Si te sirve aca te dejo el esquematico hecho en proteus.

Cualquier cosa avisame.


----------



## Kuchiki06 (Abr 13, 2011)

Hola soy nueva en el foro y estoy trabajando con ATMEL 89C2051
me gustaria hacer un letrero comenzando con una matriz de 8X8 
pero utilizando tablas para ocupar menos memoria solo que no le 
entiendo muy bien a las instrucciones y se me dificulta el programarlo, 
el programa qe estoy utilizando es el pinnacle 52, necesito ayuda
gracias.


----------



## centraltek (May 27, 2011)

Hola wacalo
He descargado un proyecto de su teclado a una pantalla LED
Me gustó mucho que podría EmVia hexagonal y el esquema
  gracias


----------



## lotus29 (May 18, 2012)

hola amigos quiero diseñar una matriz de leds pero estoy muyu confundido con toda la informacion alguien me podria dar una ayuda con esto ... bueno yo estaba pensando en una matriz de 8x 40 con desplazamiento de izquierda a derecha ... muchas gracias si me pueden dar una mano


----------



## enmanuel quintero (Jun 1, 2012)

hola amigos me toca hacer una matrix de  leds pero no se hacer el multiplexado ya que soy nuevo en esto  el profesor dijo q l simularamos en proteus y que la programacion del microcontrolador que l hicieramos en Mikro C asi  q mepodrian ayudar


----------



## Scooter (Jun 1, 2012)

ps m pr b, prb a r cm v


----------

