Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: _MeRKeZ_ - 08 Ekim 2012, 22:01:06

Başlık: 74164 ile matrix led
Gönderen: _MeRKeZ_ - 08 Ekim 2012, 22:01:06
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