Başlarken

Bu 1-2. Rehber, en güncel olup özellikle 16x2 LCD hakkında ve LCD’nin tarihi hakkında neredeyse tüm kaynaklar toplanarak, araştırılarak hazırlanmış dev bir rehberdir. Öğreneceğiniz bilgiler ile bir yerde göreceğiniz LCD’nin nasıl çalıştığını anlayabilir ve sizde bunu yapabileceksiniz. İsterseniz hemen başlayalım. 🙂

LCD Nedir?

LCD, Liquid Crystal Display yani Sıvı Kristal Ekran elektrikle kutuplanan sıvının ışığı tek fazlı geçirmesi ve önüne eklenen bir kutuplanma filtresi ile gözle görülebilmesi ilkesine dayanan bir görüntü teknolojisidir.

LCD’lerde bulunan sıvı kristaller sıcaklığa ve madde yapısına göre termotropik ve liyotropik fazlarda bulunabilirler. Termotropik fazlı sıvı kristallerin bir alt grubu olan nematik likit kristallerin, kıvrık nematikler (twisted nematics - TN) adı verilen çeşidi uygulanan akımın gerilimine bağlı olarak düz konuma yani kıvrık olmayan nematikler haline gelir. Nematik sıvı kristaller, LCD’lerin yapılmasını mümkün kılan sıvı kristal fazıdır. LCD’lerin yapılabilmesi için ışık polarize edilebilmeli, sıvı kristaller polarize edilmiş ışığı geçirebilmeli, sıvı kristallerin molekül dizilimi elektrik akımı ile değiştirilebilmeli ve elektriği ileten bir yapıya sahip olunmalıdır.

LCD Yapısı ve Çalışma Prensibi

Evet gelelim LCD’nin yapısına ve çalışma prensibine ancak ondan önce size bir bilgi vererek başlayalım.

Bunu biliyor muydun?

LCD, (Liquid Crystal Display) yani Sıvı Kristal Ekran’ın kısaltmasıdır. Temelde, bir görüntü oluşturmak için sıvı kristaller kullanan bir görüntüleme birimidir.

Bu özel tür kristale akım verildiğinde, ekranın arkasında arka ışık bloke ederek opak hale gelir. Bu sayede, Bu sayede piksel alanları diğerine göre daha karanlık hale gelecektir. Aşağıda ki fotoğrafı inceleyerek daha net anlayabilirsiniz.

Eğer fotoğrafı göremiyorsanız, lütfen yorumlardan bildirebilirsiniz!
LCD Çalışma Yapısı, Robotik Sistem

Ekranın bir LED arka ışığı vardır ve her satırda 16 karakter olmak üzere iki satırda 32 ASCII karakteri görüntüleyebilir. LCD’lerin yapısı yukarıda ki resimde görüldüğü gibi farklı katmanlardan oluşmaktadır.

LCD katmanları bir araya geldiklerinde paneller meydana gelir. Panellerin çalışma mantığı en basit haliyle, üzerindeki özelleşmiş hücrelerin iyon katmanı tarafından şekillendirilmesi ve elektrik akımıyla görüntü oluşturulması şeklindedir.

Herhangi bir elektrik alan uygulanmadan önce sıvı kristaller kıvrık nematikler (TN) denilen 90 derece kıvrık olacak şekilde sıralanmışlardır. Böylece kristaller arasından geçen ışığın kutuplanmasının yön değiştirmesi sağlanır ve ekran gri görünür. Yeterince yüksek bir voltaj uygulandığında sıvı kristaller kıvrık olmayacak şekilde (untwisted) bükülmemiş sıralanırlar ve sıvı kristal katmanından geçişi sırasında ışığın kutuplanma yönü değişmez. Bu durumda ışık ikinci filtreye dik biçimde polarlanır ve katmanı geçemediği için o piksel siyah görünür.

16x2 LCD Ekranı Tanıyalım

Kullanacağımız ekran uygun bir fiyata alabileceğiniz 16×2 LCD ekran. Ekranın 16×2 olarak adlandırılması LCD’nin 2 satıra sahip olduğu ve satır başına 16 karakter görüntüleyebileceği anlamına geliyor. Yani ekran aynı anda 32 adet karakter görüntüleyebiliyor. Bunun dışında kaydırma yaparak 32 karakterden fazlasını da görüntüleyebilirsiniz.

