MODUL 5 APLIKASI DISPLAY LCD Komponen Yang Dibutuhkan LCD (LM016L) Tabel 1. Penjelasan Pin pada LCD Pin Simbol I/O Keterangan 1 Vss -- Ground 2 Vcc -- Catu daya +5 Volts 3 Vee -- Pengatur Kontras Layar 4 RS I RS = 0 untuk reg. Command RS = 1 untuk reg. Data 5 R/W I R/W = 0 untuk Write R/W = 1 untuk Read 6 E I/O Enable (Strobe) 7 DB0 I/O Bus Data 8-bit 8 DB1 I/O Bus Data 8-bit 9 DB2 I/O Bus Data 8-bit 10 DB3 I/O Bus Data 8-bit 11 DB4 I/O Bus Data 8-bit 12 DB5 I/O Bus Data 8-bit 13 DB6 I/O Bus Data 8-bit 14 DB7 I/O Bus Data 8-bit Vcc, Vss, dan Vee Jika Vcc dan Vss masing-masing berfungsi sebagai jalur arus catu daya +5V dan Ground-nya. Vee digunakan untuk mengontrol kontras dari tampilan LCD. Yakni dilakukan dengan menghubungkan pin ini dengan resistor 1 kohm atau lebih rendah lagi, pada ground. RS, register Select Ada 2 buah register yang penting pad LCD. Pin RS inilah yang digunakan untuk memilih register tersebut. Jika RS = 0, maka register kode "Instruction Command" yang sedang kita pilih, yang dapat digunakan misalnya untuk membersihkan display, memindahkan kursor, dll. Jika RS = 1 maka register "Data" yang sedang kita pilih, yang akan membuat setiap data yang kita kirimkan akan langsng ditampilkan pada LCD sesuai dengan daftar karakter yang dipunyainya. 1 P o l i t e k n i k J a m b i
R/W,read/write Input R/W membuat kita bisa menulis/mengirimkan data pada LCD atau membaca data dari LCD. RW = 0 untuk menulis, dan R/W = 1 untuk membaca. Dalam praktek sangat jarang data dari LCD dibaca, sehingga dalam beberapa rancangan, pin R/W ini langsung dihubungkan pada ground, demi menghemat port mikrokontroller. E, enable Fungsinya mirip dengan strobe. Setiap proses yang hendak kita lakukan akan menjadi "sah" setelah ada pulsa Tinggi-ke-Rendah pada pin ini. Setiap data yang dikirimkan melalui pin data, akan segera di latch di dalam LCD. Dan LCD dapat mengerjakan tugasnya menurut data yang baru saja dia terima. D0-D7 Pin data 8-bit, D0-D7 digunakan untuk mengirimkan inforamsi ke LCD atau pun untuk membaca isi dari register internal dari LCD. Untuk menampilkan abjad dan angka, kita harus mengirimkannya dalam kode ASCII, untuk abjad A-Z, dan a-z, termasuk angka 0-9 pada ke-8-pin tersebut dengan mengatur pin RS = 1. Ada pula beberapa kode perintah yang digunakan untuk membuat LCD membersihkan layarnya atau memindahkan kursor ke kiri, kanan, atau ke posisi home, atau membuat kursor yang berkedip. Kita dapat membuat RS = 0 untuk memeriksa bit bendera busy, demi melihat apakah LCD sudah siap untuk menerima data selanjutnya. Bit bendera busy menggunakan pin D7 dan bisa dilihat saat R/W = 1 dan RS = 0. Jika kemudian saat R/W = 1 dan RS = 0, dan ternyata pin D7 = 1 maka berarti bendera busy = 1. Artinya LCD masih sibuk dalam melaksanakan operasi internalnya. Segera setelah busy = 0, maka kita dapat mengirimkan data berikutnya pada LCD. Hex Instruksi Keterangan 01 Clear Display Screen Bersihkan Layar dan kembali semula 02 Return Home Kursor kembali semula 04 Decrement cursor Geser kursor ke kiri 06 Increment cursor Geser kursor ke kanan 05 Shift Display right Geser Layar dan isi ke kanan 1 kali 07 Shift Display left Geser Layar dan isi ke kiri 1 kali 08 Display Off,Cursor Off -- 0A Display Off,Cursor On -- 0C Display On, Cursor Off -- 0F Display On,Cursor Blinking -- 10 Shift cursor left Geser kursor ke kiri 14 Shift cursor right Geser kursor ke kanan 18 Shift entire display Left Geser Layar dan isi ke kiri 1 kali 1C Shift entire display rigth Geser Layar dan isi ke kanan 1 kali 80 force cursor to beginning of 1st line Pindahkan posisi kursor ke kiri atas baris 1 kolom 0 C0 force cursor to beginning of 2nd line Pindahkan posisi kursor ke kiri bawah baris 2 kolom 0 38 Setup LCD 2 lines, 5x7 matrix Kode inisialisasi LCD 2 P o l i t e k n i k J a m b i
Rangkaian Aplikasi Display LCD Proses menampilkan tulisan pada LCD : 1. Display Clear 01h 2. Setup LCD 2 Line 5x7 Data 8 Bit 38h 3. Increatment Cursor/cursor geser ke kanan secara otomatis 06h 4. Display On, Cursor Off Display ditampilkan, cursor tidak muncul 0Ch 5. Posisi kursor pada baris 1 kolom 0 80h 6. Kirim data ascii dari karakter yang akan di Tampilkan RS diset 1 data ascii 3 P o l i t e k n i k J a m b i
Listing 5.1: #include <mega16.h> #include <delay.h> char RS0E0 = 0b00000000; char RS0E1 = 0b00000100; char RS1E0 = 0b00000001; char RS1E1 = 0b00000101; void kirim_instruksi(char instruksi){ PORTD = instruksi; PORTC = RS0E1; void kirim_karakter(char karakter){ PORTD = karakter; PORTC = RS1E1 ; void main(){ DDRC = 0xFF; DDRD = 0xFF; //inisialisasi LCD //1.display clear (instruksi = 0x01) //3.Increment Cursor (instruksi = 0x06) //4.Display On, Cursor Off (instruksi = 0x0C) //5.Function Set (instruksi = 0x38) kirim_instruksi(0x01); kirim_instruksi(0x38); kirim_instruksi(0x06); kirim_instruksi(0x0c); //pesan tempat di baris pertama kolom 1 (kiri atas) kirim_instruksi(x80); kirim_karakter('p'); kirim_karakter('o'); kirim_karakter('l'); kirim_karakter('i'); kirim_karakter('t'); kirim_karakter('e'); kirim_karakter('k'); kirim_karakter('n'); kirim_karakter('i'); kirim_karakter('k'); 4 P o l i t e k n i k J a m b i
Listing 5.2: #include <mega16.h> #include <delay.h> #include <string.h> char RS0E0 = 0b00000000; char RS0E1 = 0b00000100; char RS1E0 = 0b00000001; char RS1E1 = 0b00000101; char *string1 = "POLITEKNIK"; char *string2 = "Jambi"; int i; void kirim_instruksi(char instruksi){ PORTD = instruksi; PORTC = RS0E1; void kirim_karakter(char karakter){ PORTD = karakter; PORTC = RS1E1 void kirim_string(char *str){ for (i=0;i<strlen(str);i++){ kirim_karakter(str[i]); void main(){ DDRC = 0xFF; DDRD = 0xFF; //inisialisasi LCD //1.display clear (instruksi = 0x01) //3.Increment Cursor (instruksi = 0x06) //4.Display On, Cursor Off (instruksi = 0x0C) //5.Function Set (instruksi = 0x38) kirim_instruksi(0x01); kirim_instruksi(0x38); kirim_instruksi(0x0c); kirim_instruksi(0x06); //pesan tempat di baris pertama kolom 0 kiri atas kirim_instruksi(0x80); kirim_string(string1); //pesan tempat di baris kedua kolom 0 kiri bawah kirim_instruksi(0xc0); kirim_string(string2); 5 P o l i t e k n i k J a m b i