
¡Descubre cómo una simple matriz de LEDs puede transformar tu mundo y revolucionar la forma en que experimentas la tecnología!
En la entrega anterior vimos todo el hardware necesario para crear una pequeña matriz de LEDs que pudiera ofrecer caracteres o símbolos fijos y, en un avance más de diseño, mostrar un mensaje en desplazamiento, dándote la oportunidad de utilizarlo para múltiples aplicaciones. La inclusión de un conector ICSP será fundamental para grabar rápidamente el microcontrolador y disponer al instante de mensajes diferentes con sólo organizar algunas líneas del software necesario para su funcionamiento. Desde vender un vehículo, pasando por los clásicos carteles utilizados en los aeropuertos con el apellido de una persona a la que se espera y terminando en un divertido gadget para anunciar las ofertas de fin de temporada, los carteles pasa-mensajes están en el ABC constructivo de todo electrónico experimentador. ¿Todavía no hiciste el tuyo?
Como mencionamos anteriormente, la construcción del hardware quedará sometida a tu elección, gusto y posibilidad económica. Como pudiste apreciar en las imágenes, nosotros optamos por LEDs individuales y montamos nuestro desarrollo en dos placas bien definidas: una exclusiva para los LEDs y otra para el resto de los componentes necesarios para el circuito. La construcción nos quedó cual si fuese un libro que se puede abrir al medio y dejar al descubierto todas las conexiones. Este método nos permite acceder rápidamente a cualquier sector del hardware para realizar correcciones de último momento y reformas que con el tiempo se nos ocurra realizar sobre la construcción inicial. Además, la fabricación realizada sobre placas universales pre-agujereadas facilita aún más la tarea de modificación, ampliación y corrección del diseño.

En la imagen puedes ver claramente las partes fundamentales que componen el hardware que hemos decidido montar, con sus componentes más destacados. Por supuesto que las conexiones del lado soldadura se presentan en todos estos casos con visibles signos de una “aparente” falta de prolijidad. Eso no debe ser un condicionante a la hora de la construcción ya que no estás fabricando un instrumento de electromedicina ni el módulo principal de un satélite de aplicaciones militares. No. Estamos aprendiendo, practicando, ensayando, transitando el camino de la experimentación y el desarrollo amateur. Será fantástico y muy bienvenido que puedas construir tus propios circuitos impresos de doble faz en FR4, con máscara antisoldante y agujeros metalizados, pero debes considerar también que hay personas que recién están aprendiendo a soldar y se entusiasman con estos proyectos o están aquellos casos en que los recursos económicos y los conocimientos son escasos para llevar a buen término una placa doble faz como debiera emplear este desarrollo.

Los grupos de cables están muy bien definidos e indicados en la imagen superior, donde se pueden identificar los correspondientes a las columnas, las filas, la conexión desde el puerto C del PIC hacia el ULN2803A, los cables de alimentación y los que llevan la información de las filas desde el puerto B hacia los transistores. De forma menos visible, por detrás de las conexiones de las filas, se encuentra la línea de conexión de la alimentación con el 7805, los capacitores de filtrado (electrolíticos) y desacoplo (cerámicos), la llave interruptora de alimentación y los diodos de protección contra la inversión de polaridad. Esto es tanto para la alimentación desde la batería como para la entrada de energía desde alguna alimentación general (12 Volts del coche) o desde una fuente conectada a la red domiciliaria.

Como dato final, antes de dedicarnos de lleno a experimentar con el software, te recomendamos instalar el microcontrolador sobre un zócalo de modo tal que puedas extraerlo fácilmente para su programación, en caso de no disponer de un sistema grabador de PICs que trabaje con el modo ICSP (I - C - S - P). En nuestro caso, con el grabador GTP-USB, lo utilizamos en modo ICSP, cambiamos líneas de comandos y hacemos muchos ensayos sin movilizar el PIC de su zócalo. Recuerda que si no realizas la tarea de extracción y colocación de manera cuidadosa, puedes romper fácilmente el zócalo o arrancar un pin del PIC, hecho que lamentarás mucho. Finalmente, un precinto plástico para sujetar la batería a la placa y ¡listo! ¡A programar se ha dicho!
Planteando el software
Un buen planteo previo del programa (es decir, analizar y llevar a un papel las ideas) es una tarea obligada cuando vamos a desarrollar un software, por más sencillo que este parezca. Por otro lado, debemos analizar y contabilizar de antemano el hardware que disponemos y lo que pretendemos de él. En el ejemplo que nos convoca, podemos deducir de manera muy clara que el puerto B del PIC se encargará de entregarnos los datos que veremos en cada columna y, por su parte, el puerto C se encargará de “mover” y desplazar estos datos a lo ancho de la “pantalla” hasta el lugar correcto donde deban ser presentados.

