2X16 HD44780U LCD Kullanımı ve 8051 Uygulaması

| Haziran 19, 2023 Tarihinde güncellendi
2X16 HD44780U LCD Kullanımı ve 8051 Uygulaması

LED göstergelerin fazla akım çekmesi ve kullanım zorluğu, son yıllarda LCD göstergelerin kullanımını daha popüler hale getirmiştir. İstenilen karakterin daha iyi çözünürlükte elde edilmesi ve yeni üretilen LCD modüllerinin devreye bağlantısı ve programlanmasının kolay hale gelmesi diğer gösterge türlerine göre daha fazla kullanılmasını sağlamıştır. Özellikle karanlık ortamlarda kullanılamaması ilk zamanlarda bir sakınca olarak ortaya çıkmıştı, daha sonra arka plan aydınlatma ile bu sakınca ortadan kaldırılmıştır. Son yıllarda renkli LCD’lerde yaygın bir şekilde kullanılmaya başlamıştır. Yaygın kullanıma rağmen hala fiyatları yüksektir.

Bu deneyde kullanacağımız LCD aslında sadece bir göstergeden ibaret değildir. Akılı bir çevre birimidir, birden fazla karakter içermesi ve bunların belirli hızlarda taranma zorunluluğu üretici firmaları LCD’leri içerisinde osilatörü, sistem mikrodenetleyicisi, kod üreteci gibi birimleri içeren modül olarak üretmelerine neden olmuştur. LCD modüller en son yazılan bilgileri yenisi yazılana kadar göstergede görüntüledikleri için ana işlemciyi fazla meşgul etmezler.

LCD’ler 1 satırdan 4 satıra kadar, 16 karakterden 80 karaktere kadar ve 5X7, 5X10 nokta font gibi değişik ölçülerde üretilip satılmaktadır. Bazıları ise tüm ekran tek bir karakter gibi yapılandırılmıştır, bu türlerine grafik ekran adı verilmektedir. LCD modül ile iletişim TTL standardında 4 veya 8 veri hattı ile yapılır. 4 bit iletişim G/Ç hatlarının başka işler için kullanımını kolaylaştırırken iletişim süresini iki kat uzatmaktadır. LCD modüller veri hatlarının yanı sıra 3 ila 5 adet arası denetim hattına gereksinim duyarlar. Besleme mantık elemanları için 5 volt likit kristal sürücüler için ise farklı bir kaynağa gereksinim duyarlar. İkinci kaynak genellikle birinciden ayarlı potansiyometre yardımıyla elde edilir.

LCD Modül Bağlantı Uçları

LCD modüller üzerinde kullanılan denetleyiciler Hitachi firması tarafından üretilen HD44780U mikrodenetleyicisi standart oluşturmuştur. Bu standarttaki LCD modül bağlantı uçları tablo-8.1’de gösterilmiştir. Bağlantı uçlarını besleme, denetim ve veri olmak üzere üç grupta inceleyebiliriz.

LCD Bessleme Uçları

HD44780U standardında besleme ile ilgili üç uç yer almaktadır. Bunlar Vcc, Vee, Vss’dir. Vss ve Vcc standart TTL gerilimi 0 ve 5 Volttur. Vee ise likit kristal sürücü gerilimidir, değeri de Vcc’den daha küçük olur. Normal sıcaklık tipi ve güçlendirilmiş sıcaklık tipi olmak üzere iki tür LCD vardır. Normal sıcaklık türlerinde TN bileşimli sıvı, güçlendirilmiş sıcaklık türlerinde NTN bileşimli sıvı kullanılır. TN bileşimli sıvı kullanılan modüllerde görüş açısı 40 derece ile sınırlıdır. NTN bileşimli sıvılarda görüş açısı 70 derecedir. Normal sıcaklık modüllerde Vee gerilimi pozitiftir. Güçlendirilmiş sıcaklık modüllerde ise Vee gerilimi GND’ye göre –1 veya –2 Volt olduğunda daha iyi görüntü vermektedir.

Güçlendirilmiş sıcaklık LCD’ler için Vee geriliminin değeri ortam sıcaklığına bağlıdır. Normal sıcaklık LCD’lerin negatif gerilime gereksinim duyulmadığından V0 gerilimin değeri 0.6VLCD Denetim Bağlantıları