16x2 LCD Ekranı Nasıl Çalışır?

  1. +5V ile çalışmaktadır.
  2. Back Lighting özelliğine sahiptir.
  3. LCD arka fon ışığı olmadan 4mA akım çekmektedir.
  4. Boyutları 80x36x9.4mm’dir.
  5. Çalışma sıcaklığı -20 ile +70 derece arasıdır.

LCD Pinleri

Günümüzde üretilen LCD panellerin çoğunda tek sıra halinde 16 pin bulunur. Bu pinlerden ilk 14 tanesi kontrol için son iki tanesi ise eğer varsa arka ışık için kullanılır. Bazı LCD’lerde kontrol için kullanılan 14 pin 2 adet 7’li sıra halinde de bulunabilir.

Bunu biliyor muydun?

LCD’lerin büyük çoğunluğunda LED arka ışığı için yerleşik bir seri direnç bulunur. Direnç içermeyen bir LCD’niz varsa, 5V ile pin 15 arasında bir tane eklemeniz gerekir.

Seri direncin değerini hesaplamak için, veri sayfasından yani data sheet’inden maksimum arka ışık akımına ve tipik arka ışık voltajı düşüşüne bakabilir ve basit ohm yasasını kullanarak direnç değerini hesaplayabilirsiniz.

(Data Sheet) Veri sayfasını bulamıyorsanız, 220 ohm’luk bir direnç kullanmak güvenli olacaktır, ancak bu kadar yüksek bir değer arka ışığı biraz karartabilir.

PIN NOİŞLEVİADI
1Topraklama (0v)Ground
2Besleme Gerilimi (+5v)VCC
3Potansiyometre Giriş
(LCD Konstrast Ayarını Yapmak İçin)
VO
4Komut Register‘ı ve Veri Register‘ı
arasında geçiş yapmak için ⭐
Register Select
5LCD’ye Okuma/Yazma
işlemleri için kullanılır ⭐⭐
Read/Write
6Registera yazma işlemini
sağlayan etkinleştirme pini
Enable
78 Bitlik Veri Pinleri ⭐⭐⭐DB0
88 Bitlik Veri Pinleri ⭐⭐⭐DB1
98 Bitlik Veri Pinleri ⭐⭐⭐DB2
108 Bitlik Veri Pinleri ⭐⭐⭐DB3
118 Bitlik Veri Pinleri ⭐⭐⭐DB4
128 Bitlik Veri Pinleri ⭐⭐⭐DB5
138 Bitlik Veri Pinleri ⭐⭐⭐DB6
148 Bitlik Veri Pinleri ⭐⭐⭐DB7
15Arka Plan Işığının Gerilim AyarıLed +
16Arka Plan Işığının TopraklamasıLed -

Eğer fotoğrafı göremiyorsanız, lütfen yorumlardan bildirebilirsiniz!

LCD Pin Açıklamaları:

RS Pin LOW (0) olduğunda Komut Register‘ı seçer, RS Pini HIGH (1) olduğunda Veri Register‘ı seçer.

Komut Kaydı: Komut kaydı, LCD’ye verilen komut talimatlarını kaydeder. Komut, önceden tanımlanmış bir görevi yerine getirmesi için LCD’ye verilen bir talimattır.

Örneğin:

  • Ekranı başlatmak,
  • Ekranını temizlemek,
  • İmleç konumunu ayarlama vb.

Komutların işlenmesi komut kaydında gerçekleşir.

⭐⭐ R/W Pinine LOW (0) değerini dönderdiğimizde yazma işlemi, HIGH (1) gönderdiğimizde okuma işlemi gerçekleştirir.

⭐⭐⭐ Bu Pinlerle LCD’ye veri veya komut gönderilir.

Veri Kaydı: Veri kaydı, LCD’de görüntülenecek verileri depolar. Veriler, LCD’de görüntülenecek karakterin ASCII değeridir. LCD’ye veri gönderdiğimizde, veri kaydına gider ve orada işlenir. RS = 1 olduğunda, veri kaydı seçilir.

Daha iyi anlayabilmemiz için tüm pinlerin ne işe yaradıklarına bir bakalım.

