Autor Tema: ayuda con panel de leds en ccs  (Leído 1660 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Manuel_97

  • PIC10
  • *
  • Mensajes: 2
ayuda con panel de leds en ccs
« en: 18 de Abril de 2014, 00:46:01 »
ngo funcionando perfectamente una matriz de leds 8x8 con un mensaje corredizo, pero necesito ayuda para que, tanto el código, como el circuito, sirvan para un panel de leds de 8x64

funciona con 74HC595 y con un PIC16F88
el código(en ccs) es el siguiente:

#include <16f88.h>      // Tipo de microcontrolador
#fuses INTRC_IO,MCLR    // Oscilador interno, MCLR activo
#fuses NOPUT,NOBROWNOUT // Sin Brownout reset ni Power up timer
#use fast_io(all)       // La configuración de los puertos solo se hace al principio.
#use delay(clock=4M)    // Velocidad del oscilador interno 8 MHz

#define Load   PIN_B0   // Load (STCP ambos integrados) B0
#define Clk    PIN_B1   // Clock (SHCP ambos integrados) B1
#define dClm   PIN_B2   // Data para las columnas (DS integrado 1) BC2
#define dLin   PIN_B3   // Data para las lineas (DS integrado 2) B3
#define dLin2  PIN_B4
char  Memoria[96];      // 96 Bytes para la memoria (0 - 95)
char  Visor[8];         // 8 para el visor (8 columnas)

int1  flag;             // Flags de control
int1  flag2;
int   indx;             // Indice donde almacenará las nuevas columnas.
int   line;             // Linea que a mostrar.
int   time;             // Variables para el control de
int   ptime;            // la velocidad de desplazamiento.
int   t;                // Variable auxiliar.

void CargaMem(char Ascii);
void GuardaClm(char c);

#int_rtcc
void isr(){
   int Mul=128;         // Cada vez que ocurre la interrupcion
   if(++line>8)Line=0;  // selecciona la siguiente linea, si se pasa de 7 vuelve a 0.
 
   if(++ptime>3){      //
      ptime=0;          //
      if(++time>200){   // Si se pasa de 200
         time=0;        // lo pone en 0
         Flag=true;     // y activa el flag.
      }
   }
   
   
   for(t=0;t<8;t++){    // Bucle 0 - 7 (Lineas)
     
      output_bit(dLin,!!(Visor[Line]&Mul));// dLin es seteado con el valor
   
        // del bit de la fila actual.
   
      if (Line==t)output_high(dClm);         // Si Line es igual a t
     
                        // activa el bit correspondiente
      else  output_low(dClm);                // a la columna, sino lo desactiva.
     
      output_low(Clk);  // 
      output_high(Clk); // Rota el contenido interno del 74HC595.
 
      Mul>>=1;          // Divide la mascara que compara con Visor[] (128,64,32...)
 
  }
      output_low(Load);
      output_high(Load);// El contenido interno del integrado pasa a las salidas

}
void main(){
   int k;   
   set_tris_a(0x00);
   set_tris_b(0xC0);
   for (k=0;k<8;k++){
      Visor[k]=0;
 
   }
   
   for (k=0;k<96;k++){
      Memoria[k]=0;
   }                    // Limpia la memoria y el visor
   
   flag=true;           // Activo el flag para que cargue la memoria
   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);  // Configuración del Timer0
   enable_interrupts(int_rtcc);              // Interrupcion por Timer0
   enable_interrupts(global);                // Interrupciones globales
   
   do{
      if (Flag){                 // Si el flag está activado
         flag2=true;             // Activa el flag2
         
         for (k=0;k<8;k++){      // Pasa el contenido de las primeras 8
            visor[k]=Memoria[k]; // columnas en memoria al visor
         }
         
         for (k=0;k<95;k++){        // Rota el contenido de toda la memoria
            Memoria[k]=Memoria[k+1];// a la izquierda 1=1+1, 2=2+1, n=n+1...
           
            if (Memoria[k]!=0){Flag2=false;} // Si hay alguna columna que no
                                             // esté vacía desactiva el flag2
         }         
         Memoria[95]=0;             // Limpia la ultima columna de la memoria
       
        if (Flag2){                 // Si flag2 está activo           
            indx=7;                 // a partir de la columna 7
            CargaMem("SAGANS ETITC");   // escribe SAGANS ETITC     
         
         }
         
         Flag=false;                // Desactiva el flag
         
      }
   }while (true);    // Bucle infinito


}