Utilizando la misma imagen de ejemplo del artículo anterior, nos encontramos que para representar la letra “R” debemos activar un contador que vaya desde el borde izquierdo de la matriz hacia el borde derecho y que en la posición N°3 (RC2) nos entregue el valor decimal “127”, que saldrá desde el puerto B e ingresará a través de las filas. Luego, el contador del puerto C avanzará a la siguiente posición y desde el puerto B llegará el siguiente dato: el valor decimal 72. De esta forma, el contador del puerto C avanzará una posición a la derecha y el puerto B entregará otro dato, uno a uno hasta completar las ocho posiciones. Este mecanismo, ejecutado muchas veces en un segundo, nos permitirá percibir que la letra “R” está quieta ahí y que se forma “toda junta y de una sola vez”. Sin embargo, el análisis nos muestra que lo hace columna a columna a medida que el contador (del puerto C) avanza una posición.
El programa
Lo elemental, entonces, es dividir el trabajo en tres bloques que deben estar perfectamente sincronizados: crear un contador para que el puerto C avance desde el inicio (a la izquierda de la matriz) hasta el final (a la derecha de la matriz), a cada paso del contador; entregar por el puerto B los datos correspondientes a cada columna; y por último, ajustar los tiempos del programa para obtener un funcionamiento correcto sin parpadeos molestos y simulando tener una imagen estática y fija. Al contador de columnas lo resolveremos mediante un lazo FOR – NEXT de 8 ciclos, mientras que a la obtención de los datos a entregar por el puerto B será mediante el conjunto de instrucciones DATA, RESTORE y READ.
Naturalmente, al inicio definiremos el PIC a utilizar con la frecuencia del oscilador. Si deseas utilizar otros modelos como el 16F877A o el 16F873A, debes corregir esta primera línea, al igual que si optas por otra frecuencia de cristal. Yo utilicé estos componentes porque los tenía a mano; tú puedes utilizar y experimentar con otros mientras se respete el circuito y el principio de funcionamiento. Luego declaramos las variables, como siempre en todo programa, y llegamos al lazo principal en la etiqueta Inicio, que es donde comienza la parte interesante del sistema.

Lo primero es iniciar el lazo FOR - NEXT para saber qué dato deberemos ir a buscar a la instrucción DATA en cada vuelta del ciclo. Observa que la mencionada instrucción posee los ocho valores que utilizaremos para formar el carácter seleccionado (la letra R). Entonces, para un valor inicial de cero en la variable CONTADOR, el puntero RESTORE nos indicará que debemos tomar el primer valor encontrado en DATA. Este valor se cargará en la variable LETRA mediante la instrucción READ.
Para el caso del puerto B, encontramos el carácter “~” antes de la variable LETRA. Este caracter especial nos indica que cargaremos sobre FILA (la salida del puerto B) el complemento de los datos que contenga la variable LETRA. ¿Por qué hacemos esto? Porque a la salida del puerto B tenemos transistores PNP y estos se consideran activos en estado bajo. Por lo tanto, el dato decimal 127, que sería %011111111, saldrá por el puerto B como %100000000 para de esta forma activar los 7 transistores PNP correspondientes a RB0 - RB6.
Luego de esto, incrementamos la variable A multiplicándola por 2 y controlando el momento en que llegue al final de la matriz (borde derecho) con el condicionante IF –THEN. Aplicamos un retardo que nos permita una visión sin parpadeos… ¡listo! Ya tenemos nuestra matriz funcionando y mostrando un carácter (la letra R).
Comienza el juego
Lo primero será hacer intermitente en el tiempo el carácter exhibido. Es decir, podemos crear un dibujo con el símbolo de STOP o PARE que funcione de forma intermitente para utilizarlo como baliza en el coche, o también puedes crear un gráfico con forma de corazón y hacer que funcione en forma intermitente bajo una camisa semi-traslúcida para demostrarle a tu chica que el corazón te late por ella.

