Sie sind auf Seite 1von 24

Matriz de LED 8X8

ELECTRNICA
etiquetas: tutoriales

HTTP://WWW.NEOTEO.COM/MATRIZ-DE-LED-8X8/
Una de las bsquedas en la Web que siempre nos entrega 50 mil pginas dedicadas al tema es la que
nos ensea a construir una sencilla matriz de LEDs de al menos 8 LEDs por otros 8 LEDs (ancho por
alto). Uno se pregunta a veces cmo puede ser posible que habiendo tanta informacin al respecto la
gente siga consultando cada da sobre cmo realizar este tipo de carteles. En funcin de esta
inobjetable necesidad de realizar y comprender la manera en que se hacen estos sencillos letreros
luminosos, te presentamos una nueva visin y perspectiva de cmo llegar a lograr la construccin de
un pequeo y til pasa-mensajes (Scroll-Text), sin abandonar en el intento.
Antes de comenzar cualquier intento de construccin, debemos tener en claro cules son las
posibilidades ciertas que tendremos de materializar y finalizar con xito un proyecto. Por ejemplo,
nuestro proyecto de vida puede ser algn da realizarnos profesionalmente como instructores de surf
en cualquier playa paradisaca de Hawaii. Entre los elementos indispensables debemos contar con:
vivir en Hawaii, tener una contextura fsica gil, liviana, y atltica, hablar al menos unas pocas palabras
en el idioma local, tener un peinado donde prevalezcan las rastas y, por supuesto, tener al menos una
tabla de surf (propia, si es posible).
Para construir una matriz de LEDs sucede algo muy similar. Si no logramos juntar todos los elementos
mnimos e indispensables, es intil abrir un post en cada foro de electrnica que encontremos o
enviarle un correo a cada persona que ha construido una, esperando que alguno nos ofrezca
soluciones milagrosas y mgicas. Debemos obtener primero los materiales. Todos los materiales.
Por qu hacemos hincapi en esto? Porque para muchos que anhelan tener un letrero funcional, se
les disparan las ambiciones al saber la cantidad de LEDs que deben comprar y el inevitable costo que

ello supone. Adems, la complejidad del circuito y las eternas dudas que siempre existen acerca de
cmo se debe organizar un programa dentro del microcontrolador hacen naufragar hasta al ms
valiente.

En este artculo intentaremos echar un poco de luz sobre el tema (un poco ms de la que ya hay) y te
propondremos un circuito sencillo, ampliable y, como siempre, didctico. Por todo esto, lo primero
que debemos tener en claro es que slo vamos a construir una matriz de 8 X 8 LEDs y que luego
vendrn las enormes marquesinas al mejor estilo Las Vegas. Pero comenzaremos por lo ms
bsico. En este mbito inicial y de planteamientos sobre cmo deseamos ver materializado el proyecto
final, una de las decisiones iniciales ser la opcin entre una matriz comprada hecha y lista para usar
o si la construiremos nosotros mismos con LEDs individuales. Las imgenes pueden ilustrarnos las
diferencias muy claras y conocidas entre una y otra.

Matriz 8 X 8 compacta e integrada

Matriz de construccin artesanal con LEDs individuales


En lo que refiere al funcionamiento, ambos sistemas podrn desempearse de manera aceptable y
con un resultado acorde a la programacin del microcontrolador que se utilice para activarlos. En
cambio, desde el punto de vista constructivo, las diferencias son notables y lo que se torna favorable
en algunos casos puede ser perjudicial en otros. Por ejemplo: el diseo compacto, la facilidad de
conexin y el rendimiento deseado son factores que inclinan la balanza hacia el mdulo integrado de
64 LEDs que aparece en la imagen izquierda. Sin embargo, cuando necesitamos un tamao no
convencional o fuera de los estndares de fabricacin, la construccin a partir de LEDs
individualespasa a ser una necesidad. Adems, el menor costo es otro de los factores que inciden en
la eleccin. Y sea cual sea dicha eleccin, lo que debemos hacer es saber a ciencia cierta cmo se
trabaja con estas pequeas pantallas transmisoras de informacin. Es decir, debemos saber de
antemano qu estamos buscando.

Mostrando
una
imagen.
Para visualizar un caracter, mostrar un pequeo dibujo u ofrecer cualquier smbolo en la pantalla,
debemos desmenuzar el anlisis de funcionamiento y, de esa manera, comprenderemos el concepto
esencial que rige la mecnica de estos displays grficos. Tomando como ejemplo una letra, la letra
R, debemos armar inicialmente un mapa dentro de la matriz de cmo queremos que se vea o
grafique lo que estamos queriendo mostrar. Es decir, debe existir un trabajo previo, un trabajo duro y
a veces tedioso (pero necesario) para lograr llevar a la pantalla la imagen deseada. Todas las letras
del alfabeto, todos los nmeros y smbolos a mostrar deben planificarse (mapearse) previamente
para que al llegar el momento de la programacin del microcontrolador, slo sean necesarios un par
de simples movimientos y formar as el grfico que deseamos presentar.

