Você está na página 1de 5

////////////////////////////////////////////////////////////////////////////////////

// VsZeNeR'05
// 19/Diciembre/05
//
// Programa: Abecedario en matrices de led's 5x7
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.236
// Entorno IDE: MPLAB IDE v7.30 Simulador: Proteus 6.7sp3
//
// Notas: Este programa muestra por el abecedario en una matriz de led's 5x7.
// En las columnas se usa un decodificador 4028 para hacer su barrido
// Conexiones: A0 -> A 4028 DEC
// A1 -> B 4028 DEC
// A2 -> C 4028 DEC
// A3 -> D 4028 DEC
// B0 -> Fila 1 matriz 5x7
// B1 -> Fila 2 matriz 5x7
// B2 -> Fila 3 matriz 5x7
// B3 -> Fila 4 matriz 5x7
// B4 -> Fila 5 matriz 5x7
// B5 -> Fila 6 matriz 5x7
// B6 -> Fila 7 matriz 5x7
//////////////////////////////////////////////////////////////////////////////////
#include <16f648a.h> //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#fuses INTRC //oscilador interno
#use delay (clock=4000000) //Fosc=4Mhz
#use fast_io(a)
#use fast_io(b)
///DEFINICION VARIABLES GLOBALES
int letra[5],opcion=0;
///LLAMADA FUNCION INTERRUPCION
#INT_TIMER1
void interrupcion()
{
switch(opcion){ //selecciona letra
case 0: letra[0]=0b00000001; //A
letra[1]=0b01110110;
letra[2]=0b01110110;
letra[3]=0b01110110;
letra[4]=0b00000001;
opcion++;
break;
case 1: letra[0]=0b01001001; //B
letra[1]=0b00110110;
letra[2]=0b00110110;
letra[3]=0b00110110;
letra[4]=0b00000000;
opcion++;
break;
case 2: letra[0]=0b00111110; //C
letra[1]=0b00111110;
letra[2]=0b00111110;
letra[3]=0b00111110;

letra[4]=0b01000001;
opcion++;
break;
case 3: letra[0]=0b01000001; //D
letra[1]=0b00111110;
letra[2]=0b00111110;
letra[3]=0b00111110;
letra[4]=0b00000000;
opcion++;
break;
case 4: letra[0]=0b00111110; //E
letra[1]=0b00110110;
letra[2]=0b00110110;
letra[3]=0b00110110;
letra[4]=0b00000000;
opcion++;
break;
case 5: letra[0]=0b01111110; //F
letra[1]=0b01110110;
letra[2]=0b01110110;
letra[3]=0b01110110;
letra[4]=0b00000000;
opcion++;
break;
case 6: letra[0]=0b01001110; //G
letra[1]=0b00110110;
letra[2]=0b00110110;
letra[3]=0b00111110;
letra[4]=0b01000001;
opcion++;
break;
case 7: letra[0]=0b00000000; //H
letra[1]=0b01110111;
letra[2]=0b01110111;
letra[3]=0b01110111;
letra[4]=0b00000000;
opcion++;
break;
case 8: letra[0]=0b00111110; //I
letra[1]=0b00111110;
letra[2]=0b00000000;
letra[3]=0b00111110;
letra[4]=0b00111110;
opcion++;
break;
case 9: letra[0]=0b01111111; //J
letra[1]=0b00000000;
letra[2]=0b00111110;
letra[3]=0b00101110;
letra[4]=0b01001111;
opcion++;
break;
case 10: letra[0]=0b00111110; //K
letra[1]=0b01011101;
letra[2]=0b01101011;
letra[3]=0b01110111;
letra[4]=0b00000000;
opcion++;

break;
case 11: letra[0]=0b00111111;
letra[1]=0b00111111;
letra[2]=0b00111111;
letra[3]=0b00111111;
letra[4]=0b00000000;
opcion++;
break;
case 12: letra[0]=0b00000000;
letra[1]=0b01111101;
letra[2]=0b01111011;
letra[3]=0b01111101;
letra[4]=0b00000000;
opcion++;
break;
case 13: letra[0]=0b00000011;
letra[1]=0b01011111;
letra[2]=0b01101111;
letra[3]=0b01110111;
letra[4]=0b00000011;
opcion++;
break;
case 14: letra[0]=0b00000011;
letra[1]=0b01011101;
letra[2]=0b01101101;
letra[3]=0b01110101;
letra[4]=0b00000011;
opcion++;
break;
case 15: letra[0]=0b01000001;
letra[1]=0b00111110;
letra[2]=0b00111110;
letra[3]=0b00111110;
letra[4]=0b01000001;
opcion++;
break;
case 16: letra[0]=0b01111001;
letra[1]=0b01110110;
letra[2]=0b01110110;
letra[3]=0b01110110;
letra[4]=0b00000000;
opcion++;
break;
case 17: letra[0]=0b00000001;
letra[1]=0b00011110;
letra[2]=0b00101110;
letra[3]=0b00111110;
letra[4]=0b01000001;
opcion++;
break;
case 18: letra[0]=0b01111001;
letra[1]=0b00110110;
letra[2]=0b01010110;
letra[3]=0b01100110;
letra[4]=0b00000000;
opcion++;
break;
case 19: letra[0]=0b01001110;

//L

//M

//N

//

//O

//P

//Q

//R

//S

letra[1]=0b00110110;
letra[2]=0b00110110;
letra[3]=0b00110110;
letra[4]=0b00111001;
opcion++;
break;
case 20: letra[0]=0b01111110; //T
letra[1]=0b01111110;
letra[2]=0b00000000;
letra[3]=0b01111110;
letra[4]=0b01111110;
opcion++;
break;
case 21: letra[0]=0b01000000; //U
letra[1]=0b00111111;
letra[2]=0b00111111;
letra[3]=0b00111111;
letra[4]=0b01000000;
opcion++;
break;
case 22: letra[0]=0b01100000; //V
letra[1]=0b01011111;
letra[2]=0b00111111;
letra[3]=0b01011111;
letra[4]=0b01100000;
opcion++;
break;
case 23: letra[0]=0b01000000; //W
letra[1]=0b00111111;
letra[2]=0b01000111;
letra[3]=0b00111111;
letra[4]=0b01000000;
opcion++;
break;
case 24: letra[0]=0b00111011; //X
letra[1]=0b01010111;
letra[2]=0b01101111;
letra[3]=0b01010111;
letra[4]=0b00111011;
opcion++;
break;
case 25: letra[0]=0b01111110; //Y
letra[1]=0b01111101;
letra[2]=0b00000011;
letra[3]=0b01111101;
letra[4]=0b01111110;
opcion++;
break;
case 26: letra[0]=0b00111100; //Z
letra[1]=0b00111010;
letra[2]=0b00110110;
letra[3]=0b00101110;
letra[4]=0b00011110;
opcion=0;
}
set_timer1(3036); //TMR1 se desborda cada 0,5s
}

void main(void)
{
int i; //variable contador
enable_interrupts(INT_TIMER1); //interrupcion TIMER1 activada
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); //configuracion TMR1
set_timer1(65535); //carga TMR1 para un desbordamiento inmediato
enable_interrupts(GLOBAL); //activadas interrupciones
set_tris_b (0x00); //portb salida
set_tris_a (0x00); //porta salida
do{ //bucle...
for(i=0;i<5;i++){
output_a( i ); //columnas
output_b(letra[ i ]); //filas
delay_ms(10); //pausa para poder verse
}
}while(TRUE); //...infinito
}

Você também pode gostar