# Matriz de leds 7x80 animada



## cevollin (Ene 29, 2009)

que tal camaradas construi una matriz de leds de 7 filas por 80 columnas con un pic16f84a y 5 registro de desplasamiento (74hc164) y una memoria eeprom (24c256) el lenguaje de programacion lo realice en el basic del pic simulador ide la matriz me funciona bien es decir el pic lee el texto de la memoria y luego lo volca sobre el registro de desplasamiento tambien consegui animar el cartel de derecha a izquierda es decir de la columna 80 hasta la columna 1 columna por columna pero tengo un problema la animacion acava en la columna 1   la pregunta del millon de dolares es   como hago para que el texto se vea como si siguiera desplasandose es decir que las letras se vieran como si ahora entraran por el lado izquierdo del cartel


----------



## zgouki (Ene 31, 2009)

Revisa la documentación del PSI, hay una funcíon llamada *ShiftRight* que usa 2 argumentos, el priemero es un byte (creo q tambien puede ser un word, pero revisalo), el cual estaria representado la fila de leds, y el 2do es el numero de lugares q deseas correr los bits del byte hacia la derecha....
Supongamos q aux es un byte q representa la fila del texto q va a aparecer desde la derecha, y que text es el byte q efectivamente se va a pasar al registro de desplazamiento. Este byte al principio tiene q ser todos 0 (ya q la pantalla al principiono mostrara nada e iran apareciendo los caracteres por la derecha:

aux = %10110011            'El texto q aparecera por la derecha e ira corriendose hacia la izquierda
text = %00000000            'El texto q esta siendo mostrando en la matriz

text = ShiftRight(text, 1)   'Lo que hace aca la funcion es mover todo el arreglo de bits (byte) a la derecha 1 solo bit
text.7 = aux.0                   'Aca reemplazamos el bit del final (q es basura) por el 1ero del byte q queremos mostrar
aux = ShiftRight(aux, 1     'Volvemos a hacer lo mismo con el byte que queremos q se vaya moviendo a la izquierda

Esto lo repetimos las veces q queramos. Trata de probar vos algun otro algoritmo.
Saludos


----------



## cevollin (Feb 1, 2009)

si eso si lo entiendo perfectamente pero mas bien yo use otro tipo de algoritmo use el mismo algoritmo que utilizan en la pagina de ucontrol primero lo que hise es meter  el texto en el registro de desplasamiento antes de activar la fila despues de esto meti 80 ceros para que el texto se fuera desplasando fuera de la pantalla y luego activo la fila de este modo primero no se veria nada en la pantalla pero despues ago lo mismo pero en vez de meter 80 ceros meto 79 y asi sucecivamente se ve como si se fuera desplasando el texto a la derecha


----------



## cevollin (Feb 1, 2009)

ahora mi pregunta es esta el texto se esta desplasando pero ahora llego a la columna 1 osea el texto esta en la columna 1 ahora como le ago para que el texto se viera como si fuera desapareciendo columna por columna por el lado izquierdo como en la imagen que voy a poner a continuacion fijate en el lado izquierdeo


----------



## zgouki (Feb 2, 2009)

Lee bien lo que te escribí en el anterior post....la forma en que tu vuelcas en la pantalla de leds lo que esta en tu variable (sea word o byte) esta perfecto y no tiene nada que ver con como realizar la pasada de derecha a izquierda.
Utiliza la función que te describí, o sino de última, la otra q hace todo al reves: *ShiftLeft* 
Si no te sale, trata de imaginarte como hacerlo, ten en cuenta que la parte mas divertida de hacer un programa es justamente, desarrollar el algoritmo mas eficiente y efectivo...
Saludos.

EDIT: Dsp de leer de nuevo tu pregunta, quiero aclararte una cosa: lo que tu haces para que el texto vaya apareciendo por la derecha es poner 1ero todos los ceros necesarios para borrar la matriz. Entonces lo que debes hacer para que vaya saliendo de la pantalla por la izquierda es tambien agregarle los mismos ceros pero al final. Supongamos que tu matriz es de 8 filas (lo hago pequeña porq es mas facil y rapido de explicar, pero puede tener cualquier tamaño) y deseas que una fila del texto pasante sea la siguiente: 1111. Entonces debes utilizar estos bytes (volcandolos en la matriz en orden): %00000000 , %00111100 y %00000000
Espero haberte ayudado.


----------



## cevollin (Feb 2, 2009)

pero no puedo agregarle los ceros antes de que el texto sea metido en el registro de desplasamiento ya que al meter los 40 ceros primero y despues meter el texto los 40 ceros van a salir desplasados afuera del registro de desplasamiento y de este modo no podria ver el texto desplasado si no el texto fisico sin moverse

otra opcion es hacer la propuesta que tu dices voy a intentar hacerlo


----------



## luis_e (Feb 4, 2009)

Podes hacer lo siguiente:

En un ciclo for pones un contador a 0 y que llegue como maximo a 80, y dentro de este for pones otro, con un contador que enpieze en 0 y que llegue como maximo a 80 - el primer contador, dentro de este for escribis cero en las columnas, despues de esto pones otro for que arranque desde donde dejo el for anterior y que llegue como maximo a 80, y en este escribis los valores que tenes en la matriz de texto.

si fuera en lenguaje c, seria mas o menos

for ( Cont = 0; Cont < 80; Cont++ ) {
    for ( Cont2 = 0; Cont2 < ( 80 - Cont ); Cont2 ++ ) {
        // y escribo ceros en las columnas de leds
    }
    for ( ;Cont2 < 80; Cont2++ ) {
        // y escribo los valores de la matriz
    }
}

de esta forma se va a ir desplazando el texto hacia la izquierda, pero se va a desplazar una columna por fotograma( osea una vuelta completa), lo que es muy rapido (verias casi todos los leds prendidos), para solucionar  esto, tenes que agregar depues del primer for, otro mas, para que se repita la misma secuencia una determinada cantidad de veces y se pueda ver el movimiento. quedaria mas o menos asi:


for ( Cont = 0; Cont < 80; Cont++ ) {
    for ( i = 0; i < 50; i ++) {    // cambiando este valor vas a regular la velocidad de desplazamiento
        for ( Cont2 = 0; Cont2 < ( 80 - Cont ); Cont2 ++ ) {
            // y escribo ceros en las columnas de leds
        }
        for ( ;Cont2 < 80; Cont2++ ) {
            // y escribo los valores de la matriz
        }
    }
}

No se como esta hecho tu programa, si trabaja con interrupciones o no. De la forma en que hago mis programas esta es la mejor solucion. 
Si subes tu codigo talvez lo pueda estudiar un poco, y darte una mejor solucion.
Y si podes tambien el esquema, para estar ver como son las conexiónes, ya que no estoy muy seguro de como trabaja tu circuito.


----------



## cevollin (Feb 4, 2009)

ha caray!  mm ps la verdad soy un poco principiante en esto de la programacion de pics y como soy principiante no se nada de programacion en C    he de corregir que mi matriz de leds no es de 7x80 me equivoque al postera el titulo mi matriz es de 7x40 mmmm y ya logre desplasar el texto  de derecha a izquierda columna por columna de la columna numero 40 hasta la columna numero 1 pero aqui ya no se como hacerle para que las letras entren por el lado izquierdo 

ahora he de aclarar me han dicho en  foros que ponga caracteres en blanco al principio o al final de el texto que voy a mostrar de esta manera los caracteres limpiarian la pantalla y desplasarian el texto hacia la izquierda pero esto no se puede ya que si meto los caracteres en blanco y luego meto los 40 datos a mostrar los cuarenta datos votarian fuera del registro de desplasamiento los caracteres en blanco  

posdata aqui dejo mi proyecto hecho en el basic del pic simulador ide para que juntos lo analisemos y podamos llegar a una conclusion


----------



## luis_e (Feb 5, 2009)

Podrias subir un esquema, porque aun no me termino de imaginar las conexiónes y no puedo pensar una solucion con presicion.

Yo utilize pic basic mucho tiempo, asi que conozco este lenguaje bastante, por lo que voy a poder ayudarte con la programacion.

Ahora me voy a poner a estudiar un poco tu programa.


----------



## luis_e (Feb 5, 2009)

Otra cosa, los datos que almacenas en la eeprom son caracteres? O son como un mapa de bits de lo que queres mostrar?


----------



## cevollin (Feb 5, 2009)

bueno mas bien es un mapa de bits de lo que quiero mostrar aqui te dejo el diagrama con algunas especificaciones para que asi mas le entiendas al codigo el diagrama esta hecho en proteus ya que alli es donde lo tengo simulado y ps alli bienen algunas especificacifines de como es que esta armado como es que  el pic 16f84a lee los datos de la memoria i2c y los vuelca en el registro


----------



## luis_e (Feb 5, 2009)

Podrias subir el archivo del proteus, asi evito tener que hacerlo. Ya que tu lo tienes hecho...

Ahora ya tengo claro como trabaja, me imaginaba que lo hacia de esa forma.


----------



## cevollin (Feb 5, 2009)

ok ahorita mismo subo los archivos correspondientes al proteus


----------



## luis_e (Feb 5, 2009)

He terminado de entender completamente el funcionamiento de tu diseño, y tengo una idea para el programa. En vez de activar de a una fila y cargar los datos en las columnas, podes cargar los datos en las filas y activas de a una columna. De esta forma va a ser mas facil poner los datos en los leds. Aunque va a demandar una velocidad mayor de actualizacion, ya que se tendrian 40 barras de 7 leds contra 7 barras de 40 leds. Pero como el micro esta dedicado solamente a la matriz de leds no va a ser problema. Deve correr a la maxima velocidad, 20MHz.

Tambien tendrias que modificar los datos de la eeprom, almacenando los caracteres en bytes consecutivos, no en saltos de a 8 como haces ahora. Despues voy a hacer un grafiquito para que lo entiendas mejor.

Modificando eso, el programa seria muy simple:

Para empezar cargas un 1 en el registro de desplazamiento, la idea es que este activo solamente un pin de todo el registro (para activar una sola columna). 
Luego lees un byte en la eeprom, lo negas(porque el led se activaria con un 0) y lo pones en el puerto b.
Haces una pausa de unos 350us. (despues de esta pausa ya se mostro la primer columna)
Despues lo unico que tenes que hacer es darle pulsos de reloj al registro (con el pin de data a 0), leer el dato en la eeprom, negarlo, ponerlo en el puerto b, esperar los 350us y volver a repetir hasta que hayas mostrado las 40 columnas.

Con esto conseguirias mostrar el texto, pero no se moveria. Ya voy a explicar como hacer para que se desplaze.

Lo que vas a conseguir con estos cambios es una forma muy sencilla de mostrar los datos. Si queres probrar a hacer alguna de estas modificaciones, hacelas en una copia de tus archivos originales, por si despues queres volver a tu diseño y tu programa.
Tengo que buscar un compilador de basic(no lo tengo ahora porque no estoy en mi compu), asi te puedo ayudar con codigo testeado.


----------



## cevollin (Feb 6, 2009)

ok entiendo perfectamente lo que me dices pero hay un pequeño problema si hago esto tal como lo dice ariel palazessi en la pagina de ucontrol si lo hago de esta forma la columna estaria encendida 1/40 de tiempo eso quiere decir que el brillo de los leds de la columna se va a reducir a 1/40  osease que la columna tiene 7 leds imaginemos que cada uno consume 20ma que seria un consumo total por columna de 0,14 amp ahora dividimos este resultado entre 40 y la columna nos va a dar un consumo total de 0,0035

pero si lo hago de tal forma que  primero meta los 40 datos correspondientes a la columna y active la matriz por filas la fila va a estar encendida 1/7 del tiempo eso quiere decir que si tengo 40 leds de 20ma cada uno  el consumo normal de toda la fila seria 0,8 amp pero como no va estar ensendido fijamente se dividiria entre 7 por que nada mas la fila estaria encendida 1/7 entons el consumo total de la fila seria 0,114 amp aumentando mas el brillo de la fila   no se si me entienda pero asi es como imagino que susederia


----------



## cevollin (Feb 6, 2009)

ahora tendria susventajas hacer lo que tu me dices ya que solo tomaria 40 direcciones de tipo byte de la memoria lo que me ahorraria 16 direcciones de typo byte a como yo lo estoy construllendo pero al hacer esto sacrificaria mas el brillo de los leds de mi matriz completa  por eso es que lo hago asi ya que prefiero sacrificar mas direcciones de memoria ya que no es mucho lo que voy a mostrar que intencidad de brillo


----------



## cevollin (Feb 6, 2009)

ahora lo que yo solo quiero saber es como hacerle para que las letras se sigan desplazando pero ahora por el lado izquierdo de la pantalla osease que se vean las letras como si ahora entraran por el lado izquierdo de la pantalla 

pero hasta ahora no he logrado hacerlo me han dicho que meta caracteres en blanco despues o antes de el texto a mostrar y ya lo he hecho pero descubro que al meter los caracteres en blanco y luego meter los 40 datos a mostrar los 40 datos a mostrar siempre  me van votar fuera del registro de desplasamiento por la derecha los caracteres en blanco que puse por que por que la matriz solamente me va a mostrar 8 caracteres y los caracteres que meta al final del texto siempre van a salir votados por el lado derecho del registro de desplasamiento no puedo hacer que los caracteres en blanco me voten el texto a mostrar por el lado izquierdo por que porque el registro de desplasamiento solo es capas en desplasar los datos de izquierda a derecha


----------



## cevollin (Feb 18, 2009)

jajajaja bueno ayer acavo de resolver mi problema despues de unos dos dias de estar revisando el codigo hice unas modificaciones en el codigo y utilize un pic16f628a ya que el pic16f84a no me aguanto el programa no cupo pero bueno lo que hice para resolver mi problemas fue hacer una rutina en la cual voy modificando el numero de columnas a meter voy disminullendo una columna cada vez pero la disminucion por columna la hago en la primera columna del primer caracter a escribir         

en resumen lo que hise fue disminuir los datos a meter en la matriz de los 40 datos a mostrar metia 39 y luego 38 y 37 y asi sucesivamnente hasta que el texto desaparece por el lado izquierdo      

de ante mano les agradesco su ayuda ya que sin ideas no huviera salido de este enbrollo 

attentamente: eduardo rodriguez gonzalez


----------



## lapm (Feb 18, 2009)

Hola amigos; quisiera que me expliquen nuevamente, cómo puedo hacer que los caracteres tengan movimiento, como si una paloma volara, y pasarle por la matríz, lo que necesito es que me indiquen qué tengo que hacer para que en éste caso poderles dar movimiento ya sea caractéres o gráficos. Yo ya tengo programado, y se me visualizan en éste caso los caracteres que estoy codificando, pero quisiera darle el movimiento de derecha a izquierda, también quisiera saber como ustedes manifiestan en el foro que se puede utilizar una memoria EEPROM; cómo le grabo a dicha memoria osea cómo le grabo los datos y cuál es el proceso de utilizanle con el PIC, quisiera otra explicación a parte del amigo Luis_e que por cierto es excelente, pero quisiera saber desde el principio cómo empiezo a utilizar ésta memoria. 
Otra cosita necesito poner también en mi matríz que se visualice la temperatura, cómo lo hago?. Por cierto estoy urilizando el compilador CCS. Gracias por su colaboración.

Saludos cordiales
Atentamente 
Luis_P


----------



## cevollin (Feb 19, 2009)

a bueno amigo  para meter los datos en la memoria eeprom utilisa un grabador de memorias solo tienes que grabarle el archivo en formato.bin y ya esta ahora para hacer el archivo bin utilisa un programa como el winpic800 o el icprog arma tu cartel a visualisar en la memoria eeprom ya que hisiste esto paso a explicar como es que hise yo mi cartel de leds 


primero el pic es el cerebro de todo la funcion del pic es de leer los datos de la memoria eeprom y luego volcarlos en el registro de desplasamiento una vez que esten todos los datos volcados en el registro de desplasamiento meto 40 ceros para que hago esto para que el cartel se salga fuera de la pantalla por medio de los registros de desplasamiento ahora hago lo mismo pero para la fila 2 3 4 5 6 7 esto lo repito unas 20 veses con los mismos 40 ceros  esto genera un retardo como de medio segundo despues de acabar mostrando el cartel 20 veses repito el mismo proceso pero ahora en vez de meter 40 ceros disminuyo el rango a una unidad es decir ahora meto 39 ceros  de esta manera se veria primero el primer bit del caracter a mostra y a medida que vamos reduciendo los ceros a meter el cartel se va ir mostrando columna por columna


----------



## lapm (Feb 21, 2009)

Muchas gracias por su ayuda.

De pronto podría poner los archivos con el cual usted puso de muestra MATRIZ DE LEDS 7X40 CEVOLLIN.rar pero también el programa si no es mucha moletia desde luego y si se puede, ya que desearía estudiar su código y ver cómo es el funcionamiento.

Otra cosita, de pronto sabe dónde puedo encontrar puertos que se puedan simular como por ejemplo con VB.NET y Proteus, o LabView y Proteus para poder utilizar los dos software a la vez e interactuar osea que a la salida de cada puerto obtener los niveles de voltajes.

Nuevamente gracias.


----------



## cevollin (Feb 23, 2009)

ok lamp el programa para la matriz de leds ya la havia adjuntado esta en la segunda pagina en el mensaje 13 alli adentro esta todo lo relacionado con mi proyecto  de la matriz de leds esta hasta la simulacion en proteus ok 

lo que ahora quiero hacer es cambiar el texto a mostrar desde el puerto serie tengo una teoria para hacer eso  bueno la teoria es hacer un programa en  visual basic o c++ o como sea el sofware a lo que se dedicaria es a reemplasar los datos (en mi imagen adjunta  (cuadro verde bitmap) que el sofware  borre estos datos y los reemplase ahora por los  datos nuevos  que ahora queremos representar en la matriz (escribir los datos en la eeprom de esta manera el mensaje no se borraria aun asi se alla ido la luz)

hacer un sofware para una matriz de leds representa un gran reto ya que para que el sofware haga esto nesesita traducir el caracter ingresado de  el teclado y traducirlo a 7 datos (7 filas*5columnas =1caracter)


----------



## lapm (Feb 25, 2009)

Disculpa amigo Cevollin, pero no observo ningún archivo a parte del mensaje que tiene un archivo en .jpg correspondiente al mensaje #11


----------



## markarla (Mar 3, 2009)

Hola quisiera saber si me pueden mandar el diagrama y los componentes que se necesitan para hacer el matrix de 7x80..


----------



## cevollin (Mar 3, 2009)

ok aqui te los adjunto


----------



## markarla (Mar 4, 2009)

Disculpaa el Zip tiene contraseña! Te agradeceria si me la postearas!


----------



## cevollin (Mar 4, 2009)

la contraseña es mi nombre de usuario  cevollin


----------



## jabm32 (Mar 9, 2009)

hola cevollin sera que puedes adjuntar los datos de proteus pro favor para poder mirarlo gracias


----------



## guifer_01 (May 3, 2009)

holas amigo cevollin la rutina q hiciste me llama la antencio ... sabes no se si la puede subir y el diagrama en proteus para poder estudiarla... desde ya te agradesco.....


----------



## bmvalarezo (Jun 25, 2009)

que tal amigos felicidades, pero soy nuevo aqui y quisiera saber como para descargar los archivos adjuntos ya que no los visualizo


----------



## kilajeco (Dic 16, 2009)

Hola soy Eddy y necesito saber como desplazo un mensaje en la matriz .estoy usando una 7x80.cualquier ayuda se la agradezco

Hola luis_e soy Eddy y necesito saber como desplazo un mensaje en la matriz,es lo unico que me falta .espero tu respuesta.cualquier ayuda se la agradezco.


----------



## Halcon de Fuego (May 30, 2010)

y nunca mas aparecio cevollin jajaja que mala onda !!


----------



## daniel2010 (Jun 4, 2010)

necesito saber como realizar una matriz de led de 7x80 cualquier ayuda sera bienvenida


----------



## Halcon de Fuego (Jun 10, 2010)

no desesperes amigo acá tengo algo para vos ! >> http://micros.mforos.com/1149907/8023880-desarrollo-panel-90x8-16f877a-24lc256-ds1307-con-usb/ anda muy bien pero solo podes agregar hasta 90 caracteres dependiendo tambien de cun grande sea la letra usada


----------



## livdayfus (May 1, 2012)

me ayudaron mucho gracias!


----------



## gallo961 (Jun 12, 2012)

buenas a todos 
yo tengo un letrero de les de 5 filas por 55colimnas multplexasas con 7 registros ls164 el problema es que necesito dividir cada letra en cada registro logro cargar una letra perfecta el 1 registro pero en toda la pnatalla se deforma y se va corriendo hacia abajo 

les agradezco su colaboracion en programacion
aca adjunto el codigo en codewarrior estoy utilizando un jm60 de freescale

```
#include <hidef.h>      /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */

const byte NVOPT_INIT  @0x0000FFBF = 0x02;    // vector redirect, flash unsecure
const byte NVPROT_INIT @0x0000FFBD = 0xFA;    // 0xFC00-0xFFFF are protected 



const char Transistores[5]={0b11110,0b11101,0b11011,0b10111,0b01111};


const  char Letras[5] ={   0b11111111,0b11111111,0b11111111,0b11111111,0b11111111,0b11111111,0b10000001, 
                           0b11111111,0b11111111,0b11111111,0b11111111,0b11111111,0b11111111,0b11101111, 
                           0b11111001,0b11111111,0b11111111,0b11111111,0b11111111,0b11111111,0b11101111,
                           0b11111111,0b11111111,0b11111111,0b11111111,0b11111111,0b11111111,0b11101111,
                           0b11111111,0b11111001,0b11111111,0b11111111,0b11111111,0b11111111,0b11101111,};

                          
                         
                         
                                                           
                          
                                                 
                      
char PunteroLetras=0;
char PunteroTransistores=0;

void Tarea2(char dato)
{
    
   
  int i,j=1;
  for (i=0;i<8;i++)                                           
  {
  
   PTDD_PTDD1 = (j&dato)?1:0;
   
    j=j<<1;
  
    
  
   
   
   
 
   PTDD_PTDD0 = 1;
    asm nop
    asm nop
    asm nop
   PTDD_PTDD0 = 0;
   
    
   
  }

}
void Tarea1(void)
{
 PTBD = Transistores[PunteroTransistores];
 Tarea2(Letras[PunteroLetras]);
 PunteroLetras++;
 if (Letras[PunteroLetras]==0) PunteroLetras=0;
  PunteroTransistores++;

  
if (PunteroTransistores==5)PunteroTransistores=0; 
 
 
  
}

interrupt 29 void RTCISR(void)
{
 RTCSC_RTIF = 1;

 Tarea1();
 
 
}



extern void _Startup(void);

/* User code */                        
void main(void) 
{  
 SOPT1  = 0X20;
 
 PTBDD=0B00011111;                                 
 PTDDD=0B00000111;
 PTBD =0B00001111;
 PTDD= 0B00000100;
 
 PTDD_PTDD2 = 0;
    asm nop                                       
    asm nop
    asm nop
  PTDD_PTDD2 = 1;
 
 RTCMOD       = 32 ;
 RTCSC_RTCLKS = 2 ;
 RTCSC_RTCPS  = 8;        
 RTCSC_RTIF   = 1;
 RTCSC_RTIE   = 1;
 
  
 EnableInterrupts;
 
  
  
 for(;;)                                                                                                    
 {
  asm WAIT;
 
 }
}
```


----------



## kilajeco (Jul 12, 2012)

Hola.
No habia leido sobre codewarrior y jm60 de freescale. 
Pero en mikroc seria algo asi para visualizar el texto "ABCDEF" en una matriz 7x36   


```
unsigned char code FONT_1[][7] = {
    0x1c, 0x22, 0x22, 0x3e, 0x22, 0x22, 0x22, // A
    0x3c, 0x22, 0x22, 0x3c, 0x22, 0x22, 0x3c, // B
    0x1c, 0x22, 0x20, 0x20, 0x20, 0x22, 0x1c, // C
    0x3C, 0x22, 0x22, 0x22, 0x22, 0x22, 0x3C, // D
    0x3e, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x3e, // E
    0x3e, 0x20, 0x20, 0x3c, 0x20, 0x20, 0x20,// F
                                       };
                                       
 unsigned char code Fila[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF};//contiene los bits para enceder cada columna.
      
       //introduce el dato en los ls164
      void Data_Send(unsigned char Times)
      {    unsigned char Col;
     for(Col = 1;Col < Times;Col ++)
     {
         if((Serial_Data & 0x01) == 0) //aux.0
         {
              DATA = 0;       //pin de dato serie  de los ls164
              Delay_us(1);
              CLOCK  = 0;
              Delay_us(1);
              CLOCK  = 1;      //pin de reloj de los ls164
              Delay_us(1);
         }
         else
         {
              DATA = 1;
              Delay_us(1);
              CLOCK  = 0;
              Delay_us(1);
              CLOCK  = 1;
              Delay_us(1);
        }
         Serial_Data = Serial_Data >> 1;   //se corren el dato hasta enviar los 6 bits que forman cada letra
     }
     }
                                       
                                       
      void main(void)
      {
      while (1)
      {
      Row = 0 ;
      for(I = 0;I < 7;I++)   //Altura display 7 fila
      {
      for(Column = 6;Column > 0;Column --) //columna 6x6 = 36 col.
      {
      Serial_Data = FONT_1[Column-1][Row];
      Data_Send(7);
      }
      PORTB = Fila[I];
      Delay_ms(2);
      PORTB=0XFF;
      Row ++;
      }
      }
      };
```


----------



## killert (Abr 10, 2013)

hola sera que me podrias ayudar 
construi la matriz de leds de 7*55 pero quiero que diga ingenieria en electronica.
pero no soy bueno en eso de crear el codigo podias ayudarme. o guiarme


----------



## Kamil (Abr 15, 2013)

Hola soy nuevo en el foro y estoy trabajando en un proyecto en Proteus de unaa matriz de led 7x32 y quisiera que alguien me explicara como hago para mostrar convertir los bitmap a binario y mostrarlos en la matriz.


----------



## MrCarlos (Abr 16, 2013)

Hola killert

A, Aprox. 5 días de tu mensaje no te responden. Probablemente porque nadie se da por aludido.
Por otra parte, podrías subir tu diseño. Preferentemente el archivo que se genera con tu simulador.
De ese modo tal vez alguien se anime a guiarte en el desarrollo del código.

Hola Kamil

Bien: sube los archivos de tu proyecto. Preferentemente el archivo que se genera con tu simulador.
Por otra parte: a que te refieres con convertir los BitMap a binario ??
Esos BitMap’s son de que tipo: BMP, Jpg, GIF. O de qué tipo ??

saludos
a sus ordenes


----------



## Kamil (Abr 16, 2013)

Mi proyecto es identico al tratado por cevollin con la diferencia de que uso un pic18f2250. La matriz ya esta funcional y solo me queda pasarle el archivo binario a la memoria EPPROM. El problema es que no se como convertir una imagen al formato .bin que recibe la EPPROM pues en mi caso la matriz es 7x30 por lo tanto la imagen tambien debe ser 7x30. Por favor si tienen alguna funcion en c o c++ lo agradeceria.
Saludos


----------

