guclusat

Tanınmış Üye
Süper Moderatör
Jal derleyicisi ile HD44780 2x16 LCD ekrani kullanmak gercekten cok kolay.Ancak tüm türkce karakterleri yazdirmak mümkün degil.Bu acigi gidermek adina yeni bir kütüphane (turkce.jal) yazdik.
Kullanimi cok basit :
1775755131477.webp
Yapmaniz gereken turkce kutuphanesini programinizin en basinda resimde görüldügü gibi yüklemek ve turk komutunu alt satirina yazmak.

indirdiginiz turkce.jal dosyasini JalWin klasörünün icindeki lib klasörüne kopyalayin.Örnek: x:\JalWin\lib
 

Eklentiler

Son düzenleme:
HD44780 tabanlı LCD ekranlar (2x16, 4x20 gibi), standart olarak ASCII karakter setini kullanır. Bu sette ç, ş, ğ, ı, ö, ü gibi Türkçe karakterler bulunmaz. Ancak bu ekranların harika bir özelliği vardır: CGRAM (Character Generator RAM).

CGRAM alanı, kullanıcıya kendi özel 8 karakterini (0-7 arası indisler) tasarlama imkanı tanır. Türkçe karakter sorununu, bu alana harflerin "bit haritasını" çizerek çözeriz.

1. Mantık: Karakteri Karelere Bölmek

Her karakter, 5 sütun ve 8 satırdan oluşan bir matristir. Örneğin "Ğ" harfini oluşturmak için hangi piksellerin yanacağını belirleriz:
  • Sütunlar: 5 bit
  • Satırlar: 8 adet (en alttaki 8. satır genellikle imleç için boş bırakılır)

2. Örnek: "Ğ" Harfinin Tasarımı

JAL veya C gibi dillerde bu harfi tanımlamak için bir dizi (array) oluştururuz.

Görsel Tasarım (5x8):
Kod:
Row 1: 0 1 1 1 0  (Yumuşak G'nin şapkası) -> 0x0E
Row 2: 0 0 0 0 0  (Boşluk)                -> 0x00
Row 3: 0 1 1 1 1  (G gövdesi üst)         -> 0x0F
Row 4: 1 0 0 0 0  (G gövdesi yan)         -> 0x10
Row 5: 1 0 1 1 1  (G gövdesi orta)        -> 0x17
Row 6: 1 0 0 0 1  (G gövdesi yan)         -> 0x11
Row 7: 0 1 1 1 1  (G gövdesi alt)         -> 0x0F
Row 8: 0 0 0 0 0  (Boşluk)                -> 0x00

3. Kod Üzerinde Uygulama (JAL Örneği)

Paylaştığın turkce.jal kütüphanesinin arka planında çalışan mantık şöyledir:
Kod:
-- Yumuşak G (Ğ) Tanımlaması
const byte turkce_g[] = {0x0E, 0x00, 0x0F, 0x10, 0x17, 0x11, 0x0F, 0x00}

-- LCD'nin 0. hafıza yuvasına bu karakteri yükle
lcd_define_custom(0, turkce_g)

-- Ekranda yazdırmak için:
lcd_cursor_position(0,0)
lcd = 0  -- 0 numaralı özel karakteri (Ğ) yazdırır

4. Tüm Karakterlerin Byte Karşılıkları

Projelerinde manuel tanımlama yapmak istersen şu değerleri kullanabilirsin:
Kod:
Ğ: {0x0E, 0x00, 0x0F, 0x10, 0x17, 0x11, 0x0F, 0x00}

Ş: {0x0F, 0x10, 0x0E, 0x01, 0x1E, 0x04, 0x0E, 0x00}

İ: {0x04, 0x00, 0x0C, 0x04, 0x04, 0x04, 0x0E, 0x00}

Ç: {0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x04, 0x00}

Ö: {0x0A, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00}

Ü: {0x0A, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00}

ı: {0x00, 0x00, 0x0C, 0x04, 0x04, 0x04, 0x0E, 0x00}

Önemli İpucu: Neden turkce.jal Kullanmalısın?

Manuel olarak her karakteri tanımlamak LCD hafızasında yer kaplar ve kodunuzu kalabalıklaştırır. Senin paylaştığın turkce.jal kütüphanesi:
  1. Bu tabloları otomatik olarak LCD hafızasına (CGRAM) yükler.
  2. lcd = "ş" dediğinde otomatik olarak o özel karakterin kodunu gönderir.
  3. Zaman kazandırır ve kodun okunabilirliğini artırır.
Kullanım Tavsiyesi: Kütüphaneyi ekledikten sonra, yazdırmak istediğin metinlerin içindeki Türkçe harflerin CGRAM'deki karşılık gelen 0-7 arası indislerle eşleştiğinden emin ol!
 
Geri
Yukarı