LCD (Liquid Crystal Display)

LCD digunakan untuk menampilkan teks, baik itu huruf, angka, maupun simbol. LCD yang digunakan pada eksperimen kali ini adalah LCD dengan resolusi karakter 16 x 2, yaitu mempunyai 16 kolom dan 2 baris. Itu artinya, LCD ini dapat menampilkan 16 karakter ke samping dan sebanyak 2 baris. Spasi dianggap 1 karakter.

LCD 16x2 memiliki 16 pin, yaitu :

  1. VSS, merupakan GND (-).
  2. VDD, merupakan VCC (+5V).
  3. V0, digunakan untuk mengatur kontras.
  4. RS (Register Select), digunakan oleh Arduino untuk memilih lokasi memori saat penulisan data.
  5. RW (Read/Write), digunakan untuk menentukan mode LCD, mode read atau mode write.
  6. (Enable), digunakan untuk mengaktifkan atau menonaktifkan mode penulisan karakter.
  7. D0, data untuk bit ke-8
  8. D1, data untuk bit ke-7
  9. D2, data untuk bit ke-6
  10. D3, data untuk bit ke-5
  11. D4, data untuk bit ke-4
  12. D5, data untuk bit ke-3
  13. D6, data untuk bit ke-2
  14. D7, data untuk bit ke-1
  15. A, terhubung ke kaki anoda LED latar, itu berarti mendapat tegangan positif.
  16. K, terhubung ke kaki katoda LED latar, itu berarti mendapat tegangan negatif.

Pin A dan K digunakan untuk menyalakan LED supaya teks yang ditampilkan dapat terlihat dalam kegelapan.

Pin V0 digunakan untuk mengatur kontras. Kontras di sini bukan berarti kekuatan terang LED latar, melainkan kontras karakter. Saat merakit, sebenarnya saya tidak ingin menggunakan trimpot, karena tidak punya, jadi saya tidak menggunakan pin V0. Ketika program saya upload ke Arduino, tidak ada teks yang muncul di layar LCD, alias blank. Tapi LED latar menyala. Saya pikir tidak mungkin kode programnya yang salah, karena dari aplikasi ada bug yang muncul.

Kemudian, saya pikir memang harus digunakan pin V0 ini. Saya hubungkan ke VCC, ternyata belum muncul teks. Lalu saya hubungkan ke GND, baru muncul teksnya dengan kontras yang terlalu besar. Tapi ternyata di lab mini saya ada potensiometer, jadi itulah yang saya pakai sebagai pengganti trimpot. Pada dasarnya sih, trimpot dan potensiometer sama saja. Cuma ukuran trimpot lebih kecil dan dipergunakan untuk pengaturan pasif, yaitu cuma diatur sekali. Kalau potensiometer sih ukurannya lebih besar dan memang dipergunakan untuk pengaturan aktif. Jadi sebenarnya lebih disarankan menggunakan trimpot, karena ketika diproduksi menjadi perangkat, pasti potensiometer mengambil ruang yang lebih luas.

Pada LCD 16x2, ada 2 metode yang dapat digunakan untuk menampilkan output, yaitu memakai mode 4 bit dan 8 bit.

Apa perbedaan mode 4-bit dan 8-bit pada LCD 16x2?

Mode 4 bit :

  1. Hanya menggunakan 4 pin data, yaitu D4, D5, D6 dan D7
  2. Lebih lambat.

Mode 8 bit :

  1. Semua pin data digunakan, dari D0 hingga D7
  2. Lebih cepat 2x lipat dari mode 8 bit.

Mengenai kecepatan, tentu saja mode 8 bit lebih cepat. Karena pada dasarnya, data yang diproses adalah 8 bit untuk 1 karakter. Jadi, jika menggunakan mode 8 bit, data bisa langsung ditampilkan dalam sekali proses. Tapi jika menggunakan mode 4 bit, data harus dibagi menjadi 2. Jadi masing-masing potongan memiliki 4 bit. Jad, pada mode 4 bit, data 1 karakter dikirim 2 kali, yaitu potongan pertama dan potongan kedua. Jadi, bisa disimpulkan bahwa mode 8 bit lebih cepat jika dibandingkan dengan mode 4 bit. Begitulah perbandingannya secara teori.

