Bu rehberimizde, MicroPython programlama dilini kullanarak bir Raspberry Pi Pico LCD modülünü 4-bit paralel arayüz modunda nasıl süreceğimizi, ekranı nasıl başlatacağımızı, metin ve dinamik karakterleri nasıl yazdıracağımızı adım adım inceleyeceğiz. Proje adımlarına başlamadan önce, Pico dünyasına giriş yapmak ve temel kavramları incelemek için Raspberry Pi Pico Eğitim Serimizi takip etmenizi tavsiye ederiz.
Endüstriyel cihazlarda ve hobi projelerinde veri görselleştirmek için en yaygın kullanılan ekranların başında klasik HD44780 denetleyicili 16×2 Karakter LCD ekranlar gelir.
16×2 Karakter LCD Ekranın Çalışma Mantığı
16×2 LCD ekranlar, isimlerini aynı anda yan yana 16 karakter barındırabilen 2 satıra sahip olmalarından alırlar. Ekrandaki her bir karakter hücresi, arka planda 5×8 piksel noktasından (dot matrix) oluşan bağımsız bir alandır. Dolayısıyla ekran üzerinde toplam 32 karakter hücresi ve bu hücreleri oluşturan 1280 adet bağımsız sıvı kristal piksel bulunur.

Bu denli çok sayıda pikseli tek tek mikrodenetleyici pinleriyle kontrol etmek imkansız olduğu için, ekran modülünün arkasında Hitachi HD44780 (veya muadili) entegre arayüz sürücüsü yer alır. Bu entegre, mikrodenetleyiciden gelen komut ve verileri alarak ekran üzerindeki pikselleri sürer. Ekranın detaylı komut setini ve elektriksel özelliklerini incelemek için resmi HD44780 Datasheet Belgesini indirebilirsiniz.
16×2 LCD Modülün Pin Şeması ve Görevleri

