Not 12: Satır Taramalı Kayan Yazı

Yayınlandı: 22 Ocak 2012 / Microchip PIC Programlama...
Etiketler:, , , ,

  Daha önceki dersimizde sütun tarama yöntemini kullanan bir kayan yazı sistemi tasarlamıştık. Sütun taramalı kayan yazıda sütun sayısı arttıkça çok büyük problemler ortaya çıkıyor. En önemlisi ise tarama süresinin artmasından dolayı yazının yanıp sönemeye başlaması. Bu istenmeyen bir durum. Bunun sebebine gelecek olursak ;her sütuna diyelimki 2 ms süre ayırıyoruz. Eğer benim kayan yazım 80 sütunlu ise bütün sütunların taranması 80×2=160 ms edecektir. Bu da demek oluyorki yazımızın başlangıcında yanan ledler, yazının sonuna gelindiğinde sönmüş olacaklardır. Bu yüzden yazının tamamını aynı anda göremeyeceğiz. Bu problemin önüne geçmek için satır tarama yöntemini kullanacağız. Bu yöntemde sütun sayısı ne kadar artar ise artsın satır sayısı değişmeyeceği için tarama süresi değişmeyecektir. Böylelikle kayan yazımızı istediğimiz kadar uzatabiliriz. Sütun sayısı arttıkça her satırdan geçen akım miktarı artacağı için PIC’in pinleri bunları karşılayamayacaktır. Dolayısı ile burada akımı karşılatyabilmek için ULN2003 kullanmak zorunda kaldık. Daha uzun sütunlu devrelerde ise mosfetler veya transistörler kullanılabilir. Bu sistemde ortak anodlu 5×7 dot matrix displayleri kullandım. Bu display türünü kullanmış olma sebebim ise 74Hc595 isimli kaydırmalı kaydedici (shift register) entegresini kullanmış olmam. Bu entegrenin çalışması girişinden aldığı seri bilgiyi çıkışına paralel olarak aktarmak olarak özetlenebilir.

 

Şekilden de görüldüğü üzere bu 74hc595 16 pinli bir entegredir. 8 adet çıkışı bulunur. Pinlerinin görevlerini sıralayacak olur isek;

  • Q1-Q7 numaralı pinleri çıkış pinleridir.
  • DS ucu istediğimiz verileri entegreye bit bit ,teker teker aktardığımız pindir. Bunu yapabilmek için SHcp pininden her defasında bir pals göndermek gerekir.
  • STcp pini ise istediğimiz bütün veriler gönderildikten sonra bu verilerin entegre çıkışında görülmesine yarar. Bütün verileri gönderdikten sonra bu pine bir pals uygulamak gerekir.
  • MR reset için kullanılır. Görüldüğü gibi üzerinde bir çizgi vardır. Bu “ters” anlamına gelmektedir. Yani 1 veririsek entegre bunu 0, 0 veririsek  ise 1 olarak algılar. Yani reste atmak için bu pine 0 vermek gerekir.
  • OE yine ters çalışmaktadır. Bu pin yine çıkışları aktif veya pasif etmek iöin kullanılır.

İstenilen sayıda 74hc595 entegresi arka arkaya bağlanarak seri bağlantı oluşturulabilir. Bu sayede mikrodenetleyicimizin bir adet pinini kullanarak istediğimiz sayıda çıkış elde etmek mümkündür. Fairchild marka 74hc595ler 30MHz hızında çalışabilme kapasitesine sahiptirler.

İsterseniz şimdi bu entegrenin devremizde nasıl kullanıldığına bakalım;

Büyütmek için tıklayın…

Devre şemasından da görüldüğü gibi 50 sütunlu bir kayan yazı devresini sürebilmek için 7 adet 74hc595 kullanmak gerekir. Gerçi son 74hc595’in sadece iki adet çıkışı kullanılmıştır.

Yazıdaki uygulamanın kodlarına , devre şeması ve baskıdevresi için bağışta bulunarak bana mail yoluyla ulaşabilirsiniz.

Kodları yazmak benim biraz zamanımı aldı. Kayan yazı yapmak uğraştırıcı bir iş. Hele ki sıfırdan tasarlıyorsanız…