Tal como se puede apreciar en el grfico siguiente, la letra R ser la representacin de la cadena de
valores 0, 0, 127, 76, 72, 74, 49 y 0. Estos valores sern enviados a la matriz mediante las filas (8
bits), colocando cada valor en la columna correspondiente. Repitiendo el proceso de colocar cada
fila en su respectiva columna muchas veces por segundo, tendremos la impresin de estar observando
una imagen esttica y fija, siendo que en realidad los datos ingresan por las filas, se visualizan en la
columna correcta y se apagan. Luego ingresan otros datos en un nuevo ciclo del programa, se
visualizan en la columna correcta y se apagan. El ciclo se repite una y otra vez hasta completar el
smbolo deseado, como dijimos antes, muchas veces en un segundo, lo que nos dar la sensacin
visual de que permanece siempre fijo all.

Concepto
fundamental.
La imagen se forma por el barrido de las columnas a las que se les hacen llegar en el momento
apropiado los datos que queremos visualizar. Estos datos llegan de a uno por vez y se colocan en el
lugar que le corresponde a cada uno dentro del mapa de bits creado en forma previa. Al repetir el ciclo
muchas veces en un segundo, la imagen dar la impresin de estar fija. Para que este efecto se logre

con mejor resultado, interviene la inercia de encendido y apagado del LED, sumado a la velocidad de
nuestra visin en detectar los mencionados cambios de estado.
Del
dicho
al
hecho.
Como vimos, iniciaremos el trabajo partiendo de una matriz que sea capaz de representar visualmente
los smbolos que deseamos mostrar. En nuestro caso, hemos construido una matriz de 8 LEDs por
lado. Pero si lo deseas, puedes reducir el tamao a 7 LEDs de alto por 5 de ancho y seguirs
visualizando sin problemas caracteres del alfabeto, nmeros, smbolos de puntuacin y cualquier
grfico elemental que sea capaz de verse en esa mnima resolucin.

La conexin de los 64 LEDs que componen la matriz es una de las partes ms tediosas del
montaje.Debes armarte de mucha paciencia y calma, ya que trabajar bajo presin o con los tiempos
muy acotados te pueden llevar a un error involuntario que signifique desarmar todo y volver a empezar.
Por lo tanto, nuestra recomendacin es que admitas en tu mente la necesidad de quemar toda una
jornada de trabajo en el armado de la matriz para luego no estar buscando posibles fallas que sern
muy difciles de encontrar.

Las conexiones son muchas y las posibilidades de error se multiplican, por lo que ser necesario poner
lo mejor de nuestra paciencia en esta parte del desarrollo. La situacin puede simplificarse si
construimos un circuito impreso de doble faz y diseado en forma especfica para esta aplicacin. Pero
los costos de una buena placa doble faz con agujeros metalizados (conduccin de un lado a otro de la
placa), el tiempo que se pueda demorar en el diseo de la mencionada PCB, sumado al tiempo que
podemos demorar utilizando una placa experimental, pueden acumular escollos que por lo general se
resuelven de manera prctica utilizando las placas impresas experimentales, como vemos en la
fotografa superior. Visto el diagrama esquemtico de conexiones de los LEDs, quedara de la forma
que te mostramos en el siguiente grfico:

El correcto armado de la matriz es el punto clave en la construccin de un cartel de LEDs. Si te


equivocas en la conexin o posicin de alguno de los LEDs, puedes pasar horas hasta descubrir el
origen de la falla. Por esto, adems de la atencin que te recomendamos en el armado, es muy
saludable que una vez concluido el montaje compruebes con un multmetro de aguja el correcto
funcionamiento de todos y cada uno de los 64 LEDs que componen la matriz. Obviar este paso puede
significar ms adelante un dolor de cabeza al no saber con certeza si la falla estar en la matriz de
conexiones o en los circuitos de activacin de los LEDs. Por lo tanto, la recomendacin es esta: ir por
pasos y controlar muy bien todo lo que se est realizando. Una correccin a tiempo puede
significar el ahorro de horas de estancamiento en el trabajo.

Si utilizas una matriz comprada y armada, solamente reducirs tu trabajo a determinar el pinout de
la misma (donde est cada conexin de cada LED) y colocarle o no al frente del montaje una cubierta
protectora para que no se vean los espacios entre LEDs y para que aparezca como un frente ciego
que slo se iluminar al momento de funcionar. En nuestro caso, por utilizar dispositivos del tipo water
clear, necesitamos colocarle un plstico en su parte frontal para aplacar un poco el reflejo de la luz
ambiente en el cuerpo plstico de cada LED. Adems, este mtodo de colocar un material semitranslcido delante de los LEDs nos permitir trabajar con tasas de refresco (los tiempos de
encendido/apagado de los LEDs) ms lentas y eso traer consigo un mayor brillo final obtenido
con una mejor apreciacin del mensaje.
Paso
a
paso,
conectando
cada
LED.
Para la realizacin de este diseo, utilizaremos un PIC 16F876A del que dispondremos de los puertos
B y C para activar las filas y columnas de la matriz, respectivamente. Podramos haber utilizado el
clsico registro de desplazamiento que utiliza la mayora para emplear as un PIC ms pequeo y a
travs de l/ellos movilizar las columnas. Pero quisimos hacer un montaje diferente para que
puedas ver otra opcin y evaluar la ms conveniente a tus necesidades. Adems, el hecho de utilizar
otro tipo de circuito te permitir ver desde otro ngulo el funcionamiento de estos desarrollos. Y quizs
de este modo puedas comprender mejor su funcionamiento.
Insisto, si no fuese as, cualquiera sabra hacer una matriz. Y la realidad de la Web indica que hay
ms intrigas y preguntas que demostraciones de funcionamiento exitoso. Por ejemplo: en YouTube,
la bsqueda de la frase Matriz 8X8 arroja menos de 350 resultados, mientras que en Google este
valor asciende a ms de 20 mil. O sea, hay muy poca gente que muestra resultados y hay una
inmensa cantidad que tiene ms preguntas que respuestas. Por supuesto que los 20 mil resultados
no corresponden a preguntas, pero siendo muy generoso, 1 mil de ellos s lo son.

