# Matriz de Leds nxn - PIC18F4550



## Fhrozen (Ene 27, 2009)

Hola gente aca ps terminando casi un proyecto q me propuse en hacer ya q mucha gente lo hace y es un panel matricial con leds de 7 filas x8 columnas( se puede hacer modificaciones para ampliar a nxn a su gusto, n>=1 ). Empleo el pic18f4550 pq quiero hacerles unas mejoras, aparte utilizo el puerto usb para administrarle voltaje, no ilumina mucho pero se ve bien.

Bueno aca les dejo la placa en ARES y el programa en pbp, con un mensaje interesante, 

Si quieren lo pueden modificar a su gusto y si me ayudan con algunas mejoras se los agradeceria p.ej:

- Conexion con USB para cambiar mensaje

-Agregrar efectos a las frases

-detectar la conexion USB por el PIN de HLV

Bueno el programa no se si estara muy bien editado pero si alguno me ayuda a hacerlo eficiente le agradeceria

Verdad no se pq motivo el ISIS cuando simula la parte de la letra en unas matrices de 8x8 del mismo no se ven las letras, y cuando los reemplazo x leds se lentea mi maquina. Bueno pero si me funco despues coloco algunas fotos pq aun esta en PROTO

Espero sus comentarios, Buenos o Malos


----------



## DJ DRACO (Ene 28, 2009)

yo no alimentaria eso con el USB. son tan solo 5 volts y con poca corriente.

hacete una fuente pequeña de 5volts pero que logre una capacidad de corriente de por lo menos:
7 x 8 x 0.020Ah = 1,15Ah


----------



## Fhrozen (Ene 28, 2009)

Hola, gracias por el consejo
Claro q tienes razon pero en eso momento solo queria venrlo vivo , asi q como no tenia fuente, use la alimentacion del usb.
Pienso cambiarlo de todas


----------



## guifer_01 (May 7, 2009)

Holas amigo frozen .,,, estoy estoy iniciando y me gustaria aprender un poco mas ....busq ese compilador no lo encontre .. quizas lo tengas en otro lenguaje y con otro micro-- si lo tuvieras te agredeceria q lo subieras para poder estudiarlo .. gracias....


----------



## Fhrozen (May 7, 2009)

Mi estimado gracias x tu comentario.
Dime q lenguaje usas mas, PICC, MikroC. y para q pic
asi solo lo paso
el picbasic pro lo puede bajar de donde sea
y el IDE de microcode studio lo bajas desde su misma pagina:
te doy los links: 
Microcode studio(MSC): http://www.microengineeringlabs.com/downloads/mcsinstall.exe
PicBasicPro (PBP) PRO 2.47:
el PBP lo descomprimes en tu directorio C, luego el MCS lo instalas y en compiler Options le direccionas a la carpeta del PBP, si lo encuentra entonces te saldra la lista de todos los pic para los cuales puedes programar.
Mas bien dime para q pic desearias q lo cambiara, asi no seria ningun problema.
Espero q te halla ayudado

Fhrozen


----------



## guifer_01 (May 7, 2009)

holas amigo frozen como estas lei tu mensaje... puedes colocar tu msn para poder conversar
quizas lo tengas para el 16f876, 16f682. o en su defecto el micro mas conocido como el 16f84 .. los lenguajes q  entiendo + 0 - son CCs o assembler


----------



## guifer_01 (May 7, 2009)

en lenguaje Picc y para los pics mencionados si se pudieran .... y desde ya gracias .... eres un tigre....


----------



## Fhrozen (May 8, 2009)

Bueno aca les traigo algo con picc + 16f84a 
NO ES MIO, lo encontre en el foro de todo pic, el codigo le pertenece a vszener


