Autor Tema: sos multiplexar leds  (Leído 1409 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado bola

  • PIC10
  • *
  • Mensajes: 1
sos multiplexar leds
« en: 24 de Marzo de 2009, 09:20:36 »
 Tengo un problema con el multiplexado de 8 leds rgb, lo estoy haciendo en CCS (no me funciona bien al probarlo en el proteus)
 Si por favor serías tan amables de echarle un vistazo haber si me podeis ayudar, os lo agradecería muchisimo.  :8}

El código que he creado es este:

#include<16f876A.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT
#byte PA=05
#byte PB=06
#byte PC=07


#use delay(clock=20000000)

int Tper=255, R=0, G=0, B=0,x; 
void mostrar(void)
{
   while(Tper>0)
   {
      Tper--;
     
      if(Tper>R)  output_high(PIN_B0);
      else output_low(PIN_B0); 
      if(Tper>G) output_high(PIN_B1);
      else output_low(PIN_B1); 
         
      if(Tper>B) output_high(PIN_B2); 
      else output_low(PIN_B2); 
   }
   Tper=255;
}



/******************************************************************************/


void color1(void)
         {
         R=0;  G=0;  B=0;   //NEGRO
         }
         
void color2(void)
         {
         R=200;  G=190;  B=185;   //BLANCO
         }
         
void color3(void)
         {
         R=255; G=0;  B=0;  //ROJO
         }           
         
void color4(void)
         {
         R=255;  G=8;  B=3;   //ROJO CLARO
         }   
         
void color5(void)
         {
         R=0;  G=255;  B=0;  //VERDE
         }
         
void color6(void)
         {
         R=30;  G=200;  B=18;   //VERDE CLARO
         }
         
void color7(void)
         {
         R=0;  G=0;  B=255;   //AZUL
         }         
         
void color8(void)
         {
         R=40;  G=40;  B=255;   //AZUL CLARO
         }         
         
void color9(void)
         {
         R=255;  G=0;  B=255;   //MAGENTA
         }
         
void color10(void)
         {
         R=255;  G=90;  B=0;   //AMARILLO
         }
         
void color11(void)   
         {
         R=0;  G=255;  B=255;   //CYAN
         }       
         
void color12(void)
         {
         R=255; G=55;  B=0;  //NARANJA
         }       
         
void color13(void)
         {
         R=120;  G=0;  B=255;   //MORADO
         }
         
void color14(void)
         {
         R=128;  G=30;  B=200;  //VIOLETA
         }
       
void color15(void)
         {
         R=0;  G=215;  B=255;  //TURQUESA
         }       
         
/******************************************************************************/       
         


void main (void)
{
 
   set_tris_B(0x00);   
   set_tris_C(0x00); 
   while(1)
   {
      PB=0;   
      delay_ms(20);
      color3(); 
      delay_ms(20);
      for(x=0;x<20000;x++) mostrar(); 
     
      PB=1;
      delay_ms(20);
      color4(); 
      delay_ms(20);
      for(x=0;x<20000;x++)  mostrar();
     
      PB=2;
      delay_ms(20);
      color3(); 
      delay_ms(20);
      for(x=0;x<20000;x++)  mostrar();
     
      PB=3;
      delay_ms(20);
      color4();   
      delay_ms(20);
      for(x=0;x<20000;x++)  mostrar();
     
      PB=4;
      delay_ms(20);
      color3(); 
      delay_ms(20);
      for(x=0;x<20000;x++)  mostrar();
     
      PB=5;
      delay_ms(20);
      color4();   
      delay_ms(20);
      for(x=0;x<20000;x++)  mostrar();
     
      PB=6;
      delay_ms(20);
      color3();   
      delay_ms(20);
      for(x=0;x<20000;x++)  mostrar();
     
      PB=7;
      delay_ms(20);
      color4();   
      delay_ms(20);
      for(x=0;x<20000;x++)  mostrar();
   }
}