El grfico superior te muestra de manera simplificada la conexin de uno de los 64 LEDs que
componen la matriz. Es un ejemplo genrico de seleccin de una de las 8 filas y una de las 8 columnas.
Cualquier combinacin de esta naturaleza energizar un nico LED. Esta imagen te demuestra que
debemos colocar un pin en estado BAJO en el Puerto B y otro en estado ALTO en el Puerto C para
que los transistores conectados a ellos se activen y logren encender el LED seleccionado. El

resultado final ser un circuito compuesto por el PIC 16F876A (tambin puedes utilizar un 16F873A),
trabajando con un cristal de 12Mhz, un driver ULN2803A, algunas resistencias y un circuito de
alimentacin que te permite trabajar con batera o con entrada de tensin externa.

La inclusin y posicin de los diodos 1N4007 en el circuito sirve para proteger la unidad ante
accidentales inversiones de polaridad que puedan daar el PIC. Por otro lado, la variacin en el
valor de las resistencias de 220 Ohms significar una alteracin en el brillo obtenido en el cartel.
Es decir, podemos colocar hasta resistencias de 56 Ohms en esos lugares sin provocar problemas
funcionales. Pero debemos estar atentos a que el consumo de corriente subir de manera considerable
y esto es un problema cuando trabajamos con desarrollos pequeos alimentados a batera. En nuestro
caso, que pensamos utilizar el juguete en interiores, no ser necesaria tanta intensidad luminosa.
Pero si t en cambio deseas utilizar la matriz en espacios abiertos, la luz de un da de sol puede
molestar la adecuada visin. En estos casos, bajar el valor de las resistencias y ensayar otras
velocidades de refresco te servirn para adecuar el brillo de la matriz a tus necesidades.
En la prxima entrega, comenzaremos a desarrollar el programa dentro del PIC y a analizar cmo
podemos lograr una buena imagen esttica para utilizar la matriz como indicador luminoso tipo baliza
de emergencia y tambin veremos cmo lograr textos con desplazamientos para poder emplearlo
como cartel pasa-mensajes. Adems, veremos la posibilidad de programar efectos visuales, por
ejemplo, que el texto se caiga o se desplace hacia arriba. Vale aclarar en este punto lo que
mencionamos al principio: no estamos inventando la rueda, ni develando el misterio de las
matrices de LEDs, sino que estamos mostrando otro modo de construirlas. Puede ser mejor o puede
ser peor, pero lo importante siempre ser que a ti te sea til para comprender mejor la teora y tener
ms alternativas prcticas de desarrollo. No te pierdas la segunda entrega de esta construccin
donde pondremos al alcance de tu mano un cartel muy particular y vistoso para adornar el ambiente
festivo a la espera del ao que se avecina. No te lo pierdas!

Matriz de LED 8X8 (Parte II)


ELECTRNICA
etiquetas: tutoriales

En la entrega anterior vimos todo el hardware necesario para crear una pequea matriz de LEDs que
pudiera ofrecer caracteres o smbolos fijos y, en un avance ms de diseo, mostrar un mensaje en
desplazamiento, dndote la oportunidad de utilizarlo para mltiples aplicaciones. La inclusin de un
conector ICSP ser fundamental para grabar rpidamente el microcontrolador y disponer al instante
de mensajes diferentes con slo organizar algunas lneas del software necesario para su
funcionamiento. Desde vender un vehculo, pasando por los clsicos 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 estn en el ABC
constructivo de todo electrnico experimentador. Todava no hiciste el tuyo?
Como mencionamos anteriormente, la construccin del hardware quedar sometida a tu eleccin,
gusto y posibilidad econmica. Como pudiste apreciar en las imgenes, nosotros optamos
por LEDsindividuales 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 construccin nos
qued cual si fuese un libro que se puede abrir al medio y dejar al descubierto todas las conexiones.
Este mtodo nos permite acceder rpidamente a cualquier sector del hardware para realizar
correcciones de ltimo momento y reformas que con el tiempo se nos ocurra realizar sobre la
construccin inicial. Adems, la fabricacin realizada sobre placas universales pre-agujereadas facilita
an ms la tarea de modificacin, ampliacin y correccin del diseo.

