Matriz de Leds nxn - PIC18F4550

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
 

Adjuntos

  • matriz_de_leds_646.rar
    138.5 KB · Visitas: 3,840
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
 
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
 
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....
 
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
 
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
 
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

Código:
////////////////////////////////////////////////////////////////////////////////////
//                     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
 
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
 

Adjuntos

  • 16f84a_195.rar
    18.9 KB · Visitas: 1,471
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
 
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
 
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....
 
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
 

Adjuntos

  • codigo_171.rar
    71.3 KB · Visitas: 1,347
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
 
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 :D
bueno haber si comentan sus experimentos por mi parte subire fotos o videos del cartel que estoy armando pero si es que comentan adios
 
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
 
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!!
 
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 ¡¡¡
 
Última edición por un moderador:
Atrás
Arriba