Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: _MeRKeZ_ - 17 Eylül 2012, 18:02:15

Başlık: port çoğaltma
Gönderen: _MeRKeZ_ - 17 Eylül 2012, 18:02:15
Merhaba arkadaşlar

74138 ile port çoğaltmak istiyorum. Elimde halihazırda devre ve kod var ancak ben bunun tam olarak mantığını anlamış değilim



#include <16f877.h>   

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

#use delay(clock=4000000) 

#use fast_io(b)
int i;

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)
   {
      for(i=0;i<8;i++)
      {
         output_b(i|0b00000000);
         delay_ms(250);         
      }
      for (i=0;i<8;i++)
      {
         output_b(i|0b00010000);
         delay_ms(250);         
      }
      for(i=0;i<8;i++)
      {
         output_b(i|0b00100000);
         delay_ms(250);         
      }
      for (i=0;i<8;i++)
      {
         output_b(i|0b00110000);
         delay_ms(250);         
      }
   }
}



Kodlarda sırayla 4 çoğullayıcıyı çalıştırmış 32 led sırayla yanıyor. Benim anlamadığım husus, ilk çoğullayıcı çalıştırılırken output_b(i|0b00000000); kodu kullanılmış sonra output_b(i|0b00010000); daha sonra output_b(i|0b00100000); son olarak da output_b(i|0b00110000); bu kod kullanılmış. Bunun mantığı nedir? Neye göre böyle bir kullanım olmuş? Devrenin resmini ve dosyasını aşağıda verdim. Cevaplarınız için şimdiden teşekkür ederim.

(http://c1209.hizliresim.com/11/k/d4h5f.jpg) (http://bit.ly/c25MCx)

https://hotfile.com/dl/172549857/f12d9dc/74138_le_Port_oullama_Uygulamas.DSN.html (https://hotfile.com/dl/172549857/f12d9dc/74138_le_Port_oullama_Uygulamas.DSN.html)


Başlık: Ynt: port çoğaltma
Gönderen: Tagli - 17 Eylül 2012, 18:41:52
Resim küçük olduğundan pek rahat göremedim ama anladığım kadarıyla, seçici 74138 portun büyük bitleriyle sürülüyor, diğer (LED sürücü) 74138'ler ise küçük bitlerle. Orada yapılan OR işlemi bu iki değeri toplamaktan ibaret. Hatta | yerine + da koyabilirdi bence. Her bir for döngüsü bir tane sürücü 74138'ü seçiyor, o da 8 LED'i sırayla yakıyor.
Başlık: Ynt: port çoğaltma
Gönderen: Murat Mert - 17 Eylül 2012, 19:12:06
S.A.
serdar Çiçeğin örneklerinden birisi şema. Altas kitap evinden ziplerini inceleyebilirsiniz.
Başlık: Ynt: port çoğaltma
Gönderen: fgokcegoz - 17 Eylül 2012, 21:33:11
Tek olan 74138 in ABC seçme uçlarını PIC in RB4,RB5,RB6 pinlerine bağlamış. Bu pinlere sıra ile 0-1-2-3 değerlerini uygulayarak alt alta olan 74138 leri sıra ile enable yapıyor. Alt alta olan 74138 lerin ABC seçme girişleri birbirine paralel zaten. İlk olarak tekli 74138 ile alta alta olanlardan birini seçiyor, birbirlerine paralel olan ABC girişlerindenden de datasını veriyor. Hangi 74138 seçilmiş ise sadece o çıkış veriyor. Aslında data hepsine gidiyor fakat enable pinleri aktif olmadığından çıkış vermiyor. Olayın özeti budur arkadaşım..

*** 74138; 3x8 decoder/demux entegresidir.
Başlık: Ynt: port çoğaltma
Gönderen: mehmet - 18 Eylül 2012, 00:52:39
Bu tür port çoğullama işlemini Shift-Register ile yapmak daha
mantıklı gibi geliyor.
3 uç ile istediginiz kadar çoğullama yapılabilirsiniz...
Hatta Max7219 ile 64 led yakmak mümkün...

Saygılar...
Başlık: Ynt: port çoğaltma
Gönderen: _MeRKeZ_ - 18 Eylül 2012, 13:33:26
Cevaplarınız için teşekkür ederim

Anlayamadığım iki nokta var. İlki, solda bulunan çipin hangi kodla çalışır hale geldiği. İkincisi ise, ben sağdan ilk çipi çalıştırmak istediğimde i'yi 0b00000000 ile veya işlemine sokuyorum. İkinci çip içinse 0b00010000 ile. Buradaki artışın mantığı nedir neye göre değişiyor bu değerler? Ben soldaki çipin y4 ucuna bir çoğaltıcı daha taksam hangi sayı ile veya işlemine sokmam gerekiyor?
Başlık: Ynt: port çoğaltma
Gönderen: mehmet - 18 Eylül 2012, 16:02:37

MSB           LSB
7 6 5 4 3 2 1 0
0 0 0 0 0 x x x ile ledler yakılıyor,
0 0 x x x 0 0 0 ile de ilgili 74138 seçiliyor

Örnek:
1.ledin yanması için:
0 0 0 0 1 0 0 1 yapılması gerekli

digerlerini de buna göre hesaplayabilirisin...


Saygılar...
Başlık: Ynt: port çoğaltma
Gönderen: _MeRKeZ_ - 18 Eylül 2012, 17:53:24
Hocam sorun çözüldü, teşekkür ederim
Başlık: Ynt: port çoğaltma
Gönderen: alper06 - 18 Eylül 2012, 19:03:52
Hoam MCP23017 falan kullan. Rahat edersin...
Başlık: Ynt: port çoğaltma
Gönderen: _MeRKeZ_ - 19 Eylül 2012, 21:14:19
Alıntı yapılan: alperodabasi - 18 Eylül 2012, 19:03:52
Hoam MCP23017 falan kullan. Rahat edersin...

Onun mantığı ve kullanımı nasıl hocam?
Başlık: Ynt: port çoğaltma
Gönderen: Veli B. - 19 Eylül 2012, 21:32:24
23017 I2C, 23S17 ise SPI çalışır.
16 bit IO + interrupt desteği vardır. İnterruptlar yapılandırılabilir. Microchip firmasının en iyi ürünlerinden birisidir.
MCU ile çalışan herkesin yastık altında 10 15 tane bulundurması gereken bir nimet.