Mikrodenetleyicilerde LCD ve Ekran Kontrolü

LCD ve Ekran Kontrolü

Mikrodenetleyiciler, LCD (Liquid Crystal Display - Sıvı Kristal Ekranlar) ve diğer ekran türleri ile iletişim kurarak veri görüntüleme, grafik oluşturma ve kullanıcı arayüzü sağlama amacıyla kullanılır. LCD'ler düşük güç tüketimi ve esnek kullanım avantajı sayesinde mikrodenetleyici tabanlı projelerde yaygın olarak tercih edilir.


1. LCD Türleri ve Çalışma Prensipleri

LCD ekranlar karakter tabanlı (segmentli) ve grafik tabanlı olarak iki ana gruba ayrılır.

a) Karakter LCD’ler (Segmentli Ekranlar)

  • Belirli sayıda satır ve sütundan oluşan bir ekrana sahiptir.
  • Genellikle 16x2 (16 sütun, 2 satır) veya 20x4 (20 sütun, 4 satır) yapıdadır.
  • HD44780 gibi standart LCD denetleyicileri kullanır.
  • I2C modülü eklenerek daha az pin ile kontrol edilebilir.

📌 Örnek: 16x2 LCD'nin Yapısı

----------------
| Hello, World! |
| Temperature: 25C |
----------------

Çalışma Prensibi:

  • LCD, 8-bit veya 4-bit veri hattı ile mikrodenetleyiciye bağlanır.
  • RS (Register Select) pini, komutlar ve veri arasında geçiş yapar.
  • E (Enable) pini, verilerin LCD'ye yazılmasını sağlar.

📌 Bağlantı Pinleri:

LCD Pin Anlamı Mikrodenetleyici Bağlantısı
VCC Besleme (+5V) 5V
GND Toprak GND
RS Komut/Veri Seçimi Dijital Pin
RW Okuma/Yazma Seçimi GND (Sürekli Yazma)
E Enable (Aktivasyon) Dijital Pin
D4-D7 Veri Hatları Dijital Pinler

b) Grafik LCD’ler (GLCD)

  • Piksel tabanlı görüntüleme yapabilir, yazı, grafik ve şekiller gösterebilir.
  • 128x64, 240x128 gibi çözünürlükleri vardır.
  • ST7920, KS0108, SSD1306 gibi kontrol çipleri kullanır.
  • SPI veya I2C haberleşme protokolleri ile çalışır.
  • Monokrom (siyah-beyaz) veya renkli versiyonları bulunur.

📌 Örnek: 128x64 Grafik LCD

 --------------------------
|   Mikrodenetleyici Proje  |
|    ------------------     |
|   |                |      |
|   |  Çizim ve Yazı |      |
|    ------------------     |
 --------------------------

c) OLED Ekranlar

  • Organik LED (OLED) tabanlıdır ve arkadan aydınlatmaya ihtiyaç duymaz.
  • SSD1306 (128x64, I2C veya SPI) en popüler OLED sürücüsüdür.
  • Yüksek kontrast ve düşük güç tüketimi avantajları vardır.
  • Grafik ve metin görüntüleme yeteneğine sahiptir.

📌 Örnek: OLED ile Basit Arayüz

-------------------
|  TEMP: 25°C    |
|  HUM: 40%      |
|  STATUS: OK    |
-------------------

2. LCD ve Mikrodenetleyici Haberleşme Yöntemleri

a) Paralel Bağlantı (HD44780 LCD)

  • 4-bit veya 8-bit modda çalışabilir.
  • Daha fazla kablo bağlantısı gerektirir, ancak hızlıdır.

📌 Örnek: Arduino ile 16x2 LCD Kullanımı (4-bit Modu)

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // RS, E, D4, D5, D6, D7

void setup() {
  lcd.begin(16, 2);
  lcd.print("Merhaba!");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print("Temp: 25 C");
  delay(1000);
}

b) I2C ile Bağlantı

  • Daha az pin kullanır (SCL ve SDA).
  • PCF8574 I2C modülü ile LCD'ye bağlanabilir.

📌 Örnek: I2C ile 16x2 LCD Kullanımı (Arduino)

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.begin();
  lcd.backlight();
  lcd.print("I2C LCD Test");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print("Temp: 26 C");
  delay(1000);
}

c) SPI ile Bağlantı (Grafik LCD ve OLED)

  • SSD1306 gibi grafik ekranlarda kullanılır.
  • Daha hızlı veri aktarımı sağlar.

📌 Örnek: Arduino ile OLED Ekran Kullanımı (SSD1306, SPI Mode)

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("OLED Ekran Test");
  display.display();
}

void loop() {
  display.clearDisplay();
  display.setCursor(0, 10);
  display.println("Sicaklik: 25C");
  display.display();
  delay(1000);
}

3. LCD Uygulamaları

📌 Kullanım Alanları:
Sensör verilerini görüntüleme (Sıcaklık, Nem, Basınç)
Menü sistemleri oluşturma
Saat ve zamanlama uygulamaları
Grafik ve simge gösterme
IoT projelerinde kullanıcı arayüzü

📌 Örnek: Buton ile LCD’de Menü Değiştirme (Arduino + 16x2 LCD)

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
const int butonPin = 2;
int sayfa = 0;

void setup() {
  pinMode(butonPin, INPUT_PULLUP);
  lcd.begin(16, 2);
}

void loop() {
  if (digitalRead(butonPin) == LOW) {
    sayfa = (sayfa + 1) % 3;
    delay(300);
  }

  lcd.clear();
  if (sayfa == 0) {
    lcd.print("Anasayfa");
  } else if (sayfa == 1) {
    lcd.print("Sicaklik: 26 C");
  } else if (sayfa == 2) {
    lcd.print("Nem: 40%");
  }
  delay(500);
}

Sonuç

  • Karakter LCD'ler basit veri görüntüleme için idealdir.
  • Grafik LCD ve OLED'ler, grafikler ve animasyonlar için uygundur.
  • I2C ve SPI kullanımı, pin tasarrufu ve hızlı veri iletimi sağlar.
  • LCD'ler, mikrodenetleyicilerle birlikte veri görselleştirme ve kullanıcı arayüzü oluşturmak için kritik bileşenlerdir.

Yorumlar

Sitedeki popüler yayınlar:

Kullanım Alanlarına Göre Farklı Linux Dağıtımları 3

Kullanım Alanlarına Göre Farklı Linux Dağıtımları

Kullanım Alanlarına Göre Farklı Linux Dagıtımları 2