You are on page 1of 14

2014

EQUIPO: PRACTICA 3.3

 12290391 Negrete Michel Arnan Misael 3fb. CIRCUITO CON


 12290383 Martínez Castellanos Alejandro 3fb. MATRICES DE
 12290405 Santiago Montaño Edson 3fb.
LEDS
 11290355 Del Toro Ceballos Iván 3fb.

CD. Guzmán, Jalisco


06/01/2014
PRACTICA 3.3.
CIRCUITOS CON MATRICES DE
LEDS

OBJETIVO:
Generar mediante programación series de códigos que nos permita mostrar de
manera consciente caracteres diseñados y codificados según el diseño propio del
circuito.

Procedimiento propuesto:

1.- El último dígito de N/C o la letra del apellido

2.- Poner los 3 últimos dígitos del N/C.

3.- Pasa mensajes en 3 matrices

4.-Creación de una Marquesina


MARCO TEORICO
MATRICES DE LED 5X7
Una matriz de LEDs consiste en un arreglo de LEDs que pueden ser encendidos y apagados
individualmente desde un microntrolador. Pueden pensar en ella como una pantalla de pocos pixeles
en los cuales pueden presentar gráficos y textos, tanto estáticos como en movimiento.
Conexión
El siguiente gráfico presenta una matriz de 5×7 LEDs, donde las columnas corresponden a los cátodos
(deben ir conectados a tierra) y las filas corresponden a los ánodos (deben ir conectados a voltaje).
MATERIAL Y EQUIPO UTILIZADO:

 PROTOBOARD

 MICROCONTROLADOR PIC16F877A

 PROGRAMADOR USB DE PIC “MASTER PROG”

 PROGRAMA PARA PROGRAMAR PIC “MASTER PROG”

 3 MATRICES DE LED (5X7)

 5 RESISTENCIAS

 BOTON PULSADOR

 CABLE UTP

 PINZAS PELADORAS Y CORTADORAS DE CABLE

 CRISTAL 4MHZ

 FUENTE DE 5 VOLTS

 SIMULADOR PROTEUS 8 PROFESSIONAL

 PIC C COMPILER (PCW)


DESARROLLO DE LA PRÁCTICA:
CONEXION DEL PIC:
 Se coloco el PIC16F877A en el Protoboard y se colocaron las tres matrices juntas una al lado
