Elektronik Devreler Projeler Elektronik ve biraz daha fazlası İletişim - Araçlar - Dikkat - Topluluk
Elektronik / Mikrodenetleyici Projeleri/

T6963 240×128 GLCD Driver

Sponsorlu Bağlantılar

Uzun süredir yüksek lisans maratonundan gerek sitemle gerekse çalışmalarımla ilgilenme fırsatı bulamamıştım. Bir proje için elime geçen ve benim uzun süredir ilgilenmeyi istediğim, çoğumuzun hayallerini süsleyen (mono LCD konusunda) T6963 ile çalışma fırsatını en sonunda yakaladım. Her ne kadar geçtiğimiz yaz, bu sıralar, bu GLCD türünü simülasyon ortamında çalıştırsam da gerçekte beklediğim karşılığı görememek beni oldukça üzmüştü. Ben de kolları sıvayıp hem çalışır GLCD driver’ı hem de biraz RTOS ile projemi süsleyip çalışmama devam ettim. Burada ilgili proje hakkında bilgi vermeyecek olsam da bu çalışmada kullandığım ve düzenlediğim T6963 driver’ımı sizlerle paylaşmak istedim.

Öncelikle her çalışmada, özellikle daha önce kullanılmamış bir donanımla çalışırken seri port ya da bir benzeri bilgisayar iletişiminin hata çözümlemede oldukça faydalı olduğunu söyleyebilirim. Bu çalışmada da, bu özelliği sıkça kullanmam bana hız konusunda oldukça yarar sağladı.

Biraz çalışmamdan bahsedecek olursak; T6963 serisi IC kullanan GLCD’ler için öncelikle yapılması gereken busy bitlerinin kontrolüdür. Özellikle bu kontrol, T6963 kullanan bu GLCD için hayati bir öneme sahiptir. Busy durumunun algılanması sağlamak için kullandığım ABG240128N00 nolu GLCD için yapılması gerekenler sırayla şöyledir;

  • CD=H
  • WR=H
  • CE=L
  • RD=L
  • D0~D7 oku

Burada okunan değerin ilk iki bitinin H seviye olması yeterlidir.

Daha sonra ise yazım, komut gönderim, okuma gibi klasik kodlamaları yapmak gereklidir. Bu konuda ise aşağıdaki zamanlama diyagramı bize oldukça yarar sağlamaktadır.

t6963-timing

Her ne kadar bu grafiği okuması zor görünse de aslında iyi bir takiple işin çok da basit olduğu görülebilmektedir. Örneğin bir byte veri gönderimi ele alındığında sırasıyla şunlar yapılmalıdır;

  • CD=0
  • CE=0
  • RD=1
  • WR=0
  • D0~D7 yaz
  • RD=1
  • WR=1
  • CE=1

Tüm bunlar ele alındığında, oluşturulan kütüphane ve PIC18F452 kullanılarak yapılan çalışmanın sonuçları aşağıdan görülebilmektedir.

T6963-test-4

T6963-test

T6963 kütüphanesini yazarken C18 derleyicisini kullandım. Açıkçası herkesin ilk soracağı soru olan Hi-Tech yerine neden C18 sorusuna cevap olarak C18 derleyicisinin biraz da olsa derinlemesine incelemek isteyişim diyebilirim. OSA RTOS’un sorunsuz çalıştığı fakat sprintf gibi çoğu fonksiyonda, bellek bölümlemelerinde Hi-Tech’e göre kullanıcıyı daha fazla yoran bir yapısı olduğunu düşündüğüm C18’i açıkçası çok sevdiğimi söyleyemem. Son olarak font konusunda da yukarıdaki resimlerde gördüğünüz üzere gerek kullandığım mikrodenetleyicinin düşük hafıza kapasitesi, gerekse projem için gereksiz oluşundan dolayı üstüne çok fazla düştüğüm söylenemez.

Projede kullandığım GLCD’nin datasheet’ini ve kütüphane dosyası: t6963-240-128-glcd-driver.RAR

Kütüphanede çok fazla açıklama yazmadığımdan merak ettiğiniz fonksiyonların işlevlerini ya da özelliklerini bana yorum kısmından iletebilirsiniz.