En la imagen puedes ver claramente las partes fundamentales que componen el hardware que hemos
decidido montar, con sus componentes ms 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 construccin ya que no ests fabricando
uninstrumento de electromedicina ni el mdulo principal de un satlite de aplicaciones militares. No.
Estamos aprendiendo, practicando, ensayando, transitando el camino de la experimentacin y el
desarrollo amateur. Ser fantstico y muy bienvenido que puedas construir tus propios circuitos
impresos de doble faz en FR4, con mscara antisoldante y agujeros metalizados, pero debes
considerar tambin que hay personas que recin estn aprendiendo a soldar y se entusiasman con
estos proyectos o estn aquellos casos en que los recursos econmicos y los conocimientos son
escasos para llevar a buen trmino una placa doble faz como debiera emplear este desarrollo.

Los grupos de cables estn muy bien definidos e indicados en la imagen superior, donde se pueden
identificar los correspondientes a las columnas, las filas, la conexin desde el puerto C del PIC hacia

elULN2803A, los cables de alimentacin y los que llevan la informacin de las filas desde el puerto
Bhacia los transistores. De forma menos visible, por detrs de las conexiones de las filas, se encuentra
la lnea de conexin de la alimentacin con el 7805, los capacitores de filtrado (electrolticos) y
desacoplo (cermicos), la llave interruptora de alimentacin y los diodos de proteccin contra la
inversin de polaridad. Esto es tanto para la alimentacin desde la batera como para la entrada de
energa desde alguna alimentacin 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 zcalo de modo tal que puedas extraerlo fcilmente para su
programacin, en caso de no disponer de un sistema grabador de PICs que trabaje con el
modo ICSP(In Circuit Serial Programming). En nuestro caso, con el grabador GTP-USB, lo utilizamos
en modoICSP, cambiamos lneas de comandos y hacemos muchos ensayos sin movilizar el PIC de
su zcalo. Recuerda que si no realizas la tarea de extraccin y colocacin de manera cuidadosa,
puedes romper fcilmente el zcalo o arrancar un pin del PIC, hecho que lamentars mucho.
Finalmente, un precinto plstico para sujetar la batera 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 ms 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 artculo 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 posicin N3 (RC2) nos entregue el valor decimal 127, que saldr desde el puerto
B e ingresar a travs de las filas. Luego, el contador del puerto C avanzar a la siguiente posicin y
desde el puerto B llegar el siguiente dato: el valor decimal 72. De esta forma, el contador del puerto
C avanzar una posicin 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 all y que se forma toda junta y de una sola vez. Sin
embargo, el anlisis nos muestra que lo hace columna a columna a medida que el contador (del puerto
C) avanza una posicin.

En el siguiente video podemos ver cmo se forma la letra o caracter, paso a paso, con cada incremento
de la salida del puerto C. En el caso de las posiciones en que no existen LEDs encendidos (segn el
ejemplo mostrado hasta aqu), dentro de la rutina preparada especialmente para crear el video,
se han colocado datos en la posicin 128 del puerto B, es decir, en el LED superior correspondiente a
cada columna no utilizada (0,1 y 7). El propsito es saber en todo momento la actividad del
puerto C. Conocer qu valores toma a cada paso y las columnas que atraviesa mientras no presenta
datos tiles en la matriz. Cuando el puerto B entrega datos, estos se muestran en la columna

correspondiente. La variacin de velocidad mostrada ser fundamental para descubrir lo que an no


habas comprendido acerca del funcionamiento de esta matriz.
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 del puerto C; 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
esttica y fija. Al contador de columnas lo resolveremos mediante un lazo FOR NEXT de 8 ciclos,
mientras que a la obtencin 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 lnea, al igual que si optas
por otra frecuencia de cristal. Yo utilic estos componentes porque los tena 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
etiquetaInicio, 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
instruccinDATA en cada vuelta del ciclo. Observa que la mencionada instruccin posee los ocho

valores que utilizaremos para formar el carcter 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
instruccin READ. Una vez obtenido el dato, ya sabemos que la variable A tiene un valor inicial igual
a 1 y eso se cargar a la salida del puerto C. Como cada transistor darlington del ULN2803A se activa
con un estado alto, se activar directamente la salida PORTC.0 en estado alto. Recordemos que en
BASIC escribir 1 y %00000001 en el puerto es exactamente lo mismo; una forma es decimal y la otra
binaria pero ambas se ejecutarn de la misma forma.
Para el caso del puerto B, encontramos el caracter ~ 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
tenemostransistores PNP y estos se consideran activos en estado bajo. Por lo tanto, el dato
decimal 127, que sera %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 multiplicndola 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 visin sin parpadeos y listo! Ya tenemos nuestra matriz funcionando y mostrando
un caracter (la letra R).
Comienza
el
juego
Lo primero ser hacer intermitente en el tiempo el carcter exhibido. Es decir, podemos crear un dibujo
con el smbolo de STOP o PARE que funcione de forma intermitente para utilizarlo como baliza en el
coche, o tambin puedes crear un grfico con forma de corazn y hacer que funcione en forma
intermitente bajo una camisa semi-traslcida para demostrarle a tu chica que el corazn te late por
ella. Es decir, para entretenerse hay miles de ideas posibles, veamos cmo lograrlo.