Karakter LCD modüllerinde standart olarak 16 adet fiziksel pin bulunur. Bu pinlerin detaylı bağlantı görevleri ve lojik seviyeleri aşağıdaki tabloda özetlenmiştir. Pin yapıları hakkında daha detaylı bilgi için Arduino ile hazırladığımız 16×2 LCD Ekran Modülü Kılavuzu yazımıza da göz atabilirsiniz.
| Pin No | Pin Adı | Tip | Görev Açıklaması | Bağlantı Hedefi |
| 1 | GND | Güç | Sistem şase bağlantısı | GND (Şase) hattına bağlanır |
| 2 | VCC | Güç | Sürücü entegre besleme voltajı ( | Pico VBUS ( |
| 3 | V0 (VEE) | Kontrol | Sıvı kristal kontrast ayarı | 10k Potansiyometre orta ucuna bağlanır |
| 4 | RS | Kontrol | Komut / Veri Kaydı seçimi (0: Komut, 1: Veri) | Pico GPIO16 pinine bağlanır |
| 5 | R/W | Kontrol | Okuma / Yazma seçimi (0: Yazma, 1: Okuma) | GND (Yazma modunda sabit tutulur) |
| 6 | E (Enable) | Kontrol | Yazma işlemini tetikleyen Yetkilendirme pini | Pico GPIO17 pinine bağlanır |
| 7-14 | D0 – D7 | Veri | 8-bit paralel veri yolları | 4-bit modunda sadece D4-D7 pinleri kullanılır |
| 15 | LED+ (A) | Güç | Arka ışık LED anot ucu (+5V) | VCC pini veya direnç üzerinden 5V’a bağlanır |
| 16 | LED- (K) | Güç | Arka ışık LED katot ucu (GND) | GND hattına bağlanır |
Raspberry Pi Pico LCD Bağlantı Diyagramı
Raspberry Pi Pico, lojik olarak
ile çalışırken, standart HD44780 LCD ekranların sürücü entegreleri kararlı karakter üretmek için
beslemeye ihtiyaç duyar. Bu nedenle ekranın VCC (Pin 2) pini, Pico’nun doğrudan USB portundan aldığı
çıkışını veren VBUS pinine bağlanmalıdır. Lojik kontrol pinleri (RS, E, D4, D5, D6, D7) ise Pico’nun GPIO hatlarına doğrudan bağlanabilir (
sinyaller LCD girişleri tarafından yüksek seviye olarak algılanacaktır).

MicroPython ile 16×2 LCD Sürücü Yazılımı
LCD ekranı sürmek için kullanacağımız MicroPython kütüphanesini ve ana uygulama kodlarını bilgisayarınıza çekmek için Circuit Digest Pico LCD Deposu bağlantısını ziyaret edebilirsiniz. Bu klasörde `lcd_pico.py` kütüphane dosyası ve `main.py` uygulama dosyası yer almaktadır.
4-Bit Paralel İletişim Mantığı (Nibble Yönlendirme)
Pico’nun değerli GPIO pinlerini harcamamak adına, ekranı 4-bit modunda sürüyoruz. Bu modda, göndermek istediğimiz her 8-bitlik veri veya komut baytı, yüksek öncelikli 4-bit (high nibble) ve düşük öncelikli 4-bit (low nibble) olmak üzere iki parça halinde sırayla gönderilir. Kütüphanedeki `send2LCD8` fonksiyonu bu veri parçalama işlemini gerçekleştirir:
def send2LCD8(BinNum):
# Üst 4 bitin (High Nibble) gönderilmesi
d4.value((BinNum & 0b00010000) >> 4)
d5.value((BinNum & 0b00100000) >> 5)
d6.value((BinNum & 0b01000000) >> 6)
d7.value((BinNum & 0b10000000) >> 7)
pulseE()
# Alt 4 bitin (Low Nibble) gönderilmesi
d4.value((BinNum & 0b00000001) >> 0)
d5.value((BinNum & 0b00000010) >> 1)
d6.value((BinNum & 0b00000100) >> 2)
d7.value((BinNum & 0b00001000) >> 3)
pulseE()Kütüphane Kullanımı ve Ana Uygulama (`main.py`)
Kütüphane içinde yer alan `setupLCD()` fonksiyonu, HD44780 entegresini 4-bit moduna sokacak özel başlatma komutlarını sırayla gönderir. `displayString(row, col, “Metin”)` fonksiyonu ise hedeflenen satır ve sütuna giderek metni ekrana basar. `main.py` dosyasında bu kütüphaneyi şu şekilde çağırıp kullanabiliriz:
from lcd_pico import *
# LCD'yi 4-bit modda başlat
setupLCD()
# 1. Satır 0. Sütuna yaz
displayString(1, 0, "Merhaba")
# 2. Satır 0. Sütuna yaz
displayString(2, 0, "Dunya")
longDelay(4000)
# Ekranı temizle ve yeni metin yaz
clearScreen()
displayString(1, 0, "devreyakan.com")Thonny IDE üzerinde çalışırken, öncelikle `lcd_pico.py` kodunu açıp Dosya > Farklı Kaydet diyerek “Raspberry Pi Pico” içerisine aynı isimle kaydedin. Ardından `main.py` dosyasını da yine Pico içine kaydedip çalıştırın. Bu sayede donanım bağımsız olarak çalışacaktır.

Donanım Kurulumu ve Kodun Tamamı
Kütüphane fonksiyonları ve başlatma rutinlerinin tamamını içeren tek parça halindeki entegre MicroPython kod bloğu aşağıda sunulmuştur:
LCD Ekran Kullanırken Sık Karşılaşılan Sorunlar ve Çözümleri
- Farklı Karakterler veya Çince/Anlamsız Sembollerin Çıkması: Sinyal hatlarındaki bir temassızlıktan veya zamanlama (timing) kaymasından kaynaklanır. `d4-d7` lojik bağlantı kablolarının sırasını ve breadboard temas noktalarını kontrol edin; `pulseE()` içindeki gecikme sürelerini (`sleep_us`) gerekirse hafifçe artırın.
- Arka Işığın (Backlight) Hiç Yanmaması: 15 ve 16 numaralı LED besleme pinlerini kontrol edin. 15 numaralı anot pininin +5V’a (
direnç üzerinden bağlanması önerilir), 16 numaralı katot pininin ise GND’ye doğrudan bağlı olduğundan emin olun.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.