```
////////////////////////////////////////////////////////////////////////////////////
//                     VsZeNeR"05      
//                    19/Diciembre/05
//
//   Programa:   Abecedario en matrices de led"s 5x7
//   Version:   0.0
//
//   Dispositivo: PIC 16F648A         Compilador:    CCS vs3.236
//   Entorno IDE: MPLAB IDE v7.30      Simulador:    Proteus 6.7sp3
//
//   Notas: Este programa muestra por el abecedario en una matriz de led"s 5x7.
//         En las columnas se usa un decodificador 4028 para hacer su barrido
//         Conexiones:      A0 -> A 4028 DEC            
//                     A1 -> B 4028 DEC
//                     A2 -> C 4028 DEC
//                     A3 -> D 4028 DEC
//                     B0 -> Fila 1 matriz 5x7
//                     B1 -> Fila 2 matriz 5x7
//                     B2 -> Fila 3 matriz 5x7
//                     B3 -> Fila 4 matriz 5x7         
//                     B4 -> Fila 5 matriz 5x7      
//                     B5 -> Fila 6 matriz 5x7        
//                     B6 -> Fila 7 matriz 5x7              
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a.h>               //pic a utilizar          
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#fuses INTRC                     //oscilador interno
#use delay (clock=4000000)            //Fosc=4Mhz
#use fast_io(a)
#use fast_io(b)

///DEFINICION VARIABLES GLOBALES
int letra[5],opcion=0;

///LLAMADA FUNCION INTERRUPCION
#INT_TIMER1
void interrupcion()
{
   switch(opcion){   //selecciona letra
      case 0:   letra[0]=0b00000001;   //A
            letra[1]=0b01110110;
            letra[2]=0b01110110;
            letra[3]=0b01110110;
            letra[4]=0b00000001;   
            opcion++;
            break;
      case 1:   letra[0]=0b01001001;   //B
            letra[1]=0b00110110;
            letra[2]=0b00110110;
            letra[3]=0b00110110;
            letra[4]=0b00000000;   
            opcion++;
            break;
      case 2:   letra[0]=0b00111110;   //C   
            letra[1]=0b00111110;
            letra[2]=0b00111110;
            letra[3]=0b00111110;
            letra[4]=0b01000001;   
            opcion++;
            break;
      case 3:   letra[0]=0b01000001;   //D   
            letra[1]=0b00111110;
            letra[2]=0b00111110;
            letra[3]=0b00111110;
            letra[4]=0b00000000;   
            opcion++;
            break;
      case 4:   letra[0]=0b00111110;   //E   
            letra[1]=0b00110110;
            letra[2]=0b00110110;
            letra[3]=0b00110110;
            letra[4]=0b00000000;   
            opcion++;
            break;
      case 5:   letra[0]=0b01111110;   //F   
            letra[1]=0b01110110;
            letra[2]=0b01110110;
            letra[3]=0b01110110;
            letra[4]=0b00000000;   
            opcion++;
            break;
      case 6:   letra[0]=0b01001110;   //G   
            letra[1]=0b00110110;
            letra[2]=0b00110110;
            letra[3]=0b00111110;
            letra[4]=0b01000001;   
            opcion++;
            break;
      case 7:   letra[0]=0b00000000;   //H   
            letra[1]=0b01110111;
            letra[2]=0b01110111;
            letra[3]=0b01110111;
            letra[4]=0b00000000;   
            opcion++;
            break;
      case 8:   letra[0]=0b00111110;   //I   
            letra[1]=0b00111110;
            letra[2]=0b00000000;
            letra[3]=0b00111110;
            letra[4]=0b00111110;   
            opcion++;
            break;
      case 9:   letra[0]=0b01111111;   //J   
            letra[1]=0b00000000;
            letra[2]=0b00111110;
            letra[3]=0b00101110;
            letra[4]=0b01001111;   
            opcion++;
            break;
      case 10:   letra[0]=0b00111110;   //K   
               letra[1]=0b01011101;
               letra[2]=0b01101011;
               letra[3]=0b01110111;
               letra[4]=0b00000000;   
               opcion++;
               break;
      case 11:   letra[0]=0b00111111;   //L   
               letra[1]=0b00111111;
               letra[2]=0b00111111;
               letra[3]=0b00111111;
               letra[4]=0b00000000;   
               opcion++;
               break;
      case 12:   letra[0]=0b00000000;   //M
               letra[1]=0b01111101;
               letra[2]=0b01111011;
               letra[3]=0b01111101;
               letra[4]=0b00000000;   
               opcion++;
               break;
      case 13:   letra[0]=0b00000011;   //N
               letra[1]=0b01011111;
               letra[2]=0b01101111;
               letra[3]=0b01110111;
               letra[4]=0b00000011;   
               opcion++;
               break;
      case 14:   letra[0]=0b00000011;   //Ñ
               letra[1]=0b01011101;
               letra[2]=0b01101101;
               letra[3]=0b01110101;
               letra[4]=0b00000011;   
               opcion++;
               break;
      case 15:   letra[0]=0b01000001;   //O
               letra[1]=0b00111110;
               letra[2]=0b00111110;
               letra[3]=0b00111110;
               letra[4]=0b01000001;   
               opcion++;
               break;
      case 16:   letra[0]=0b01111001;   //P   
               letra[1]=0b01110110;
               letra[2]=0b01110110;
               letra[3]=0b01110110;
               letra[4]=0b00000000;   
               opcion++;
               break;
      case 17:   letra[0]=0b00000001;   //Q   
               letra[1]=0b00011110;
               letra[2]=0b00101110;
               letra[3]=0b00111110;
               letra[4]=0b01000001;   
               opcion++;
               break;
      case 18:   letra[0]=0b01111001;   //R   
               letra[1]=0b00110110;
               letra[2]=0b01010110;
               letra[3]=0b01100110;
               letra[4]=0b00000000;   
               opcion++;
               break;
      case 19:   letra[0]=0b01001110;   //S
               letra[1]=0b00110110;
               letra[2]=0b00110110;
               letra[3]=0b00110110;
               letra[4]=0b00111001;   
               opcion++;
               break;
      case 20:   letra[0]=0b01111110;   //T   
               letra[1]=0b01111110;
               letra[2]=0b00000000;
               letra[3]=0b01111110;
               letra[4]=0b01111110;   
               opcion++;
               break;
      case 21:   letra[0]=0b01000000;   //U   
               letra[1]=0b00111111;
               letra[2]=0b00111111;
               letra[3]=0b00111111;
               letra[4]=0b01000000;   
               opcion++;
               break;
      case 22:   letra[0]=0b01100000;   //V   
               letra[1]=0b01011111;
               letra[2]=0b00111111;
               letra[3]=0b01011111;
               letra[4]=0b01100000;   
               opcion++;
               break;
      case 23:   letra[0]=0b01000000;   //W
               letra[1]=0b00111111;
               letra[2]=0b01000111;
               letra[3]=0b00111111;
               letra[4]=0b01000000;   
               opcion++;
               break;
      case 24:   letra[0]=0b00111011;   //X
               letra[1]=0b01010111;
               letra[2]=0b01101111;
               letra[3]=0b01010111;
               letra[4]=0b00111011;   
               opcion++;
               break;
      case 25:   letra[0]=0b01111110;   //Y
               letra[1]=0b01111101;
               letra[2]=0b00000011;
               letra[3]=0b01111101;
               letra[4]=0b01111110;   
               opcion++;
               break;
      case 26:   letra[0]=0b00111100;   //Z
               letra[1]=0b00111010;
               letra[2]=0b00110110;
               letra[3]=0b00101110;
               letra[4]=0b00011110;   
               opcion=0;
      }
   set_timer1(3036);            //TMR1 se desborda cada 0,5s                         
}

void main(void)
{
   int i;   //variable contador
   
   enable_interrupts(INT_TIMER1);            //interrupcion TIMER1 activada
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);      //configuracion TMR1
   set_timer1(65535);                     //carga TMR1 para un desbordamiento inmediato
   enable_interrupts(GLOBAL);               //activadas interrupciones
         
   set_tris_b (0x00);      //portb salida
   set_tris_a (0x00);      //porta salida
   
   do{            //bucle...
      for(i=0;i<5;i++){      
         output_a( i );         //columnas
          output_b(letra[ i ]);      //filas
            delay_ms(10);         //pausa para poder verse
            }
      }while(TRUE);   //...infinito
}
```