GND: Arduino’nun herhangi bir GND pinine bağlanmalıdır. Bu pin (eksi) topraklama bağlantısının yapılacağı pindir.

VCC: Arduino üzerindeki 5 voltluk bir pine bağlamalıyız. LCD buradan elektriğini alacak.

VO (LCD Contrast): Arduino’nun herhangi bir GND pinine bağlanmalıdır. Bu pin (eksi) topraklama bağlantısının yapılacağı pindir.

RS (Register Select): pini, Arduino’nun LCD’ye komut mu yoksa veri mi gönderdiğini söylemesini sağlar. Temel olarak bu pin, komutları verilerden ayırmak için kullanılır.

R/W (Read/Write): LCD’den veri okuyup okumadığınızı veya LCD’ye veri yazıp yazmayacağınızı kontrol etmek içindir.

E (Enable): pini, ekranı etkinleştirmek için kullanılır. Yani, bu pin LOW (DÜŞÜK) olarak ayarlandığında, LCD R/W, RS ve veri yolu hatlarında ne olduğunu önemser; bu pin HIGH (YÜKSEK) olarak ayarlandığında, LCD gelen verileri işlemektedir.

D0-D7 (Data Bus): gönderdiğimiz 8 bit verileri ekrana taşıyan pinlerdir. Örneğin, ekranda ‘A’ karakterini görmek istiyorsak, bu pinleri LCD’ye 0100 0001 (ASCII tablosuna göre) yazarak görüntüleyebiliriz, ancak bu konuya henüz gelmedik devam edelim. 😄

A-K (Anode & Cathode): LCD’nin arka ışığını kontrol etmek için pinler kullanılır.

LCD Komutları:

Serial No.Hex KoduLCD Ekran Karşılığı
101Ekranı Temizle
202Satır Başına Dön
304İmleci Sola Kaydır
406İmleci Sağa Kaydır
505Ekranı Sağa Kaydır
607Ekranı Sola Kaydır
708Ekran kapalı, imleç kapalı
80AEkran kapalı, imleç açık
90CEkran açık, imleç kapalı
100EEkran açık, imleç yanıp sönüyor
110FEkran açık, imleç yanıp sönüyor
1210İmleç konumunu sola kaydır
1314İmleç konumunu sağa kaydır
1418Tüm ekranı sola kaydır
151CTüm ekranı sağa kaydır
1680İmleci başa zorla (1. satır)
17C0İmleci başa zorla (2. satır)
18382 satır ve 5×7 matris

Pikseller:

Aşağıdaki fotoğrafa yakından bakarsanız, ekrandaki bir pikseli yani küçük dikdörtgenlerini ve bir karakteri oluşturan pikseli görebilirsiniz.

Bu dikdörtgenlerin her biri 5×8 piksellik bir ızgaradır fotoğrafta bir pikseli görüyoruz. Yalnızca metin görüntülemelerine rağmen, bir çok boyut ve renkte gelirler: örneğin, 16x1, 16x4, 20x4 mavi arka plan üzerinde beyaz metin, yeşil ekran üzerinde ise siyah metin gözükür. LCD ekran 16x2 boyutunda olup 16x2=32 karakter gösterebilir.

Her bir karakter 5 sütun 8 satırdan oluşmak üzere 8x5=40 piksel ile ifade edilir.

Eğer fotoğrafı göremiyorsanız, lütfen yorumlardan bildirebilirsiniz!

Şimdi, her karakterin (5x8 = 40) 40 Piksele sahip olduğunu ve 32 Karakter için (32x40) 1280 pikselimiz olacağını biliyoruz.

Ayrıca, piksellerin konumları hakkında LCD’ye bilgi vermek gerekmektedir. Bu tür işlerde kullanmış olduğumuz mikrodenetleyici aracılığıyla yapma kalkarsak, elimizdeki mikrodenetleyici bir hayli yormuş oluruz. İşte bu tür görevleri, komutları ve verileri mikrodenetleyiciden alıp, LCD ekranında gösterme görevini yerine getirmek üzere LCD’nin HD44780 ara yüzü ile gerçekleştiriyoruz.

Peki nedir bu HD44780?

