Liquid Crystal Display (LCD) adalah

Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).


Gambar Penampang komponen penyusun LCD 
Keterangan: 
1. Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk. 
2. Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO). 
3. Twisted nematic liquid crystal (kristal cair dengan susunan terpilin). 
4. Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO). 
5. Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk. 
6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat. 

Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia. 


Gambar Contoh citra yang terbentuk pada layar LCD 
LCD yang ada dipasaran dikategorikan menurut jumlah baris yang dapat digunakan pada LCD yaitu 1 baris , 2 baris , dan 4 baris yang dapat digunakan hingga 80 karakter. Umumnya LCD yang digunakan adalah LCD dengan 1 controller yang memiliki 14 pin. Deskripsi pin dapat dilihat pada gambar dibawah ini 


Gambar Konfigurasi pin LCD
 Keterangan pin:
 1.   VSS :  digunakan untuk menyalakan LCD (ground)
 2.   VDD : digunakan untuk menyalakan LCD ( +5 V )
 3.   VEE : digunakan untuk mengatur tingkat contrast pada LCD
 4.   RS : menentukan mode yang akan digunakan (0 = instruction input , 1 =
 data input)
 5.   R/W : menentukan mode yang akan digunakan (0 = write , 1 = read)
 6.   EN : enable ( untuk clock )
 7.   D0 : data 0
 8.   D1 : data 1
 9.   D2 : data 2
10. D3 : data 3
11. D4 : data 4
12. D5 : data 5
13. D6 : data 6
14. D7 : data 7 ( MSB )

Sebelum dapat digunakan, ada beberapa langkah untuk mempersiapkan LCD agar siap dipakai diantaranya adalah LCD init yang dibutuhkan untuk mengatur mode agar sesuai dengan yang diinginkan. Langkah-langkah yang dibutuhkan untuk proses init adalah sebagai berikut :

1. Melakukan proses clear display


RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
0
1

2. Melakukan function set

RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
1
A
B
C
0
0


• Jika :
o A = 1 / 0 ( 1 = 8 bit , 0 = 4 bit )
o B = 1 / 0 ( 1 = 2 baris , 0 = 1 baris )
o C = 1 / 0 ( 1 = 5x10 dot , 0 = 5x7 dot )

3. Mengontrol display on / off

RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
1
A
B
C


• Jika :
o A = 1 / 0 ( 1 = display on , 0 = display off )
o B = 1 / 0 ( 1 = cursor on , 0 = cursor off )
o C = 1 / 0 ( 1 = blinking on , 0 = blinking off )

4. Entry mode set

RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
1
A
B


• Jika :
o A = 1 / 0 ( 1 = increment , 0 = decrement )
o B = 1 / 0 ( 1 = shift , 0 = no shift )

Berikut ini adalah contoh program untuk melakukan proses init menggunakan C:
#define LCD_data P2
#define LCD_D7  P2_7
#define LCD_rs  P1_0
#define LCD_rw  P1_1
#define LCD_en  P1_2

void LCD_init()
{
LCD_data = 0x38;    //Function set: 2 line, 8-bit,
5x7 dots
LCD_rs   = 0;        //Selected command register
LCD_rw   = 0;        //We are writing in data
register



LCD_en
= 1;
//Enable H->L
LCD_en
= 0;

LCD_busy();         //Wait for LCD to process the
command
LCD_data = 0x0F;    //Display on, Curson blinking
command
LCD_rs   = 0;        //Selected command register
LCD_rw   = 0;        //We are writing in data register
LCD_en   = 1;        //Enable H->L
LCD_en   = 0;
LCD_busy();         //Wait for LCD to process the
command
LCD_data = 0x01;    //Clear LCD
LCD_rs   = 0;        //Selected command register
LCD_rw   = 0;        //We are writing in data
register
LCD_en   = 1;        //Enable H->L
LCD_en   = 0;
LCD_busy();         //Wait for LCD to process the command
LCD_data = 0x06;    //Entry mode, auto increment with no shift
LCD_rs   = 0;        //Selected command register
LCD_rw   = 0;        //We are writing in data register
LCD_en   = 1;        //Enable H->L
LCD_busy();