Aun toy cambiando el codigo para ver si puedo usar tablas, tb quiero probarlo pa no subir por subir


----------



## Fhrozen (May 8, 2009)

Bueno despues de un rapido analisis del prog, lo modifique para el 16f84a, aunq no esta realmente probado, solo lo he traducido al PICC, de tal manera q si alguien lo va probando me dice los problemas y lo voy arreglando.
En estos momentos no tengo donde hacer las pruebas y el proteus se lentejea un monton
En los proximos dias lo estare probando y les comentare si encontre algun error
En el documento estas algunos comentarios,
no pude implementar una tabla pq el pic16f84a no tiene mucha ram asi q ese es el problema pero aun asi esta con una tabla utilizando un comando switch, 

lo prueban y me dicen los problemas:

Nos vemos despues


----------



## Fhrozen (May 18, 2009)

Bueno despues de un buen tiempo al fin consegui terminar el codigo para pic16f84a en pic simulator ide
aun no esta probado pero he intentado copiarlo al maximo del programa original q me funko, he tenido q disminuir las librerias pq hay q tener en consideracion q el f84 no tiene mucha ram asi q si quieren aumentar un caracter solo quitenle el simbolo de comentario.

bueno lo probe en el mismo simulator y parece q si funciona a ver me dicen si funciona realmente
He comenzado a hacer mi programa para conectar la matriz de leds (usando el 18f4550) con la compu via usb, y otras mejoras mas
si tienen alguna aporte, mejora o critica solo pasenme la voz.
Tb voy a comenzar a publicar otros proyectos q tengo en mente