Asıl adıyla Hitachi HD44780 LCD kontrol cihazı, 1980’lerde Hitachi tarafından geliştirilen alfanümerik (yani latin alfabesindeki harfleri ve arap rakamlarını kullanan karakter dizisini tanımlamakta kullanılan bir sıfat) bir nokta vuruşlu likit kristal ekran kontrolüdür. LCD’nin arka tarafına monte edilmiştir.

Bu IC‘nin (yani entegre devre’nin) işlevi, MCU‘dan (yani mikrodenetleyici ünitesi) komutları ve verileri alır ve bunları LCD ekranımızda anlamlı bilgiler gösterecek şekilde işlemektir.

LCD ekranların birçoğunda HD44780 arayüzü kullanılmaktadır. LCD ekranları programlamak için Hitachi HD44780‘e ait tüm bilgileri öğrenebilirsiniz. Bu bilgilere ulaşabilmek için buraya tıklayın.

Şimdi 16×2 LCD ekranımızın arka yüzünü çevirelim ve bakalım burada neler oluyor?

LCD Ekranın Arkasındaki Siyah Dairelerin Görevi Nedir?

Eğer fotoğrafı göremiyorsanız, lütfen yorumlardan bildirebilirsiniz!
LCD siyah daireler, Circuit Digest

LCD ekranımızın arkasındaki bu siyah daireler Microdenetleyicimiz ile LCD arasında köprü görevi görmektedir. LCD’yi MCU ile kullanmamıza yardımcı olmak için bir arabirim IC‘sinden ve ilgili bileşenlerinden oluşur.

16x2 LCD’de Özel Karakterlerin Görüntülenmesi

LCD’de özel karakterler oluşturmak çok zor değildir. LCD’nin özel oluşturulmuş rastgele erişim belleği (CG-RAM) ve LCD çip denetleyicisi hakkında bilgi gerektirir. Çoğu LCD’de Hitachi HD4478 denetleyicisi bulunur.

CG-RAM adresi ondalık olarak 0x40 (Onaltılık) veya 64’ten başlar. Bu adreslerde özel karakterler üretebiliriz. Karakterlerimizi bu adreslerde oluşturduktan sonra, sadece LCD’ye komutlar göndererek onları yazdırabiliriz. Karakter adresleri ve yazdırma komutları aşağıdadır.

CG-RAM KarakterlerCG-RAM Adres (Hexadecimal)Oluşturulan Karakterleri
Görüntüleme Komutları
1ˢᵗ0x400
1ˢᵗ0x481
1ˢᵗ0x562
1ˢᵗ0x643
1ˢᵗ0x724
1ˢᵗ0x805
1ˢᵗ0x886
1ˢᵗ0x967

Yukarıdaki tabloda, yazdırma komutlarıyla birlikte her karakter için başlangıç ​​adreslerini görebilirsiniz.

İlk karakter 0x40 ila 0x47 adreslerinde oluşturulur ve sadece 0 komutu gönderilerek LCD’de yazdırılır.

İkinci karakter 0x48 ila 0x55 adreslerinde oluşturulur ve bir komut 1 gönderilerek yazdırılır.

CG-RAM’de Özel Karakterler Nasıl Oluşturulur?

LCD’niz için kendi özel karakterlerinizi (glif) ve sembollerinizi oluşturabilirsiniz. Standart ASCII karakter kümesinin parçası olmayan bir karakteri görüntülemek istediğinizde son derece kullanışlıdırlar.

CGROM ve CGRAM

Hitachi HD44780 kontrol cihazını temel alan tüm LCD ekranlar, CGROM ve CGRAM (Karakter Üretici ROM ve RAM) adı verilen tanımlı karakterleri depolayan iki tür belleğe sahiptir. CGROM belleği uçucu değildir ve değiştirilemezken; CGRAM belleği değişkendir ve herhangi bir zamanda değiştirilebilir.

CGROM, ASCII kodları kullanılarak görüntülenebilen tüm kalıcı yazı tiplerini depolamak için kullanılır. Örneğin 0x41 yazarsak ekrana ‘A’ karakteri gelir.

CG-RAM, özel karakterler oluşturmanın ana bileşenidir. Kodda belirtilen özel karakterleri saklar. CG-RAM boyutu 64 bayttır ve bir seferde sekiz karakter oluşturma seçeneği sunar. Her karakterin boyutuda sekiz bayttır.