Aşağıda yapmış olduğumuz devrenin bir videosu var. Kameramızın kalitesizliğinden dolayı görüntüde atlamalar oluşmuş. Videodan satır taramanın etkisi görülebiliyor. Yukarıdan aşağı doğru inen çizgileri görebiliyorsunuz. Çıplak göz ile bunların görülmediğini ekleyelim…

 

 

İyi çalışmalar dilerim…

 

yorum
  1. Hakan Murat Sağlam dedi ki:

    Elektrik Elektronik Müh. 2. Sınıf öğrencisiyim Pic programlama ile ilgilenmeye yeni başladım internette böyle kaliteli sade ve anlaşılabilir ve sürekli güncellenen eğitim bulmak çok zor çoğu site bir hevesle başlıyor 1-2 yazı yazıyor sonra bir bakıyorsun arkası gelmemiş o yüzden mikrodunya.wordpress yazarına çok teşekkür ediyorum yazılarınızın devamını bekliyorum
    iyi günler..

  2. Eray dedi ki:

    hocam pcb si var mı acaba

  3. GÜNDÜZ dedi ki:

    kısa ve güzel bişey hocam.. bende yaptım ufak değişiklikler yaptım .. mikroC ile çok uğraşmıyorum ama zor olmadı..

    çok güzel olmuş çok teşekkür ederim hocam saygıalr

  4. hakankoc dedi ki:

    Hocam

    Konular harika ben şuan bir proje yapmaya çalışıyorum ama bir türlü yapamıyorum. En az 20 karakterin görünmesi 20 adet 7×5 dot matrix kullanmak istiyorum ve bilgisayardan bağımsız klavye kontrollü olmasını istiyorum sizde bunun benzeri bir devre varmı ? yardımcı olursanız çok sevinirim.

    • mikrodunya dedi ki:

      Ben bugüne kadar bahsettiğiniz gibi bir cihaz tasarlamadım. Fakat yakında android cep telefonlarından kontrol edilebilen bir kayan yazı devresi yapmayı planlıyorum. Sizin bahsettiğiniz şekilde de yapılabilir elbette. PS/2 klavyeler için MikroC kütüphanesi mevcut.

  5. Özkan dedi ki:

    595 entegresinin kullanımını gösterdiğiniz için gerçekten çok teşekkür ederim, uzun zamandır bu entegreninin gerçekte kullanılmış bir devresini aramaktaydım. Bir sorum olacak , kodlarda hiçbir değişiklik yapmadan ard ardına 595 bağlayarak ekranı uzatmamız mümkün mü acaba? Rİca etsem kodaların satır satır ne işe yaradığını açıklarsanızda çok sevinirim. Teşekkürler

    • mikrodunya dedi ki:

      Kodlarda degisiklik yapmak gerekli uzatmak icin. Ama sadece bir yerde bir sayi degisikligi yapmak lazim. Biraz daha inceleyin, bulamazsaniz size soylerim yerini.

      • tahsin öcal dedi ki:

        kolay gelsin hocam usb ile kontrolü devre yapmaya çalışıyorum bu devre ile bu mümkünmü

      • mikrodunya dedi ki:

        Tabiki mümkün. Yazacağınız metini usb’den göndereceksiniz sadece. Bunun için 18F2550 kullanabilirsiniz ya da FTDI gibi çipleri kullanarak aynı işlemciyi de kullanabilirsiniz.

  6. Serdar ŞENOL dedi ki:

    Merhaba,
    Zamanın birinde tek bir dot matrisle kayan yazı projesi yapmıştım. Şuan hafızamda kalanlardan hatırlıyorum ki, sıkıntı çekmiştim. Sebebi ise, ayaklarının hangi noktalardaki ledleri nasıl yaktığını bulmak için çok zorlanmıştık. Benim buradaki en büyük korkumda bu. Renk katması açısından bu projeyi bende yapmayı düşünüyorum, tabii izniniz olursa? Dot matrislerin marka model hakkında hiçbirşey söylememişsiniz? Ben bunlar için oturupta ledleri kendim dizsem nasıl bir yol izlememi tavsiye edersiniz? Bir de son sorum şu olacak, bir defa da en çok kat karakterli bir yazı yazabiliriz?
    Sizin yazdığınız yazı bakılırsa, boşlukları da sayarsak 27 karakter var, bu direkt yükseltsek bir zararı olur mu?

    • mikrodunya dedi ki:

      Hocam tabiki yapabilirsiniz. Marka model olarak üzerlerinde DO5571-N-B-WC yazıyor. Ledleri kendinizde dizebilirsiniz tabiki, ortak anot olacak şekilde. Mantık satır ve sütun uçlarını birleştirmek. Yazı boyunu arttırabilirsiniz tabiki, fakat işlemci hızınız arttıkça yazı boyutu artsa da sıkıntı olmaz. Uzun bir yazı yazacaksanız hızlı bir işlemci kullanmanızı tavsiye ederim.

  7. Ahmet dedi ki:

    “S” harfi ve küçük harfler sadece bende mi çıkmıyor acaba? Proteusta şuan simülasyon yapıyorum fakat S harfi yerine bir sonraki harf çıkıyor. SEL yazmak istediğimde EEL gibi.

  8. ahmet dedi ki:

    öncelikle sizi tebrik ediyorum çok faydalı paylaşımlar yapıyorsunuz başarılarınızın devamını dilerim.sormak istediğim birkaç sorum var ..
    1) 8×8 kullandığınız matrixler ortak anotlumu,bilim teknikte anotlar bağlı fakat katot iç yapısını göstermiş aklım karıştı,ısısta pin numaraları sırayla 1,2,3..8..16 diye gidiyor fakat gerçekte o şekilde değil.1 pinin kaçıncı satır olduğunu bilmiyorum mesela,rica etsem ısıstaki tüm pinlerin gerçekte hangi satır ve sütun olduklarını bana yazarmısınız?(anot için)

    2)bu paylaşmış olduğunuz devrenin ares çizimi elinizde mevcutmu acaba ?

    • mikrodunya dedi ki:

      Güzel yorumunuz için teşekkür ederim.
      Baskı devreli olan çizim elimde mevcut. Fakat 16f876A kullanılmıştı onda.
      http://www.mediafire.com/?x9t834jcax7jgtj
      Dot MAtrix displayler piyasada ortak anot ve katod olmak üzere çok farklı boylarda bulunabilirer. Uçları her birinde farklı olmakla beraber, bunların tespiti tamamen size kalmış. Elinize kağıt kalem ve avometre alarak uçları kendiniz tespit etmelisiniz.
      İyi çalışmalar.

  9. ahmet dedi ki:

    çok teşekkürler sizin gibi yardı sever elektronikçi görmedim gerçekten

    8×8 olanıda elinizde mevcutmu son ricam 🙂

  10. gizem dedi ki:

    güzel paylaşımlar çok güzel bir siteniz var 🙂

    876a ile yapmış olduğunuz devrede 5×7 matrixler ortak anotlumu? birde devre 3 parça halinde bir devrede 876a dan a portarına consil 5 koymussunuz ama diğerinde yok ,ve similasyonda devre yazı geçirmiyor karışık bir şekilde ledler yanarak geçiyor sebebini anlayamadım ?

    ares çiziminizde 5×7 dotmatrixler var ,onların paket dosyasını yükleyebilirmisiniz acaba ?

    teşekkürler

  11. gizem dedi ki:

    devrede fazla dotmatrix kullandığınız için uln2003a kullandıgınızı yazmızsınız sayın mikrodünya,hatta daha büyük devreler için mosfet veya transistör kullanmışsınız ,dediğinizi uygladım hem uln ile hem mosfet ile hem transistör ile fakat üçündede bu komponentleri devreye dahil ettiğimde yazılar bouluyor ve karakterler düzgün geçmiyor bunun sebebini öğrenebilirmiyim? ısıs simüle hatasımı yoksa devre gercekten basılıp yapılsa bu sekıldemı gozukecek bilgilendirirseniz çok sevinirim

  12. gizem dedi ki:

    8×8 dotmatrix için 8 satır oldugundan uln2003 bacakları yetmıyor uln2803 kullanabiilirmiyim?

  13. özkan akay dedi ki:

    insallah bende yaparım ilerde:)

  14. mustafa dedi ki:

    hocam micro c de aynı c kodunu derliyorum fakat hex dosytasını isis atınca çalışmıyor nedeni ne olabilir acaba…

    • mikrodunya dedi ki:

      Kodunuzu ve devre şemanızı görmeden yorum yapmak zor. Herhangi bir not altında bulunan proje dosyasını indirip deneyin.

      • mustafa dedi ki:

        Hocam başlık altında ki program ve sema aynı değişiklik yapmadim.indirdim derledim çalışmadi isis de yardımcı olursanız sevinirim. kodlarda hiç değişiklik yapmıyorum

      • mikrodunya dedi ki:

        Bir uyari cikiyor mu?

      • mustafa dedi ki:

        uyarı çıkmıyor.hayır hocam çıkmıyor.çıkmadığı halde hex çalışmıyor….
        Hocam başlık altında ki program ve sema aynı değişiklik yapmadim.indirdim derledim çalışmadi isis de yardımcı olursanız sevinirim. kodlarda hiç değişiklik yapmıyorum

      • mikrodunya dedi ki:

        Proteusun hangi versiyonunu kullaniyorsunuz ?

      • mustafa dedi ki:

        7.7 sp2 hocam

      • mikrodunya dedi ki:

        Onu güncellemelisiniz. 7.10 yükleyin. Bende problemsiz çalışıyor.

  15. mustafa dedi ki:

    hayır hocam çıkmıyor.çıkmadığı halde hex çalışmıyor….

  16. mustafa dedi ki:

    hocam mail adresinizi verebilirseniz resmini atmak isterim

  17. sercan dedi ki:

    hocam allah razı olsun çok yararlı bilgiler bunlar fırsat olsa da sizi ve sizin gibi yardımsever eğitimcileri okulumuzda görebilsek keşke bilgiye açız resmen. tekrar teşekkürler..

  18. byrmx dedi ki:

    selam . hocam ben bunu 16 satırlı yapmak ıstıyorum mesela. onu nasıl yaparız. sutun ıstedıgımız kadar ekleyebılıyoruz ama 2 tane 8*8 dot matrix i üst üste birlestirip nasıl yaparız. programda nelerı degıstırmelıyız.. kolay gelsın sımdıden tesekkurler

  19. taha dedi ki:

    iyi günler dilerim eğer zamanınızı almıcak olursam bi iki soru sormak istiyorum sizlere. Bu yapılan çalışmayı 2 mt lik bi reklam tabelasına yapabilirmiyim. Kendim esnafım ve böyle bir tabela yapmak istiyorum piyasada yapan çok kişi var ama 2 mt lik bi tabelaya aşağı yukarı 900 lira civarında ücret istiyolar. Kendim yaptığım zaman sizce bu maliyet aşağıya inermi?

    • mikrodunya dedi ki:

      Maliyet tabiki aşağıya iner. Kendiniz yapabilirsiniz fakat buradaki program sadece sağdan sola bir yazıyı kaydırımakta. P10 poanellerde gördüğünüz o animasyonları bu program ile oynatamazsınız.

  20. taha dedi ki:

    bildiğiniz herhangi bi program varmı peki yani kendi uğraşımla çözebilirmiyim dediğiniz programları yoksa çok detayları varmıdır ?

  21. onur dedi ki:

    hocam ben microc ile yeniden derlemek istiyorum.Elimde 16f877a var da.Ama derlerken
    const char *s;
    satırında hata veriyor.Ne yapmam lazım…

  22. mikrodunya dedi ki:

    Dizideki elemanlar saydirilarak boşluga denk gelindiginde durdurulacak bir döngüyle hesaplanabilir.

  23. abdullah dedi ki:

    diziboy=boy*6; ve onun altındaki göster(boy) ve açıklama satırını ve <- sşmgesi nedir açıklayabilirmisiniz

mikrodunya için bir cevap yazın Cevabı iptal et