void GuardaClm(char c){
   if (indx<94){
      Memoria[indx]=c;     // Guarda la columna en la ubicación actual de memoria
      indx++;              // y aumenta el indice
   }
}


void CargaMem(char ascii){    // Carga la memoria con el caracter deseado
   switch (ascii){       
     
      case('A'):
      GuardaClm(0b00000011);
      GuardaClm(0b11101101);
      GuardaClm(0b11101110);
      GuardaClm(0b11101110);
      GuardaClm(0b11101101);
      GuardaClm(0b00000011);     
      break;
     
      case('M'):
      GuardaClm(0b00000000);
      GuardaClm(0b11111101);
      GuardaClm(0b11111011);
      GuardaClm(0b11111011);
      GuardaClm(0b11111101);
      GuardaClm(0b00000000);     
      break;

      case('N'):
      GuardaClm(0b00000000);
      GuardaClm(0b11111101);
      GuardaClm(0b11111011);
      GuardaClm(0b11110111);
      GuardaClm(0b11101111);
      GuardaClm(0b00000000);     
      break; 

      case('U'):
      GuardaClm(0b10000000);
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b10000000);     
      break;     
     
      case('E'):     
      GuardaClm(0b10000001);
      GuardaClm(0b01110110);
      GuardaClm(0b01110110);
      GuardaClm(0b01110110);
      GuardaClm(0b01110110);
      GuardaClm(0b01110110);     
      break;
     
      case('L'):
      GuardaClm(0b00000000);
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      break;
     
      case('T'):
      GuardaClm(0b11111100);
      GuardaClm(0b11111110);
      GuardaClm(0b00000000);
      GuardaClm(0b00000000);
      GuardaClm(0b11111110);
      GuardaClm(0b11111100);
      break;
     
      case('O'):
      GuardaClm(0b00111110);
      GuardaClm(0b01111111);
      GuardaClm(0b01000001);
      GuardaClm(0b01000001);
      GuardaClm(0b01111111);
      GuardaClm(0b00111110);     
      break;     
     
      case('P'):     
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b00001001);
      GuardaClm(0b00001001);
      GuardaClm(0b00001111);
      GuardaClm(0b00000110);     
      break;
     
      case('R'):
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b00001001);
      GuardaClm(0b00011001);
      GuardaClm(0b01111111);
      GuardaClm(0b01100110);
      break;
     
      case('B'):
      GuardaClm(0b01111111);
      GuardaClm(0b01111111);
      GuardaClm(0b01001001);
      GuardaClm(0b01001001);
      GuardaClm(0b01111111);
      GuardaClm(0b00110110);     
      break;
     
      case('C'):
      GuardaClm(0b10000001);
      GuardaClm(0b01111110);
      GuardaClm(0b01111110);
      GuardaClm(0b01111110);
      GuardaClm(0b01111110);
      GuardaClm(0b00111100);     
      break;

      case('I'):
      GuardaClm(0b00111100);
      GuardaClm(0b01111110);
      GuardaClm(0b00000000);
      GuardaClm(0b00000000);
      GuardaClm(0b01111110);
      GuardaClm(0b00111100);     
      break;
     
      case('S'):
      GuardaClm(0b01111001);
      GuardaClm(0b01110110);
      GuardaClm(0b01110110);
      GuardaClm(0b01110110);
      GuardaClm(0b01110110);
      GuardaClm(0b10001111);     
      break;
     
      case('G'):
      GuardaClm(0b10000001);
      GuardaClm(0b01101110);
      GuardaClm(0b01101110);
      GuardaClm(0b01101110);
      GuardaClm(0b01101110);
      GuardaClm(0b10001110);     
      break;
     
      case(' '):
      GuardaClm(0b11111111);
      GuardaClm(0b11111111);
      GuardaClm(0b11111111);
      GuardaClm(0b11111111);   
      break;

     
     
   
   }
      GuardaClm(0b11111111);
}

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: ayuda con panel de leds en ccs
« Respuesta #1 en: 18 de Abril de 2014, 06:28:31 »
Por favor, lee las REGLAS DEL FORO:

- 11º No repitas varias veces el mismo mensaje en distintos foros -

gracias