La realización de todo lo que quieras mostrar se basa fundamentalmente en la construcción de los mapas de bits que se aplicarán en la instrucción DATA. Luego, haremos una secuencia FOR – NEXT para mostrar el símbolo y otra más para no mostrar nada en la salida del puerto B. También puede ser una buena idea diagramar un corazón más pequeñito para simular una variación de tamaños entre ciclo y ciclo. Tú elijes, ellas se rinden a tus pies.
De manera muy sencilla, hemos agregado al programa otra secuencia de datos en la instrucción DATA y además ahora aparece un contador de tiempo de encendido del símbolo y otro segmento de programa donde se apagan los puertos y se coloca un retardo de tiempo equivalente al que dura el símbolo visible pero, en este caso, apagado. Volvemos a destacar la importancia de la imaginación a la hora de diseñar los símbolos y caracteres a utilizar en este tipo de carteles. Una aplicación inteligente es garantía de éxito asegurado y por qué no una posible fuente de ingresos extras cuando alguien se acerque a consultarte cuánto le cobras por construirle uno.

Moviendo el texto
Aquí comienza lo que estabas esperando, aquí comienza la acción de verdad. Para desplazar un texto dentro de una matriz debemos aplicar todo lo visto hasta aquí y sólo moverlo.
Observa que la instrucción READ siempre se debe colocar en la parte más “inicial” del programa. Podemos entonces colocar una sola instrucción o varias que correspondan a cada caracter para mantener ordenado el programa. Además, cada caracter terminará en un dato igual a cero que será el equivalente a dejar un espacio entre letra y letra.

