Kayan Yazı Nasıl Yapılır

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

kayan yazı nasıl yapılır 2.Satır Aktif

Satır taramalı kayan yazı3.Satır Aktif

Satır taramalı kayan yazı nedir4.Satır Aktif

Satır taramalı kayan yazı örnek5.Satır Aktif

kayan yazı6.Satır Aktif

kayan yazı yapımı7.Satır Aktif

kayan yazı yapımı

8.Satır Aktif

kayan yazı yapımı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.

murat mühendis byinlerAvantajı; 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.

Sütun taramalı kayan yazı

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.

shift register entegreleriVcc : +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.

Murat Gül
Murat Gül
Merhaba, ben Murat ve Yıldız Teknik Üniversitesi Elektrik Mühendisliği mezunuyum. Mühendis olmadan önce liseyi Şişli Endüstri Meslek Lisesi Elektronik Haberleşme bölümünü bitirdim ve elektronik bilgimin temelleri lisedeki atölyede atıldı. Kültür derslerinde zayıf bir lise olsa da meslek bilgisi olarak gayet yeterli bir lisedir. Lisede elektronikle o kadar çok ilgilendim ki üniversite sınavında başarısız oldum ve YTÜ Meslek Yüksek Okulu Elektronik Teknolojileri bölümüne gittim. Ancak lise eğitimde gördüğüm şeyleri tekrar etmekten başka bir işime yaramadı ve özel çaba göstermeden bölüm birincisi olarak bitirdim. Bu eğitimin hiç bir işe yaramayacağını anlamam ilk sene olmuştu ve ikinci senemde ders çalışmak yerine DGS sınavına hazırlandım. Sınav sonucunda YTÜ Elektrik Mühendisliği bölümünü kazandım ve bilgilerimi sizlerle paylaşmak için Mühendis Beyinler ailesine katıldım.

8 Yorum

Subscribe
Bildir
guest
8 Yorum
Inline Feedbacks
Tüm yorumları göster
Arıcılık Malzemeleri

Yeni Yazılar

Mühendislik Maaşları

Bunları Gördünüz mü?