7 Segment Multiplexing (Çoklama) Nasıl Yapılır?
Hobi amaçlı devrelerde sıkça kullandığımız 7 segment led göstergeleri hepimiz biliyoruz. Adından da anlaşılacağı üzere içerisinde çubuk şeklinde 7 adet led ışık bulunuyor ve göstermek istediğimiz rakama göre bu ışıkları kontrol ediyoruz. Bu göstergeler en basit haliyle Common Anode (CA, ortak pozitif kutup) veya Common Cathode (CC, ortak negatif kutup) olarak karşımıza çıkıyorlar. CA tipindeki göstergelerde tüm segmentler ortak bir uç ile doğrudan güce bağlanıyor ve her bir segmente GND sağlandığında aktif oluyor. CC tipindekilerde ise tersi bir durum var; tüm uçlar ortak bir GND ‘a bağlı ve her bir segment için belli bir düzeyde voltaj vermek gerekiyor.
Bu led göstergeler maliyet ve kullanımı olarak çok basitler fakat önemli bir dezavantajları var ki o da adeta I/O canavarı olmaları! Her segmentin kontrolü için mikroişlemciden resimde gördüğünüz gibi 1 pin ayırmanız gerektiğinden 1 adet göstergeye 7 pin rezerve etmek zorunda kalıyorsunuz. Genelde bu led göstergeler tek başlarına kullanılmıyor, en az 2 veya daha fazla kullanıldığından, örneğin saat ve dakika gösterecek dijital bir saat yapacaksak 7x4=28 tane pin kullanmamız gerekiyor. Bu da kulağa pek mantıklı gelmiyor tabi..
Bu göstergelerde I/O açısından verim sağlamak için genelde BCD (binary coded decimal) metodunu kullanan TTL 74LS47 dekoder gibi ara entegreler tercih ediliyor. BCD dekoder 4 bit girişe sahip ve 0–15 arasındaki dijital değerden 7 segment göstergenin ihtiyacı olan 7 pinlik bir çıktı sağlıyor. Bu durumda yukarıdaki dijital saat örneğine göre 4x4=16 tane pin kullanmamız gerekiyor, ki bu sayı hala fazla değil mi?
4 adet 7 segment göstergeyi aslında 1 BCD dekoder ve 4 transistörle toplamda 8 pin şeklinde kurtarmamız mümkün. Bu da ilk rakam olan 28 pine göre I/O açısından hayli ekonomik bir sayı. Bunu yapabilmek için multiplexing (çoklama) yöntemini kullanmamız gerekiyor.
Mantık olarak aynı pinler tüm göstergelere paralel bir şekilde bağlanıyor fakat her göstergeyi açık / kapalı konuma alabileceğimiz bir de transistör yardımıyla, aynı dekoderi 4 farklı değer için 4 farklı transistörü açık / kapalı konuma getirerek sırasıyla yazıyoruz. Aradaki gecikmeyi insan gözünün algılayamayacağı kadar düşürürsek, sanki ışıklar sürekli yanıyormuş gibi bir sonuç çıkıyor ortaya!
Aşağıda dekoder kullanmadan 3 adet 7 segment göstergeyle multiplexing yöntemi kullanarak yaptığım simülasyon örneğini ve C kodunu paylaşıyorum:
Kodu, yöntemin nasıl çalıştığını gösterebilmek için basamaklar arası gecikme değeri başlangıçta 1 sn iken kısa sürede 25ms ‘e düşecek şekilde yazdım.
Bu arada 7 segment göstergelerin 2'li, 3'lü ve 4'lü gibi tümleşik olanları, ve hatta üzerinde dekoderiyle beraber satılan çok çeşitli modelleri de mevcut. Ancak burada amacımız daha çok I/O ‘da multiplexing konusunu ön plana çıkarmak. Benzer yöntemi 7 segment göstergeler haricinde farklı amaçlarla da uygulayabilirsiniz.
Kolay gelsin.