74164 ile matrix led

Başlatan _MeRKeZ_, 08 Ekim 2012, 22:01:06

_MeRKeZ_

Merhaba arkadaşlar,

74164 port çoğullayıcısıyla matrix led yakmak istiyorum. Amacım bu çoğullayıcının kullanımını öğrenerek daha fazla matrix led yakabilmek. Serdar Çiçek'in CCS C kitabında bulunan 74164 çoğullayıcısının 7 segment display örneğinden esinlenerek bu uygulamayı yazmaya karar verdim. Sizlerden ricam aşağıda kodunu ve benzetimini verdiğim devredeki hatayı bulma konusunda bana yardımcı olmanız

#include <16f877.h> 

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000) 

#use fast_io(b)

#define data_1 pin_b0
#define data_2 pin_b2
#define data_3 pin_b4
#define data_4 pin_b6
#define clock_1 pin_b1
#define clock_2 pin_b3
#define clock_3 pin_b5
#define clock_4 pin_b7

 int A[]={0xFF,0xFF,0x76,0x75,0X03};
 int B[]={0x00,0X36,0X36,0x36,0X49};
 int C[]={0x41,0x3E,0x3E,0x3E,0x5D};
 int D[]={0x00,0x3E,0x3E,0x3E,0x41};
 int E[]={0x00,0xB6,0xB6,0xB6,0xBE};
 
 int sutun[]={0x01,0x02,0x04,0x08,0x10};
 
 
char i=0,j=0,k=0;

/* burada matrix ledin sütunlarını tek tek aktif ediyorum */

void sutunsec_1(int a)
{
      for(j=0;j<8;j++)
      {
         output_bit(data_1,bit_test(sutun[a],j));
         output_high(clock_1);
         output_low(clock_1);
      }

}

void sutunsec_2(int a)
{
      for(j=0;j<8;j++)
      {
         output_bit(data_3,bit_test(sutun[a],j));
         output_high(clock_3);
         output_low(clock_3);
      }

}

/* burada matrix lede yukarıdaki karakterleri yolluyorum */


void karakter_1(int tekrar)
{
   for(k=0;k<tekrar;k++)
   {
      for(i=0;i<5;i++)
      {
         sutunsec_1(i);
         
         for(j=0;j<8;j++)
         {
            output_bit(data_2,bit_test(A[i],j));
            output_high(clock_2);
            output_low(clock_2);
         }
         
         delay_ms(500);
         
      }
      
      
   }
}


void karakter_2()
{
   for(i=0;i<5;i++)
   {
      sutunsec_2(i);
      
      for(j=0;j<8;j++)
      {
         output_bit(data_4,bit_test(B[i],j));
         output_high(clock_4);
         output_low(clock_4);
      }
      
      delay_ms(500);
   }
}




void main()
{

   setup_psp(PSP_DISABLED);        
   setup_timer_1(T1_DISABLED);   
   setup_timer_2(T2_DISABLED,0,1); 
   setup_adc_ports(NO_ANALOGS);   
   setup_adc(ADC_OFF);          
   setup_CCP1(CCP_OFF);            
   setup_CCP2(CCP_OFF);            
   
   set_tris_b(0x00);
   
   while(1)
   {
   
   output_b(0x00);
   karakter_1(10);
   output_b(0x00);
   karakter_2();
   
   }

}




Benzetim dosyası:

https://hotfile.com/dl/175406402/cd2b7ae/1.DSN.html

Teşekkürler