LCD denetleyicisinin yavaş olmasında dolayı veri ve denetim hatları bellek haritalı mikroişlemcilerde veri yoluna ve RW hattına ve kod çözücüye bağlamak mümkün değildir. Eğer böyle bir bağlantı yapılıyor ise özellikle RW, EN ve RS işaretleri yavaşlatılarak LCD’ye uygulanmalıdır. 8051 bağlantısı portlar kullanılarak yapılacağından bu hatlar için gerekli gecikme yazılım ile yapılacaktır.

lcd-gosterge-baglantisi
LCD gösterge bağlantısı.

Gösterge: HD44780U mikrodenetleyicisi göstergeyi denetlerken göstergede görüntüleyeceği karakterlerin ASCII kodlarını Gösterge veri RAM’i olarak adlandırılan bellekte saklar 7 bit ile adreslenebilen bu RAM belleğe DDRAM adı verilir. İki satır LCD göstergelerde DDRAM iki satıra bölünmüştür, birinci satırda 00-27H adresleri, ikinci satırda ise 40H- 67H adresleri yer alır.

iki-satir-lcdlerde-ddram-bellek-haritasi

LCD Karakter Kümesi: LCD önceden belirlenmiş veya kullanıcı tarafından belirlenmiş karakterleri görüntüleyebilir. LCD denetleyicisinde bir ROM olan karakter üreteci bulunur, ve bu bellekte 192 karakter kayıtlıdır. Her karakterin tablo-2’de gösterildiği gibi bir kodu vardır ve bu karakterlere kodları kullanılarak ulaşılabilir. 96 adet ASCII karakter kendi koduyla kullanılabilir. 64 adet Japon karakteri ve 32 adet özel karakter ve küçük harfler yer almaktadır. LCD denetleyicisi buna ek olarak kullanıcıların karakter tanımlayabilmeleri için 8 karakter saklayabilme kapasiteli karakter üretme RAM belleğe sahiptir. Bu belleğe kısaca CGRAM adı verilir. Kullanıcı tarafından belirlenen karakterler önce CGRAM’e kaydedildikten sonra buradan kullanılabilir.

lcd-modulun-baglanti-uclari-ve-gorevleri
LCD modülün bağlantı uçları ve görevleri.

LCD Denetim Hatları

EN, RW, RS olarak adlandırılan üç adet denetim hattı vardır. Enable (EN) hattı LCD’ye bilgi göndermek istediğimizi belirtmek için kullanılır. LCD ile iletişim kurmak isteyen program öncelikle bu hattın seviyesini yükseğe çekmelidir. Diğer iki denetim hattının seviyesi yapılacak işleme göre seçildikten sonra veri hatlarına veri yazılır ve EN hattı düşük seviye yapılır bu negatif geçiş LCD denetleyicisini işleme başlatır. Yazaç seçme (RS) hattı gönderilen verinin komut mu yoksa veri mi olduğunu belirtmek için kullanılır. Bu hat DÜŞÜK seviye olduğunda veri hatlarındaki bilgi komut olarak alınır ve işletilir. Eğer bu hat YÜKSEK seviye ise veri hatlarındaki bilgi karakter kodudur, bu kod alınır ve göstergede görüntülenir.

lcd-denetim-isaretlerinin-zamanlama-diyagrami
Denetim işaretlerinin zamanlama diyagramı

Oku-Yaz (RW) hattı LCD’den yapılacak işlemin okuma yada yazma olduğunu belirler. Bu hat DÜŞÜK seviye iken LCD’ye yazma yapılır. YÜKSEK seviye iken LCD yazaçları okunur. Okuma komutu birkaç tanedir, geri kalanı yazma komutudur. Genellikle uygulamalarda bu hat doğrudan GND’ye bağlanır.

lcd-rom-kodu-a00-karakterleri
ROM kodu A00 karakterleri

lcd-rom-kodu-a00-karakterleri2
ROM kodu A02 karakterleri

Başlangıç Reseti: LCD modül gerilim uygulandığında kendisini kullanıma hazırlar. Kaynak LCD uyuşmazlığında bu işlem gerçekleşmeyebilir, bu durumda arka arkaya 3 adet 38h komutu ile ayarlama işlemi yazılım ile yapılabilir.

