Dot Matrix LCD
Yazarımız Sedat Öztunalı, askerlik görevi dolayısıyla ara vermiş olduğu yazılarına yeniden devam ediyor. Eski sayılarımızda ilk dört bölümü yayınlanmış olan Dot Matrix LCD'lere ilişkin yazı dizisinin beşinci bölümü.
Yeni bir yazıdan merhaba,
Geçen ay'da incelediğimiz konuları hatırlarsanız, genel LCD paketleri içerisinde Türkçe karakterlerin bulunmadığını söylemiştik. Ayrıca uygulamalarımızda herhangi bir standardı olmayan karakterlerde kullanmamız icap edebilir. Bu nedenle bu ay LCD'de kendi karakterlerimizi oluşturmayı ele aldık. Ayrıca öyle geliyor ki, aramızda LCD'yi bir mikroişlemci ve/veya mikrokontrolör ile kontrol etmeye sabırsızlananlar var. Bu nedenle zaman zaman oluşabilecek port sıkıntılarını kısmen çözebilecek 4-bit veri iletişimi ele aldık. O halde hafiften konuya girelim artık:)
KULLANICI TANIMLI GRAFİKLER
User-Defined Graphics
$40'dan $7f'e kadar olan komutlar, kullanıcı tanımlı grafikleri programlamak için kullanılır. Bununla deneme yapmanın en iyi yolu, "ekran üzerinde" programlarını yapmaktır. Bu aşağıdaki şekilde yapılabilir;
İlk olarak, uygun Function Set, Display On/Off & Cursor komutlarını gönderin, sonra bir Clear Display komutu çalıştırın ve ekranı temizleyin. Daha sonra da, imleci $00 adresine yerleştirmek için, bir Set Display Address komutu gönderin. Son olarak, sırasıyla $00'dan $07'ye ikili verileri girerek, sekiz kullanıcı karakter konumunu içini görüntüleyin. Bu karakterler başlangıçta saçma sapan şekiller olarak veya bir seri çizgi olarak görülebilir ancak önemli değildir. Zaten amacımız bunları kullanılabilir bir şeyler ile değiştirmek.
Şimdi, kullanıcı karakterlerini tanımlamaya başlamak için, bir Set CGRAM Address komutu gönderin. $40 ile $7f arasındaki herhangi bir değer uygundur. Fakat şimdi, $40'ı kullanın. İmleç ikinci satırın başlangıcına atlayacaktır, bu önemli olmadığından şimdilik göz ardı edin.
Şu andan itibaren girilen veri, satır satır kullanıcı tanımlı grafikleri oluşturacaktır. Şu veri sıralamasını deneyin; $0E, $1F, $0E, $04, $1F, $04, $0A, $11. Ayakları tabana basılı olan küçük bir "çöp adım" display' de görülecektir.
Bir başka sekiz byte'lık kümenin gerilmesiyle ikinci, kullanıcı tanımlı karakter belirlenebilir ve böylece devam eder.
Kullanıcı tanımlı grafik karakterlerinin bağımsız pixellerine CGRAM adresinin nasıl denk geldiği aşağıdaki figürde gösterilmiştir. Sekiz grafiğe kadar programlama yapılabilir ve bu karakterler, karakter kümesinin bir parçası haline geçerler. Bu karakterler, $00'dan $07'ye veya $08'den $0F'e kodların kullanımıyla ki bunlar aynı sonucu verir, çağrılabilir. Yani 64 komut kodu kullanıcı programlaması için elverişlidir.
Temel karakter hücrelerinin gerçekte, sekiz pixel yüksekliğinde ve beş pixel genişliğinde olduğu görülebilir, ancak karakterlerin çoğu sadece üst yedi satır kullanır. Alttaki sıra, genellikle alt çizgi imleci için kullanılır. Her karakter sadece beş pixel genişliğinde olduğundan, sadece 0'dan 4'e veri bitleri kullanılır, sol taraftaki üç bit ihmal edilir.
CGRAM geçici bellektir, bunun anlamı LCD modülünde enerji kesildiğinde, kullanıcı tanımlı karakterlerin kaybolacağıdır. Mikroişlemcinin, program başında kullanıcı tanımlı karakterleri göstermeye kalkışmadan önce, kendi EPROM'undan verileri kopyalayarak bunları LCD'ye yüklemesi gerekir.
4-BIT VERİ TRANSFERİ
4-Bit Data Transfer
Birçok LCD modülünde bulunan HD44780 LCD kontrol entegresi, 4-bit mikroişlemcilerle uyumlu olarak tasarımlanmışlardır. Hala 4-bit modu, PLC tiplerini de içeren mikrokontrolörlerle kullanılacakları zaman oldukça kullanışlıdır.
Bildiğiniz üzere mikrokontrolör Giriş/Çıkış (Input/Output – I/O) pinleri sıklıkla kıymete binen ve tipik bir devrede, çeşitli anahtarlar, displayler ve diğer giriş çıkış birimlerinin bağlandığı bir kontrol elemanıdır. Bu nedenle I/O'ların dikkatlice paylaştırılmaları gerekir. Daha çok I/O pini bulunan daha büyük mikrokontrolörler de vardır ancak bu özellikle maliyeti arttırmaktadır bunun yanında günümüzde fonksiyonellik artarken minyatürleşme de önem kazanmıştır.
Display 4-bit moduna bir kez getirildiğinde (bunu Function Set komutuyla yaptığımızı unutmayın!), birbiri ardına gönderilen komut ve karakterler için, tek byte yerine iki nibble'ın gönderilmesi gerekmektedir. 4-bit modu kullanılırken, sadece D4'den D7'ye veri hatları kullanılır. Prototip test devresinde diğer veri hatlarındaki anahtarları "Lojik 0" konumuna getirip bırakabiliriz çünkü bunlara şuan ihtiyacımız yok.
Normal kullanımda, D0'dan D3'e kullanılmayan veri hatları boşta bırakılabilir veya 4K7 ile 47K arasında bir dirençle iki güç hattından birine bağlanabilir. R/W hattı da toprağa bağlanmadığı sürece, bu pinlerin doğrudan toprağa bağlanması istenilemez. Bu şekilde çıkış modunun set edilmesi sorun yaratabilir.
Güç verildikten sonra, LCD modülü 8-bit modunda olacaktır. Display'i 4-bit moduna getirmek için, ilk olarak Function Set komutu gönderilmelidir, ancak bir problem bulunmaktadır. Düşük dört veri hattına (D0-D3) erişim olmadan sadece komutun yarısı gönderilebilir. Zekice bir tasarım ile, 8-bit/4-bit seçme biti D4 hala erişilebilir durumdadır. $20 komutunun gönderilmesiyle 4-bit moduna geçmek mümkün olabilir.
Şimdi display'i iki satır moduna getirmek için bir başka Function Set komutu gönderilmelidir. Bu iş için $28 komutu kullanacağız daha önce $38 değeri kullanmıştık ancak şimdi kullanılması mümkün değildir. Bu işlem display' i tekrar 8-bit moduna getirebilir. Ayrıca şu andan sonra tüm komut ve veriler iki parça şeklinde gönderilmelidir. Bu nedenle ilk olarak üst 4-Bit, daha sonra düşük 4-Bit gönderilmelidir.
D7, D6, D5 ve D4 hatların, 8-bit'lik kodun sol dördünü yani üst 4-bit'ini $2 (0010)'yi göndererek işe başlayın. Daha sonra aynı veri hatlarına, kodun sağ tarafındaki dört biti yani düşük 4-bit'ini $8 (1000) gönderin. Başlangıçta bu insana biraz güç gelebilir ancak LCD'mizi bir kontrolör kumanda edeceği için bu bir problem değildir.
NOTLAR
Data sheet'ler, bazı koşullar altında, LCD modülüne ilk enerji verildiğinde uygun şekilde başlama konumuna getirilmesi gerektiği konusunda uyarı verirler. Eğer Vdd gerilimi, doğru çalışma değerine yeterince hızlı ulaşmıyorsa, gerecektir. LCD modülüne enerji verildikten sonra, $3X şeklinde üç baytlık bir seri komutun gönderilmesi tavsiye edilir. En uygunu $30 değeri olabilir. Bu, modülün 8-bit modda uygun olarak hazırlanmasını garanti edecektir. Bunları takiben, 4-bit moda geçme (ve tüm diğer komutlar) güvenilir olarak işleyecektir.
Şimdilik LCD modüllerin kontrolleri ile ilgili öğreneceklerimiz bu kadar. Şu ana kadar bir LCD modülü kontrol edebilmek için gerekli hemen hemen her şeyi öğrendik. Bu aşamadan sonra bunları bir mikrokontrolör ile kontrol etmek gerekecektir. Ancak o zaman karşımıza bazı sorunlar çıkacak ve bunların çözüm yolları üzerine düşüneceğiz. Önümüz
deki ay LCD'yi elektronik bir sistemde kullanabilmek için nelere dikkat etmemiz gerekli onları inceleyeceğiz. Hoşça kalın.
Sedat ÖZTUNALI
hpre2@yahoo.com
http://www.elektrosite.net/