Dot Matrix LCD

 

Merhabalar.

Geçtiğimiz aylarda birkaç basit ve pratik alıştırmayla, karakter tabanlı LCD modüllerin yeteneklerine kısa bir bakış atmıştık. Komut setini denemek için tüm gereken, komutların ikili (veya hexadecimal) formda  girişini mümkün kılan, bir seri anahtardı. Bununla birlikte, bir LCD’nin mikroişlemci veya  mikrokontrolörlü bir tasarımda kullanılması durumunda sürülmesi gerekeceğinden bahsetmiştik. Bu aydan başlayarak önümüzdeki 2-3 ay boyunca bunu öğreneceğiz.

 

İYİ ZAMANLAMA

Good Timing

 

Karakter tabanlı LCD modüllerinin çoğunda kontrol elemanı olarak kullanılan HD44780 entegresinin zamanlama gereksinimleri aşağıdaki diagramda gösterilmiştir. Diagram, bazı veri sayfalarında ayrı ayrı gösteriliyor olmalarına rağmen, hem okuma hem de yazma döngülerine ait bilgileri aynı anda sağlamaktadır. Altında gördüğümüz tablo ise, diagramdaki zamanlama parametrelerine ait detaylara yer vermektedir.

 

 

 

Geçen aylarda yaptığımız deneylerde; komutları, deney setindeki anahtarlara basarak display’e gönderilmiştik. Orada ters giden bir şey olmamıştı, peki neden şimdi bu karmaşık zamanlama diyagramına ihtiyacımız var? Aslında bunu çoğumuzun bilmesine rağmen inatla bunu açıklamak istiyorum. Biz insan olarak, bir tuşa bastıktan sonra, bir daha basana kadar bir miktar zaman bırakırız, böylece LCD kontrolörü, bizi kolaylıkla takip edebilir. Mikrokontrolörler  bizim olduğumuzdan daha hızlıdırlar, bir kontrol hattının durumunu saniyede birkaç milyon kez değiştirebilirler. Bu hızda LCD kontrolörü, komutları takip edemez.

 

Yukarıdaki zamanlama diyagramı ve çizelge bize, LCD entegresinin hangi hızla cevap verdiğini göstermektedir, böylece mikrokontrolörü uygun şekilde programlayabiliriz. Ben örneklerimde PIC16F84’ü kullanacağım. PIC hakkında bilgisi olmayan okuyucular arşivde inceleme yaparak Barbaros AŞUROĞLU’nun PIC16F84 hakkındaki yazı dizisini inceleyebilirler. Ayrıca şunu da belirtmeliyim ki, bu noktadan sonraki anlatımlarımda sizin PIC programlama konusunda temel bilgiye sahip olduğunuzu ve uygun yazılım ve ekipmanları kullanabildiğinizi kabul edeceğim.

 

LCD’nin RS hattının doğru Lojik seviyeye ayarlanmasıyla, PIC mikrokontrolörü programlanmaya başlanabilir. Bu hat, LCD’nin veriyi, kontrol komutu olarak mı yoksa karakter bilgisi olarak mı alacağını belirler. Verinin LCD den tekrar okunmasının gerektiği durumlarda, mikrokontrolörün R/W hattını da kontrol etmesi gerekir. Aksi durumda bu hat, test devresinde  olduğu gibi toprağa bağlanabilir. Mikrokontrolör, bu iki hattın her ikisini aynı andan set edebilir veya birini diğerinden önce set edebilir. Bunun gerçekte önemi yoktur. Önemli olan, “E” (Enable) hattındaki seviyenin lojik 0’a yükselmesinden önce, minimum bir zaman periyodu boyunca bu her iki hattın da “geçerli” ve “kararlı” bir durumda olmasıdır. Bu ne demektir dilerseniz bir onu inceleyelim. Elektronik ile ilgisi olan kişiler büyük bir ihtimal ile yukarıdaki figürün ne anlama geldiğini ve LCD’yi bir mikrokontrolör ile hangi zamanlamalara riayet ederek kullanacağını anlamıştır. Ancak ben çoğunluğun bunu anlamadığını varsayarak dikkat edilmesi gereken zamanlamalardan bahsedeyim.

 

Yukarıdaki figürde bu periyot “tAS” (time-address setup) olarak gösterilmiştir ve tabloda minimum 140ns olarak verilmiştir. Bu zaman 140ns’den daha az olmamalıdır. E hattı bir kez yükseldiğinde, en az 450ns geçmeden tekrar düşmemelidir. Bu zaman “tEH” (time-enable high) olarak gösterilmiştir. Ayrıca, E hattı tekrar düşürülmeden önce, sekiz veri hattının tümü kendi uygun lojik seviyelerine ayarlanmalı ve en az 200ns’lik “tDS” (time-data setup) periyodu boyunca beklenerek kararlı hale gelmelerine izin verilmelidir. Burada LCD’nin, E hattı yükseltildikten sonra veri hatlarının set edilmesine izin verdiğine dikkat edin. Geçen sayıdaki deneylerde, E anahtarına basılmadan önce veri yerleştirilmekteydi, ancak her iki duruma da izin verilmiştir.

 