La realizacin de todo lo que quieras mostrar se basa fundamentalmente en la construccin de los


mapas de bits que se aplicarn en la instruccin DATA. Luego, haremos una secuencia FOR
NEXTpara mostrar el smbolo y otra ms para no mostrar nada en la salida del puerto B. Tambin
puede ser una buena idea diagramar un corazn ms pequeo para simular una variacin de tamaos
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
instruccin DATAy adems ahora aparece un contador de tiempo de encendido del smbolo y otro
segmento de programa donde se apagan los puertos y se coloca un retardo de tiempo equivalente al

que dura el smbolo visible pero, en este caso, apagado. Volvemos a destacar la importancia de la
imaginacin a la hora de disear los smbolos y caracteres a utilizar en este tipo de carteles. Una
aplicacin inteligente es garanta de xito asegurado y por qu no una posible fuente de ingresos
extras cuando alguien se acerque a consultarte cunto le cobras por construirle uno.

Moviendo
el
texto
Aqu comienza lo que estabas esperando, aqu comienza la accin de verdad. Para desplazar un
texto dentro de una matriz debemos aplicar todo lo visto hasta aqu y slo moverlo. Cmo se realiza
esto? Muy sencillo. Primero cargas en la seccin de la instruccin DATA todos los datos
correspondientes a las filas que mostrars. Luego generas un incremento de la variable CONTADOR a
cada ciclo y, de este modo, forzars al puntero RESTORE a que lea un nuevo dato para enviar al
puerto B. De este sencillo modo, habrs creado el movimiento en tu matriz.
Observa que la instruccin READ siempre se debe colocar en la parte ms inicial del programa.
Podemos entonces colocar una sola instruccin o varias que correspondan a cada caracter para
mantener ordenado el programa. Adems, cada caracter terminar en un dato igual a cero que ser el
equivalente a dejar un espacio entre letra y letra. Agregaremos ceros para generar espacios entre

el fin y el inicio de una palabra y el resultado ser el siguiente listado de programa que corresponde al
video anterior:

Conclusin
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 smbolos y nunca lo llenars. 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 tendrs 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 creas que fuera tan sencillo. Divirtete, juega, experimenta,
aprende y, como siempre, esperamos ver tus logros en video. Te dejamos los programas de los

ejemplos vistos en el artculo y un .TXT con un listado de letras y smbolos prearmados para que no
pierdas tiempo y comiences cargar tu matriz hoy mismo.Felicidades!
Domingo, 17 de Enero de 2010: Una vez ms el amigo Yesbond nos honra y enorgullece a todos los
que hacemos NeoTeo mostrndonos sus logros a partir de los artculos. 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 tambin encuentres interesantes los montajes que aqu compartimos y nos enves
tus videos.

Letras desplazando
Device = 16F876A
Xtal = 12
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
Dim
Dim
Dim
Dim
Dim
Dim

' VAMOS A USAR UN PIC16F876A


' CON UN CRISTAL DE 12MHz

0,0,0,0,0,0,0,0,0,0,0 'ESPACIO
127,32,28,2,127,0 'LETRA "N"
127,73,73,65,0 'LETRA "E"
62,65,65,65,62,0 'LETRA "O"
64,64,127,64,64,0 'LETRA "T"
127,73,73,65,0 'LETRA "E"
62,65,65,65,62,0 'LETRA "O"
0,0,0,0,0,0,0,0,0,0,0 'ESPACIO

A As Word
B As Word
C As Word
W As Word
LETRA As Word
CONTADOR As Word

Symbol COLUMNA = PORTC


Symbol FILA = PORTB
All_Digital = True
Low FILA
Low COLUMNA
A = 1
W = 0
Inicio:
B = 0
B = B + W
C = B + 7

'B SER EL INICIO DE LAS COLUMNAS (LADO IZQUIERDO)


'B SE INCREMENTAR DE A UNO Y SIEMPRE ESTAR SEPARADO
'SIETE POSICIONES RESPECTA A C
'C SER EL FINAL (LADO DERECHO)

For CONTADOR = B To C

'POR LO TANTO EL CONTADOR IR DESDE B HASTA C

If A > 128 Then A = 1


Restore CONTADOR
READ LETRA
FILA = ~LETRA
COLUMNA = A
DelayMS 3

A = A * 2
Next
DelayMS 15
W = W + 1

'"W" INCREMENTA LOS VALORES DE CONTADOR Y EL PUNTERO


'RESTORE IR AVANZANDO, LEYENDO SIEMPRE EL PRXIMO DATO
'ACUMULANDO ESTA SITUACIN, GENERAMOS EL DESPLAZAMIENTO

GoTo Inicio

R FIJA
Device = 16F876A
Xtal = 12

' VAMOS A USAR UN PIC16F876A


' CON UN CRISTAL DE 12MHz

