MODUL 5 ATMEGA16 - APLIKASI DISPLAY LCD
MODUL 5 APLIKASI DISPLAY LCD Komponen Yang Dibutuhkan
LCD (LM016L) Tabel 1. Penjelasan Pin pada LCD Pin 1 2 3
Simbol Vss Vcc Vee
I/O ----
4
RS
I
5
R/W
I
6 7 8 9 10 11 12 13 14
E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7
I/O I/O I/O I/O I/O I/O I/O I/O I/O
Keterangan Ground Catu daya +5 Volts Pengatur Kontras Layar RS = 0 untuk reg. Command RS = 1 untuk reg. Data R/W = 0 untuk Write R/W = 1 untuk Read Enable (Strobe) Bus Data 8-bit Bus Data 8-bit Bus Data 8-bit Bus Data 8-bit Bus Data 8-bit Bus Data 8-bit Bus Data 8-bit 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 litek nik Ja mbi
MODUL 5 ATMEGA16 - APLIKASI DISPLAY LCD
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 01 02 04 06 05 07 08 0A 0C 0F 10 14 18 1C
Instruksi Clear Display Screen Return Home Decrement cursor Increment cursor Shift Display right Shift Display left Display Off,Cursor Off Display Off,Cursor On Display On, Cursor Off Display On,Cursor Blinking Shift cursor left Shift cursor right Shift entire display Left Shift entire display rigth
80
force cursor to beginning of 1st line
C0
force cursor to beginning of 2nd line
38
Setup LCD 2 lines, 5x7 matrix
2|P o litek nik Ja mbi
Keterangan Bersihkan Layar dan kembali semula Kursor kembali semula Geser kursor ke kiri Geser kursor ke kanan Geser Layar dan isi ke kanan 1 kali Geser Layar dan isi ke kiri 1 kali ----Geser kursor ke kiri Geser kursor ke kanan Geser Layar dan isi ke kiri 1 kali Geser Layar dan isi ke kanan 1 kali Pindahkan posisi kursor ke kiri atas baris 1 kolom 0 Pindahkan posisi kursor ke kiri bawah baris 2 kolom 0 Kode inisialisasi LCD
MODUL 5 ATMEGA16 - APLIKASI DISPLAY LCD
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 5. Posisi kursor pada baris 1 kolom 0
‘0Ch’ ‘80h’
6. Kirim data ascii dari karakter yang akan di Tampilkan RS diset ‘1’
3|P o litek nik Ja mbi
‘data ascii’
MODUL 5 ATMEGA16 - APLIKASI DISPLAY LCD
Listing 5.1: #include <mega16.h> #include <delay.h> char char char char
RS0E0 RS0E1 RS1E0 RS1E1
= = = =
0b00000000; 0b00000100; 0b00000001; 0b00000101;
void kirim_instruksi(char instruksi){ PORTC = RS0E0; PORTD = instruksi; delay_ms(2); PORTC = RS0E1; delay_ms(2); PORTC = RS0E0; } void kirim_karakter(char karakter){ PORTC = RS1E0; PORTD = karakter; delay_ms(2); PORTC = RS1E1 ; delay_ms(2); PORTC = RS1E0; }
void main(){ DDRC = 0xFF; DDRD = 0xFF; //inisialisasi LCD //1.display clear (instruksi //3.Increment Cursor (instruksi //4.Display On, Cursor Off (instruksi //5.Function Set (instruksi
= = = =
0x01) 0x06) 0x0C) 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 litek nik Ja mbi
MODUL 5 ATMEGA16 - APLIKASI DISPLAY LCD
Listing 5.2: #include <mega16.h> #include <delay.h> #include <string.h> char char char char
RS0E0 RS0E1 RS1E0 RS1E1
= = = =
0b00000000; 0b00000100; 0b00000001; 0b00000101;
char *string1 = "POLITEKNIK"; char *string2 = "Jambi"; int i; void kirim_instruksi(char instruksi){ PORTC = RS0E0; PORTD = instruksi; delay_ms(2); PORTC = RS0E1; delay_ms(2); PORTC = RS0E0; } void kirim_karakter(char karakter){ PORTC = RS1E0; PORTD = karakter; delay_ms(2); PORTC = RS1E1 delay_ms(2); PORTC = RS1E0; } 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 //3.Increment Cursor (instruksi //4.Display On, Cursor Off (instruksi //5.Function Set (instruksi
= = = =
0x01) 0x06) 0x0C) 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 litek nik Ja mbi