Tapi pada eksperimen kali ini, saya hanya menggunakan mode 4 bit. Walaupun perbedaan kecepatannya tidak begitu kentara. Karena clock pada Arduino sudah sangat cepat.

Bahan yang digunakan :

  1. Arduino UNO R3
  2. Breadboard
  3. LCD 16x2
  4. Resistor 330 Ohm
  5. Trimpot/Potensiometer 10K
  6. Kabel jumper secukupnya.

Rangkaian

Gambar 2. Rangkaian (Sumber: arduino.cc)

Berikut adalah kode yang digunakan untuk menampilkan output pada LCD 16x2.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// Tentukan resolusi karakter LCD
lcd.begin(16, 2);
// Tulis teks
lcd.print("Hello, world!");
}

void loop() {
// Set posisi kursor
lcd.setCursor(0, 1);
// Tulis detik
lcd.print(millis() / 1000);
}

Saya jelaskan sedikit mengenai kode programnya. Anda perlu memanggil library LiquidCrystal.h. Buat objek lcd dari kelas LiquidCrystal dengan memasukkan 6 parameter, yaitu :

  1. Pin Arduino yang terhubung ke pin RS pada LCD
  2. Pin Arduino yang terhubung ke pin E pada LCD
  3. Pin Arduino yang terhubung ke pin D4 pada LCD
  4. Pin Arduino yang terhubung ke pin D5 pada LCD
  5. Pin Arduino yang terhubung ke pin D6 pada LCD
  6. Pin Arduino yang terhubung ke pin D7 pada LCD

Fungsi lcd.begin() digunakan untuk memberitahu resolusi karakter LCD ke Arduino. LCD dengan resolusi karakter selain 16x2 juga ada. Jadi Arduino perlu diberi tahu. Parameter pertama adalah jumlah kolom, masukkan 16. Parameter kedua adalah jumlah baris, masukkan 2.

Secara default, posisi kursor berada pada koordinat 0,0. Kursor adalah penanda pada koordinat mana karakter akan ditulis.

Gunakan fungsi lcd.print() untuk menampilkan teks. Harus disesuaikan panjang teks dengan jumlah kolom LCD. Jadi, panjang teks yang bisa dimasukkan cuma sepanjang 16 karakter.

Untuk mengubah posisi kursor, gunakan fungsi lcd.setCursor(). Ada 2 parameter yang harus dimasukkan, yaitu pertama adalah posisi kolom dan yang kedua adalah posisi baris. Hitungan posisi kolom dan baris dimulai dari 0. Jadi baris pertama posisinya adalah 0 dan baris kedua posisinya adalah 1. Begitu pula dengan baris, baris pertama posisinya adalah 0.

 

LCD

Gambar 1. Hasil eksperimen

Dengan LCD, anda dapat menampilkan informasi dengan mudah. Tapi terbatas, tergantung pada resolusi karakter LCD. Sebenarnya 1 posisi karakter pada LCD terdiri dari 40 piksel, yaitu dengan resolusi 4x8. Selain karakter yang tersedia dari komputer, anda sebenarnya bisa membuat karakter sendiri. Anda bisa melihat contoh-contoh kode melalui menu File > Examples > LiquidCrystal pada aplikasi Arduino. Data input dari sensor juga dapat ditampilkan ke LCD. Semua tergantung lagi pada kreatifitas anda.

Sekian isi tulisan saya kali ini. Nantikan eksperimen tentang LCD pada tulisan selanjutnya. Terimakasih telah berkunjung dan membaca tulisan ini. Semoga dapat bermanfaat bagi anda.

Referensi :

  1. https://www.arduino.cc/en/Tutorial/HelloWorld
  2. http://www.microcontroller-project.com/lcd-in-4-bit-mode-and-8-bit-mode.html