Hasta la siguiente

Fhrozen


----------



## Fhrozen (May 18, 2009)

Disculpen el anterior no esta corregido
me falto unas sentecias
aca les pongo el ultimo programa espero q les sirva y les sea util 



Hasta la siguiente

Fhrozen


----------



## Ivan Mendoza (Jun 14, 2009)

Yo manejo un poco el Microcode.... Quiero hacer el diseño de tu letrero y dedicarme a mejorarlo ya que tengo unas vacaciones próximamente, le podría hacer una comunicación usb vía LabView, pero ayudarías comentando un poco mas tú programa en PBP que esta al inicio para comprenderlo mejor y me gustaría aumentarle más columnas....


----------



## Fhrozen (Jun 14, 2009)

Bueno aca envio un poco de lo q me pediste
si tienes cualquier duda no dudes en preguntar
toy pa servirte
y gracias por tu interes
a ver si me ayudas un poco pq toy escaso de tiempo pero toy con intensiónes de mejorar con conexion usb, y una matriz unviersal de tal manera q solo necesite cambiar unas cuantas cositas para agrandar el tamaño de la matriz
tb toy pensando en hacer uno rotatorio pero eso en el futuro cuando tenga plata 


Saludos


----------



## juangoma87 (Sep 10, 2009)

hola, la verdad es que soy nuevo en el tema de programacion de pic, asi que les agradeceria si me ayudan con la programacion del pic 18f4550 para una matriz de leds de 4x8 en la cual debo introducir un mensaje de minimo 4 letras y debe tener una vizualizacion dinamica
gracias


----------



## pablofer (Sep 17, 2009)

hola amigos andube leyendo este interesante foro sobre los carteles de leds y como todo buen electronico anduve haciendo pruebitas primero que nada para simular en el proteus lo mejor es usar las matrices de led que ya tiene, y no es nesesario usar transistores directamente se los conecta alas salidas del pic pero claro nosotros no podemos asi que para armarlo en proto tenemos nomas que usar transistores bueno tambien quiero compartirles algo bajense las revistas en pdf y gratis de la pagina www.ucontrol.com.ar  ahi encontraran buena teoria y proyectos sobre este cartel de leds yo personalmente me baje las revistas y las imprimi por que me paresen buenas haber que les parece, les pued garantizar que estaran satisfechos por que entre los proyectos que me llamaron la atensión hay un cartel muyy grande de leds y otro pequeño para practicar, tambien tienen en diseño de un reloj y como usar los famosos sensores de temperatura y varias cosas mas como los lcds  
bueno haber si comentan sus experimentos por mi parte subire fotos o videos del cartel que estoy armando pero si es que comentan adios


