74hc595 Entegre
Güncelleme 18/06/2021
74hc595 nedir ? – 74hc595 çalışma mantığı
74hc595 entegre seri olarak girilen verinin veya datanın paralele dönüştürmesini sağlar.
74hc595 entegre, 8-bit seri giriş, paralel çıkış ve 8-bit D tipi flip-floba (latch) sahiptir.
74hc595 entegre 8-bit seri olarak verdiğimiz dataları içinde depolar sonra onları biz istediğimiz zaman parelele dönüştürür.
Yani 75HC595 entegresinin DS pinine bir mikrodenetleyici tarafından 8-bit veri gönderilir ve sonra onlar Q1’den Q7 kadar o seri bit çıkışta gösterilir.
Tabi bunlar benim böyle anlattığım gibi direk olmuyor. Bazı kurallar var onlara göre yapmak gerekir.
74hc595 Entegresinin Özellikleri
- İşlem yapması için gerekli çalışma gerilimi minimum 2V, maksimum 6V olamalıdır.
- Maksimum çekeceği akım bu entegrenin 80 uA’dir.
- Kaskad bağlama özelliğine sahiptir. 74HC595’in 9.pini yardımıyla bir başka 74HC595 ile kaskad bağlanabilir.
- Kaydırma frekansı 100Mhz.
74HC595 pin açıklamaları
- Q(0-7): 8 bitlik çıkış pinleri.
- GND: Toprak
- VCC: Pozitif besleme.(Max:7 V. Önerilen 5V.)
- Q7′: Kaskat bağlama için seri çıkış.
- MR: Reset(Aktif “0”)
- DS:Seri data girişi.
- ST_CP: Latch pini.
- SH_CP: Clock pini.
- OE: Çıkış etkin(Aktif “0”)
Bizim yapmamız gereken şey, DS pinine seri olarak datalarımızı göndermek ama bunu yaparken her data için bir clock gerekiyor. Clock SH_CP pinine uygulanır. Her yükselen kenar clock’unda seri olarak gönderdiğimiz datalar 74HC595 kabul eder. Sonra 8-bit data seri olarak gönderildikten sonra ST_CP lojik 1 durumuna çıkarılır çıkışlar gönderdiğimiz datalara göre aktif olur. Şunu unutmamız gerekir, datalar seri olarak gönderilmeye başladığında ST_CP lojik 0, dataların hepsi gönderildikten sonra lojik 1 yapılır.
74HC595 entegre kullanımı
Mikro-denetleyicilerde çıkış pini sayısında sıkıntı olması durumunda seri giriş, paralel çıkış olarak çalışan, 74HC595 entegresi kullanılabilir. Bu entegre 3 girişle kontrol edilirken 8-bit paralel çıkış verir.
Kullandığınız mikrodenetliyice pin sıkıntısı sorunu varsa siz bu entegreyi kullanarak o sorunu çözebilirsiniz. Yani, mikrodenetleyicinizin minimum üç pini kullaranak siz 74HC595 yardımıyla 8 pine çıkarabilirsiniz. Mikrodenetleyicilerde satır LCD ekran sürmek için çok fazla pine ihtiyaç vardır ama bu entegre yardımıyla satır LCD ekran sürebilirsiniz. Led uygulamalarında kullanılabilir, örneğin dot matrixli uygulamalarda.
74hc595 smd – Shift Register Breakout 74HC595
74HC595 Arduino
Arduino ve 74HC595 shift register entegresi kullanarak 8 adet LED’i 3 pin ile yakalım
74HC595 entegresini Arduino ile kullanaksanız Çıkışların az geldiği veya gereksiz yere çıkışın harcanmaması gereken durumlarda kullanılan bu entegre daha çok LED, transistör veya paralel girişle çalışan bir elemanı kontrol etmek için kullanılır. 100Mhz’e kadar uyum sağlayabilirken endüstriyel anlamda da kullanımı oldukça yaygındır.
Shister Nedir?
Shift register kaskat şekilde bağlanmış flip floplardan oluşan lojik bir devredir. Ortak bir clock ile çalışan bu devre aldığı bit değerlerini hafızasında tutarak sonrasında çıkışa verir. Yaygın olarak kullanılan 4 çeşidi vardır:
- Paralel giriş, seri çıkış.
- Seri giriş, paralel çıkış.
- Paralel giriş, paralel çıkış.
- Seri giriş, seri çıkış.
Hepimizin bildiği üzere Arduino UNO kartımızda 13 adet dijital giriş/çıkış pini bulunmakta. Fakat bu pinlerin hepsini LED sürmek için kullanmak istemeyebiliriz. Yada LED haricinde diğer pinlere sensör, switch, buton v.b. diğer girişler bağlamış olabiliriz. Burada kullanacağımız uygulama ile Arduino’da sadece 3 adet dijital çıkış pini kullanarak 8 adet LED’i kontrol etmemiz mümkün olacak.
Kullandığımız Malzemeler;
- Arduino Mega(ben mega kullandım siz başka model kullanabilirsiniz)
- Breadboard
- 8 Adet Led
- 8 Adet 220Ω Direnç
- 74hc595 Shift Register Entegresi
- Jumper Kablo
BAĞLANTI ŞEMASI;
Kodlarımız;
/* diyot.net */ int latchPin = 5; int clockPin = 6; int dataPin = 4; byte leds = 0; void setup(){ pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); } void loop() { leds = 0; registeraYaz(); delay(500); for (int i = 0; i < 8; i++) { bitSet(leds, i); registeraYaz(); delay(500); } for (int i = 8; i >= 0; i--) { bitClear(leds, i); registeraYaz(); delay(500); }} void registeraYaz() { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, leds); digitalWrite(latchPin, HIGH); }}
Kodumuzun ilk kısmında her zaman yaptığımız gibi çıkış pinlerimizi tanımladık. leds isimli 8 bitlik bir değişken tanımladık (byte tipindeki değişkenler 8 bit büyüklüğündedir). Bu baytın her bir biti, bizim shift register’ımızın çıkışına bağlı olan LED’leri temsil ediyor. registeraYaz fonksiyonumuz, shift register’ın çalışması için gerekli işlemleri yapıyor. loop fonksiyonumuzda bu fonksiyonu çağırarak leds değişkeninde yaptığımız değişiklikleri LED’lerimize aktarmak için bu fonksiyonu çağırıyoruz. loop fonksiyonumuzda ise iki adet for döngüsü kullandık. İlk for döngüsü, leds değişkenimizdeki 8 bitten her birini sırayla 1 yaparak 00000001, 00000011, 00000111… şeklinde bir desen elde etmemizi sağlayacak. Her bir bit 1 olduktan sonra (11111111), ikinci for döngüsü başlayarak bu sefer bitleri 0’layarak 01111111, 00111111,00011111… desenini oluşturacak.