Herkese çalışmalarında başarılar dilerim..

  • ilker

    Merhaba, üstat kodlarını indirdim fakat CCS C göre ayarlayamadım. Yardımcı olabilir misin?

  • FxDev

    @İlker: Maalesef CCS C konusunda çalışmayı tercih etmediğimden kod yapısını bilmiyorum. Takıldığınız noktaları söylerseniz yardımcı olabilirim.

  • ilker

    Ben yazıyı dikeyde yazdırmak istiyorum ama nasıl yapacağım konusunda pek fikrim yok (-90 rotate)?

  • Zeynel A. Delikan

    CCS C konusunda çalışmamayı tercih etmenizin nedeni Ansi C yapısından farklı bir yön seçmiş olmalarımıdır ?

    Sorum sizi şaşırtmasın, bu aralar benzeri kaygılar nedeni ile bende CCS C konusunda terddüt yaşıyorum ve fikriniz bu anlamda önemli olabilir.

    Saygılarımla.

  • FxDev

    CCS C’yi seçmememin en büyük nedenlerinden biri başta ANSI C uyumsuzluğu olsa da insanı tembelciliğe iten diğer yömnü de unutulmamalı. Örneğin GLCD_write(bilmemne) yazıp, ben artık PIC biliyorum, GLCD sürüyorum demek komik oluyor. Elbette amatör çalışmalarda hiç bir mahsuru yok fakat yarın öbür gün CCS’de olmayan bir fonksiyon yazmak zorunda kaldığınızda aslında CCS’in o kadar da iyi olmadığını görüyorsunuz.

    Datasheetten kopuk fonksiyonlarına değinmiyorum bile. Örneğn datasheette RA0=1 yaptığımda o pinin 1 olacağı söylense de CCS’de port_high vb. gibi fonksiyon çağırmak bana abes kaçıyor. Ben 16F uygulamalarda Hi-Tech 18F’te Hi-tech ve özellikle şu sıralar C18 daha sonrasında ise C30. RTOS kullanmaya başladığımdan beri ise C18′e ağırlık veriyorum. MPLAP X uyumlu olması da buna bir etmen.

  • Mustafa ATALAY

    Hocam tebrik ederim. Sizden bir ricada bulunacaktım tabi mümkünse, grafik lcd sürmek için yukarıdaki örnekte anlattığınız gibi baştan sona datasheet örneklemeli bir ders hazırlayabilirmsiniz. Biliyorum çok zamanızı alır. Benimki sadece rica. Teşekkürler.

  • FxDev

    Normal piyasadaki GLCD’lerin çalışmalarını Hi-Tech kitabımda anlatmıştım fakat bu tür GLCD’ler için elimde örnek olması gerekiyor. Maalesef elimdeki projeyi gerçekleştirdiğimde bu GLCD’yi sahibine iade ettim ben.

  • Mustafa ATALAY

    Teşekkürler üstad. ozaman anlayamadığım bir noktayı sorsam ? zamanlama diyagramını nasıl okuyup yorumluyorsunuz sizin yukarıdaki verdiğiniz örneği ve grafiği inceliyorum ama kavrayamadım. grafikteki üst noktalar high alt noktalar low’ mu oluyor ? kısacası
    •CD=0
    •CE=0
    •RD=1

    bunların bu işlem sırasını grafiğe bakarak nasıl yorumlamamız gerekiyor ?

  • FxDev

    Şeklin bir çıktısını alın, elinize de bir cetvel, çizgilere dikey şekilde sağa doğru ilerletin. O şekilde ilerlerken hangi sinyalin ne zaman yüksek, ne zaman düşük olması gerektiği o şekilde çok kolay çıkabilir :)

  • Mustafa ATALAY

    Süper anladım hocam :)

    •CD=0
    •CE=0
    •RD=1
    •WR=0
    •D0~D7 yaz
    •RD=1
    •WR=1
    •CE=1

    Sizin 1 bytelik veri gönderme paketine bakıyorum sonra grafiğe ama hala yorumlayamıyorum bizim kafa az kıt :)

  • Mustafa ATALAY

    Hocam bunu sizden istemek doğru değil ama bende Raio8835 (320×240) çipsetli lcd var ders hazırlamak isterseniz onu göndereyim bu tarzda ders hazırlayacak bir şahıs bilmiyorum ben türkiye çapında yok :) gaz veriyor olarak algılamayın. :)

  • FxDev

    @Mustafa: Datasheete var mı acaba ilgili GLCD’nin. Pin yapıları falan nasıl? Resmini falan gönderirsen bakmak isterim :)

  • Mustafa ATALAY

    Eywallah teşekkürler üstad.

    Datasheet: http://www.4shared.com/document/bf37zk0B/CM320240-3.html

    Resim: http://www.4shared.com/photo/zSJHoLnj/Adsz.html

    Lcd de 3 adet ayrı ayrı pin grubu var ben J1 pin grubunu kullanıyorum şu anda ccs ile kodları deniyorum ekranda yazı gözüküyor ancak lcd çok sapıtıyor bi türlü karalı çalıştıramadım. ayrıca lcd’de 2 ayrı çipset modu var 6800 ve 8080. bu komutların kullanıldığı pin grubu J2 pin grubuna tanımlanmış ben header pin bağlayıp J1 den sürdüm.

  • FxDev

    Şu an telefondan girdiğimden göremiyorum fakat pazartesi günü mail üzerinden iletişime geçeceğim senle..

  • Mustafa ATALAY

    Teşekkürler fırat hocam. Süper ikili olabiliriz :)

  • Cemil AKTAŞ

    Hocam elllerine sağlık. Fakat delay.h dosyasını nerden bulacam onu da verirseniz sevinirim

  • FxDev

    @Cemil: delay.h dosyası Hi-tech klasörünün içerisinde mevcut olan klasör. Eğer o işinizi görmezse bir timer kullanarak kendiniz yazabilirsiniz.

  • Hakan K.

    Fırat C18 derleyicisi 18 serisi PIC ler, C30 derleyicisi 32 bit veya 33 serisi PIC leri programladığını düşünmüştüm hep, acaba C30 derleyicisi ile bütün picleri programlana bilirmi yeya bu derleyiciler kendi aralarında pic leri paylaşmışmıdır. Birde hocam aşşağıdaki iki satırdan birinde , diğerinde “”
    işareti kullanılyor, ikiside kütüphane olduğu halde, bu işareti neye tercih ediyorsunuz.
    #include
    #include “glcd.h”

  • FxDev

    @Hakan: Hakan küçük büyük işareti ile tanımladığın kütüphaneleri derleyicinin kendi klasöründe, tırnak işareti ile tanımladığında ise proje klasörünü de dahil ederek kütüphane ekleniyor.