Professional Documents
Culture Documents
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:
PROTOBOARD
MICROCONTROLADOR PIC16F877A
5 RESISTENCIAS
BOTON PULSADOR
CABLE UTP
CRISTAL 4MHZ
FUENTE DE 5 VOLTS
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.
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
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
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
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
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.
CONCLUSIONES:
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/