Conclusión
Al texto que hemos generado le puedes agregar todo lo que la memoria del PIC alcance. Te puedo asegurar que te vas a cansar de escribir texto y símbolos y nunca lo llenarás. Al menos al 16F876A. Puedes utilizarlo como pasa-mensajes para publicidad, para vender productos, para saludar amigos en estas fiestas, en fin; para lo que quieras transmitir, allí tendrás un nuevo medio para hacerlo. Recuerda lo sencillo que es: moviendo el puerto C, cargas en forma sincronizada los datos por el puerto B. Eso es todo. Intuyo que no creías que fuera tan sencillo. Diviértete, juega, experimenta, aprende y, como siempre, esperamos ver tus logros en video. Te dejamos los programas de los ejemplos vistos en el artículo y un .TXT con un listado de letras y símbolos prearmados para que no pierdas tiempo y comiences a cargar tu matriz hoy mismo. ¡Felicidades!
Domingo, 17 de Enero de 2010: Una vez más el amigo Yesbond nos honra y enorgullece a todos los que hacemos NeoTeo mostrándonos sus logros a partir de los artículos. ¡Gracias Yesbond! Tu trabajo y los resultados mostrados hacen que valga la pena ofrecer lo mejor de nosotros. Aquí está el trabajo de Yesbond, ojalá tú también encuentres interesantes los montajes que aquí compartimos y nos envíes tus videos.
Muy buen articulo señor mario lo felicito me ha sido muy util.
Cambiando de tema por este medio quería pedirle si seria posible hacer algún articulo sobre los cables VGA a RCA como funcionan, como hacer uno ya que me sucedió un caso de que me he adquirido uno pero no me funciona quiero saber si es por mi pc o por el cable, o también si se necesita alguna otra cosa aparte del cable o configurar el sistema, por favor ojala pueda responder mi peticion.
saludos
Hola Mario:
De verdad que eres grande, no hay otra palabra que te describa. Yo estaba esperando muy ansioso esta segunda parte y hoy me diste la razon de estas ansias, este articulo tiene una explicacion tan clara y facil de entender, y ademas paso a paso lo explicas como funciona todo, y haces un programa para que lo podamos entender mejor, y bueno tienes razon con respecto a la construccion del circuito, pero por lo menos para mi me gusta mucho mas hacer las cosas con mis propias manos, creo que es mas satisfactorio, ademas nos has enseñado a soldar, y hacer circuitos impresos asi que tenemos todas las armas para ir por ese circuito.
De verdad que te mereces inmensos aplausos por este y todos los articulos que has publicado. Bravo mario, sos el mejor, gracias por tu tiempo y dedicacion.
Un gran abrazo desde Colombia.
Muy buen articulo felicidades.
mariooooooo, muy buen tuto, pronto empezare a estudiar sobre electronica (por aca, por la web), y lo tuyo viene de pelos, sigue asi k todos te apoyamos y segumos mucho
Mario, el tutorial esta buenisimo... ya he terminado con la parte uno y ahora comienzo a programar el PIC. Seria demasiado pedir si pudieras hacer una tercera parte en la que agregues la conexion USB para cargar el texto "en tiempo real" (he visto un programa que permite encender en la matriz en pantalla los leds que quieres y luego los enciende en el hardware
hey mario! está excelente la segunda entrega!, ya estoy armando la matriz de led's en la placa perforada jejeje luego posteo mis logros/fallas/dudas. muchas gracias!!!!!
Soy estudiante de ingenieria en sistemas pero jamas habia tenido un interes considerable por la electronica, pero aqui le despiertan el interes a cualquiera porque suelo leer esta categoria de articulos y estan muy explicados. Felicidades!
Muy bueno mario, hace un rato termine de soldar mi matriz, le conecte unos cables planos ded un viejo cable ide, y unas borneras para conectarla al protoboard. Mañana veo si le puedo hacer una prueba de continuidad y arranco a poner componentes!
Que sera lo del sabado...??
Hola mario soy nuevo en programacion de pics, no se por donde empezar y tengo dudas espero puedas ayudarme.
¿Como conecto el pic a la pc o que interfase requiero?
Se que es por puerto paralelo LPT1 o serial COM1. Ando a ciegas en esto.
¿Que requiero para conectarlo a la pc?
Alguna interfase comprada o tengo que armarla
¿Que programa me ingresa los datos programados al pic?
C++, Qbasic, ASM u otro. Yo programo en VB6 y php pero estos no hacen esto o almenos php
Se que le puedo preguntar a mi provedor de material, pero por lo regular cuando pregunto se burlan, ignoran o peor a un no saben y no resuelven mis dudas. Por consiguiente termino por no comprar nada y no hago los proyectos: ya me paso con el articulo: "Conecta tus proyectos al puerto USB" y no quiero que 8X8 se quede igual.
El proyecto es lo mejor que he visto en la red, por lo bien explicado y fundamentado
Perdona mi insistencia y gracias por la atencion
Hola Mario, excelente tutorial.
Quisiera saber que necesitaria para hacer este mismo proyexyo pero para una matrix de 32x8 (es decir 4 matrices de 8x8). Gracias por la atencion y mis mejores deseos para el 2010.
primeramente felizitarlo por el enorme tutorial y pues lo estoy realizando, ya tengo armado el circuito en protoboard utilizando un pic16f877A y pues me surgio un detalle ya que al programar el pic para visualizar la letra R lo unico que me sale son todos los leds de cada una de las columnas estan encendidos de la col.1 a la col.8 a como esta el ciclo for pero no me esta tomando los datos almacenados en DATA; entonces quiero saber que es lo que me esta fallando. estoy compilando con el proton ide lite y ya cheque varias veces el programa y lo tengo tal y como dice el tutorial a excepcion de que modifique el tipo de pic al 16f877A.
saludos ¡¡
Hola, quisiera saber con que programa estas programando, ya que me interasa mucho el proyecto, pero yo manejo pero PIC Simulator IDE. Gracias!! Esta muy bueno el proyecto
estoy compilando con el proton ide pero no he conseguido hecharlo andar estoy revisando denuevacuenta mi circuito armado..
Hola Mario, soy nuevo en esta página.Leyendo este artículo ó tutotial y con el interés que me anima de aprender el manejo de matrices,veo que existe una PRIMERA PARTE ,la cual te agradecería me informarás que debo hacer para lograr obtenerla.
antonio
Hey men, me ha gustado mucho tu trabajo, yo lo estoy haciendo en lenguaje c, pero no logro mostrar el desplazamiento total de la palabra, sino, que lo hago es caracter por caracter, me gustaria saber, si me puedes ayudar ok? un saludo desde colombia, bye
Hola Sabes estoy muy interesado en tu Proyecto pero me gustaria saber si me puedes mandar una lista completa de todos los materiales que ocupates para realizar tu matriz de 8x8 ya sea por este medio o a mi correo
me arias un gran favor
sale espero tu respuesta
Hola lo que pasa es que soy neuvo en esto y tambien me gustari saber que lenguaje de programacion utilizaste y que programa
BUEN ARTICULO LO FELICITO MARIO DESDE COLOMBIA
maestro una consulta que compilador estas usando yo uso el pic basic pro y me sale error cuando utilizo ese archivo extension bas . disculpa la ignorancia
que tal pues he retomado el paso en esto de la matriz de leds. y ya me ha salido¡¡¡ la letra R seguire estudiando para realizar el mensaje scroll.
nuevamente gracias por este tipo de tutoriales¡¡¡¡
saludos¡¡
hola!tengo una duda: el pic, se puede programar estando colocado en el circuito o se necesita un programador externo ?gracias
y..tengo otra nueva inquietud..esto es para nulos en programacion o sea,yo.. ¿que programa o dispositivo permitiria,-por medio de la pc-, programar los textos y efectos mostrados en una matriz de leds sin tener que -obviamente- desarrollar todo el proceso en lenguaje picbasic o assembler etc? se me ocurre por si hay necesidad de cambiar el texto y/o efectos mostrados con mayor facilidad y rapidez (podria ser el caso de un comerciante q quiere cambiar el cartel de su negocio...¿como hace? ..no va a estar llamando a cada rato al fabricante del cartel para que se lo reprograme) ..bueno esa era mi duda gracias desde ya por vuestra atenta respuesta.
que tal,soy nuevo en esto,encontré está página hace poco y me dispuse a armar el cto como está en la parte 1,una vez listo bajé los programas que están en la página pero al querer hacer una modificación al de scroll me marca un error y me hace referencia a #include "D:TRABAJOSNEOTEONOTASMATRIZPICNEOTEO.PBP",que onda con eso o que tengo que modificar del programa original? por favor necesito ayuda
amigo una duda, me interesa hacer el proyecto, apenas ando comprando las piezas, pero me quedaron 2 pequenas dudas si me las podrias resolver; primera cuando dice que se repite esa conexion de lado izq. de la matriz de leds necesito hacer esa conexion esa cantidad de veces o es un encapsulado lo que pasa es que como lo pusiste en lineas punteadas eso me confundio y otra duda aunque ya lo lei como 3 veces pero creo que lo he pasado por alto pero aun asi pregunto lo hiciste en c y de ahi lo compilaste a ensambler o como, orientame un poco ya que en c soy bastante nuevo(tengo mas experiencia con programacion web pero aun soy muy malo en este :( ) otra duda y esa ya es extra para los comentarios lo hiciste en php o como? de antemano muchas gracias
hOLA....Me interesaria saber que programa usaron, es decir, yo uso microcode y ensamblador y pues no se parece la estrructura del texto en movimiento, por ejemplo, ayúdenme, pues estoy haciendo este proyectyo en microcode, pero pues si me dan el dato, me facilitarían las cosas. Muchas gracias de antemano
hola que tal, me gustria poder obtener el circuito para realizar el proyecto. te agradeceria si me lo puedes pasar mi correo es [email protected]
te agradeceria mucho
La verdad no tengo conocimiento en BASIC, es posible desarrollar este programa de una manera facil en sourceboost o en pic ccs (lenguaje C)? tambien en que implica agregar una segunda o tercer matriz y que el texto circule atraves de todas las matrices? Muchas Gracias!!!!
Muy buenas Tardes :)
Ya tengo Montada el ckt en protoboard y todo listo pero ....
no puedo programar el PIC 16F876A me sale un error no se si los que hicieron la matriz puedan orientarme :(
La verdad que me esta tomando mucho time programarlo me sale un error :
Failed, Addres=0x000002, Device=0x00, Buffer=0x30
si alguien puede ayudarme por fa
qe tal, muy buen aporte, solo me gustaria saber qe programa utilizaste para programar, gracias
Esta bien explicado, me sirvió de mucho algunos de los conceptos que explicas, ya que es mi próxima practica en la escuela jeje, solo que mi profe lo quiere en ensamblador jejeje pero la base es la misma gracias.
Saludos desde México.
hola tipo muy buen proyecto estoy trabajando sobre matrices de leds nadamas que tengo un problema: cheke....
el proyecto se llama "letrero electronico"
lo que tiene que hacer es lo siguiente:
1.- la matriz debera ser de 8x32
2.- mostrar un mensaje en la matriz de derecha a izquierda (recorrido)
3.- debera ser configurable para poder mostrar cualquier mensaje
mi problema es el No. 3
hey amigo para felicitarlo por el buen tutorial que ha desarrollado ya que todo se encuentra en forma clara y simple de entender pero me gustaria saber como hariamos un modulo de para anexarle al proyecto unas 3 matrices en cascada con el fin de expandir el mensaje gracias por su atencion y espero su pronta respuesta.
Como lo hago en CCS no entiendo nada jajajaja....nada mas lo pudeo hacer fijo en movimiento no puedo ayuda !!!
void main(void)
{
int xx;
char a[]={0,118,118,118,0};
char b1[]={0,54,54,54,73};
char c1[]={0,62,62,62,62};
char d1[]={0,62,62,62,65};
char e1[]={0,54,54,54,62};
char f1[]={0,118,118,118,126};
char g1[]={0,62,38,54,6};
char h1[]={0,119,119,119,0};
char i1[]={127,62,0,62,127};
char j1[]={62,62,0,126,126};
char k1[]={0,119,99,93,62};
char l1[]={0,63,63,63,63};
char m1[]={0,125,123,125,0};
char n1[]={0,121,119,79,0};
char o1[]={0,62,62,62,0};
char p1[]={0,118,118,118,112};
char q1[]={0,62,46,30,0};
char r1[]={0,118,118,106,28};
char s1[]={48,54,54,54,6};
char t1[]={126,126,0,126,126};
char u1[]={0,63,63,63,0};
char v1[]={96,95,63,95,96};
char w1[]={0,111,119,111,0};
char x1[]={28,107,119,107,28};
char y1[]={126,125,3,125,126};
char z1[]={30,46,54,58,60};
char yx[]={1,2,4,8,16};
char yx1[]={1,2,4,8,16};
char yx2[]={1,2,4,8,16};
char yx3[]={1,2,4,8,16};
char yx4[]={1,2,4,8,16};
//char yx[]={1,1,1,1,1};
//char yx1[]={2,2,2,2,2};
//char yx2[]={4,4,4,4,4};
//char yx3[]={8,8,8,8,8};
//char yx4[]={16,16,16,16,};
char ps;
char ps1;
char ps2;
char ps3;
char ps4;
TRISB=0;
TRISC=0;
xx=0;
ps=0;
//A
for (xx=0;xx<100;xx++)
{
portc=a[ps]; portb=yx[ps];
delay_ms(10);
//portb=0;
ps++;
portc=a[ps1]; portb=yx1[ps1];
delay_ms(10);
ps1++;
portc=a[ps2]; portb=yx2[ps2];
delay_ms(10);
ps2++;
portc=a[ps3]; portb=yx3[ps3];
delay_ms(10);
ps3++;
portc=a[ps4]; portb=yx4[ps4];
delay_ms(10);
ps4++;
if(ps==5)
{ps=0; }
if(ps1==5)
{ps1=0; }
if(ps2==5)
{ps2=0; }
if(ps3==5)
{ps3=0; }
if(ps4==5)
{ps4=0; }
}
//B
for (xx=0;xx<100;xx++)
{
portc=b1[ps]; portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5)
{ps=0;}
}
//C
for (xx=0;xx<100;xx++)
{
portc=c1[ps]; portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//D
for (xx=0;xx<100;xx++)
{
portc=d1[ps]; portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//E
for (xx=0;xx<100;xx++)
{
portc=e1[ps]; portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//F
for (xx=0;xx<100;xx++)
{
portc=f1[ps]; portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//G
for (xx=0;xx<100;xx++)
{
portc=g1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//H
for (xx=0;xx<100;xx++)
{
portc=h1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//I
for (xx=0;xx<100;xx++)
{
portc=i1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//J
for (xx=0;xx<100;xx++)
{
portc=j1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
// k
for (xx=0;xx<100;xx++)
{
portc=k1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//L
for (xx=0;xx<100;xx++)
{
portc=l1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//M
for (xx=0;xx<100;xx++)
{
portc=m1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//N
for (xx=0;xx<100;xx++)
{
portc=n1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//O
for (xx=0;xx<100;xx++)
{
portc=o1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//P
for (xx=0;xx<100;xx++)
{
portc=p1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//Q
for (xx=0;xx<100;xx++)
{
portc=q1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//R
for (xx=0;xx<100;xx++)
{
portc=r1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//S
for (xx=0;xx<100;xx++)
{
portc=s1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//T
for (xx=0;xx<100;xx++)
{
portc=t1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//U
for (xx=0;xx<100;xx++)
{
portc=u1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//V
for (xx=0;xx<100;xx++)
{
portc=v1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//W
for (xx=0;xx<100;xx++)
{
portc=w1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//X
for (xx=0;xx<100;xx++)
{
portc=x1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//y
for (xx=0;xx<100;xx++)
{
portc=y1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
//z
for (xx=0;xx<100;xx++)
{
portc=z1[ps];
portb=yx[ps];
delay_ms(10);
portb=0;
ps++;
if(ps==5) ps=0;
}
}
Disculpen la letra A era experimento jajaja de ahi de B a la Z esta bien y ps comparto mi programacion pero en CCS
Esta Buenisimo el Aporte, me gusto mucho, hasta ahora estoy empezando con esto, y quisiera pedirte una manito, ya que tengo que hacer este circuito pero con un Qy4 Freescale, y estoy un poquito confundido
hola Mario mui bien, sú articulo es fantástico, mui gracias
gracia por el tuto esta bueno pero tengo una duda que programa puedo usar para elaborar el sofware del pic
Hola, Tengo una duda, ¿como puedo Conectar 2 matrices o 3 de 8x8?
esque quiero hacer un pequeño cartel con 3 Displays Matriz de 8x8 pero no se como conectar los 3 displays matriz, Estoy Usando el PIC 16F876A, y quisiera que me hecharas la mano de como conectar los 3 displays al Pic y a los registros de desplazamiento el Registo queestoy usando es el 74hc164, ya consegui las piezas, pero primero ver la manera de que queden los 3 display matriz conectados al pic y a los registros de desplazamiento,
Y tambien quisiera que me hecharas la mano con el programa cuando lo simulo se quedan prendidos los 3 leds totalmente. y no hace ninguna actividad. el programa que hice me base en el Programa que nos compartiste como ejemplo. A que se debera, que los 3 led se queden prendidos sin hacer nada, ¿Configuracion de Puertos? ¿cual sera el problema?
disculpame Quice decir que los 3 display Matriz se quedan prendidos cuando lo simulo en PROTEUS
OYE MARIO, SI YA TENGO UNA MATRIZ LED PROGRAMA Y QUIERO AGREGARLE OTRA MATRIZ DE 8X8 QUE CAMBIOS LE TENGO QUE HACER EN EL PROGRAMA, O QUE INSTRUCCIONES LE PONGO PARA INTEGRAR LA MATRIZ DE MANERA QUE NO SE ALTERE TANTO EL PROGRAMA Y ME GENERE ERRORES, TE AGARADECIA SI ME PUDIERAS SUBIR UN EJEMPLO PARA DESCARGARLO Y BASARME EN EL EJEMPLO, PORQUE HE TRATADO DE TODO Y NO ME FUNCIONA, YA ESTOY DESESPERADO NO SE QUE HACER. POR FAVOR AYUDAME. =(
hola , 2 cosas , proton no soporta restore y como realizamos este ejercicio para comunicacion serial, gracias
saludos
recientemente arme el proyecto pero a tratar de compilar mi mensaje me salen errores de redefinicion de etiquetas DIM y B y de errores de sintaxis, que puedo hacer? alguien tendrá otro ejemplo de un scroll
ya lo solucione, si alguien quiere hacer su propio mensaje solo contácteme para enviarles el código y las instrucciones para la modificación.
hola mario exelente tutorial !!! :D
pero quisera saber qe software utilizas para hacer el programa si no es mucha molestia::::: gracias
buenas gente,enhorabuena por el tuto para gente que quiere inciarse como yo,queria consultar tambien unas cosas,uso microcode studio pero abro el archivo de mario y hago el circuito con proteus y me da error,e revisado todo bien y tengo la cabeza que me da vueltas,a ver si me pueden echar una mano,un saludo ygracias
Alguien me puede ayudar, ya que al simularlo con proteus me tira un error
Alguien me puede decir como hacer que funcione en proteus, no se si se porque utilizo el ULN2803 y no ULN2803A no se si tenga que ver eso pero todos los led de la matriz se quedan encendidos pero si esta enviando las señales :/
hola solo tengo una duda el proton plus me esta fallando cuando trato de pasar a hex me dice "error:usb key is missing" no se si sera error del programa o es por algo mas hayuda porfa
muy buen tutorial hasta que al fin encontre buenas bases para un cartel de led ahora si manos a la obra a ver si me sale y poder ampliarlo y mostrarlo a la comunidad cualquier avance
gracias Mario por un buen aporte a la comunidad con sed de conocimiento
hola al compilarlo con el basic compiler me sale un error y escrivo lo mismmo que vos sabes que puede ser??
desde ya agradeceria la repuesta
al compilarlo me sale error en el basic compiler cuan es el plobleema???
Hola soy un novato con los PICs, pero quisiera saber que tanto cambiaria el codigo si utilizaria el pic 16f877a ya que los codigos que pusiste son algo diferentes a los de este.
Saludos a todos. Yo soy electrónico y me he construido una matriz parecida a esta pero de 7 filas por 40 columnas con efecto de entrada y salida de texto y por supuesto un software para la pc para la carga de los mensajes ya que se pueden cargar al 25 mensajes de 96 letras ascii cada uno. Ya esta funcional peeeeero la idea que me esta rondando últimamente es hacer una pantalla pero modular, me explico. módulos 8x8 (como este proyecto) conectados entre si para formar pantalla mas grande, tal cual las hacen las comerciales gigantes. Ya tengo la idea como hacerla pero necesito muuuucho tiempo, dinero y mas ideas obviamente. estaba pensando para comenzar con una resolución de 32 filas por 64 columnas que serian 4 modulos por fila y 8 por columnas no se si me explique. buenos si alguien le interesa hablamos saludos
Parce seria tan amable de enviarme la lista completa de los materiales que hay que utilizar
disculpe la molestia, ¿qué programa está empleando para programar tipo lenguaje Basic?
Muchas gracias de antemano por la respuesta.
Hola Mario , lo quiero felicitar por este proyecto el cual me entusiasma mucho,pero lo tengo que molestar con un par de consultas,Lo quiero compilar em microcode y basic pic y en ambos me genera errores , en que soft lo compilo, y otra consulta importante para mi este mismo proyecto se puede progamar en microcode el cual estoy mas familiarizado, desde ya le agradezco su atencion y las respuestas.
Atte
hola mario mira estoy en cordoba argentina,.. y estoy estudiando tecnico superior en telecomunicaciones y me gustaria si es que podes pasarme el programa para cargar estas rutina o decirme que programas usa, asi lo paso al pic,,espero tu respuesta este gracias....
me puedes decir q compilador usaste por q yo use todos pero me tiran error ,,desde ya muchas
Podrían actualizar las imágenes, ya que hay muchas que no se ven, al igual que en la parte uno de este tutorial, gracias.
hola disculpa que compilador usas y como lo usas, ya que yo he instalado el picbasic y algunas palabras me las reconoce como errores sintácticos. agradecería nos proporcionaras ese dato.
Debes iniciar sesión para publicar un comentario.