12
Martes 15 de Marzo de 2011 00:33 Matriz de LEDs DESCRIPCIÓN Se hará un contador del 0-9, el cual visualizaremos a través de una matriz LEDs la cual estará controlada por el microcontrolador, la matriz a utiliz una matriz de LEDs de 5x7 la cual contiene un total de 35 LEDs. DIAGRAMA ESQUEMÁTICO MATERIALES Matriz de LEDs 5x7

Como Hacer Matriz Led

Embed Size (px)

Citation preview

Page 1: Como Hacer Matriz Led

Martes 15 de Marzo de 2011 00:33

 

Matriz de LEDs

DESCRIPCIÓN

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

 

DIAGRAMA ESQUEMÁTICO

 

 

MATERIALES

Matriz de LEDs 5x7

7 Resistencias de 220 Ohms

1 Microcontrolador ATmega8

Programador USBasp V3.0

Page 2: Como Hacer Matriz Led

 

INTRODUCCIÓN

MATRIZ DE LEDS

 

La matriz de LEDs no es más que un arreglo de LEDs agrupados dentro de un encapsulado, los cuales se encuentran agrupados en forma de matriz. Este acomodo nos ayuda para poder generar cualquier cosa que nosotros queramos 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 7 filas, las columnas son representadas por una C y las filas por una R, en la imagen inferior podemos ver como se encuentran 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 manera independiente, cada columna tendrá su código, por lo que debemos formar la figura, numero o letra que necesitemos

Page 3: Como Hacer Matriz Led

separando la misma en 5 columnas. A continuación veremos cómo se forma el numero 3 el cual prestando atención al valor de las R's las cuales forman el código deseado mientras que las C's generan un barrido de las columnas. Es importante destacar que en las R's el LED prende con un 0 lógico, lo cual está dado ya que la columna correspondiente está habilitada con un 1 lógico (Vcc), el led en las R's prendera con la diferencia de voltaje, por lo tanto en las R's se usa el 0 como prendido.

 

Ejemplo de la formación de un numero 3

 

Page 4: Como Hacer Matriz Led

 

Page 5: Como Hacer Matriz Led

 

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

 

 

Después de hacer un proceso similar, se obtuvo una tabla con los valores de cada numero deseados, en este caso los números se crearon de determinada forma, la cual puede cambiar dependiendo las necesidades de cada persona, ya sea que se necesite mostrar letras o caracteres distintos.

 

Page 6: Como Hacer Matriz Led

 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},          //Se declara la matriz de los numeros

{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){

 

Page 7: Como Hacer Matriz Led

DDRD=0xFF;

DDRC=0xFF;

PORTC=0x10;                                   //Inicializar el puerto C para el barrido de las columnas

 

while(1){

 

for(j=0;j<25;j++){                             //Ciclo de numero de barridos

for(i=0;i<5;i++){                                //Ciclo de barrido de columnas

 

PORTD=numero[contador][i];              //Se le asigna al PORTD el código respecto a la columna

_delay_ms(1);

PORTC=PORTC>>1;                         //Siguiente columna

}

PORTC=0x10;                                   //Se inicializa a las primera columna

}

contador++;                                     //Incrementar en 1 el contador

 

if (contador==10)                              //Si el contador llega a 10

contador=0;                                      //que vuelva a ser 0

}

}

 

DETALLES DEL PROGRAMA

#include <avr/io.h>

#include <util/delay.h>

 

Incluir las librerías 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},

Page 8: Como Hacer Matriz Led

{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 momento de declararla le añadimos la longitud de las filas y las columnas dentro de los corchetes, como se puede ver en el código.

 

La matriz declarada e inicializada con los valores, es la misma que se encuentra representada en la tabla en la introducción del proyecto, como se puede ver, la relación de la posición de la fila es la misma que el numero que representa, por ejemplo el numero 3 se encuentra en la 3ra fila, esto nos ayudara al momento de realizar el código.

 

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 el que empezara la primera columna, posteriormente se desplazara el bit, para hacer el barrido.

 

for(j=0;j<25;j++){

 

El primer ciclo for del código representa, las veces que se va ha hacer el barrido completo, por lo tanto será el total de veces que se muestra un numero completo y esto es el tiempo que dura visualizándose el numero en la matriz. El número 25 en este ciclo for puede cambiarse para obtener un conteo más rápido o más lento según 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 representa las columnas de la matriz, como se puede ver, este for trabaja en conjunto con el otro, cuando este termina en el otro for, se incrementa la variable "j" en uno más, por lo tanto este for se ejecutara completo el número de veces que el for exterior 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, que representa las columnas mientras que la variable contador permanece fija durante los dos ciclos for, esta representa la fila, y como se comento anteriormente, el numero corresponde a la posición del mismo en la fila.

Page 9: Como Hacer Matriz Led

 

El PORTC está siendo desplazado para recorrer el bit que controla a las columnas de la matriz, terminando el ciclo for, se inicializa para comenzar de nuevo.

 

contador++;

 

El contador incrementa, para asignar otro número 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 matriz, se inicializa de nuevo asignándole un cero. 

Viendo la carencia de información incompleta sobre el desarrollo de Cartel de leds, también llamado “publik”, me vi a publicar este Mini-Tutorial y  espero que sea de gran ayuda para todos

Page 10: Como Hacer Matriz Led

los lectores. Como es de suponer, el desarrollo, construcción y programación de un cartel de este tipo es una tarea bastante compleja para un principiante, pero eso no debe ser un obstáculo para nosotros ya que aquí, te guiare paso a paso, hasta que culmines tu proyecto.(CODIGO FUENTE,SIMULACION,PCBs etc)

   Nuestro cartel será monocromático, utilizando LEDs de color rojo únicamente. Las dimensiones de la matriz utilizada serán 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 habrás 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 intersección entre ambas contiene un LED. Para que este encienda, tiene que recibir simultáneamente un “0” en la fila, y un “1” en la columna. Cuando se dan estas condiciones, la electrónica 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 MultiplexadoExisten muchas estrategias de multiplexación según el protocolo de comunicación empleado, que puede combinarlas para alcanzar el uso más eficiente. La multiplexación es una técnica que permite aprovechar unas pocas líneas de datos para diferentes tareas, cambiando la función 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.

Page 11: Como Hacer Matriz Led

                                        Registro de desplazamiento 74lc164N