DATA 0,0,127,72,76,74,49,0

Dim A As Word
Dim LETRA As Byte
Dim CONTADOR As Byte

'DATOS QUE LEEREMOS CON LA INSTRUCCIN


'"READ" Y DIRECCIONAREMOS CON "RESTORE"
'(LETRA "R")

'VARIABLE QUE INCREMENTAR EN


'BASE 2 PARA ACTIVAR LA COLUMNA CORRESPONDIENTE
'VARIABLE DONDE SE UBICAR ELVALOR DECIMAL QUE
'SALDR POR EL PUERTO B
'VARIABLE PARA EL CONTADOR DE COLUMNAS

Symbol COLUMNA = PORTC 'AL PUERTO C LO LLAMAREMOS "COLUMNA"


Symbol FILA = PORTB
'AL PUERTO B LO LLAMAREMOS "FILA"
All_Digital = True

'VAMOS A UTILIZAR TODO EL PIC EN MODO DIGITAL

Low FILA
Low COLUMNA

'INICIAMOS CON LOS PUERTOS EN ESTADO BAJO

A = 1

'ESTA VARIABLE NO PUEDE INICIAR EN CERO PORQUE


'MULTIPLICADA POR DOS SIEMPRE RESULTARA = 0
'COMIENZA EL LAZO DEL PROGRAMA

Inicio:

For CONTADOR = 0 To 7 'INICIAMOS UN CICLO DE 8 VUELTAS


Restore CONTADOR
READ LETRA
FILA = ~LETRA
COLUMNA = A

'CARGAMOS EL "PUNTERO" CON EL VALOR DE LA


'VARIABLE "CONTADOR"
'LEEMOS ESE ESPACIO DENTRO DE "DATA" Y LO CARGAMOS
'EN LA VARIABLE "LETRA"
'ACTIVAMOS LAS FILAS CON EL DATO EXTRADO DE "DATA"
'ACTIVAMOS LA COLUMNA QUE CORRESPONDA

A = A * 2

'INCREMENTAMOS EN BASE 2 EL NMERO QUE SACAREMOS POR


'EL PUERTO C
If A > 128 Then A = 1
'SI ESTE VALOR "SE SALE" DE LA MATRIZ LO DEVOLVEMOS
'AL INICIO (A LA IZQUIERDA)
DelayMS 2
'PEQUEO RETARDO (ESTE VALOR DETERMINA EL REFRESCO DE LA IMAGEN)
Next

'CERRAMOS EL CICLO DE 8 VUELTAS

GoTo Inicio

'VOLVEMOS A INICIAR

CORAZON
Device = 16F876A
Xtal = 12

' VAMOS A USAR UN PIC16F876A


' CON UN CRISTAL DE 12MHz

DATA 112,136,132,66,99,132,136,112,0

Dim A As Word
Dim LETRA As Byte
Dim CONTADOR As Byte
Dim TIEMPO As Word

'DATOS QUE LEEREMOS CON LA INSTRUCCIN


'"READ" Y DIRECCIONAREMOS CON "RESTORE"
'(LETRA "R")

'VARIABLE QUE INCREMENTAR EN


'BASE 2 PARA ACTIVAR LA COLUMNA CORRESPONDIENTE
'VARIABLE DONDE SE UBICAR ELVALOR DECIMAL QUE
'SALDR POR EL PUERTO B
'VARIABLE PARA EL CONTADOR DE COLUMNAS
'VARIABLE PARA DETERMINAR EL TIEMPO DE ENCENDIDO
'O DE APAGADO DEL SMBOLO

Symbol COLUMNA = PORTC 'AL PUERTO C LO LLAMAREMOS "COLUMNA"


Symbol FILA = PORTB
'AL PUERTO B LO LLAMAREMOS "FILA"
All_Digital = True

'VAMOS A UTILIZAR TODO EL PIC EN MODO DIGITAL

Low FILA
Low COLUMNA

'INICIAMOS CON LOS PUERTOS EN ESTADO BAJO

A = 1

'ESTA VARIABLE NO PUEDE INICIAR EN CERO PORQUE


'MULTIPLICADA POR DOS SIEMPRE RESULTARA = 0
'COMIENZA EL LAZO DEL PROGRAMA

Inicio:

For TIEMPO = 1 To 50 'TIEMPO ENCENDIDO


For CONTADOR = 0 To 7 'INICIAMOS UN CICLO DE 8 VUELTAS
Restore CONTADOR
READ LETRA
FILA = ~LETRA
COLUMNA = A

'CARGAMOS EL "PUNTERO" CON EL VALOR DE LA


'VARIABLE "CONTADOR"
'LEEMOS ESE ESPACIO DENTRO DE "DATA" Y LO CARGAMOS
'EN LA VARIABLE "LETRA"
'ACTIVAMOS LAS FILAS CON EL DATO EXTRADO DE "DATA"
'ACTIVAMOS LA COLUMNA QUE CORRESPONDA

A = A * 2

'INCREMENTAMOS EN BASE 2 EL NMERO QUE SACAREMOS POR


