Kayan yazı mantığı oldukça karmaşıktır. Tamamen insan göz yanılgısına dayalıdır. Bu yazım kayan yazı nasıl yapılır, kayan yazı kodu, kayan yazı programı ve simülasyonu içerecektir. Çok hızlı bir şekilde tarama yapılarak farklı konumlardaki ledlerin aynı anda yanıyormuş gibi görünmesi sağlanır. İki çeşit kayan yazı türü vardır.
1-Satır taramalı kayan yazı : Adından da anlaşılacağı gibi satırların taranması mantığına dayanır. Her bir satır sırayla aktif edilir ve o satıra ait bilgiler sütunlardan gönderilir. Örneğin 8×40 (8 tane satır, 40 tane sütun) bir satır taramalı kayan yazıyı ele alalım. En üsteki satır aktif edilir ve daha sonra o satıra ait bilgiler sütunlardan verilir. Bu yaklaşık 5ms kadar kısa bir sürede olur ve satır pasif edilir. Geri kalan 7 satırda da aynı işlemler tekrar edilir. Aşağıdaki resim anlamamıza yardımcı olucaktır.
1.Satır Aktif
8.Satır Aktif
Tüm satırlara bilgiler sırasıyla gönderildikten sonra insan gözü yanılgısından dolayı görüntü aşağıdaki gibi olur. Son olarak kaydırma işlemi yapılır.
Avantajı; sütun sayısı ne kadar artarsa artsın kırpışmalar ve titreşimler olmaz.
Dezavantajı; sütun sayısı arttıkça aynı anda yana led sayısı da artar ve yüksek akım çekimine neden olur.
2- Sütun taramalı kayan yazı: Satır taramanın aksine sütunlar taranır. Yazılımsal mantık olarak daha basittir, ancak sütun sayısı arttıkça tarama süresi uzadığından kırpışmalar ve titreşimler oluşur. Örneğin, 120 sütunlu bir devre düşünelim. Sütunları 3 er ms aktif edersek, 3*120 den 360 ms eder ki bu çok uzun bir süre.
Ama kayan yazı mantığını anlamak için sütun taramalıyla başlamak daha iyi olur. Bugün bizlerde bunu yapacağız. Öncelikle led bağlantılarına bakalım.
Resimdeki her 1. satırda bulunan ledlerin anot (+) uçları birbirine bağlanır. Diğer satırlara aynı işlem uygulanır. Her bir sütunda bulunan ledlerin katot (-) uçları birbirine bağlanır. Bu bağlantının amacı istenilen ledin yakıla bilmesidir.
Peki yazılar nasıl kayıyor? Bunun için shift register entegreleri kullanılır. Bunlar anlık kayıt yapabilen entegrelerdir. En çok kullanılan ise 8 bitlik kayıt yapabilen 74HC595 entegresidir.
Vcc : +5V giriş ucu.
Gnd : Şase ucu.
Q0….Q7 : Çıkış uçları.
OE : Entegreyi aktif etme ucudur. 0 konumunda aktif, 1 konumunda pasif olur.
MR : Entegreyi resetler. 0 konumunda resetler.
DS : Bu uç ile entegreye hangi bilginin gönderileceğini seçeriz. Yani 1 – 0 bilgisi.
SH_CP : Bu uç ile DS ucundaki bilginin kaçtane yükleneceği şeçilir. Bunun için SH_CP ucuna clock sinyali gönderilir. Clock sayısı kadar bilgi entegreye yüklenir. Unutmayalım ki entegre 8 bitliktir.
ST_CP : SH_CP ile yüklenen bilginin çıkış uçlarına aktarılması sağlanır. Bunun için bir clock sinyali uygulanması yeterli olur.
Bu entegre ile Q0 ucuna 1 yükleyip, o 1 bilgisini istediğimiz süreyle kaydırarak Q7 ucuna göndere biliriz.
Metin bilgisi için PIC16F628A veya PIC16F877A entegreleri kullanılabilir. Bu entegrelerin özelliği ise çok tercih edilmeleri ve internette bir çok örnek uygulamalarının bulunması. Ben 628A kullandım. Fark etmez size kalmış bir şey. Şimdi yazılıma geçelim. Yazılımı ise C dilinde yazdım. Derleyici program ise CCS C Compiler. İşte programımız.
Kayan Yazı Kodu
#include // mikrodenetleyici ismi #device adc=8 #FUSES NOWDT, INTRC_IO, NOPUT,NOMCLR, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD // mikrodenetleyici ayarları #use delay(clock=4000000) // kullanılan kristal değeri #use fast_io(b) #use fast_io(a) #BYTE PORTA= 0x05 //port tanımlamaları #BYTE PORTB= 0x06 #BYTE status = 0x03 #BYTE ADCON1 = 0x9F int i,a,b,c,d;// 8bitlik 5 farklı değişken tanımladık const char dizi[]={ 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 254,64,32,64,254,0, //M 60,130,2,130,60,0, //Ü 254,16,16,16,254,0, //H 254,146,146,130,0, //E 254,32,16,8,254,0, //N 254,130,130,130,124,0, //D 34,190,34,0, //İ 100,146,146,146,76,0, //S 0,0,0,0, //BOŞLUK 254,146,146,146,108,0, //B 254,146,146,130,0, //E 192,32,30,32,192,0, //Y 34,190,34,0, //İ 254,32,16,8,254,0, //N 254,2,2,2,0, //L 254,146,146,130,0, //E 254,144,152,148,98,0, //R 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,}; void kur() { bit_clear(porta,3); bit_set(porta,3); bit_set(porta,1); for(i=0;i<=40;i++) { bit_set(porta,0); bit_clear(porta,0); } bit_clear(porta,1); bit_set(porta,0); bit_clear(porta,0); bit_set(porta,2); bit_clear(porta,2); bit_set(porta,1); } void tetik() { bit_set(porta,0); bit_clear(porta,0); bit_set(porta,2); bit_clear(porta,2); } void main()// { set_tris_a(0x00); set_tris_b(0x00); output_a(0x00); output_b(0x00); while(1)//ana döngü { kur(); // 74hc595 entegrelerini ayarla for(d=0;d<=140;d++)// gönderilen yazının sütun sayısı { for(a=0;a<=3;a++)// 4 kez tekrarla {c=d;//c değişkenini d değişkenine eşitle for(b=0;b<=39;b++) // metinden 40 tane sütun seç { output_b(dizi[c]);//sırasıyla sütun bilgisini b portuna aktar delay_ms(1);// 1 ms bekle c++;// c yi 1 arttır output_b(0x00);// b portunu sıfırla tetik();// 74hc595 i 1 defa kaydır } kur(); } } } }
Kayan yazı programı ve gerekli dosyaları bu linkten indirebilirsiniz.
Sizler için hazırladığım kayan yazı çalışmam. Düşüncelerinizi ve yorumlarınızı lütfen bizim ile paylaşınız yorum kısmından.
Piccolo CNC nasıl yapılır yazımız ilginizi çekebilir.