74hc595 ile matris led uygulaması

Başlatan _MeRKeZ_, 28 Ekim 2012, 17:56:01

_MeRKeZ_

Merhaba arkadaşlar,

74hc595 çıkış çoğullayıcısıyla matris led sürmek istiyorum. Bununla ilgili nette araştırma yaptım 7 parçalı göstergelerle ilgili bir uygulama buldum onu kendi uygulamam için düzenlemeye çalıştım ancak tam anlamıyla başarılı olamadım. Burada aradığımı buldum ancak yazılan kodun mantığını tam anlayamadım o yüzden kendi devreme uyarlayamıyorum. Sizden ricam, aşağıda verdiğim kodun mantığını anlatmanız

#if defined(__PCM__)
#include <16F873.H>
#fuses XT,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_A0, rcv=PIN_A1,RESTART_WDT,ERRORS,INVERT)


#IFNDEF EXP_OUT_ENABLE

#define EXP_OUT_ENABLE PIN_C2
#define EXP_OUT_CLOCK PIN_C1
#define EXP_OUT_DO PIN_C0
#define NUMBER_OF_74595 4//kac tane tane shift register kullandin?4//
#ENDIF

#include <74595.C>

#byte port_b=6
#byte port_c=7

main()
{


int i;
int mask[4];//maske
int data[4];//gonderilecek dizi//
set_tris_c(0);
set_tris_b(0);
port_b = 0xff;
port_c = 0;
                              do
                              {

mask[0]=0x01; //kaydirmak istedimiz 32 bitlik data//
mask[1]=0x00;
mask[2]=0x00;
mask[3]=0x00;
for(i=0;i<32;i++)
                  {
data[0] = mask[0];
data[1] = mask[1];
data[2] = mask[2];
data[3] = mask[3];

delay_ms(500);
write_expanded_outputs(data);
delay_ms(500);


if (shift_left(mask,4,0))
mask[0] = 0x01;
                  }
                              }
                              while(1);
}
[\code]

sadogan

Merhaba,
#include <16F873.H>
#fuses XT,NOWDT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)

#define HC595_DATA pin_b0
#define HC595_CLK  pin_b1
#define HC595_ENB  pin_b2

void hc595_out(unsigned char veri)
{
   unsigned  char i;
   for(i=0x80;i>0;i>>=1)
   {
      if(i&veri)output_high(HC595_DATA);
      else  output_low(HC595_DATA); 
      output_high(HC595_CLK);
      output_low(HC595_CLK);
   }

}
void main()
{
   unsigned  char birinci=0b00110011;
   while(TRUE)
   {
           hc595_out(birinci);    //1 byte veri yollar
           output_high(HC595_ENB);
           output_low(HC595_ENB);
   }
}

void main()
{
   unsigned  char birinci=0b00110011;
   unsigned  char ikinci= 0b10110011;
   unsigned  char ucuncu =0b01010101;
   while(TRUE)
   {
           hc595_out(birinci);
           hc595_out(ikinci);
           hc595_out(ucuncu);   //3 byte veri yollar
           output_high(HC595_ENB);
           output_low(HC595_ENB);
   }
}
Kolay gelsin