'EL PUERTO C
If A > 128 Then A = 1
'SI ESTE VALOR "SE SALE" DE LA MATRIZ LO DEVOLVEMOS
'AL INICIO (A LA IZQUIERDA)
DelayMS 1
'PEQUEO RETARDO (ESTE VALOR DETERMINA EL REFRESCO DE LA
IMAGEN)
Next
Next
FILA = %11111111
COLUMNA = %00000000
DelayMS 400

'CERRAMOS EL CICLO DE 8 VUELTAS


'CERRAMOS EL CICLO DEL TIEMPO DE MUESTRA
'APAGAMOS EL PUERTO B
'APAGAMOS EL PUERTO c
'ESPERAMOS UN TIEMPO EQUIVALENTE AL ENCENDIDO

GoTo Inicio

'VOLVEMOS A INICIAR

'**************************************************************************************************
'*ALFABETO PARA COMPLETAR UN TEXTO CON "COPY-PASTE"
*
'*
*
'**************************************************************************************************
'**************************************************
'*
ALFABETO GRANDE
*
'**************************************************
'DATA 63,72,72,72,63,0 'LETRA "A"
'DATA 127,73,73,73,54,0 'LETRA "B"
'DATA 62,65,65,65,34,0 'LETRA "C"
'DATA 127,65,65,65,62,0 'LETRA "D"
'DATA 127,73,73,65,0 'LETRA "E"
'DATA 127,72,72,64,0 'LETRA "F"
'DATA 62,65,73,73,46,0 'LETRA "G"
'DATA 127,8,8,8,127,0 'LETRA "H"
'DATA 65,65,127,65,65,0 'LETRA "I"
'DATA 2,1,1,126,0 'LETRA "J"
'DATA 127,8,24,36,67,0 'LETRA "K"
'DATA 127,1,1,1,0 'LETRA "L"
'DATA 127,32,16,32,127,0 'LETRA "M"
'DATA 127,32,28,2,127,0 'LETRA "N"

'DATA 95,72,36,34,95,0 'LETRA ""


'DATA 62,65,65,65,62,0 'LETRA "O"
'DATA 127,72,72,72,48,0 'LETRA "P"
'DATA 62,65,69,67,63,0 'LETRA "Q"
'DATA 127,72,76,74,49,0 'LETRA "R"
'DATA 50,73,73,73,38,0 'LETRA "S"
'DATA 64,64,127,64,64,0 'LETRA "T"
'DATA 126,1,1,1,126,0 'LETRA "U"
'DATA 120,6,1,6,120,0 'LETRA "V"
'DATA 127,2,4,2,127,0 'LETRA "W"
'DATA 65,34,28,34,65,0 'LETRA "X"
'DATA 64,32,31,32,64,0 'LETRA "Y"
'DATA 67,69,73,81,97,0 'LETRA "Z"
'*************************************************
'*
MINSCULAS
*
'*************************************************
'DATA 4,42,42,30,0 'LETRA "a"
'DATA 126,18,18,12,0 'LETRA "b"
'DATA 28,34,34,18,0 'LETRA "c"
'DATA 12,18,18,126,0 'LETRA "d"
'DATA 28,42,42,26,0 'LETRA "e"
'DATA 16,62,80,0 'LETRA "f"
'DATA 25,37,37,30,0 'LETRA "g"
'DATA 126,16,16,14,0 'LETRA "h"
'DATA 18,94,2,0 'LETRA "i"
'DATA 2,1,94,0 'LETRA "j"
'DATA 126,8,20,34,0 'LETRA "k"
'DATA 66,126,2,0 'LETRA "l"
'DATA 62,32,62,32,30,0 'LETRA "m"
'DATA 62,32,32,30,0 'LETRA "n"
'DATA 30,80,80,78,0 'LETRA ""
'DATA 28,34,34,28,0 'LETRA "o"
'DATA 63,36,36,24,0 'LETRA "p"
'DATA 24,36,36,63,0 'LETRA "q"
'DATA 32,30,32,16,0 'LETRA "r"
'DATA 18,42,42,36,0 'LETRA "s"
'DATA 32,124,34,4,0 'LETRA "t"
'DATA 60,2,2,62,0 'LETRA "u"
'DATA 62,2,4,56,0 'LETRA "v"
'DATA 60,2,28,2,60,0 'LETRA "w"
'DATA 34,28,28,34,0 'LETRA "x"
'DATA 57,5,5,62,0 'LETRA "y"
'DATA 34,38,42,50,0 'LETRA "z"
'**************************************************
'**************************************************
'DATA 0,0,0,0,0,0 '"ESPACIO"
'DATA 62,69,73,81,62,0 'NUMERO "0"

'DATA 17,33,127,1,1,0 'NUMERO "1"