de la otra, se conectaron las filas correspondientes a los pines de los puertos B (33-40), C (15-
18 y 23-26), y D (19-22 y 27-30) una matriz por puerto, y se conectaron resistencias en los
pines del puerto A (2-7), seguidas de las resistencias se conectaron los pines correspondientes
a las columnas de la Matriz (las columnas de las tres matrices se conectaron al puerto A, cada
pin con su correspondiente fila. (compartieron cada matriz el puerto A para las filas 1,2,3,4,5).
 Se conecto el Botón pulsador con una resistencia a 5V en el Pin 1 para el RESET del
Microcontrolador.
 Se conecto el Cristal de 4MHZ en los Pines 13 y 14 para oscilar y generar una frecuencia de
4MHZ.
 Se conecto el Pin 11 a 5V y el Pin 12 a negativo (-).

REALIZACION DE LAS FIGURAS Y CODIGOS PARA LAS MATRICES:


Se realizo una tabla en la cual se hacia la figura indicada que queríamos mostrar en la matriz y el
código hexadecimal necesario para la obtención de la figura o digito correspondiente.

PROGRAMACION Y SIMULACION:
Se realizaron distintos programas haciendo uso de la información mencionada con anterioridad para
determinar el funcionamiento necesario indicado en cada uno de los programas, se configuro la
matriz y se escribieron los código para obtener la figura indicada, haciendo uso del programa PCW.
Se compilo y se cargo en el PIC16F877A en el circuito armado en ISIS de Proteus para hacer una
simulación del circuito que se hará en físico, para así poder detectar posibles errores en conexiones o
en el programa y no dañar el equipo.

PROGRAMACION DEL PIC:


Ya que se comprobó que el programa realiza lo requerido se llevo a cabo la programación del PIC con
el Programador que se conecto a la computadora por medio del USB y se abrió el programa “MASTER
PROG”. Ya reconocido e instalado el programador, se coloco el PIC y se aseguro. En el “MASTER
PROG” se leyó el PIC, se borro posible contenido y se cargo el archivo .HEX del programa para
posteriormente escribirlo en el PIC.

FUNCIONAMIENTO DEL PROGRAMA:


Ya cargado el archivo en el PIC se retiro del programador y se coloco nuevamente en el Protoboard
para presentar el programa cargado. Se energizo el circuito y comenzó a realizar las funciones e
indicaciones realizadas en el programa.

PROGRAMAS REALIZADOS:
3.3.1. Dibujar un carácter.
3.3.2. Circuito con 3 matrices.
3.3.3. Pasa mensajes corto.
3.3.4. Letrero Marquesina.
3.3.1 DIBUJAR UN CARACTER.

Programa que muestra en ua matriz de leds el ultimo digito del numero de control.

#include "16f877.h"
#USE DELAY (CLOCK = 4000000)
#FUSES XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT

const char col[]= {1,2,4,8,16};


const char Z[]={0XFF,0X5D,0X41,0X5F,0XFF};
char cnt;

main()

{
for(;;)
for(cnt=0;cnt<=4;cnt++)
{
output_a(col[cnt]);
output_b(Z[cnt]);
delay_ms(1);

output_a(0X00);
output_b(0XFF);
output_c(0XFF);
output_d(0XFF);
}
return 0;
}
3.3.2. CIRCUITO CON 3 MATRICES.

Programa que muestra en 3 matrices los 3 últimos dígitos del número de control.

#include "16f877.h"
#USE DELAY (CLOCK = 4000000)
#FUSES XT,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT

const char col[]= {1,2,4,8,16};


const char X[]={0XFF,0X5D,0X55,0X49,0XFF}; //3
const char Y[]={0XFF,0X51,0X55,0X41,0XFF}; //9
const char Z[]={0XFF,0X5D,0X41,0X5F,0XFF}; //1
char cnt;

main()

{
for(;;)
for(cnt=0;cnt<=4;cnt++)

{
output_a(col[cnt]);
output_b(X[cnt]);
output_c(Y[cnt]);
output_d(Z[cnt]);
delay_ms(1);

output_a(0X00);
output_b(0XFF);
output_c(0XFF);
output_d(0XFF);
}
return 0;
}
3.3.3. PASAMENSAJES CORTO.

Programa que muestra en las tres matrices un corrimiento o un pasamensaje con el apellido paterno.

#include “16f877a.h”
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOWDT,NOLVP,NOBROWNOUT,PUT,NOPROTECT

const int col[]={1,2,4,8,32};


const char caract[]={
0XFF,0XC1,0XC1,0XFB,0XF7,0XEF,0XC1, //N
0XFF,0XC1,0XC1,0XD5,0XD5, //E
0XFF,0XE3,0XE3,0XDD,0XD5,0XE7, //G
0XFF,0XC3,0XC3,0XF5,0XE5,0XDB, //R
0XFF,0XC1,0XC1,0XD5,0XD5, //E
0XFF,0XFD,0XFD,0XC1,0XC1,0XFD,0XFD, //T
0XFF,0XC1,0XC1,0XD5,0XD5,0XFF //E};

int16 a,b,c,size;
main()
{
inicio:
size=(6*7);
for(c=0;c<size+15;c++){
for(a=0;a<3;a++){
for(b=0;b<5;b++){
if((b+c-15)<size){output_b(caract[b+c-15]);}else{output_b(0XFF);}
if((b-10+c)<size){output_c(caract[b+c-10]);}else{output_c(0XFF);}
if((b-5+c)<size){output_d(caract[b+c-5]);}else{output_d(0XFF);}
output_a(col[b]);
delay_ms(5);
output_a(0);
output_b(0XFF);
output_c(0XFF);
output_d(0XFF);
delay_ms(1);
}
}
}
goto inicio;
return(0);
}
3.3.4. LETRERO MARQUESINA.

Programa que utiliza 6 matrices y 2 PIC para realizar un letrero marquesina en el que pasa un mensaje o
una oración.

PIC ESCLAVO:

#include “16f877a.h”
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOWDT,NOLVP,NOBROWNOUT,NOPROTECT,PUT

int dato;
main(){
set_tris_a(0b111111);
set_tris_c(0b11111100);
while(true){
dato=input_a()&0b1111;
switch(dato){
case 0: output_c(0); output_b(0); break;
case 1: output_c(0); output_b(1); break;
case 2: output_c(0); output_b(2); break;
case 3: output_c(0); output_b(4); break;
case 4: output_c(0); output_b(8); break;
case 5: output_c(0); output_b(16); break;
case 6: output_c(0); output_b(32); break;
case 7: output_c(0); output_b(64); break;
case 8: output_c(0); output_b(128); break;
case 9: output_c(1); output_b(0); break;
case 10: output_c(2); output_b(0); break;
}
}
return(0);
}
PIC MAESTRO:

#include “16f877a.h”
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOWDT,NOLVP,NOBROWNOUT,NOPROTECT,PUT

//"PROBABLEMENTE DIOS NO EXISTE, DEJA DE PREOCUPARTE Y DISFRUTA LA VIDA"


const char line[]={
0xFC,0xFB,0xFF,0xFC,0xFB,0xFF,
0X80,0XF6,0XF6,0XF6,0XF9,0XFF, //P
0X80,0XF6,0XF6,0XF6,0X89,0XFF, //R
0XC1,0XBE,0XBE,0XBE,0XC1,0XFF, //O
0X80,0XB6,0XB6,0XB6,0XC9,0XFF, //B
0X81,0XF6,0XF6,0XF6,0X81,0XFF, //A
0X80,0XB6,0XB6,0XB6,0XC9,0XFF, //B
0X80,0XBF,0XBF,0XBF,0XBF,0XFF, //L
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0X80,0XF9,0XF3,0XF9,0X80,0XFF, //M
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0X80,0XF9,0XE7,0X9F,0X80,0XFF, //N
0XFE,0XFE,0X80,0XFE,0XFE,0XFF, //T
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0xff,0xff,0xff, //
0X80,0XBE,0XBE,0XDD,0XE3,0XFF, //D
0XBE,0XBE,0X80,0XBE,0XBE,0XFF, //I
0XC1,0XBE,0XBE,0XBE,0XC1,0XFF, //O
0XB9,0XB6,0XB6,0XB6,0XCE,0XFF, //S
0xff,0xff,0xff, //
0X80,0XF9,0XE7,0X9F,0X80,0XFF, //N
0XC1,0XBE,0XBE,0XBE,0XC1,0XFF, //O
0xff,0xff,0xff, //
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0X9C,0XEB,0XF7,0XEB,0X9C,0XFF, //X
0XBE,0XBE,0X80,0XBE,0XBE,0XFF, //I
0XB9,0XB6,0XB6,0XB6,0XCE,0XFF, //S
0XFE,0XFE,0X80,0XFE,0XFE,0XFF, //T
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0X5F,0X1F,0XFF, //,
0xff,0xff,0xff, //
0X80,0XBE,0XBE,0XDD,0XE3,0XFF, //D
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0XCE,0XBE,0XC0,0XFE,0XFE,0XFF, //J
0X81,0XF6,0XF6,0XF6,0X81,0XFF, //A
0xff,0xff,0xff, //
0X80,0XBE,0XBE,0XDD,0XE3,0XFF, //D
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0xff,0xff,0xff, //
0X80,0XF6,0XF6,0XF6,0XF9,0XFF, //P
0X80,0XF6,0XF6,0XF6,0X89,0XFF, //R
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0XC1,0XBE,0XBE,0XBE,0XC1,0XFF, //O
0XC1,0XBE,0XBE,0XBE,0XDD,0XFF, //C
0XC0,0XBF,0XBF,0XBF,0XC0,0XFF, //U
0X80,0XF6,0XF6,0XF6,0XF9,0XFF, //P
0X81,0XF6,0XF6,0XF6,0X81,0XFF, //A
0X80,0XF6,0XF6,0XF6,0X89,0XFF, //R
0XFE,0XFE,0X80,0XFE,0XFE,0XFF, //T
0X80,0XB6,0XB6,0XBE,0XBE,0XFF, //E
0xff,0xff,0xff, //
0XF8,0XF7,0X87,0XF7,0XF8,0XFF, //Y
0xff,0xff,0xff, //
0X80,0XBE,0XBE,0XDD,0XE3,0XFF, //D
0XBE,0XBE,0X80,0XBE,0XBE,0XFF, //I
0XB9,0XB6,0XB6,0XB6,0XCE,0XFF, //S
0X80,0XF6,0XF6,0XFE,0XFE,0XFF, //F
0X80,0XF6,0XF6,0XF6,0X89,0XFF, //R
0XC0,0XBF,0XBF,0XBF,0XC0,0XFF, //U
0XFE,0XFE,0X80,0XFE,0XFE,0XFF, //T
0X81,0XF6,0XF6,0XF6,0X81,0XFF, //A
0xff,0xff,0xff, //
0X80,0XBF,0XBF,0XBF,0XBF,0XFF, //L
0X81,0XF6,0XF6,0XF6,0X81,0XFF, //A
0xff,0xff,0xff, //
0XE0,0XDF,0XBF,0XDF,0XE0,0XFF, //V
0XBE,0XBE,0X80,0XBE,0XBE,0XFF, //I
0X80,0XBE,0XBE,0XDD,0XE3,0XFF, //D
0X81,0XF6,0XF6,0XF6,0X81,0XFF, //A
0XFB,0xFC,0XFF,0XFB,0XFC
};

int32 size;
int32 X,Y,Z;
main(){
size=(58*6)+(3*10)+10;
for(Y=0;Y<size+30;Y++){
for(Z=0;Z<2;Z++){
for(X=0;X<10;X++){
if((X+Y-30)<size){output_b(line[X+Y-30]);}else{output_b(0XFF);}
if((X+Y-20)<size){output_c(line[X+Y-20]);}else{output_c(0XFF);}
if((X+Y-10)<size){output_d(line[X+Y-10]);}else{output_d(0XFF);}
output_a(X+1);
delay_ms(1);
output_a(0X00);
delay_ms(1);
}
}
}
return(0);
}
OBSERVACIONES:
Al momento de cargar el programa en la matriz se veían mal las figuras y encendían unos puntos y
otros no, esto se debió a que la matriz se encontraba mal conectada debido a la confusión de los pines
para las filas y columnas. Se retiraron las conexiones y se fue checando una por una de acuerdo con el
diagrama correspondiente y se corrigió. Se volvió a energizar y realizo lo requerido.

Al querer obtener el numero del primer programa salió mal debido a que un código estaba mal
escrito, se checo el código y se corrigió.

Solo se presentaron problemas en las conexiones debido a que al momento de conectar la matriz no
sabía identificar columnas y filas pero al revisar el diagrama se realizo todo correctamente.

12290391 Negrete Michel Arnan Misael 3fb

CONCLUSIONES:

En conclusión aprendimos a utilizar matrices de leds y a realizar correctamente sus conexiones


identificando filas y columnas por medio del diagrama.

El programa de la Marquesina solo fue realizado por medio de simulación debido a que no contamos
con otro PIC y otras 6 matrices ya que todos los equipos estaban unidos y nosotros no alcanzamos
equipo para unirnos y realizarlo en fisico.

REFERENCIAS:

https://www.google.com.mx/search?q=matriz+de+leds+5x7&newwindow=1&source=lnms&tbm=isch&
sa=X&ei=n8LMUqWlF6Pa2AXE-
YHYBg&ved=0CAkQ_AUoAQ&biw=1280&bih=698#facrc=_&imgdii=_&imgrc=bwe2oBpHQsiAKM%3
A%3BVm5aZDzKkMGhAM%3Bhttp%253A%252F%252Fi01.i.aliimg.com%252Fwsphoto%252Fv0%252F
610590489%252F-font-b-LED-b-font-Display-Dot-font-b-Matrix-b-font-Common-Anode-
Red.jpg%3Bhttp%253A%252F%252Fes.aliexpress.com%252Fw%252Fwholesale-led-matrix-
5x7.html%3B640%3B480

http://galaxi0.wordpress.com/about/salidas-y-entradas-digitales/matriz-de-leds/