H

paralel porttan 64 ledi ayrı ayrı kontrol etmek

Başlatan hsynural, 10 Mayıs 2014, 23:08:53

hsynural

bir led devresi yapmam gerekiyor bu led devresinde 64 led bulunacak ve paralel porta bağlanacak. Başlangıçta kolay gözüktü fakat hocamın istediği 64 ledin hepsine ayrı ayrı erişim. Sorun ise paralel portta sadece 8 tane data  pini var yani ayrı ayrı en fazla sekiz led kontrol edebilirim. benim merak ettiğim ise bu sekiz data pininin sayısını hangi devre elemanıyla attırabilir ve bu devre elemanlarının çıkışlarını nasıl kontrol edebilrim? Şimdiden teşekkürler.

ete

8 adet 74HC595 kullanılarak yapılabilir.
- Bunların hepsinin CLK ve Kilit bacaklarını birleştirilip paralel porta bağlanır.
- Birinci ye Paralel port dan Data girişi bağlanır. BU birincinin Q'7 çıkışı ikincinin data girişine, ikincinin Q'7 çıkışı üçüncünün Data girişine ve benzer şekilde devam ederek hepsi bir birine seri bağlanır.
Bu bağlantıdan sonra elinde 8 adet data bilgisi olmalıdır.BUnları aşağıdaki şekilde düşünürsek ,
Bütün ledler sönük;
%00000000 %00000000  %00000000  %00000000  %00000000  %00000000  %00000000  %00000000
1 nolu led yanmış diğerleri sönük
%00000000  %00000000  %00000000  %00000000  %00000000  %00000000  %00000000  %00000001
1 -10 - 20 -30 40 -50 - 60 nolu ledler yanık diğerleri sönük
%00001000  %00000010  %00000000  %10000000  %00100000  %00001000  %00000010  %00000001

Sana birde algoritma lazım olacak istediğin ledi hesaplayıp yaktırmak için
Örnekle açıklayayım.
Yukrıdaki 8 adet bilgi 74HC595 lere seri olarak verilecek bilgileri ifade ediyor. Sağdan sola doğru D7-D6-D5-D4-D3-D2-D1 şeklinde adlandırırsak işimiz daha kolay olacak.
Diyelimki 38 nolu ledi yakmak istiyoruz.
38/8=4 bu atlaman gerek 4 adet 8 bitlik veri olduğunu gösteriyor Yani D1-D2-D3-D4 atlanacak ve bilgi D5 e yerleştirilecektir.
38 - (4*8)=6  , buda sana bir sonraki data nın hangi bitinin set edileceğini gösteriyor. Başka bir deyişle ,
2*2*2*2*2*2=64  eder D5=D5 OR 64 komutunu verince otomatikman 6. bit set edilmiş olacaktır. Bu bilgiyi 74595 lere verincede 38 nolu ledinyandığı görülecektir.

Ete

hsynural

hocam entegrelerle ilgili pek bilgim olmadığı için mantığını anlamaya çalışıyorum.Sizin bahsettiğiniz entegreyi araştırdım ve sizin söyledikleriniz düşününce şunu anladım, biz mesela 38. ledi yakmak istediğimizde sadece o ledden sorumlu olan entegreye veri göndermiş değil aynı zamanda diğer entegrelerede 00000000 verisinimi göndermiş olacağız.Diyelim ki bizim ledimizden sorumlu entegre 4. sırada diyelim, biz sadece bu entegredeki bi ledi yakmak için bundan önce gelen 3 entegreyede 00000000 verisini yolladıktan sonramı bizim entegremize 00001000 gibi bir komut verebileceğiz?

ete

Shift register (74595) kullanırsan elbette diğerlerinede bilgilerini aynen vereceksin. Senin için bir şey farketmez. Değişenleri değiştirip değişmeyenleri aynen tutarak 8 byte yollaman gerekiyor. Bu sistem 3 pinden kontrol ediliyor. İstersen 4067 kullanarak 4+4 pin ilede bu işi yapabilirsin. 4 tanesi A-B-C-D adres bacakları için diğer 4 taneside kullanacağın 4 entegrenin chip Enable pinleri içindir. Her bir entegre 16 led kontrol eder. Hamgi ledi yakacaksan o entegrenin enable ucunu set edecek ve adresede ilgili ledin adresini vereceksin. Başkada yolu yok zaten.

Ete

hsynural

Anladım.Yardımlarınız için tekrar teşekkürler.

Powered by EzPortal