Sebagai mahasiswa jurusan Sistem Komputer tentunya tidak asing bagi saya melakukan interfacing dengan perangkat seperti LCD. Saya pun menggunakan LCD 2×16 (2 baris, 16 kolom) dalam PI, pengganti PKL, saya untuk diaplikasikan menjadi sistem kunci pintu digital. Sebelumnya saya pun tidak begitu mengerti bagaimana LCD bekerja dan bagaimana cara memprogramnya, tapi dengan bantuan search engine saya mendapat begitu banyak referensi. Yang saya sayangkan adalah kemalasan teman-teman sejurusan saya yang enggan mempelajari hal ini, padahal mereka menggunakan LCD dalam alat yang mereka buat. Untuk mengetahui bagaimana LCD itu bekerja dapat di cek pada alamat-alamat berikut :
- http://www.howstuffworks.com/lcd.htm
- http://en.wikipedia.org/wiki/LCD
- http://www.teac.com.au/pages/howdoesanlcdwork
Saya pun banyak menyadur dari artikel dari link di atas untuk dijadikan pembahasan pada landasan teori (bab II). Tapi intinya adalah bagaimana memprogram LCD agar bekerja sesuai dengan aplikasi yang kita rancang. Pada alat PI saya, komunikasi perangkat terjadi antara mikrokontroler (turunan 8051) dengan LCD dengan menggunakan 8 bit jalur data dan 2 jalur kontrol. Pada saat itu, saya tidak mengetahui jenis-jenis LCD, yang saya tahu adalah size nya (1×16, 2×16, 2×20 dsb). Namun ada standarisasi yang cukup populer digunakan banyak vendor LCD, yaitu HD44780U, yang memiliki chip kontroler Hitachi 44780. LCD bertipe ini memungkinkan pemrogram untuk mengoperasikan komunikasi data secara 8 bit atau 4 bit. Jika menggunakan jalur data 4 bit akan ada 7 jalur data (3 untuk jalur kontrol & 4 untuk jalur data). Jika menggunakan jalur data 8 bit maka akan ada 11 jalur data (3 untuk jalur kontrol & 8 untuk jalur data). Tiga jalur kontrol ke LCD ini adalah EN (Enable), RS (Register Select) dan R/W (Read/Write). Berikut adalah susunan umum pin LCD bertipe 44780 :
| Pin | Deskripsi |
|---|---|
| 1 | Ground |
| 2 | Vcc |
| 3 | Pengatur kontras |
| 4 | “RS” Instruction/Register Select |
| 5 | “R/W” Read/Write LCD Registers |
| 6 | “EN” Enable clock |
| 7-14 | Data I/O Pins |
Urutan pin (1), umumnya, dimulai dari sebelah kiri (terletak di pojok kiri atas) dan untuk LCD yang memiliki 16 pin, 2 pin terakhir (15 & 16) adalah anoda dan katoda untuk back-lighting. Berikut adalah contoh LCD (2×16) yang umum digunakan :