----------



## haroldd (Nov 11, 2009)

hoola amigos nose si alquien tiene un programa para un letrero programado por teclado que sea mas o menos 7*60 yo solo lo tengo por computadora o alquien me puede ayudar en esto


----------



## beto3574 (May 15, 2010)

hola fhrozen tienes el esquematico de conexion para la matriz del codigo que colocaste en c,,,te agradeceria el circuito pues quiero implementarlo..saludos


----------



## daniel2010 (Jun 5, 2010)

fhrosen me podrias enviar el esquematico me gustaria probar este circuito


----------



## orionuru (Jun 5, 2010)

Hola a todos yo tambien estoy trabajanÇdo en el desarrollo de pantalla de led la mia es de 16*7 led es reprogramaable por teclado de pc , yo uso el micocode studio para crear el programa para el pic 19f628 , mi problema es q  deseo usar una variable mas grande q la word de 16bit , alguno sabe como estabelecer una de 32 bit en microcode studio , si es que se puede ??? Desde ya gracias!!


----------



## FALKON707 (Ago 18, 2010)

Holas saludos amigos les comento que soy nuevo en esto de los pic, me gustaria saber cual de ustedes seria tan gentil re regalarme una copia de algun proyecto de matriz de led de 8x80, el circuito y el codigo en (pbp), les agradesco el favor amigos y su ayuda    
!!! Urgente ¡¡¡

mi msn es: 









gracias amigos ¡¡¡


----------



## J2C (Ago 18, 2010)

FALKON707 dijo:


> Holas saludos amigos les comento que soy nuevo en esto de los pic, me gustaria saber cual de ustedes seria tan gentil re regalarme una copia de algun proyecto de matriz de led de 8x80, el circuito y el codigo en (pbp), les agradesco el favor amigos y su ayuda
> !!! Urgente ¡¡¡
> 
> mi msn es:
> ...


 
Flkon707

Yo te daria el circuito, el código y asi vos lo vendes con tu e-Mail !!!!!!!

Realmente te crees que trabajaremos los demas para que el dinero solo entre en tu bolsillo??????

Ademas, esta prohibido postear las direcciones de e-Mail propias y/o ajenas.

Saludos, JuanKa.-


----------



## MASTER 117 (Sep 12, 2010)

Hola, me pregunto si me podrian ayudar, tengo que hacer un letrero con una matriz de LEDs de 8X8 con un PIC18F4520, ero soy nuevo en esto y no tengo gran nocion de como hacerlo el programa que uso el el MPLAB


----------



## minssss (Ene 28, 2011)

me podrian ayudar con la explicacion del codigo en microcode para comunicar usb con el pic gracias estare agradecido puesto que necesito esa explicacion para desarrollar un proyecto saludos


----------



## FALKON707 (Mar 4, 2011)

Haber.. P*UE*s primero los que son ingeniros algo como esa ayuda que pide un novato como yo le debe de alegrar porque dÁ ha entender q*UE* es una persona que puede hacer algo mucho que lo que comparte conmigo. Ahora no es tanto por vender yo tengo un socio de oregon (u.s.a) que me trajo un sofware y el pcb del cartel de led de 80 x 240 y se venden como pan caliente, eso es lo que menos me interesa. Lo que yo quiero es hacerlo por mi mismo, aprender hacer el programa, el pcb es lo de menos yo ya tengo mi propionegocio de carteles de led, pero los mesajes los genera un sofware y pasandirectamente por puerto usb de la pc al cartel.... !!! Me comprendes mendes ¡¡¡... Claro si hay un ingeniero de verdad que no le duele ayudarme como el que insinua que busco burros para que trabnajen por mi, espero su pronta ayuda ¡¡¡