Function Set: Veri yolunun genişliği, karakter fontu ve göstergede kullanılacak satır sayısı belirlenir. Komutun açılışı şöyledir;

0 0 1 DL N F x x

bitlerin anlamları;

DL=0 ise 4 adet veri hattı, DL=1 ise 8 bit veri hattı kullanılacak.
N=0 1 satır, N=1 2 satır kullanılacak.
F=0 5X7 noktadan, F=1 5X10 noktadan oluşacak karakter fontu kullanılacak.
X; bu bitlerin değeri önemli değildir.

İmleci Gizle/Göster/Kırpıştır (Hide/Show/Blink Curser): İmleç görüntüden gizlenebilir, hala bir sonraki yazılacak karakter konumunu gösterir. İmleç başlangıçta alt çizgi olarak göstergede görünür, istenirse yanıp sönen karakter olarak ta görüntülenebilir. Yanıp sönen imleçte istenirse görünmez yapılabilir. Komut bunların dışında göstergeyi açıp kapatan bite de sahiptir. Komutun açılışı aşağıdaki gibidir.

0 0 0 0 1 D C B
D=1 gösterge açık, D=0 gösterge kapalı.
C=1 imleç açık, C=0 imleç kapalı.
B=1 bulunduğu konumdaki karakteri yakıp söndürür.
B=0 imleç sabit alt çizgi olarak görüntülenir.

Entry Mode: Okuma ve yazma işlemi sonrası imlecin ve göstergenin durumunu beliler. Genel kullanımı her yazma işlemi sonrası imlecin konumu bir arttırılırken gösterge sabit bırakılır. Bu kullanımda bir sonraki karakter bir sağ konuma yazılır. Komutun bitlerinin anlamı şöyledir;

0 0 0 0 0 1 I/D S
I/D=0 imlecin konumunu bir azalt (bir sola kaydır).
I/D=1 imlecin konumunu bir arttır (bir sağa kaydır).
S=0 gösterge sabit.
S=1 göstergeyi I/D bitine göre sağa veya sola doğru kaydır. Eğer I/D biti 1 ise gösterge sola doğru kayar, 0 ise sağa doğru kayar.

İmlec bir sonraki adımda karakterin yazılacağı konumu veya bir sonraki adımda okunacak karakterin konumunu gösterir. İmlecin işleyişi yukarıda entry mode ile belirlenmiştir.

Göstergeyi Temizle (Clear Display): Göstergeyi temizler. Gösterge temizlendiğinde tüm DDRAM satırlarına ASCII boşluk karakteri olan 20h yazılır. Komutun açılışı aşağıdaki gibidir.

0 0 0 0 0 0 0 1

Karakter yaratma (character generator) RAM’i komutları kullanıcının kendine özgü karakteri yaratması için kullanacağı komutlardır.

İmleci Evine Gönder (Home Curser): İmlecin evi 0 adresli karakter konumudur. Bu tüm göstergelerde birinci satırın en soldaki karakterinin bulunduğu yerdir.

İmleci yerleştir (Move Curser): İmleç DDRAM’ın her noktasına gönderilebilir. Gönderilen yer göstergenin görünen kısmında olmayabilir. İmleç istenilen yere adresi belirtilerek ile gönderilir. Komutun açılışı aşağıdaki gibidir.

1 A6 A5 A4 A3 A2 A1 A0

A0 –A6 DDRAM adresini belirtir. Birinci satırın adresi 00-27h aralığında ikinci satırın
adresi 40h-67h aralığındadır.

Durum Gösterge Bitinin Okunması (Status Inquiry): Durum denetlemesi olarak adlandıracağımız bu komut LCD denetleyicisinin yeni komut veya veri kabulüne hazır olup olmadığına bakmak için kullanılır. Aslında tek okuma yapan komuttur, eğer RW hattını GND’ye bağladığınızda bu komutu kullanamazsınız. Bu komutla okunan 8 bitten bir tanesi meşgul (busy) bayrağıdır diğer 7 bit ise en son işlem yapılan belleğin adres bilgisidir. Eğer DDRAM’den işlem yapıldı ise işlemi tamamlanan satırın adresi okunur. Bazen imlecin yeri bilinmediğinde bu komutla bulunabilir. Komutun açılışı aşağıdaki gibidir.

