A. LCD (Liquid Crystal Display)
Sebuah LCD adalah
piranti output yang menampilkan informasi dalam bentuk teks. Ada bermacam-macam
LCD, ada yang hanya bisa menampilkan karakter, ada yang bisa menampilkan
grafik. Ada yang hanya bisa menampilkan 1 baris, ada yang lebih dari satu
baris. LCD yang paling banyak digunakan adalah LCD dengan format 16 x 2,
artinya LCd tersebut dapat menampilkan 2 baris, masing-masing baris dapat
menampilkan 16 karakter.
Setiap karakter dikirim dalam satu
saat ke LCD dengan format ASCII (American
Standard Code for International Interchange). Sebuah mikrokontroler yang
diletakkan di panel belakang LCD menerjemahkan data karakter ASCII tersebut dan
mengirim sinyal kontrol untuk menampilkan karakter ke LCD. LCD dapat
dikonfigurasi untuk mengirim data dalam format paralel atau serial.
Modul
LCD M1632 seperti dalam Gambar 6.1 merupakan modul LCD dengan tampilan 16 x 2
baris dengan konsumsi daya yang rendah. Modul ini dilengkapi dengan
mikrokontroler yang didisain khusus untuk mengendalikan LCD. Mikrokontroler
HD44780 buatan Hitachi yang berfungsi sebagai pengendali LCD ini mempunyai
CGROM (Character Generator Read Only
Memory), CGRAM (Character Generator
Random Access Memory), dan DDRAM (Display
Data Random Access Memory).
Gambar 6.1 Modul LCD M1632
LCD ini memiliki 16 kaki, sebagaimana ditunjukkan
dalam Tabel 6.1.
Tabel 6.1 Konfigurasi Pin LCD M1632
No
|
Kaki
|
Deskripsi
|
1
|
Vss
|
0V (GND)
|
2
|
Vcc
|
+5V
|
3
|
VLC
|
LCD
Contrast Voltage
|
4
|
RS
|
Register Select; H: Data Input; L: Instruction Input
|
5
|
RD
|
H:Read;
L: Write
|
6
|
EN
|
Enable
Signal
|
7
|
D0
|
Data Bus
0
|
8
|
D1
|
Data Bus
1
|
9
|
D2
|
Data Bus
2
|
10
|
D3
|
Data Bus
3
|
11
|
D4
|
Data Bus
4
|
12
|
D5
|
Data Bus
5
|
13
|
D6
|
Data Bus
6
|
14
|
D7
|
Data Bus
7
|
15
|
V+BL
|
Positive
Backlight Voltage
|
16
|
V-BL
|
Negative
Backlight Voltage
|
1. DDRAM (Display Data Random Access Memory)
DDRAM adalah merupakan memori tempat karakter yang
ditampilkan berada.
Contoh,
untuk karakter ‘A’ atau 41H yang ditulis pada alamat 00, maka karakter tersebut
akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter
tersebut ditulis di alamat 40, maka karakter tersebut akan tampil pada baris
kedua kolom pertama dari LCD. Posisi ini ditunjukkan dalam Gambar 6.2.
Gambar 6.2 Posisi DDRAM
2. CGRAM (Character Generator Random Access Memory)
CGRAM
adalah merupakan memori untuk menggambarkan pola sebuah karakter di mana bentuk
dari karakter dapat diubah-ubah sesuai keinginan. Namun memori ini akan hilang
saat power supply tidak aktif, sehingga pola karakter akan hilang.
3. CGROM (Character Generator Read Only Memory)
Gambar 6.3 Pola Karakter dalam CGROM
CGROM
adalah merupakan memori untuk menggambarkan pola sebuah karakter di mana pola
tersebut sudah ditentukan secara permanen dari HD44780 sehingga pengguna tidak
dapat mengubah lagi. Namun karena ROM bersifat permanen, maka pola karakter
tersebut tidak akan hilang walaupun power supply tidak aktif. Pada Gambar 6.3,
tampak terlihat pola-pola karakter yang tersimpan dalam lokasi-lokasi tertentu
dalam CGROM. Pada saat HD44780 akan menampilkan data 41H ke DDRAM, maka HD44780
akan mengambil data di alamat 41H (0100 0001) yang ada pada CGROM yaitu pola
karakter A.
B. Rangkaian Antarmuka Mikrokontroler dengan LCD16x2
Dalam
Gambar 6.4 modul LCD dihubungkan ke PORTB mikrokontroler dimana kaki RS, RD, EN
terhubung ke PORTB.0-PORTB.2 dan D4, D5, D6, D7 terhubung ke PORTB.4-PORTB.7.
Dalam rangkaian ini digunakan mode pengiriman data paralel 4-bit.
Gambar 6.4 Rangkaian LCD
C. Instruksi yang Digunakan untuk Menampilkan Karakter
Ada beberapa
instruksi yang bisa digunakan untuk menampilkan karakter ke LCD, yaitu:
lcd_init(a); //inisialisasi LCD
lcd_gotoxy(x,y); //menempatkan kursor di baris
y
//kolom x
lcd_putchar(char);
//menampilkan 1 karakter
lcd_clear(); //membersihkan layar LCD
lcd_putsf(string);
//menampilkan string yang sudah
//tersimpan di memori flash
lcd_puts(string); //menampilkan string untuk data
yang
//ada
ketika program sedang berjalan
Contoh penggunaan instruksi:
1.
Menampilkan 1 karakter
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0
baris 0
lcd_putchar(0x41); //menampilkan string ‘A’
2.
Menampilkan string
lcd_gotoxy(0,1); //menempatkan kursor di
kolom 0 baris 1
lcd_putsf("Antarmuka LCD"); //menampilkan string
//“Antarmuka
LCD”
3.
Menampilkan
angka dalam bentuk karakter
char temp[8]; //deklarasi variabel tempat
karakter
//suhu
lcd_putsf("TEMP: ");
toa(value,1,temp); //float to array, mengubah data suhu
//(float) ke karakter (array)
lcd_gotoxy(6,0); lcd_puts(temp); //menampilkan data suhu lcd_gotoxy(11,0); lcd_putchar(0xdf); //menampilkan karakter derajat lcd_putsf("C");