# Usar matriz de LEDS de 8x8 para mensajes



## hunter manny (May 22, 2011)

Buen dia, tengo el siguiente problema y no puedo lograr que se recorra el mensaje, en la escuela me dejaron hacer con una matriz y una EEPROM un mensaje que se vaya recorriendo, entiendo a la perfeccion como grabar la EEPROM, y la matriz, pero lo que no entiendo es como hacer que se vaya recorriendo el mensaje o imagen, me comento que debo usar un decodificador de linea de 3 a 8, y tengo un 74ls138 que hace eso, pero cuando lo monto todo en el proteus, lo unico que consigo es hacer que aparezca solo 1 columna iluminada  que va recorriendose, se que hay formas de hacerlo con PIC's pero necesito hacerlo con la EEPROM y el 74ls138.

Alguien que pueda darme una sugerencia? no puedo avanzar de ahi.


lo que yo busco es por ejemplo, que esta "A" se vaya recorriendo a la izquierda, asi el valor que salga de la EEPROM (8 bits) sea recorrido como en un registro. 





mi pregunta tambien es, necesito aparte un registro también?

aqui lo que hice, solo se ve una linea (lo que sale de la memoria) y se va cambiando de lugar pero asi no es lo que yo quiero hacer.

(aca la imagen tamaño original http://img718.imageshack.us/img718/6091/matriz1.png)
Gracias


----------



## clocko (May 22, 2011)

entonces puedes grabar la letra A en la memoria 8 veces o en 8 localidades en las cuales en cada una grabas una posicion de la letra (asi como una pelicula en el cine) entonces con un contador vas accediendo a cada una de las localidades, te dara la impresion de movimiento, otra opcion es añadirle un registro de corrimiento.


----------



## hunter manny (May 22, 2011)

Hola clocko, eso ya lo tengo, si da la A de la imagen que puse por ejemplo... tendria 7 localidades de largo, cada localidad con los 8 bits de la memoria, y ya tenia un contador para recorrer las localidades dentro de la memoria, lo que no puedo hacer es que en la matriz aparezca una localidad de la memoria y luego se vaya recorriendo, sino que aparece solo la localidad que en ese instante lanza la memoria, y no se ven las localidades anteriores


----------



## MrCarlos (May 22, 2011)

Hola hunter manny

Según entiendo tienes un mensaje (Varias palabras) grabadas en una EEPROM y quieres mostrar ese mensaje en un Display de matriz 8x8 según se ve en tu mensaje. 

De alguna forma direcciónas la EEPROM, que en el diagrama es 2704, para que las salidas de datos de ésta enciendan o no los LED’s de la Matriz 8x8.
Ahora: En qué columna de la matriz enciendan tales o cuales LED’s lo haces por medio del IC 74LS138.

Como debes saber una matriz son:
Y líneas horizontales Llamadas FILAS.
X Líneas Verticales Llamadas COLUMNAS.
En cada cruce X-Y se conecta un LED y todos orientados para el mismo lado.

Quieres que se desplace: Letra por letra del mensaje o columna por columna ?. 
Letra por letra en sencillo de entender. Aparece una letra después de la otra del mensaje.
Columna por columna irá saliendo hacia la izquierda una letra del mensaje e irá entrando por la derecha la siguiente letra del mensaje.

*Letra por letra* es mostrar una letra por cierto tiempo. Luego la siguiente hasta pasar todo el mensaje.
Para la primer letra se hace un barrido, por cierto tiempo desde la dirección 0 hasta la dirección 7 puesto que la matriz es 8x8. Después de ese tiempo se avanza a la siguiente letra cuyos datos están supuestamente en la dirección 8 hasta la 15(Decimal). 
Entonces los barridos según las direcciones serían así:
Direcciones De 0-7 primer letra, cierto tiempo.
Direcciones De 8-15 segunda letra, cierto tiempo.
Direcciones De 16-24 tercer letra cierto tiempo.
Direcciones De 25-33 cuarta letra, cierto tiempo.
Y así hasta la última letra del mensaje.

De tal suerte que el contador 74LS193(Creo este es) debe contar digamos 10 Veces del 0 al 7, luego del 8 al 15, luego del 15 al 24 y así sucesivamente.
Como con el 74LS138 estás seleccionando las columnas estas no corresponderán en la segunda letra del mensaje puesto que el contador 74LS193 estará contando del 8 al 15. así que a ese IC le debes conectar un contador que cuente del 0 al 7 y que esté en sincronía con el que direcciona la memoria EEPROM.
Actualmente el 74LS138 está para mostrar lo que exista en la EEPROM de la dirección 0 a la 7. y claro las direcciones más altas cuyo número contenga del 0 al 7, por ejemplo direcciones del 100 a 107.

*Columna por columna* es un poquito más difícil ya que los LED’s que encendían en la columna 0 al siguiente paso se deben desplazar a la izquierda(Fuera de la Matriz) y los LED’s que encendían en la columna 1 deben encender ahora en la columna 0. Claro todos los LED’s encendidos en las otras columnas deben desplazarse hacia la siguiente columna hacia la Izquierda.

Como lo harías ?
Bueno, suponiendo que en la Matriz se está viendo la letra A que se ve en la imagen que adjuntaste.
Antes de seguir: normalmente el LED localizado en la parte inferior izquierda está en el cruce X-Y: X0, Y0 así que el LED que está en la parte superior derecha está en X7, Y7. Tú no los tienes así pero no importa mucho, lo mencionado es lo normal.
Sigamos, el BIT que encendería los LED’s que están en la columna X0, Extrema Izquierda de la matriz, que no es ninguno, debe recorrerse hacia la izquierda(No Hay Ninguno) del 74LS138. el BIT que Encendería los LED’s que están en la columna X1, siguiente columna a la derecha de la matriz, debe ser recorrido hacia la izquierda, a X0. Y así todos los BIT’s hasta que el BIT X7 “caiga” fuera del 74LS138.
Por supuesto los datos de la EEPROM también deben irse seleccionando en sincronía con el desplazamiento de los BIT’s del 74LS138.

Espero esta palabrería sirva para continuar con tu proyecto.
Te adjunto una imagen donde vienen algunos IC’s que pudieran servirte para desplazar los BIT’s del 74LS138.

saludos
a sus ordenes


----------



## hunter manny (May 22, 2011)

Hola MrCarlos, gracias por la pronta respuesta.

Bueno, pretendo hacer que se vea columna por columna, bien pudiendose tratar de figuras o palabras, pero que se recorran de un lado a otro.

si por ejemplo empiezo con la letra T, suponiendo que el numero de abajo es lo que sale en la memoria ... (en hexadecimal al lado) y tomando en cuenta 8x8


La matriz es como mencionas, el anodo da hacia la memoria, el catodo da hacia el decodificador.
solo que me habian dicho que solo ocupaba el decodificador, no me mencionaron sobre los shift register que mencionas, bueno yo lo hice con solo el 74LS138 y no me da lo que buscaba.

lo unico que consigo que haga es este comportamiento:


 muchas gracias por tu ayuda MrCarlos, haré lo que has dicho a ver si ahora si me funciona correctamente, aunque creo que la intención era hacerlo solo con el decodificador, la memoria, la matriz y el contador aunque siento que es necesario el registro como lo mencionas.


----------



## MrCarlos (May 22, 2011)

Hola hunter manny

Antes de que contunúes:
Si vas a armar ese circuito en la realidad ten en consideración que en un momento dado todos los LED's de una columna estarán encendidos. Cierto ?.
Has pensado si la memoria EEPROM te dá la suficiente corriente para encenderlos todos a la Vez. están en paralelo así que suponiendo que requieren 20mAmp cada uno el total sería 20 x 8 0 160mAmp.
Lo mismo ocurre con el 74LS138. Cierto ?. este puede manejar en cada salida 160mAmp ?

En la simulación no hay problema pero en la realidad(Físicamente armado) probablemente si habrá algún problema al respecto.

Verifica en las hojas de datos de los IC's que estés utilizando.

Por lo pronto tengo que ir a un negocio así que nos escribimos mañana.

saludos
a sus ordenes


----------