'DATA 39,73,73,73,49,0 'NUMERO "2"
'DATA 34,65,73,73,54,0 'NUMERO "3"
'DATA 12,20,36,127,4,0 'NUMERO "4"
'DATA 122,73,73,73,70,0 'NUMERO "5"
'DATA 62,73,73,73,38,0 'NUMERO "6"
'DATA 64,71,72,80,96,0 'NUMERO "7"
'DATA 54,73,73,73,54,0 'NUMERO "8"
'DATA 50,73,73,73,62,0 'NUMERO "9"
'DATA 18,42,127,42,36,0 'SIMBOLO "$"
'DATA 54,73,53,2,5,0 'SIMBOLO "&"
'DATA 20,20,20,20,20,0 'SIMBOLO "="
'DATA 2,4,8,16,32,0 'SIMBOLO "/"
'DATA 0,1,0 'SIMBOLO "."
'DATA 0,1,2,0 'SIMBOLO ","
'DATA 0,125,0 'SIMBOLO "!"
'DATA 0,18,0 'SIMBOLO ":"
'DATA 48,64,77,72,48,0 'SIMBOLO "?"
'DATA 6,9,89,1,6,0 'SIMBOLO ""
'DATA 20,127,20,127,20,0 'SIMBOLO "#"
'DATA 0,28,34,65,0 'SIMBOLO "("
'DATA 0,65,34,28,0 'SIMBOLO ")"
'DATA 0,65,34,20,8,0 'SIMBOLO ">"
'DATA 0,8,20,34,65,0 'SIMBOLO "<"
'DATA 42,20,107,20,42,0 'SIMBOLO "*"
'DATA 8,8,8,8,8,0 'SIMBOLO "-"
'DATA 62,73,85,77,57,0 'SIMBOLO "@"
'DATA 1,1,1,1,1,0 'SIMBOLO "_"
'DATA 8,8,62,8,8,0 'SIMBOLO "+"
'DATA 34,84,42,21,34,0 'SIMBOLO "%"
'****************************************************
'*
ALFABETO PEQUEO (MAYSCULAS)
'****************************************************
'DATA 30,40,40,40,30,0 'LETRA "AP"
'DATA 62,42,42,42,20,0 'LETRA "BP"
'DATA 28,34,34,34,20,0 'LETRA "CP"
'DATA 62,34,34,34,28,0 'LETRA "DP"
'DATA 62,42,42,34,0 'LETRA "EP"
'DATA 62,40,40,32,0 'LETRA "FP"
'DATA 28,34,42,42,44,0 'LETRA "GP"
'DATA 62,8,8,8,62,0 'LETRA "HP"
'DATA 34,34,62,34,34,0 'LETRA "IP"
'DATA 4,2,2,2,60,0 'LETRA "JP"
'DATA 62,8,8,20,34,0 'LETRA "KP"
'DATA 62,2,2,2,0 'LETRA "LP"
'DATA 62,16,8,16,62,0 'LETRA "MP"
'DATA 62,16,8,4,62,0 'LETRA "NP"
'DATA 62,16,72,72,62,0 'LETRA "P"
'DATA 28,34,34,34,28,0 'LETRA "OP"

'DATA 62,40,40,40,16,0 'LETRA "PP"


'DATA 28,34,38,34,29,0 'LETRA "QP"
'DATA 62,40,40,44,18,0 'LETRA "RP"
'DATA 18,42,42,42,36,0 'LETRA "SP"
'DATA 32,32,62,32,32,0 'LETRA "TP"
'DATA 60,2,2,2,60,0 'LETRA "UP"
'DATA 48,12,2,12,48,0 'LETRA "VP"
'DATA 62,4,8,4,62,0 'LETRA "WP"
'DATA 34,20,8,20,34,0 'LETRA "XP"
'DATA 32,16,14,16,32,0 'LETRA "YP"
'DATA 34,38,42,42,50,0 'LETRA "ZP"
'*****************************************************
'*
NUMEROS DE 5 COLUMNAS (MEDIANOS)
'*****************************************************

'DATA 28,38,42,50,28,0 'NUMERO "0M"


'DATA 10,18,62,2,2,0 'NUMERO "1M"
'DATA 18,38,42,42,18,0 'NUMERO "2M"
'DATA 20,34,42,42,20,0 'NUMERO "3M"
'DATA 4,12,20,62,4,0 'NUMERO "4M"
'DATA 58,42,42,42,36,0 'NUMERO "5M"
'DATA 28,42,42,42,4,0 'NUMERO "6M"
'DATA 34,36,40,48,32,0 'NUMERO "7M"
'DATA 20,42,42,42,20,0 'NUMERO "8M"
'DATA 16,42,42,42,28,0 'NUMERO "9M"

'*****************************************************
'*
NUMEROS DE 4 COLUMNAS (PEQUEOS)
'*****************************************************
'DATA 28,34,34,28,0 'NUMERO "0P"
'DATA 18,62,2,0 'NUMERO "1P"
'DATA 18,38,42,18,0 'NUMERO "2P"
'DATA 20,34,42,20,0 'NUMERO "3P"
'DATA 12,20,62,4,0 'NUMERO "4P"
'DATA 58,42,42,4,0 'NUMERO "5P"
'DATA 28,42,42,4,0 'NUMERO "6P"
'DATA 34,36,40,48,0 'NUMERO "7P"
'DATA 20,42,42,20,0 'NUMERO "8P"
'DATA 16,42,42,28,0 'NUMERO "9P"