Artikel berikut ini akan menjelaskan mengenai Dasar Teori LCD 16×2 karakter M1632 Arduino yang pernah kami bahas dalam AN-0034 LCD Module 16×32 (M1632) di mana dalam artikel ini akan kami bahas lebih detail mengenai struktur memori, register-register, inisialisasi dan teknik antar mukanya ke mikrokontroler / arduino.
- DDRAM (Data Display Random Access Memory), DDRAM dalam dasar teori LCD 16×2 karakter M1632 Arduino 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 40h, maka karakter tersebut akan tampil pada baris kedua kolom pertama dari LCD.
- CGROM (Character Generator Read Only Memory), CGROM dalam dasar teori LCD 16×2 karakter M1632 Arduino adalah merupakan memori permanen yang menggambarkan pola tiap karakter pada LCD yang tersimpan pada chipset LCD HD44780 dan tidak dapat diubah oleh pengguna. Karena sifatnya permanen, maka pola ini tidak akan hilang walau power supply dimatikan. Yang dimaksud dengan pola di sini adalah bagaimana bentuk karakter, contohnya ‘A’ dibentuk.
Contoh pada gambar 2 di atas, terlihat bagaimana pola karakter ‘A’ atau kode biner 0100 0001b ditampilkan dalam layar LCD. Pola tersebut adalah tampilan pada saat kode biner 0100 0001b atau 41h dituliskan ke dalam DDRAM dengan posisi sesuai Address Counter DDRAM saat itu
- CGRAM (Character Generator Randem Access Memory, CGRAM dalam teori dasar LCD 16×2 karakter M1632 arduino sama halnya dengan CGROM merupakan memori untuk menggambarkan pola sebuah karakter yang akan ditampilkan pada layar saat data dituliskan ke dalam DDRAM. Namun pada CGRAM bentuk dari karakter dapat diubah-ubah sesuai keinginan dengan mengubah data pada CGRAM. Namun memori ini akan hilang saat power supply tidak aktif, sehingga pola karakter akan hilang. Untuk mengantisipasi kondisi tersebut biasanya pola karakter di simpan pada memori sistem minimum atau mikrokontroler yang mengakses LCD ini dan selalu diupdate saat power pertama kali diaktifkan
Register-register pada LCD 16×2
Pada artikel Teori Dasar LCD 16×2 karakter M1632 Arduino ini terdapat dua buah register yaitu Register Data dan Register Perintah. Register Data, dalam Teori Dasar LCD 16×2 karakter M1632 Arduino adalah register di mana mikrokontroler ataupun arduino dapat menuliskan atau membaca data ke atau dari DDRAM ataupun CGRAM. Akses data ke DDRAM baik penulisan maupun pembacaan adalah merupakan akses ke bagian memori dari tampilan pada layar LCD. Sedangkan akses ke CGRAM adalah merupakan proses untuk meng-edit pola karakter yang ada pada lokasi CGRAM tersebut. Register Data diakses dengan kondisi nilai RS (Register Select = 0)
Register Perintah dalam Teori Dasar LCD 16×2 karakter M1632 Arduiono adalah register di mana perintah-perintah dari mikrokontroler ataupun arduino ke chipset HD44780 selaku pengendali modul LCD 16×2 karakter M1632 diberikan. Perintah-perintah tersebut berfungsi untuk mengatur tampilan pada LCD 16×2 karakter M1632 atau alamat dari DDRAM dan CGRAM. Selain itu register ini juga merupakan tempat di mana status dari HD44780 dapat dibaca. Bit ketujuh dari data status yang terbaca adalah merupakan busy flag (tanda sibuk) yaitu suatu tanda yang mengindikasikan bahwa chipset HD44780 masih dalam kondisi sibuk sehingga proses akses data lebih lanjut dari mikrokontroler yang terhubung pada Modul LCD 16×2 karakter M1632 harus menunggu hingga tanda sibuk ini selesai. Sedangkan bit keenam hingga bit nol adalah merupakan Address Counter (Penghitung Alamat) dari DDRAM. Address Counter ini menunjukkan lokasi dari DDRAM yang sedang ditunjuk pada saat tersebut.
Perintah-perintah pada LCD 16×2 karakter M1632
Berikut ini adalah daftar perintah yang dapat dikirimkan ke Register Perintah LCD 16×2 karakter M1632 arduino dengan tujuan untuk mengatur tampilan pada LCD tersebut.
Perintah | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Deskripsi |
Hapus Display | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Hapus Display dan DDRAM |
Posisi Awal | 0 | 0 | 0 | 0 | 0 | 0 | 1 | X | Set Alamat DDRAM di 0 |
Set Mode | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | Atur arah pergeseran cursor dan display |
Display On/OFF | 0 | 0 | 0 | 0 | 1 | D | C | B | Atur display (D) On/OFF, cursor (C) ON/OFF, Blinking (B) |
Geser Cursor/Display | 0 | 0 | 0 | 1 | S/C | R/L | X | X | Geser Cursor atau display tanpa merubah alamat DDRAM |
Set Fungsi | 0 | 0 | 1 | DL | N | F | X | X | Atur panjang data, jumlah baris yang tampil, dan font karakter |
Set Alamat CGRAM | 0 | 1 | ACG | ACG | ACG | ACG | ACG | ACG | Data dapat dibaca atau ditulis setelah alamat diatur |
Set Alamat DDRAM | 1 | ADD | ADD | ADD | ADD | ADD | ADD | ADD | Data dapat dibaca atau ditulis setelah alamat diatur |
X = diabaikan
I/D 1=Increment, 0=Decrement
S 0=Display tidak geser
S/C 1=Display Shift, 0=Geser Cursor
R/L 1=Geser Kiri, 0=Geser Kanan
DL 1=8 bit, 0=4bit
N 1=2 baris, 0=1 baris
F 1=5×10, 0=5×8
D 0=Display OFF, 1=Display ON
C 0=Cursor OFF, 1=Cursor ON
B 0=Blinking OFF, 1=Blinking ON
Data pada tabel di atas adalah data yang harus dituliskan ke Register Perintah untuk mengatur tampilan LCD 16×2 karakter M1632
Mengatur posisi karakter pada layar LCD 16×2 karakter M1632
Untuk menentukan posisi tampilan pada layar LCD 16×2 karakter M1632 dilakukan dengan menuliskan data ke Address Counter dari LCD. Address Counter dapat diakses dengan membuat bit 7 dari data yang ditulis ke Register Perintah berlogika 1.
Contoh apabila kita ingin menampilkan karakter ‘D’ di kolom kedua baris pertama di layar LCD maka terlebih dahulu Address Counter kita set 01h atau 0000 0001b dan bit ke 7 diberi logika 1 sehingga menjadi 1000 0001b atau 81h. Data tersebut dituliskan pada Register Perintah agar Address Counter menunjuk ke kolom dua baris pertama dari layar LCD 16×2 karakter M1632
Kemudian data karakter ‘D’ atau 41h atau 0100 0001b dituliskan ke Register Data sehingga tersimpan dalam DDRAM pada alamat 01h dan tampil pada layar di kolom kedua baris pertama.
Inisialisasi LCD 16×2 Karakter M1632
Untuk menggunakan sebuah modul LCD 16×2 karakter M1632 maka terlebih dahulu dilakukan proses inisialisasi yang digunakan untuk mempersiapkan modul tersebut. Selain itu juga digunakan untuk mode kerja dari LCD 16×2 karakter M1632. Pengaturan mode ini harus ditentukan pada hanya pada saat inisialisasi awal saja yaitu:
- Panjang Data
- Jumlah baris LCD yang aktif
- Bentuk Font (5×8 atau 5×10)
Diagram alir pada gambar 6 menunjukkan proses yang selalu terjadi (secara standard) pada saat inisialisasi modul LCD ini dilakukan sebelum masuk ke bagian pengaturan mode. Sistem harus menunggu selama 15 mS atau lebih setelah sumber daya mencapai tegangan 4,5 Volt agar chipset HD44780 siap untuk berhubungan dengan mikrokontroler yang mengendalikannya.
Data 0011xxxx di mana x adalah kondisi tidak menentu (bisa 0 atau 1) dikirimkan 2 kali dengan waktu tunda 4,1 mS atau lebih dan 100 uS atau lebih. Pada bagian ini proses pembacaan status sibuk memang belum dapat dilakukan sehingga mikrokontroler harus memberikan waktu tunda terlebih dahulu.
Kemudian dilanjutkan dengan data 0010xxxx yang membuat modul ini berada pada kondisi pengaturan mode. Pada saat ini, status sibuk sudah dapat dibaca sehingga tidak harus digunakan waktu tunda. Proses pengaturan fungsi dan dilanjutkan dengan mode juga sudah dapat mulai dilakukan dengan mengirimkan data-data ke register perintah.
Pengaturan Fungsi digunakan untuk mengatur panjang data, jumlah baris dan font sedangkan pengaturan mode digunakan untuk mengatur arah pergeseran kursor maupun display. Listing 4 menunjukkan bagian pengaturan fungsi dan mode pada potongan program inisialisasi LCD 16×2 karakter M1632. Pada contoh di listing ini, proses dilakukan dengan mengatur font 8×5, dua baris LCD dan panjang data 4 bit (antarmuka 4 bit). Kemudian layar LCD 16×2 karakter M1632 dimatikan dan data 01h dikirim ke register perintah untuk memastikan bahwa memori data dalam DDRAM dihapus sekaligus dan Address Counter berada pada posisi awal. Kemudian dilanjutkan dengan mengirimkan data 0Eh atau 00001110 yang berfungsi untuk mengaktifkan kembali layar LCD 16×2 karakter M1632.
Selanjutnya pengaturan mode dilakukan dengan mengirimkan data 06h atau 00000110 dalam biner di mana dalam hal ini kursor aktif dengan mode auto increment (otomatis bertambah). Yaitu posisi Address Counter akan bertambah secara otomatis saat setiap kali proses penampilan data ke layar LCD 16×2 karakter M1632 dilakukan sehingga kursor juga akan bergeser ke kanan. Pada saat ini layar LCD 16×2 karakter M1632 akan menampilkan kursor di pojok kiri atas (alamat awal) yang menandakan bahwa proses inisialisasi LCD 16×2 karakter M1632 telah berhasil dilakukan
Cara penulisan dan pembacaan data ke dan dari register-register LCD 16×2 karakter M1632
Setelah kita mengetahui data-data apa saja yang harus dikirimkan ke register-register LCD 16×2 karakter M1632 untuk mengatur LCD tersebut, berikut perlu kita pelajari bagaimana menulis dan membaca data ke register-register tersebut
1. Penulisan data ke Register Perintah
Penulisan data ke Register Perintah digunakan untuk memberikan perintah-perintah pada LCD 16×2 karakter M1632 sesuai dengan data-data yang dikirimkan ke register tersebut. (lihat tabel Perintah-perintah LCD 16×2 karakter M1632).
Gambar 7 menunjukkan proses penulisan data ke register perintah dengan menggunakan mode 4 bit interface. Kondisi RS berlogika 0 menunjukkan akses data ke Register Perintah. RW berlogika 0 yang menunjukkan proses penulisan data akan dilakukan. Nibble tinggi (bit 7 sampai bit 4) terlebih dahulu dikirimkan dengan diawali pulsa logika 1 pada E Clock. Kemudian Nibble rendah (bit 3 sampai bit 0) dikirimkan dengan diawali pulsa logika 1 pada E Clock lagi. Untuk mode 8 bit interface, proses penulisan dapat langsung dilakukan secara 8 bit (bit 7 … bit 0) dan diawali sebuah pulsa logika 1 pada E Clock.
2. Penulisan data ke Register Data
Penulisan data ke Register Data digunakan dalam proses penulisan data karakter yang akan ditampilkan ke LCD (DDRAM) atau proses penulisan data pola karakter ke CGRAM. Proses diawali dengan adanya logika 1 pada RS yang menunjukkan akses ke Register Data, kondisi R/W diatur pada logika 0 yang menunjukkan proses penulisan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4) dikirim dengan diawali pulsa logika 1 pada sinyal E Clock dan kemudian diikuti 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali pulsa logika 1 pada sinyal E Clock.
3. Pembacaan data dari Register Perintah
Proses pembacaan data dari Register Perintah ini digunakan untuk membaca status sibuk LCD 16×2 karakter M1632 dan Address Counter saja. RS diatur pada logika 0 untuk akses ke Register Perintah, R/W diatur pada logika 1 yang menunjukkan proses pembacaan data. 4 bit nibble tinggi dibaca dengan diawali pulsa logika 1 pada E Clock dan kemudian 4 bit nibble rendah dibaca dengan diawali pulsa logika 1 pada E Clock. Untuk Mode 8 bit interface, pembacaan 8 bit (nibble tinggi dan rendah) dilakukan sekaligus dengan diawali sebuah pulsa logika 1 pada E Clock.
4. Membaca data dari Register Data
Pembacaan data dari Register Data dilakukan untuk membaca kembali data yang tampil pada LCD. Proses dilakukan dengan mengatur RS pada logika 1 yang menunjukkan adanya akses ke Register Data. Kondisi R/W diatur pada logika tinggi yang menunjukkan adanya proses pembacaan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4) dibaca dengan diawali adanya pulsa logika 1 pada E Clock dan dilanjutkan dengan data 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali dengan pulsa logika 1 pada E Clock.
ANTARMUKA LCD 16X2 KARAKTER M1632
Berikut ini adalah contoh-contoh antarmuka LCD 16×2 karakter M1632 beserta contoh programnya dengan sistem minimum / sistem mikrokontroler. Yang menjadi perbedaan adalah setiap contoh memiliki koneksi I/O yang berbeda sehingga terdapat perbedaan juga pada bagian deklarasi I/O di tiap contoh program.
Antarmuka LCD 16×2 karakter M1632 dengan DST-51 / DST-52
Contoh Program:
- hd44783-asm511.asm contoh program dengan menggunakan bahasa assembly dan compiler ASM51
- lcd.c contoh program dengan menggunakan bahasa C
Antarmuka LCD 16×2 karakter M1632 dengan mikrokontroler AT89S51, AT89S52
Contoh Program:
- lcd.asm contoh program dengan menggunakan bahasa assembly
Antarmuka LCD 16×2 karakter M1632 dengan mikrokontroler ATMega8515
Contoh Program:
- lcd-44780-4bit-avr.asm contoh program dengan menggunakan bahasa assembly
Untuk membeli LCD 16×2 karakter M1632 dapat dilakukan pada link berikut ini
LCD 16×2 karakter M1632 backlight hijau
LCD 16×2 karakter M1632 backlight biru
LCD 16×2 karakter M1632 backlight putih
Paulus Andi Nalwan, DELTA ELECTRONIC