BF AC6 AC5 AC4 AC3 AC2 AC1 AC0
BF=1 ise denetleyici meşgul, BF=0 meşgul değil.
AC6-AC0 en son işlem yapılan belleğin adres bitleri.

İmlei Kaydır (Shift Curser): İmleç veya gösterge sağa veya sola doğru kaydırılabilir. Komutun açılışı aşağıdaki gibidir.

0 0 0 1 S/C R/L x x
S/C=0 göstergeyi sabit tutar, S/C=1 göstergeyi kaydır.
R/L=0 sola, R/L=1 sağa doğru kaydır.

Karakter Üretecinin Adresinin Ayarlanması (Set CGRAM adress): İmleç konumu belirle komutuna benzer şekilde çalışır. Adresi belirlenen konum bir sonraki yazmanın yapılacağı satırdır. CGRAM 64 satıra sahiptir. Komutun açılışı aşağıdaki gibidir.

0 1 A5 A4 A3 A2 A1 A0
A0-A5 CGRAM adresini temsil eder. CGRAM’ın kullanımı daha sonra tartışılacaktır.

Veri İşlemleri: Veri gönderme için RS hattı YÜKSEK seviyeye getirilmelidir. İlk karakter gönderilmeden önce adres ayarlanmalıdır. Veri CGRAM veya DDRAM belleklerine gönderilebilir.İmleç konumu işlem yapılacak DDRAM satırını gösterir. DDRAM’e veri gönderme işlemi move curser, shift curser, home curser veya reset display komutları sonrası yapılabilir. İmleç kapalı olsa bile imlecin konumu işlem yapılacak DDRAM satırını gösterir. Entry mode göre imleç konumu her yazma işlemi sonrası bir azaltılacak veya arttırılacaktır. Eğer karakterler sağa doğru yazılmak isteniyorsa artırma seçilmiş olmalıdır. Sola doğru yazılmak isteniyorsa azaltma seçilmiş olmalıdır. Veri DDRAM’e RW hattı DÜŞÜK seviyeye çekilerek yazılır. DDRAM’den veri okumak için bu hat YÜKSEK seviyeye çekilmelidir. LCD ile veri ve komut iletimi 4 bit veya 8 bit ile yapılabilir. 4 bit veri iletimi seçildiğinde düşük değerli dört bit kullanılmaz. Komutlar veya veriler iki parçaya bölünür. Yüksek değerli dört bit önce sonrada düşük değerli dört bit gönderilir. Bir komut gönderme ancak iki adımda gerçekleştirilebilir. LCD’de reset sonrası 8 bit
iletişim seçilmiş olur, 4 bit işleme geçmek için ayarlama sonrası hemen 20h bilgisi gönderilmelidir.

Zamanlama: LCD denetleyicisi normal işlemcilere göre oldukça yavaştır, verilen komutları yerine getirmek için tablo-11.5’de belirtilen süreye ihtiyaç duyar. Bekleme yazılım zamanlayıcısı ile veya meşgul bayrağını kontrol ederek yapılabilir. Yazılım zamanlayıcısı kullanırsanız verilen sürelerin 1,5 katı kadar bekleme yaparsanız daha iyi olur.

lcd-komutlari-1

lcd-komutlari-2
LCD Komutları

8081 UYGULAMASI LCD’ye “LCD DENEYİNİ YAPTIM” yazısını yazdırır

Hazırlayan: Yar. Doç. Dr. Mustafa Engin – Emeği geçen hazırlayan kişilere teşekkürler.

hd44780u-lcd-kullanimi-8051-uygulamasi

Şifre-Pass: 320volt.com

Yayım tarihi: 2013/05/16 Etiketler: , , , , ,



2 Yorum “2X16 HD44780U LCD Kullanımı ve 8051 Uygulaması

  1. mehmetmehmet

    Merhaba Sayın gevv,
    Asm ile yazılmış olan bu programı nasıl hex formatına çevirebilir miyiz?

    CEVAPLA
    1. gevvgevv Yazar

      Merhaba, keil c51 programı ile derleyebilirsiniz. İyi çalışmalar.

      CEVAPLA

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir