74164 ile matrix led

_MeRKeZ_

Üye
Katılım
30 May 2011
Mesajlar
44
Puanları
1
Yaş
31
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


Kod:
#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();
  
   }


}



Teşekkürler
 

Forum istatistikleri

Konular
128,794
Mesajlar
920,575
Kullanıcılar
450,883
Son üye
Etetik06

Yeni konular

Geri
Üst