Seri HD44780 uyumlu LCD Modül
Merhabalar. LCD’lerin ucuzlaması ve belki de elektronik meraklılarının artık Pic’le sınır tanımaması neredeyse heryerde bu LCD’leri görmemize neden oluyor. Bir elin nesi, iki elin sesi hesabı bir proje ile karşınızdayım. Biz donanımını yaptık, sizde yazılımını yaparak, bilgisayarınızda video izlerken yada masaüstünüzü göremediğiniz herhangi bir anda, bilgisayarınızın CPU fan durumu ve sıçaklığını, winamp’de çalan şarkıların isimlerini, yeni e-mail uyarısını, internetten habeleri, borsa indexini, doların durumunu… bu LCD üzerinde görebilirsiniz. Tabi ki bilgisayarda geliştireceğiniz yazılımla.
Bu projenin amacı, 2×16 Karakter LCD’yi seri porttan bilgisayarınıza bağlayıp, yazacağınız yazılımla bu donanımı kontrol etmek. İlk olarak donanım üzerindeki esnekliğimizi arttırabilecek özellikleri çıkarttım. Bunlar, LCD’nin Cursor pozisyonunun seçilmesi, Satır seçilmesi, sutun seçilmesi ve yazının ASCII formatında yazdırılması. Bu işlemlerin yapılması için gerekli kütüphane bilgilerini de sizlere sunuyorum.
Senaryo
Açılışta LCD başlatılır. LCD’nin başlatılmasının ardından LCD’de başlangıç uyarısı gelir ve versiyonu yazar. Ardından RS232 kullanımı için 16F628’in USART’ı başlatılır ve ekranda LCD ve RS232’nin aktif hale getirildiği uyarısı görünür. RS232 başlatıldıktan sonra test kelimeleri (” Serial LCD, Code is written by TOLGA TASTAN, tolga@aadf.net” ANTRAK antrak.org.tr) gönderilmeye başlanır ve Gönderiliyor uyarısı ekrana yazılır. Bilgi gönderimi tamamlandıktan sonra Gonderildi uyarısı ekrana yazdırılır. Bu işlemlerin ardından RS232 bağlantısından komut seti beklenir ve ilk komut setinden emir alınana kadar Bekliyor… uyarı yazısı yazdırılır ve beklenir.
Ayarlar
RS232
9600baud, 8 Bit, 1 Stop Bir, No Parity
LCD
Hd44780 uyumlu, 2×16 karakter LCD
LCD Ayarları
Komut seti
@*ab
Açıklama
LCD ekran temizleme ve Cursor pozisyonu ayarlama. a ve b değerleri ASCII olarak girilmelidir. LCD temizlemek için ASCI 1 ve Cursor Pozisyonunu Home yapmak için ASCII 1 girilmelidir.
Kütüphane fonksiyonu LCD_fnc(clr,home)’dur,
a, LCD Temizleme
ASCII a=1, LCD Temizle
ASCII a=0, Etkisiz
b=Cursor Home
ASCII b=1, Cursor Home’a döner
ASCII b=0, Etkisiz
Değer Aralıkları
a = 0x2F<a<0x32
b = 0x2F<b<0x32
@*ab | @*11 |
ASCII | @*11 |
Decimal | 64 42 49 49 |
Hexadecimal | 40 2A 31 31 |
@+ab
Açıklama
LCD cursor pozisyonunu ayarlama. a ve b değerleri ASCII olarak girilmelidir. a satır değeri, b sutun değerini belirler. Cursor’u ilk satırın başına almak için (Cursor Home fonksiyonunun muadili) a=1, b=0 gönderilmelidir. Satır için ilk 10 değerde (0..9) ASCII değerleri direk karşılıklarıdır. Ancak 9’un üzerindeki değerler için;
10 için ‘:’
11 için ‘;’
12 için ‘<‘
13 için ‘=’
14 için ‘>’
15 için ‘?’
değerleri girilmelidir.
Kütüphane fonksiyonu Set_LCD(row,line)’dir,
a, Satır değeri
ASCII a=1, 1.Satır
ASCII a=2, 2.Satır
b=Sutun değeri
ASCII b=0, 0.Sutun
ASCII b=1, 1.Sutun
Hex b=30, 0.Sutun
Hex b=31, 1.Sutun
Değer Aralıkları
a= 0x30<a<0x33
b = 0x2F<b<0x40
@+ab | @*20 |
ASCII | @*20 |
Decimal | 64 43 50 48 |
Hexadecimal | 40 2b 32 30 |
Karakter gönderimi
#char
Açıklama
LCD’de cursor pozisyonunun ayarlı olduğu yere 1 ASCII karakter gönderir.
Kütüphane fonksiyonu LCD_Yaz(char)’dır,
Char : ASCII karakter.
Değer Aralıkları
char= 0x20<char<0x7F
#char | #A |
ASCII | #A |
Decimal | 35 65 |
Hexadecimal | 23 41 |
Kullanacağınız donanım, HT44780 uyumlu 2×16’lık karakter LCD Display, MAX232, Pic16F628, birkaç direnç ve kapasitör.
ASCII Tablosu; karakterlere ait değerlerde ASCII tablosundan yararlanabilirsiniz.
Donanımda mikro denetleyici olarak 16F628 kullandım. Maliyet olarak ucuz, USART destekliyor, dahili osilatöre sahip…gibi özellikleri bu mikro denetleyiciyi öne çıkaran özellikler. Dahili osilatör sayesinde dışarıdan herhangi bir osilatöre ihtiyaç duymuyor. Bu sayede sizi hem bu maliyetlerden kurtarıyor hem de kart üzerinde yer kazanmanızı sağlıyor. Ayrıca USART desteği ile güvenli bir RS232 seri haberleşme yapabilmenize olanak sağlıyor. Ayrıca Reset tuşunun giriş olarak programlanabilmesi , dahili osilatör sayesinde OSC bacaklarınında giriş olarak programlanabilmesi ayrı birer özellik.
Eğer kullanacağınız LCD’de arka ışıklandırma varsa BCKLIGHT bacağına bağlayabilirsiniz.
Hatırlatma olarak eklemek istediğim bir şey daha var. MAX232 entegresinde kullanılan kapasitör değerleri seçeceğiniz modele göre değişmektedir. Örneğin piyasada HIN232 olarak satılan ve MAX232’nin muadili olan entegreyi kullanıyorsanız, 1uf ve 0.1uf kullanabilrsiniz. Eğer kullandığınız entegre MAX232 ise aşağıdaki tabloda verilen entegre modeline göre seçilmesi gereken kapasitör değerlerini kullanmalısınız.
Çizdiğim PCB layout sadece LCD display’in büyüklüğünde oldu. Bu PCB’yi CASIL CCM1620C display’i için hazırlandım. Devrenin güç girişi olarak regüle edilmiş 5V DC kullanmalısınız.
Seriallcd.zip seriallcd(pic 16f6238 HEX dosyası)
Simulate.zip simulate(Proteus 6.2 SP5 ISIS simülasyon dosyası)
Schematic.zip schematic(Proteus 6.2 SP5 ISIS şematik dosyası)
Proteus ISIS programında yapılmış simülasyonu çalıştırmak için, Simulate.zip dosyasının içindeki Simulator.DSN dosyasını Proteus ISIS ile çalıştırın. < /p>
Program file bölümüne HEX dosyasını göstermelisiniz. Gözat tuşuna basarak seriallcd.zip dosyası içindeki main.hex dosyasını seçin.
Osilatörü 4Mhz seçin. Program configuration word’ü de 0x3F18 olarak ayarlayın. Artık simülasyonunuz çalışmaya hazır.
PC için örnek programı, bu yazının benzerini, versiyon yeniliklerini verdiğim web sitesine ekleyeceğim. Bu çalışma kesinlikle ticari değildir. İhtiyacınız olan her şey için iletişim kurabilirsiniz.
Hepinize kolay gelsin.
http://www.aadf.net/seriallcd.htm
Tolga TAŞTAN
tolga@aadf.net