Sei sulla pagina 1di 11

Martes 15 de Marzo de 2011 00:33

Matriz de LEDs

DESCRIPCIN

Se har un contador del 0-9, el cual visualizaremos a travs de una matriz de LEDs la cual estar controlada po microcontrolador, la matriz a utilizar es una matriz de LEDs de 5x7 la cual contiene un total de 35 LEDs.

DIAGRAMA ESQUEMTICO

MATERIALES

Matriz de LEDs 5x7 7 Resistencias de 220 Ohms 1 Microcontrolador ATmega8

Programador USBasp V3.0

INTRODUCCIN

MATRIZ DE LEDS

La matriz de LEDs no es ms que un arreglo de LEDs agrupados dentro de un encapsulado, los cuales se encu agrupados en forma de matriz. Este acomodo nos ayuda para poder generar cualquier cosa que nosotros queram siempre y cuando se pueda representar dentro de la matriz.

La matriz de LEDs que se usara en este ejemplo es una como la de la foto superior, esta es de 5 columnas por columnas son representadas por una C y las filas por una R, en la imagen inferior podemos ver como se encue distribuidos los pines de la matriz a usar.

Para poder formar algo en la matriz, es necesario realizar un barrido en las columnas para controlarlas de man independiente, cada columna tendr su cdigo, por lo que debemos formar la figura, numero o letra que neces separando la misma en 5 columnas. A continuacin veremos cmo se forma el numero 3 el cual prestando aten valor de las R's las cuales forman el cdigo deseado mientras que las C's generan un barrido de las columnas. importante destacar que en las R's el LED prende con un 0 lgico, lo cual est dado ya que la columna corresp est habilitada con un 1 lgico (Vcc), el led en las R's prendera con la diferencia de voltaje, por lo tanto en las el 0 como prendido. Ejemplo de la formacin de un numero 3

Como se puede ver en la imagen anterior, el numero 3 se formo en base a la combinacin de controlar las C's trabajo que le asignaremos al microcontrolador, este proceso se repetir varias veces a una velocidad lo suficie alta, como para no alcanzar a percibir los cambios, y tener la idea de que todos los LEDs deseados se encuentr prendidos a la vez.

Despus de hacer un proceso similar, se obtuvo una tabla con los valores de cada numero deseados, en este ca nmeros se crearon de determinada forma, la cual puede cambiar dependiendo las necesidades de cada person que se necesite mostrar letras o caracteres distintos.

PROGRAMA EN C

#include <avr/io.h> #include <util/delay.h> int contador=0; int i,j; int numero[10][5]={ {0x41,0x3E,0x3E,0x00,0x41}, {0x7E,0x5E,0x00,0x00,0x7E}, {0x4E,0x3C,0x38,0x02,0x46}, {0x5D,0x3E,0x36,0x00,0x49}, {0x07,0x77,0x77,0x00,0x00}, {0x8C,0x36,0x36,0x30,0x39}, {0x41,0x36,0x36,0x30,0x39}, {0x3F,0x37,0x37,0x00,0x0F}, {0x49,0x36,0x36,0x00,0x49}, {0x4D,0x36,0x36,0x00,0x41}}; int main (void){

//Se declara la matriz de los numeros

DDRD=0xFF; DDRC=0xFF; PORTC=0x10; while(1){ for(j=0;j<25;j++){ for(i=0;i<5;i++){ PORTD=numero[contador][i]; _delay_ms(1); PORTC=PORTC>>1; } PORTC=0x10; } contador++; if (contador==10) contador=0; } }

//Inicializar el puerto C para el barrido de las columnas

//Ciclo de numero de barridos //Ciclo de barrido de columnas //Se le asigna al PORTD el cdigo respecto a la columna //Siguiente columna //Se inicializa a las primera columna //Incrementar en 1 el contador //Si el contador llega a 10 //que vuelva a ser 0

DETALLES DEL PROGRAMA

#include <avr/io.h> #include <util/delay.h> Incluir las libreras necesarias para el proyecto. int numero[10][5]={ {0x41,0x3E,0x3E,0x00,0x41}, {0x7E,0x5E,0x00,0x00,0x7E}, {0x4E,0x3C,0x38,0x02,0x46}, {0x5D,0x3E,0x36,0x00,0x49}, {0x07,0x77,0x77,0x00,0x00}, {0x8C,0x36,0x36,0x30,0x39},

{0x41,0x36,0x36,0x30,0x39}, {0x3F,0x37,0x37,0x00,0x0F}, {0x49,0x36,0x36,0x00,0x49}, {0x4D,0x36,0x36,0x00,0x41}};