E hattı düşük seviyeye geri getirildiğinde, hesaba katılması gereken iki tutma zamanı daha vardır. “tAH” (time-address hold) parametresi, RS ve R/W hatlarının en az 10ns boyunca, “tDH” (time-daha hold) ise veri hatlarının hiç birinin en az 20ns boyunca değiştirilmemeleri gerektiğini göstermektedir. Bir kısıtlama daha kaldı. E hattı, 500ns tEL” (time-enable low) geçmeden önce, bir sonraki komut için tekrar yüksek duruma getirilmemelidir. Bunun anlamı, E hattı için toplam döngü zamanının 450ns + 500ns olması demektir. “tRF” (time-rise & fall) olarak gösterilen ve 25ns den fazla olmaması gereken düşme ve yükselme zamanları ile birlikte bu değer yaklaşık 1ms olarak hesaplanabilir. Bu, display’e saniyede bir milyon komuttan (veya bir milyon karakterden) fazlası gönderilemeyecek anlamına gelir.

 

 

MEŞGUL DURUMU

Busy Status

 

Bununla birlikte, zamanlama diyagramı tüm hikayeyi anlatmamaktadır. LCD’nin komut ve verileri işlemesi için aktif hale getirilmesi için daha uzun gecikmeler gerekir. Komutların çoğu, LCD’yi 40ms kadar meşgul ederler. Buna karşın, Clear Display ve Display & Cursor Home komutları daha fazla zaman alırlar.

 

Tüm komutların işlenme zamanları aşağıdaki tabloda gösterilmiştir. Tablo, display’e veri yazma ve display’den veri/durum okuma gibi tüm komutları içermektedir. Şuan için “Read Data” ve “Read Status” komutlarıyla bir deneme yapmadık ancak LCD’nin durumunu okumak, onun meşgul olup olmadığını belirlemek için kullanılan bir yöntemdir.

 

 

Pratikte bu komut zamanlamaları için yapılması gereken sadece birbirini takip eden komutlar arasına bir gecikme koymaktır. İlk iki komut, Clear Display ve Display & Cursor Home birkaç faktöre bağlı olarak değişen farklı çalışma zamanlarına sahiptirler. Veri sayfalarında bu farklılıklar için pek fazla şey söylenmemektedir. Bu farklılıklar imlecin $80 adresine geri dönmesini, display’de harflerin kaymamasını ve Clear Display durumunda her bir display adresinin arasına boşluk karakterinin konulmasını içerir.

 

LCD meşgul iken bir önemli durum daha vardır. Bu durum LCD’ye enerji verildikten hemen sonra oluşur. Tam bir hazırlık aşamasının gerçekleşmesi için 10-15 milisaniye’lik bir zaman gerekir. Bu süre zarfında herhangi bir komut çalıştırılamaz. Bu bir mikrokontrolör kullanan devreler için önemli bir durumdur. Programın başlangıcına uygun bir gecikme eklenmelidir, aksi takdirde LCD ilk birkaç komut gönderilene kadar hazır olamayacaktır.  Bu durumda LCD’nin kilitlenmesine sebep olunabilir ve hatta resetlenmesine kadar varabilir.

 

 

YENİ DEVRE

 

Bu aşamadan sonra PIC’leri işin içine almak için yeni bir deneysel devre yapmanın zamanı geldi. Yeni devre tasarımı aşağıda gösterilmiştir. Artık de-bounce devresine ihtiyacımız kalmadı, çünkü mikrokontrolör çok temiz çıkış sinyalleri sağlayabilir. Şemada verilen PIC16F84 entegresini kullanmak şart değildir, 54, 56, 61 ve 71 tipleri de kullanılabilir. Ancak bu durumda pin bağlantılarında bir iki küçük değişiklik yapmak gerekebilir.

 

Bununla birlikte, içlerinde EEPROM bulunduran bir mikrokontrolör versiyonu olduğu için PIC16F84 ile alıştırma yapmak en iyisidir. Mikrokontrolörün saat seçimi RC’ye (direnç/kapasitör) veya herhangi bir XT (kristal) seçeneğine ayarlanabilir. Bu uygulamanın test devresi olması nedeniyle maliyeti düşürmek için ayrıcada buradaki durumda kesin zamanlama ayarı önemli olmadığından RC saat devresi kullanılmıştır. OSC1 girişine bağlanmış C1 kapasitörü ve R1 direncinin değeri, hemen hemen 2MHz’lik bir saat frekansı verecektir. Başlangıçta, yazılım gecikmelerinin yeterince uzun olduğundan emin olmak için, daha düşük değerdeki direnç ve kapasitörden kaçınılmalıdır.

 

 

Bu aylıkta bu kadar bilgi almamız sanırım yeterli olacaktır. Önümüzdeki yazıda yeni devremiz için gerekli PIC programını burada bulacaksınız. Her türlü programlamada meşhurdur “HELLO” veya “MERHABA” yazmak biz farklı bir şey yapıp “ANTRAK” yazacağız. Önümüzdeki ay görüşmek dileğiyle, hoşça kalın.

 

Sedat ÖZTUNALI
hpre2@yahoo.com

http://www.elektrosite.net/





    


ANTRAK Ankara Telsiz ve Radyo Amatörleri Kulübü Derneği
Bakanlar Kurulunun 94/6367 Sayılı Kararıyla Kamu Yararına Çalışan Derneklerden Sayılmıştır.
Design By