CG-RAM adresi ondalık olarak 0x40 (Onaltılık) veya 64’ten başlar. Bu adreslerde özel karakterler üretebiliriz. Bu adreslerde karakterlerimizi oluşturduğumuzda, sadece LCD’ye komutlar göndererek onları yazdırabiliriz. Karakter adresleri ve yazdırma komutları yukarıda ki tablodaki gibidir.

LCD ekranlarda, her karakter 5×8 matristir. Burada 5 sütun sayısı ve 8 satır sayısıdır.

Eğer fotoğrafı göremiyorsanız, lütfen yorumlardan bildirebilirsiniz!

‘B’ harfinin nasıl oluşturulacağına dair basit bir örnek yapalım.

‘B’ harfini oluşturmak için: char b [7] = {0x10, 0x10, 0x16, 0x19, 0x11, 0x11, 0x1E}; Yani,

Karakter oluşturmak istediğiniz yere adresi gönderiyoruz. Peki biz nasıl kendimize özel bir karakter vb. nasıl yapabiliriz? Bu bağlantıya tıklayarak kendinize özel karakter, semboller vb. şeyler yapabilirsiniz. Hayal gücünüz sınırsız. Yapabileceğimiz semboller veya harflerde Türkçe karakterleri de yapabilirsiniz.

Peki bunun mantığı ne?

Şimdi bu adreste karakterinizi oluşturuyoruz, yukarıda tanımlanan ‘B’ karakter dizisi değerlerini tek tek LCD’nin veri kaydına gönderir, oluşturulan karakteri 0x40’ta yazdırmak için, LCD’nin komut kaydına 0 komutunu gönderir. Kafanız biraz karışmış olabilir 😄 ancak sorun değil, aşağıdaki tablo bunu daha net açıklayacaktır.

LCD ekran standart karakter listesinde Türkçe’ye özgü harfler (ğİöüçş) bulunmaz.

Eğer fotoğrafı göremiyorsanız, lütfen yorumlardan bildirebilirsiniz!
Table for CGRAM (Türkçeye çevrilmiştir.), Electronicsforu

Tabi ki biz hex kodlarını kullanarak yazmayacağız, binary kodları kullanarak Arduino vb. mikrodenetleyici ile kullanmamız bizim için daha kolay olacaktır isterseniz tabi ki hex’te kullanabilirsiniz.

Uluslararası karakterlerin belirli ASCII kodları vardır. Örneğin biz ‘A’ karakterini kullanırız, ama mikrodenetleyici ‘A’ karakter verisini alarak 61 sayısına dönüştürür ve karakter setine bakarak karşılaştırır sonra işlemini yaparak ekranımızda ‘A’ harfini görürüz.

ASCII karakterleri standart olduğundan dolayı şöyle bir sırayla işler: Biz ‘A’ karakterini yazdığımızda mikrodenetleyici ‘A’ karakterini 1 ve 0’lardan oluşan 61 sayısına dönüştürür yani binarye oluşan bu “01100001” bitlerini LCD’ye gönderir. Şimdi neden bitleri kullanarak yazmamamız gerektiğini anladınız umarım… 😄 LCD bu binary kodunu alır ve 61 verisine dönüştürür sonra LCD karakter setine bakar, 61’in karşılığı ne diye. Bu da ‘A’ karakteridir. ASCII standardında olaylar böyle ilerler aşağıdan LCD’nin karakter setine bakabilirsiniz.

Eğer fotoğrafı göremiyorsanız, lütfen yorumlardan bildirebilirsiniz!
LCD Denetim Hatları, 320volt

Bizim oluşturduğumuz karakterler sol üstteki (CGRAM(1) yazan yerden) başlayarak 8 satırlık yere kadar yerleşiyor. Tabloda ‘A’ karakterine bakarsanız “01100001” yani 61 adresi olduğunu görüyoruz. Bizim karakterlerimiz de bu durumda 0 ila 7 arasında yerleşecek.16x2 LCD’yi artık tanıdığımıza ve nasıl çalıştığını anladığımıza göre ikinci yazımda kodlamayı ve sanalda nasıl çalıştığını anlamaya çalışacağız. Sağlıcakla kalın… 🤗