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 üç bölümü yayınlanmış olan Dot Matrix LCD’lere ilişkin yazı dizisinin dördüncü bölümü.
Öncelikle merhaba.
Hatırlarsanız geçtiğimiz ay prototip devremizi kullanarak LCD’ye ilk komutlarımızı göndermiş ve ekranda “A” harfinin görülmesini sağlamıştık. Tabi bunu yaparken kontak sıçraması bize sorun çıkarmış ve bir toggle devresi ile bunu çözmüştük. Ayrıca “Display On/Off & Cursor“, “Clear Display” ve “Function Set” komutlarının nasıl kullanıldığını da öğrenmiştik.
Bunlar haricinde komut setine göz atmış ve aşağıya doğru kuyruğu olan harfleri göstermek için 5×10 matris’e ihtiyacımız olduğunu görmüştük. Peki karakter setinde olmayan Türkçe harfler veya özel simgeler kullanmamız gerekirse ne yapmamız lazım? Mutlaka LCD’de ilk matris’ten başlayarak mı karakter gösterebiliriz? İstediğimiz yere karakter yazdıramaz mıyız? Gibi soruların cevaplarını arayacağız.
ADRESLEME
Addressing
Modüle enerji verildiğinde, imlecin ilk satırın başına yerleştiğini hatırlayın. Bu $00 adresidir. Her karakter girilişinde, imleç bir sonraki adrese hareket eder, $01, $02 vb. imleç adresinin bu otomatik artışı, karakter dizilerinin çok kolay girilmesini sağlar, her bir karakter için farklı bir adres vermek gerekmez.
Ancak ilk satır başında farklı bir yere bir karakter yerleştirmek için bu gerekli olabilir. Bu durumda, yeni bir başlangıç adresi bir komut olarak girilmelidir. $00 ile $7f arasındaki herhangi bir adres girilebilir, toplam 128 adres.
İki satırlı modüllerde her satırda 40 olmak üzere toplam 80 display konumu vardır, aynı şekilde tek satırlı modüllerde de 80‘i de aynı satırda olmak üzere 80 display konumu vardır. Bu durum biraz karmaşıktır, çünkü tüm display konumlarının aynı zamanda görülür olması gerekmez.
Adreslemeyle ilgili deneme için; LCD’yi önce, iki satır modu, 8-bit veri ve 5×7 formatı olacak şekilde “Function Set” komutu ($38) kullanarak ayarlayın. Geçen ayki makalede yer alan komut setini incelerseniz bu komut için son iki bit’in “X” olarak gösterildiğine ve bu nedenle önemsiz olduğu, “1” veya “0” olarak ayarlanabileceğine dikkat ediniz.
Devam etmeden önce birkaç açıklama yapmakta fayda var, bu aşamadan sonda RS anahtarını komut veya karakter girişine göre ayarlamanızı veya veri girildikten sonra E butonuna basmanız gerektiğini hatırlatmayacağım. Bunları artık biliyorsunuz kabul ediyorum.
Display On/Off & Cursor komutunu kullanarak, display’i açın ve imleç’i yanıp sönen alt çizgi şeklinde ayarlayın, (gerekli kod $0F). Şimdi imleç’i $08 adresine ayarlayalım. Bu “Set Display Address” komutunun kullanılmasıyla, $88 ile yapılabilir. Bu komuttan sonra imleç karakter’in girileceği yer yani display’deki 9. konuma atlayacaktır. Değişik display adreslerini deneyerek imlecin konumlarını not alın. Dikkat ederseniz $28‘den $3F‘e ve $68‘den $7F‘e kadar olan adresler hiçbir display tipinde kullanılamayacaktır. Bunun nedeni “Set Display Address” komutundan kaynaklanmaktadır. Ancak adresler ve display konumları arasındaki bağlantı, kullanılan modülün tipine bağlı olarak değişiklik gösterir. Aşağıda tipik modüllerin grafiklerini görebilirsiniz.
İki satırlı modüllerde genelde ilk satır adresi $00‘dan, ikinci satır ise $40‘tan başlamaktadır. Aşağıdaki grafikte gösterilen tek satırlı modül, aslında ilkinin sağ tarafına ikinci satırı yerleştirilmiş iki satırlı bir tiptir. Tek satır modunda, sadece ilk 10 karakter görülür. Daha mükemmel olan 4 satırlı modül, gerçekte iki satırlı tiptir. Bu satırlar birbirinden ayrı yerleştirilmiştir. Bunlar, adreslemeyi biraz karmaşık hale getirmektedir, ancak az bir yazılımın kullanılmasıyla halledilebilir.
DİSPLAY’İ KAYDIRMA
Shifting the Display
Hangi boyutta LCD modül kullanılırsa kullanılsın, her zaman yazılabilir 80 display konumu vardır. Daha küçük boyutlarda, 80 konumun hepsi modülün görülebilir pencerelerine yerleşemez, ancak sağa veya sola kaydırılarak hepsinin görülmesi sağlanabilir. Bu işlemin dikkatlice yapılması gerekir, çünkü adresleri ve bunların ekrandaki konumları değiştirmekteyiz.
Kaydırmayla ilgili deneme için, ilk olarak uygun Function Set, Display On/Off & Cursor komutlarını ve eğer gerekliyse Clear Display komutlarını girin. Daha sonra, $41‘den $5A‘ya kadar alfabenin tüm harflerini karakter verisi olarak girin.
16 karakterli bir display’de, sadece A‘dan P‘ye (alfabenin ilk 16 harfi) görülecek ve imleç display ekranının sağ tarafından kaybolacaktır.
Şimdi tüm display konumlarını sola doğru kaydırmak üzere “Cursor/Display Shift” komutu kullanılabilir, böylece Q‘dan Z‘ye harfler görülebilir. Komut $18‘dir. Komutun her girilişinde (ve E butonunun her kullanılışında) karakterler bir hane sola kayacaklardır. Cursor, Z harfinden hemen sonra sağ taraftan tekrar görülecektir. Kaydırma işlemi devem ettirilirse ilk girilen harfler tekrar sağ taraftan görülmeye başlayacaktır. Kaydırma sonucunda, display konumları tam bir tur atmış olacaktır.
$1C komutu ise karakterleri sağa doğru kaydırır. Burada unutulmaması gereken, karakterlerin yeni adreslere taşınmadığı tüm adres bloğunun, display penceresi altında, sola yada sağa hareket ettiğidir.
Eğer display konumları eski orijinal konumlarına kaydırılmazsa, $00 adresi artık display’in sol kenarı olmayacaktır. Bir miktar kaydırmadan sonra, Set Display Address komutunun $80 değerini girerek nereye kaymış olduğunu görebilirsiniz.
“Display & Cursor Home” komutu ($02) hem imleç’i adres $00‘a döndürür, hem de $00 adresinin tekrar display’in en sol kenarına gelmesini sağlar. Bu komut, kaydırma ve adres ayarlama işlemi biraz kontrolden çıktığında, bilinen iyi bir başlama konumuna geri gelmeyi sağlamakta kullanılabilir.
“Clear Display” komutu, “Display & Cursor Home” komutuyla aynıdır, anca aynı zamanda display konumlarını da temizler.
“Cursor/Display Shift” komutu için söylenebilecek son şey de, imleç’in kaydırılmasında da kullanılabileceğidir. Bu basitçe, imleç adresinin azaltılması veya artırılmasıyla ve daha az yaygın olmakla bir
likte, display’in kaydırılmasıyla yapılabilir. Bunların her ikisi de aynı komutla yapılabilir.
KARAKTER GİRİŞ MODU
Character Entry Mode
Komut tablosunda listelenen bir başka komut da “Character Entry Mode” komutudur. Karakterler otomatik artma kullanılarak girilebildiği gibi otomatik azalma kullanılarak da girilebilir. Bununla birlikte, otomatik artma veya azalmayla beraber kaydırma işlemi de mümkündür.
Bir hesap makinesini düşünün. Başlangıçta, display’in sağ tarafına tek bir sıfır yerleşir. Sayılar girildikçe, cursor yine en sağda kalacak şekilde sola doğru kayarlar. Bu karakter giriş modu LCD modülünde gözlemlenebilir. Bir başka deney için biraz zaman;
Öncelikle, uygun Function Set, Display On/Off & Cursor komutlarını gönderin. Daha sonra, 16 karakterli display varsayarak, cursor adresini $10‘a ayarlayın. Sonra, “Character Entry Mode” komutunu ($07) gönderin. Bu, otomatik artma/display’i sola kaydırma için giriş modunu ayarlar.
Son olarak, onluk 0’dan 9’a birkaç sayı girin, yani $30‘dan $39‘a kadar olan karakterler, normal bir hesap makinesinde olduğu gibi, sağ kenardan görülmeye başlayacak ve başka karakterler girildikçe sola doğru kayacaklardır.
Komut tablosundan görüleceği gibi, dört farklı Character Entry Mode vardır ($04‘dan $07‘ye) vardır. Bunların her biri günlük hayatta farklı uygulamaları vardır.
Önümüzdeki ay, kendi karakterlerimizi nasıl oluşturacağımızı ve LCD ile 4-bit iletişimi nasıl yapacağımızı inceleyeceğiz. Ayrıca bunlarla birlikte LCD’yi kullanabilmek için gerekli olan bilgileri öğrenmiş olacağımız için PIC ile LCD kontrolüne de kısa bir giriş yapabiliriz. Hoşça kalın.
Sedat ÖZTUNALI
hpre2@yahoo.com
http://www.elektrosite.net/