Bu sayfadaki yazılar
Sayfanın metni
Sayfa 46
Aydın TOLAY Çoğu Commodore sahipleri, herhalde makineleriyle sadece software yazmak, hazır software'leri kullanmak amacıyla ilgilenmektedirler. Bu bölümde monitör, keyboard vs. kullanmadan bilgisayarla nasıl haberleşebileceğimizi; dış birimleri nasıl kontrol edebileceğimizi bir saat devresi üzerinde inceleyeceğiz. Devreye geçmeden, kullanılan elemanlara bir göz atalım: -CD4543: BCD (Binary Coded Decimal)'den 7-segment'e Latch/Decoder/Driver. Chip bir 4 bit saklayıcı (storage latch) ve 8421 BCD'den 7-segment'e decoder/driver içerir. Dolayısıyla sizin bir 7-segment display'de 5 sayısını görebilmeniz için bu entegrenin girişlerine BCD 5 yani 0101 değerlerini vermeniz yeterlidir.
Şekil 1
DCBA'dan BCD giriş, abcdefg'den 7-segment çıkış.
LD
Cc Ph Be Yss 1 2 3 4 5 6 7 8 -74139: Adres Decoder
Bu entegrenin iki girişi ve dört çıkışı vardır. Girişine verilen iki bitlik binary sayısının değerine ilişkin çıkış Lojik-0 ve diğerleri ise Lojik-1 olur. Böylece herhangi bir devrede o çıkışa ilişkin devreyi aktif yapmış; onu seçmiş olursunuz. Tabii ki, bu entegrenin çıkışının aktif-low olduğuna dikkat edilmelidir. Dolayısıyla girişi
aktif-high olan devreleri sürebilmek için ayrıca bir invertör gerektirir.
Şekil 2 Adres Decoder
16 15 13 12 do ş
D 74139
-TDDR5260: Dual 7-Segment Display
TDDR5260, ekranında sayıyı oluşturmak için 7-segment ve 1 nokta kırmızı LED(Light Emitted Diode)'lerinden oluşmuş ortak katodlu bir elemandır.
Şekil 3
TDDR 5260 -Dual-7-Segment Display
D18 17 16 15 14 13 12 11 10 a1 a2
h Vb
1 2 e/ 3 fa ez/ fc di d2 Oppi O pp2
1 2 3 4 5 6 7 8 9 l-el 10 b2 2-di İl a2 3-c1 12 f2 4-DP1 13 A2(K2) 14 Aİ(KI) 6-d2 15 bi 7-2 16 al
17 gl 9-DP2 18 fI
-R1...R7: 56-100 Ohm arasında seçilebilen dirençler.
-Rd : 220-270 Ohm arasında noktaya ilişkin direnç.
-LED ışığının düzgün görülebilmesi için şeffaf kırmızı pleksiglas parça.
-User Port konnektörü.
Saatin Çalışması:
Devrenin temel prensibini anodu bir veri çıkışına, katodu ise bir kontrol çıkışına bağlanmış bir LED üzerinde açıklamaya başlayabiliriz. Bir kırmızı LED yanıyorsa anod-katod arasında 1,6 V gerilim vardır. Ki bu LED'in doyuma ulaştığında elde edilen gerilimdir. Kontrol ucunu toprağa bağlayıp veri ucunu ise bir veri çıkışına bağlarsak, lojik verinin değerini burada görebiliriz. Veri lojik 1 ise LED yanar, lojik 0 ise LED sönük kalır (Şekil 4).
Şekil 4
R veri O— ME
KONTROL 0
Bundan sonraki adımda kontrol ucunu toprağa değil de bir kontrol çıkışına bağladığımızda çeşitli durumlara ilişkin Şekil 5'teki tablo oluşur.
L: Low seviye H: High seviye
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 47
H H
Şekil 5
Tablodan görüldüğü gibi LED, kontrol girişi lojik 1 ise devre dışı bırakılmıştır (veri ne olursa olsun LED sönük). Çünkü hiçbir zaman anod-katod arasında yeterli pozitif gerilim oluşamaz. Ya negatif bir gerilim vardır ya da iki uca da lojik 1 uygulandığından iki uç arasında gerilim farkı yoktur (0V). Kontrol girişine lojik 0 değeri verilmiş ise bu durumda veri doğrudan ışık olarak görünür. Veri lojik 1 ise LED yanar vs. Prensipte bir adım daha ilerleyelim: 4 adet LED'imiz var ve bunların anodlarını sadece bir veri yoluna bağladığımızı ve katodlarını ise 74139'un aynı mantıkla çıkış veren bir adres çözücü benzeri elemanın çıkışlarına bağladığımızı düşünelim. (Şekil) 6 Şimdi biz bir veri ve iki bitlik bir binary sayı veriyoruz. IC1 verilen binary sayının değerine göre sadece o numaralı çıkışı 0 yapıyor ve diğerlerini ise lojik 1'de bırakıyor (Şekil 7). Bu durumda ne olur? Herhalde bu sorunun yanıtını tahmin edebiliyorsunuz: Sadece katod'u low konuma çekilen LED'de veri görünecektir. Kontrol 0 = L, Kontrol 1 = H, veri = H'de sadece Q2 L değerinde olacak ve veri de H olduğundan LED2 yanacaktır. Peki ama biz ne görmek istiyoruz; sadece bir LED'in yandığını mı? Hayır; buradaki esas amaç aynı anda 4 LED'de de farklı veriler görmek istiyoruz. Elimdeki böyle bir düzenekten, nasıl dördü birden çalışan duruma gelirim? Sinemanın çalışma prensibini bilirsiniz, insanın göz kusuru, yani gözün saniyede belli sayıdan fazla değişikliği algılayamaması, dolayısıyla birbirinden ayrı resimlerin, gözün bu özelliği sayesinde hareketli şekiller olarak algılanması.
Aynı şekilde bir lambayı çok hızlı ve
devamlı bir şekilde yakıp söndürürsem lamba, gözün belli bir hızdan sonrasını fark edememesi dolayısıyla, gözün sadece ışığı algılayabilmesi sonucunda devamlı yanıyor görünür. Dolayısıyla bir grup LED'i sırayla tek bir hattan devamlı olarak sabit değerlerle yükleyerek tararsak, belli bir hıza kadar LED'lerin sırayla değer al-
Kontrol 0
MU Kontrol 1 dığı seçilebilir, ama sonra LED'ler sanki sabit değerlerde kalıyormuş gibi görünürler. Bu sayede fazla veri hattı kullanmadan çok miktarda LED'e sabit değerler yüklenmiş olurum. Artık 4 LED'in bir veri yolu üzerinden nasıl yakıldığını görmüş olduk bundan sonraki aşama ise çok sayıda 7-segment display'in yakılmasıdır. Bu ise devrenin gene çok az veri ve kontrol ucu istemesi için Şekil 8'de görüldüğü gibi bir 74139 ve 4543 çifti sinemada göz resimler hızlı bir süreklilikle hareketli şekiller gibi görünür.
ile yapılabilir. 4543 display'de görünecek sayıya ilişkin BCD değeri alır ve 7-segment'e kod çevirir. 74139 ise o anda hangi display'den verilerin görüneceğini saptar. Bu durumda herhangi bir konumda dururken sadece adres decoder'in seçtiği display'de girişte verilen BCD sayı görünür. 4 ayrı LED'de yapılan tarama işlemini çok hızlı bir şekilde her display'e ayrı değerler gelecek şekilde gerçeklersem, 4 display de sabit yanıyormuş gibi görünür. Böylece normalde 4 display'e çeşitli değerler yazmak için 4x8=32 veri hattı gerekirken
H Şekil 7 | ben bu işi 4 BCD sayı için, 2 adres decoder için ve 1 de nokta için olmak üzere 7 hat ile gerçeklemekteyim. Burada hat kazancı görüldüğü gibi çok büyüktür. Peki niye her display'in girişine, girişleri veri yoluyla bağlanmış ve bir 74139 ile kontrol edilen 8 bit latch (saklayıcı)'lar bağlanamadı diye soracak olursanız biraz düşünmekle sizin de anlayabileceğiniz gibi i) 4 ayrı latch'den dolayı masraf artacak ii) yine bu fazla elemanlardan dolayı baskılı devreyi hazırlamak çok zorlaşacak, iii) baskılı devrenin boyutu büyüyecek şeklinden pek çok sorunla karşılaşacaktınız. Şemada bulunmayıp baskılı devre şemasında bulunan C1 ve C2 kondansatörleri 0,1 µF değerinde seramik olup, entegrelerin girişinde meydana gelebilecek gerilim değişimlerini kompanze etmek için konulmuştur.
Gerçeklenmesi:
Devrenin çalışma prensibini gördükten sonra artık bunun nasıl bilgisayar tarafından çalıştırılacağını anlatmaya başlayabiliriz. Devre için gerekli olan 7-bit'lik bilgiler portta çıkışı bulunan CIA 2'nin B portundan alınsın. Tabii ki, toprak ve gerilim uçları yine user port'un ilgili pinlerinden alınacaktır. Bu konuda size tavsiyem devreyi, baskılı devre plaketi üzerinde gerçeklemenizdir. Yok-
sa kablo karmaşası arasında kalabilirsiniz! Software: 6526 CIA chip'ini bir iletişim birimi olarak kullanmaya başlamadan önce chip'in port'una ilişkin bitlerin giriş mi, yoksa çıkış mı olacağını bilgisayara anlatılması gereklidir. Bu da giriş bit'leri 0, çıkış bit'leri 1 olarak aldığımızda meydana gelen sayıyı, port'un veri yön register'ine yüklemekle olmaktadır. B portuna ilişkin veri yön register'i 56579 = $DD03 adresinde, ve veri portu ise 56577 = $DD01 adresindedir. PB0 ve PB1'den çıkış, PB2'den de giriş olmak istediğimizde $DD03 adresine 3 değeri (00000011) yüklemek yeterli olacaktır. Kullanılmayan bitlerin yönü önemli değildir, keyfi değer alabilirler. Çıkış olarak LED'leri düşünürsek Şekil 11'deki gibi bir bağlantı yeterli olur.