Sebagaimana terlihat pada kolom deskripsi, interface LCD merupakan sebuah parallel bus, dimana hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan penulisan data dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang 8 bit dikirim ke LCD secara 4 atau 8 bit pada satu waktu. Jika mode 4 bit yang digunakan, maka 2 nibble data dikirim untuk membuat sepenuhnya 8 bit (pertama dikirim 4 bit MSB lalu 4 bit LSB dengan pulsa clock EN setiap nibblenya). Jalur kontrol EN digunakan untuk memberitahu LCD bahwa mikrokontroller mengirimkan data ke LCD. Untuk mengirim data ke LCD program harus menset EN ke kondisi high (1) dan kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur data bus. Saat jalur lainnya sudah siap, EN harus diset ke 0 dan tunggu beberapa saat (tergantung pada datasheet LCD), dan set EN kembali ke high (1). Ketika jalur RS berada dalam kondisi low (0), data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika RS dalam kondisi high atau 1, data yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Misal, untuk menampilkan huruf “A†pada layar maka RS harus diset ke 1. Jalur kontrol R/W harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high (1), maka program akan melakukan query (pembacaan) data dari LCD. Instruksi pembacaan hanya satu, yaitu Get LCD status (membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu diset ke 0. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna), mereka dinamakan DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4 atau 8 bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting. Mode 8 bit sangat baik digunakan ketika kecepatan menjadi keutamaan dalam sebuah aplikasi dan setidaknya minimal tersedia 11 pin I/O (3 pin untuk kontrol, 8 pin untuk data). Sedangkan mode 4 bit minimal hanya membutuhkan 7 bit (3 pin untuk kontrol, 4 untuk data). Bit “RS†digunakan untuk memilih apakah data atau instruksi yang akan ditransfer antara mikrokontroller dan LCD. Jika bit ini di set (RS = 1), maka byte pada posisi kursor LCD saat itu dapat dibaca atau ditulis. Jika bit ini di reset (RS = 0), bisa merupakan instruksi yang dikirim ke LCD atau status eksekusi dari instruksi terakhir yang dibaca. Macam-macam instruksi yang tersedia untuk standar LCD 44780 dapat dirujuk pada link berikut :
Saya tidak akan membahas panjang lebar bagaima memprogram kontroller (baik dari mikrokontroller ataupun PC), karena sudah banyak situs yang memberikan contoh program beserta penjelasannya (akan saya cantumkan beberapa link di baris akhir posting ini). Saya sendiri menggunakan rutin LCD siap pakai untuk berkomunikasi dengan mikrokontroller 8051. Aplikasi dengan LCD dapat dibuat dengan mudah dan waktu yang singkat, mengingat koneksi parallel yang cukup mudah antara kontroller dan LCD. Untuk hobi elektronik yang enggan melakukan coding, terdapat banyak aplikasi siap pakai untuk berkomunikasi dengan LCD melalui parallel port PC, seperti : LCDCenter & LCD Smartie. Entah kenapa saya jadi ingin menulis tentang LCD setelah beberapa teman meminta saya untuk membantu pembuatan PI nya yang berhubungan dengan LCD. Saya juga tidak menyalahkan mereka yang terdesak oleh waktu atau terjerat kemalasan untuk belajar yang notabene untuk kebaikan mereka sendiri.
Referensi :
- http://8052.com/tutlcd.phtml
- http://www.howstuffworks.com/lcd.htm
- http://en.wikipedia.org/wiki/LCD
- http://www.teac.com.au/pages/howdoesanlcdwork
- http://www.doc.ic.ac.uk/%7Eih/doc/lcd/pc_example/conn1.html
- http://ee.cleversoul.com/lcd_project.html
- http://www.overclockers.com.au/techstuff/a_diy_lcd/index.shtml
Lanjutan tulisan ini : Kemudahan Memprogram LCD (Bagian II)
akan lebih baik jika Anda mengetahui sedikit bagaimana fitur sebuah microcontroller, pemanfaatannya serta pemrogramannya. LCD dan Mikrokontroller tidak terikat satu sama lain, bisa saja controller LCDnya dari PC.
Belajar microcontroller bisa dimulai dari yg paling mudah, populer dan banyak tutorial serta contohnya di internet atau buku. MCS-51 merupakan yg paling populer, khususnya produk atmel utk MCS-51. Cukup banyak tutorial dan contoh aplikasi yg menggunakan produk ini.
Hehe.. Akan lebih baik lagi jika mas memahami apa yg ingin dibuat dan berusaha mencobanya terlebih dahulu, toh itu juga alat untuk kepentingan mas kan? Jika ada error mas bisa kembali konsul ke sini.
tuolongin saya donk…, saya ga tau apa2 ttg Program LCD apalagi Mikrokontroler. Saya mahasiswa jurusan teknik mesin ingin buat RPM & Suhu mesin digital pake LCD pada sepeda motor supra x milik saya. gimana caranya ya. tolong jelasin & saya minta programnya. saya tunggu di email saya: jeppdrosa@yahoo.co.id
Pelase ya bantuin aku……
Oia ntar bakal saya post AVRnya klo saya ada waktu :p (gi sibuk akhir2 ini). Klo ngepostnya teknikal kudu di review truz takut2 salah nulis… Jadi tunggu aja ya..
Saya baru nyoba CodeVision dan WinAVR (GNU gcc). Tapi jika Anda cukup familiar dgn C, pastinya mudah utk menggunakan macam2 C Compiler utk dev. tools mikon.
Salam kenal,
Dari salah satu mail anda yang saya baca,ada kata AVR tuh. he2x.. klo bisa bagi ilmunya about AVR donk. Compiler AVR dalam bhs C emang ad??Klo untuk MCS 51 saya dah tau.
Thanx before….
@arie
OK, ntar saya post lagi. Tapi sekarang ini saya lagi banyak kerjaan. Sebenarnya utk memprogram LCDnya sangat mudah. Apabila anda pakai AVR dan di tulis dalam C, WinAVR punya wizard LCD untuk digunakan. Atau juga MCS51, cukup banyak rutin siap pakai yg bertebaran di internet. Bisa juga pake BASCOM 51.
Pokoke gak usah binun handshaking antara LCD n mikon, tinggal ikuti prosedur koneksi pin yg diminta rutin tsb (4bit atau 8 bit) truz tinggal panggil aja rutin2nya.
minta tlg dunx,,cara memprogram lcd gmn pake mikrokontroller?
and skalian gambar rangkaian dari mikrokontroller ke LDC?lengkap ya sama penjelasan pin-pinnya?
Sensor kelembaban ya mas?? hs15p bekerja seperti variabel resistor yang nilai resistansinya tergantung pada kelembaban. Saya kurang tau pasti tapi pasti semuanya ada di datasheet. Kalau untuk menampilkan ukuran kelembaban saya juga tidak tahu bagaimana mengkonversinya dari sebuah besaran tegangan , search aja di google.
Oia, untuk menghindari arus DC yg terus-menerus ke sensor ini gunakan rangkaian kapasitor pada frekuensi tinggi. CMIIW
salam kenal…….
minta bantuannya dong siapa yang bisa/tahu tangkaian untuk sensor hs15p dan program lcd 2×16
terima kasih..
@Firdaus S
, saya juga masih newbie di bidang spt ini. Btw masih kul nih?
Terima kasih kembali
Oh, kayaknya bikin termometer digital nih..
Klo programming LCD nya saya mugkin bisa membantu, tapi untuk interfacing ADC saya hanya tahu sedikit. Mungkin klo untuk membuat rutin penulisan LCD, gunakan yang siap pakai (klo gak mo ribet..).
Klo bikin programnya pakai asm (& pakai MCS8051) bisa gunakan rutin yg spt saya gunakan. Tapi bisa kok di terapin di high lvl prog (spt C & Basic). Btw kabarin lg ya progress project nya
salam
Saya sangat senang membaca artikel saudara, saya merasa sepaham dengan ideologi saudara. Saya sedang mencoba-coba untuk menampilkan data dari ADC (yang berupa Hexa) ke LCD (dalam ascii) guna membaca suhu. Saya merasa kebingungan akan hal itu. Saya mohon bantuan kiranya dapat memberikan jalan bagaimana dapat menampilkan suhu yang terbaca oleh ADC ke dalam LCD.
atas perhatiannya dan bantuannnya saya ucapkan terima kasih
salam