Como se puede ver se inicializa una variable de tipo entero, pero en este caso es una matriz, a la cual, al mome declararla le aadimos la longitud de las filas y las columnas dentro de los corchetes, como se puede ver en el

La matriz declarada e inicializada con los valores, es la misma que se encuentra representada en la tabla en la introduccin del proyecto, como se puede ver, la relacin de la posicin de la fila es la misma que el numero q representa, por ejemplo el numero 3 se encuentra en la 3ra fila, esto nos ayudara al momento de realizar el cd DDRD=0xFF; DDRC=0xFF; PORTC=0x10;

Se inicializan los puertos como salida, y el puerto C toma el valor de 0x10 el cual activa el bit 4 del puerto con empezara la primera columna, posteriormente se desplazara el bit, para hacer el barrido. for(j=0;j<25;j++){

El primer ciclo for del cdigo representa, las veces que se va ha hacer el barrido completo, por lo tanto ser el veces que se muestra un numero completo y esto es el tiempo que dura visualizndose el numero en la matriz. 25 en este ciclo for puede cambiarse para obtener un conteo ms rpido o ms lento segn se requiera. for(i=0;i<5;i++){

El segundo for, es para hacer el barrido, en este caso el 5 es constante y no debe cambiarse ya que este represe columnas de la matriz, como se puede ver, este for trabaja en conjunto con el otro, cuando este termina en el o incrementa la variable "j" en uno ms, por lo tanto este for se ejecutara completo el nmero de veces que el fo marque. PORTD=numero[contador][i]; _delay_ms(1); PORTC=PORTC>>1;

Aqu se puede ver como se asigna el numero, en este caso la variable numero esta con dos corchetes los cuales corresponden a la filas y a las columnas, se aprecia que la "i" del ciclo est cambiando dentro del for interior, q representa las columnas mientras que la variable contador permanece fija durante los dos ciclos for, esta repre

fila, y como se comento anteriormente, el numero corresponde a la posicin del mismo en la fila. El PORTC est siendo desplazado para recorrer el bit que controla a las columnas de la matriz, terminando el inicializa para comenzar de nuevo. contador++; El contador incrementa, para asignar otro nmero a la matriz. if (contador==10) contador=0; Se limita el incremento del contador, con un if, en este caso si llega a 10, un numero del cual no hay fila en la inicializa de nuevo asignndole un cero.

Viendo la carencia de informacin incompleta sobre el desarrollo de Cartel de leds, tambin llamado publik, me vi a publicar este Mini-Tutorial y espero que sea de gran ayuda para todos los lectores. Como es de suponer, el desarrollo, construccin y programacin de un cartel de este tipo es una tarea bastante compleja para un principiante, pero eso no debe ser un obstculo para nosotros ya que aqu, te guiare paso a paso, hasta que culmines tu proyecto. (CODIGO FUENTE,SIMULACION,PCBs etc)

Nuestro cartel ser monocromtico, utilizando LEDs de color rojo nicamente. Las dimensiones de la matriz utilizada sern de 7 filas por 32 columnas, lo que permite escribir unas 8 letras de 8 pixeles de altura. A pesar de no ser demasiado grande, ya habrs sacado la cuenta de que se necesitan 225 LEDs para armar el cartel. Funcionamiento sencilla de una matriz de leds? La pantalla est formada por una serie de filas y columnas. La interseccin entre ambas contiene un LED. Para que este encienda, tiene que recibir simultneamente un 0 en la fila, y un 1 en la columna. Cuando se dan estas condiciones, la electrnica de la placa se encarga del encendido. La forma de generar un mensaje sobre el display es relativamente sencilla. 1) Apagar todas las filas. 2) Escribir los valores correspondientes a la primer fila en el registro de desplazamiento, teniendo en cuenta que el primer digito binario colocado corresponde al ltimo LED de la fila, y el ultimo en poner al de la primer columna. 3) Encenderla primer fila, esperar un tiempo, y volver a apagarla. 4) Repetir los pasos para las filas 2 a 7.

El secreto del Multiplexado Existen muchas estrategias de multiplexacin segn el protocolo de comunicacin empleado, que puede combinarlas para alcanzar el uso ms eficiente. La multiplexacin es una tcnica que permite aprovechar unas pocas lneas de datos para diferentes tareas, cambiando la funcin que cumplen a lo largo del tiempo. El PIC se encarga de generar los pulsos de CLOCK y DATOs (pines 17 y 18) que son enviados a la placa de video que es la que tiene los 74LS164N que forman un registro de desplazamiento.

Registro de desplazamiento 74lc164N

Potrebbero piacerti anche