pdta: Antes de hablar pregunte.. Controlese la lengua ¡¡¡


----------



## mafig2112 (May 9, 2011)

para Fhrozen podras pasarme tu correo 
haber si me puedes hechar mano, ya que aun soy novato y no entiendo tu code que dejaste para el 16f84 
gracias


----------



## miroch (Ago 4, 2011)

por favor me  podrian enviar el circuito ya sea proteus u otro soy nuevo en esta area de la matrices de leds
del archivo de ccs  16f84a_195


----------



## tomasgrosso (Sep 3, 2011)

Hola, muy buenos dias.
He armado mi letrero de 7x55, en picbasic(pbp). osea anda bien, pero se nota mucho el parpadeo.
Les mando el coodigo. para que los chequeen y ver cual es mi falla, y si me pueden ayudar. Para mi el problema, es que mi programa es muy extenso y hace muchas veces la rutina, nose si me explico?.
Uso un pic 16f628a. y para los registros de dezplazamiento un 74ls164n. y parte de potencia uso los uln2803. 
Les mando el circuito y el programa 
Saludos y espero su respuesta


----------



## adrian1610 (Sep 4, 2011)

Hola 
Ocupo ver si alguien me puede ayudar tengo que hacer un proyecto en el que tengo que programar una matriz, lo que voy a usar es un pic 16f777, entonces queria ver si me pueden ayudar un poco con la programacion en PIC C y el manejo de esta matriz, se supone que lo que se presenta en la matriz tiene que quedarse fijo para dibujar sobre ella en una hoja entonces creo que es mas facil que si se tuviera que mover con registros. He leido en foros que es controlando las columnas y la filas para decir cual es el punto que se quiere encender pero ese es el problema que no estoy seguro como se hace entonces si me pueden ayudar, muchas gracias y espero una respuesta.
Saludos !!


----------



## josesaldivar (Dic 7, 2011)

Muy interezante todas sus ideas!! yo estoy tratando de hacer esa misma matriz pero con una placa de 7x32 con una interfaz por medio de Labview por comunicacion serial con el pic 18f4550, mas un registro de corrimiento por medio del integrado 74ls164...estare subiendo mi trabajo


----------



## kaliev (Dic 22, 2011)

tengo un problema con el integrado 74ls164 al simular todo el circuito en PROTEUS


----------



## nietzche (Feb 22, 2012)

Hola, yo ando en un PIC18F4550 pero en asm, de casualidad no saben como  se usa la memoria de datos en ese pic?, porque si quiero meter datos,  digamos 200 bytes para una tabla me manda un error, como puedo entonces  ocupar otros bancos de datos ?


----------



## kaliev (Feb 23, 2012)

http://pdf1.alldatasheet.com/datasheet-pdf/view/93911/MICROCHIP/PIC18F4550.html pdf del pic
http://www.alldatasheet.com/datasheet-pdf/pdf/93911/MICROCHIP/PIC18F4550.html pagina donde se encuentran los pic de la misma familia.

PAra saber como utilizar la memoria del pic tendrias que mirar el pdf


----------



## electronicaeselfuturo (Feb 28, 2012)

saludos amigos también estoy trabajando en la construcción de una matriz de leds de 64x8 filas, la estoy simulando con proteus v7.8 corre bien sin embargo se nota mucho el parpadeo de los leds ademas tengo un detalle que a veces muestra la puniltima letra y a veces no pero en la simulacion corre bien, me imagino que debe tener problemas de programación todo ello se alimenta por USB 2.0 ademas implemetando un pic 18F4550.. y programacion en pic c compiler.

también me gustaría saber como calcular la corriente de los leds, porque el refrescamiento lo hago por filas y no por columnas.o sea que cada transistor me alimenta 64leds. son8 transistores en total 1 por cada fila. BC547.


----------



## pepo29 (Ene 5, 2013)

hola amigos.....necesito ayuda en el manejo de una matriz de 8x8 totalment en ccs....utilizo el c compiler......un ejemplo con letras bastaria !!!


----------

