Teori mengenai LCD 2*16
LCD (Liquid Crystal Display) adalah suatu jenis media tampil yang menggunakan kristal cair sebagai penampil utama. LCD sudah digunakan diberbagai bidang misalnya alal–alat elektronik seperti televisi, kalkulator, ataupun layar komputer. Pada bab ini aplikasi LCD yang dugunakan ialah LCD dot matrik dengan jumlah karakter 2 x 16. LCD sangat berfungsi sebagai penampil yang nantinya akan digunakan untuk menampilkan status kerja alat. Adapun fitur yang disajikan dalam LCD ini adalah :
a. Terdiri dari 16 karakter dan 2 baris.
b. Mempunyai 192 karakter tersimpan.
c. Terdapat karakter generator terprogram.
d. Dapat dialamati dengan mode 4-bit dan 8-bit.
e. Dilengkapi dengan back light.
Pin | Deskripsi |
1 | Ground |
2 | Vcc |
3 | Pengatur kontras |
4 | “RS” Instruction/Register Select |
5 | “R/W” Read/Write LCD Registers |
6 | “EN” Enable |
7-14 | Data I/O Pins |
15 | Vcc |
16 | Ground |
Cara kerja LCD 2*16 secara umum
Pada aplikasi umumnya RW diberi logika rendah “0”. Bus data terdiri dari 4-bit atau 8-bit. Jika jalur data 4-bit maka yang digunakan ialah DB4 sampai dengan DB7. Sebagaimana terlihat pada table diskripsi, 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-bit 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), DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4-bit 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 pin 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), merupakan instruksi yang dikirim ke LCD atau status eksekusi dari instruksi terakhir yang dibaca.
Aplikasi LCD 2*16 dengan simulasi program PROTEUS
Program menuliskan karakter string ”Selamat Datang”dan “fahmizal”
$regfile = “m8535.dat”
$crystal = 8000000
‘konfigurasi pin lcd 16*2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 2
cls
Do
Home
Lcd “Selamat Datang”
Lowerline
Lcd “fahmizal”
Loop
End
Perintah “Cls” berfungsi sebagai pembersih layar lcd dari sisa-sisa karakter yang tersimpan pada memori lcd tersebut. Perintah “Home” berfungsi untuk meletakan kursor lcd pada baris pertama dan kolom pertama. Sedangkah perintah “Lowerline” berfungsi untuk meletakan kursor lcd pada baris kedua dan kolom pertama. Untuk menghilangkan kursor lcd ditambah dengan instruksi “Cursor Off” pada konfigurasi lcd. Perintah “Config Lcd = 16 * 2” merupakan deklarasi penggunaan tipe lcd 16*2, jika diiginkan konfigurasi lcd 16*4 maka perintah diubah menjadi “Config Lcd = 16 * 4”. Berikut tampilan lcd 16*4:
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 4
Do
Home
Lcd “Selamat Datang”
Lowerline
Lcd “fahmizal”
Thirdline
Lcd “mikrokontroler”
Fourthline
Lcd “mudah dgn AVR”
Loop
End
Perintah “Thirdline” berfungsi untuk meletakan kursor lcd pada baris ketiga dan kolom pertama. Sedangkah perintah “Fourthline” berfungsi untuk meletakan kursor lcd pada baris keempat dan kolom pertama. Penyederhanaan perintah “Home, Lowerline, Thirdline, Fourthline ” dapat dilakukan dengan perintah “locate”. Sebagai contoh karakter “AVR” akan ditampilkan pada lcd dengan posisis baris kedua dan kolom ketujuh maka perintahnya menjadi:
Do
Locate 2 , 7
Lcd “AVR”
Loop
End
Program menuliskan variabel pada LCD 2*16
$regfile = “m8535.dat”
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0
Config Lcd = 16 * 4
Cursor Off
Dim Tulisan As String * 10
Do
Tulisan = “fahmizal”
Locate 1 , 1
Lcd Tulisan
Loop
End
Program percobaan kedua ialah menuliskan suatu variabel pada lcd, prinsipnya ialah menyimpan (buffer) data tersebut kedalam suatu variabel. Dalam contoh ini perintah “Lcd Tulisan” ialah menuliskan data yang tersimpan pada variabel tulisan. Variabel tulisan tersebut sebelumnya harus dideklarasikan sebagai tipe data jenis apa, pada percobaaan ini variabel tulisan dedeklrasikan sebagai tipe data string. Untuk kasus variabel data berupa tipe integer ialah sebagai berikut:
Dim Tulisan As integer
Do
Tulisan = 1234
Locate 1 , 1
Lcd Tulisan
Loop
End
Program menggeser kekiri dan kekanan karakter LCD
$regfile = “m8535.dat”
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 4
Dim A As ByteDo
Cls
Lcd “*Belajar LCD*”
Lowerline
Waitms 10
Lcd “*FAHMIZAL*”
Waitms 10
For A = 1 To 25
Shiftlcd Right
Waitms 10
NextFor A = 1 To 25
Shiftlcd Left
Waitms 10
Next
Home Upper
Lcd “_UNIVERSITAS_”
Waitms 10
Lowerline
Waitms 10
Lcd “_Gadjah Mada_”
Waitms 10For A = 1 To 5
Cursor Off Noblink
Waitms 10
Cursor On Blink
Waitms 10
Display Off
Waitms 10
Display On
Next‘—————–NEW support for 4-line LCD——
Thirdline
Lcd “_DIPLOMA_”
Fourthline
Lcd “_TEKNIK ELEKTRO_”
Wait 1Loop
End
Selamat berkarya teman2. Semoga bermanfaat…
Posted by sofian on April 10, 2010 at 1:04 pm
mas fungsi potensio lcd apa mas???
apa untuk cerah redupnya lcd pa bkn???
trus kog pada micro cm 4 kaki yg dipake
Posted by fahmizal on April 11, 2010 at 12:02 am
terimakasih sofian, gunanya potensio tersebut buat cerah redup, ato contrass dari lcd, untuk mengenai pengiriman data lcd dapat dilakukan dengan mengirim data 8 bit dan 4 bit, tentu saja kebanyakan orang lebih memilih menggunakan 4 bit karena dapat menghemat port mikro, begitu,…untuk lebih jelasnya lagi bisa dicari mbah google, hehe
Posted by sofwan on Juli 4, 2010 at 4:24 pm
mas pnya proram assembly nya ga? bwt AVR ATMEgA
terimakasih
Posted by fahmizaleeits on Juli 26, 2010 at 10:58 pm
maaaf mas…saya alergi ma program asssembly…sempet trauma juga…jadi kurang paham ma assembly…hehehehe
Posted by rendy_ on Juli 26, 2010 at 8:34 pm
mas.., ko lcd saya g bisa tampil…, padahal ud buat di proteus ud bisa tam[il..,
dan ud troubleshoot jg tidak ada yang jalur putus atau salah…,
mohon bantuannya mas..,
trimakasih
Posted by fahmizaleeits on Juli 26, 2010 at 11:01 pm
mau tanya dulu nich mas….mas nya pake program bahasa Basic ato C…soalnya sangat berbeda konfigurasi pin-nya… kalo di bascom (basic compiler) pin RW diberi GND kalo pake CAVR masuk pin mikro…
Posted by rendy_ on Juli 29, 2010 at 10:22 am
pake bahasa C codevisionAVR…,
kalau di proteus ud jalan gt mas…,
mohon masukannya mas.,
trimakasih
Posted by fahmizaleeits on Juli 29, 2010 at 9:36 pm
kalo di proteus dah bisa biasanya di hardware seharusnya juga bisa mas….coba diteliti lagi hardwarenya…terus waktu bwt progrnya di CAVR pake code wizart gak?…coba diulangi code wizartnya….selamat mencoba…
Posted by rudi on Oktober 8, 2010 at 10:58 pm
aku pengen buat rangkaian sensor tegangan AC 220 volt pakek mikro atmega8535 bahasa bascom. punya rangkaian dan programnya gak ya… terima kasih atas tanggapannya.
Posted by fahmizaleeits on Maret 21, 2011 at 11:12 am
maaf gak tahu saya mas 😀
Posted by Iswanto on Februari 8, 2011 at 9:23 pm
Ass.wr.wb. Bagus bos postingnya
Kunjungi blog saya
http://blog.umy.ac.id/iswanto/;http://iswanto.staff.umy.ac.id/
Posted by fahmizaleeits on Maret 21, 2011 at 11:12 am
trims atas kunjunganya mas is 😀
Posted by ari k on Maret 18, 2011 at 10:16 pm
mas mau tanya ni…,kenapa kok lcd 16 * 2 saya tidak mau bekerja sesuai program?? yang keluar jadi karakter aneh gitu
config pin dah bener
saya pake atmega 8535, buat progrnya saya pake bascom avr, buat downloadnya saya peke prog isp
mohon sangat bantuanya mas
Posted by fahmizaleeits on Maret 20, 2011 at 4:00 pm
ooo kalo karakter aneh yg keluar kemungkinan ada masalah dengan pemrogramannya…coba cek lagi pendefinisian pin LCD nya pada mikrokontroler dan cek juga bahwa pin RW LCD terhubung pada GND 😀
Posted by ari k on Maret 20, 2011 at 7:43 pm
oooo….gitu ya mas.pin RW tu maksudnya gimana ya mas????hehehe maap banyak tanya, saya baru belajar.
apa OS pengaruh juga ya mas???saya pake windows7
Posted by fahmizaleeits on Maret 21, 2011 at 11:14 am
pin RW itu pin register buat ngatur proses penulisan character pada LCD, OS tidak berpengaruh.
Posted by ari k on Maret 22, 2011 at 12:08 pm
oke….trima kasih banyak ya mas atas bantuanya
Posted by fahmizaleeits on Maret 23, 2011 at 11:55 am
Sama-sama mas ari 😀
Posted by popo on Maret 25, 2011 at 10:16 pm
mas,…
mau tanya,…
untuk function dan sub di bascom
bagaimana cara mendeklarasikannya ya mas?
apa dengan
sub (nam_sub)
gt ajah?
itu ditempatkan program sub ma function dimana geh mas?
diatas sebelumm do atau setelah do?
makasihh mas,..
saya bgg mas,, referensinyaa msh dikit
Posted by fahmizaleeits on April 9, 2011 at 5:47 pm
caranya seperti ini:
pertama tulis inisialisasi deklarasi ” Declare Sub (nama_deklarasi) ”
terus sub deklarasinya seperti ini:
Sub (nama_deklarasi)
…
…
End Sub
Posted by willy on Maret 27, 2011 at 3:39 pm
wahh bi blog berbahaya,.,.,
coba lihat tabel deskripsi pin pin lcd dengan gambar rangkaian lcd diatasnya….
pin 15 pada tabel berfungsi sebagai vcc, sedang kan pada gambar pin 15 di hubungkan ke ground. demikian sebaliknya pada kaki 16.
bahaya kali kan.. bisa rugi puluhan ribu ni,,,
admin berbagi ilmu yang tulus donkk…
Posted by fahmizaleeits on Maret 27, 2011 at 5:46 pm
trims mas willy, iya itu mang salah gambar ntar ane revisi gambarnya. trims udah ingetin, thanks atas kunjungannya 😀
Posted by willy on April 4, 2011 at 4:04 pm
maaf ya mas.. kalo bcara saya agak kasar kedengaran nya …
maklum aja yahh mas… krna asal saya dari medan , ke biasan sehh…
Posted by fahmizaleeits on April 9, 2011 at 6:15 pm
tak apa mas willy, awakni juga orang sumatera hehehe 😀
Posted by nathan on April 18, 2011 at 4:01 pm
mas fahmi, cara generate file .hex dari codevision gmana yah?? (haha_newbie iki)
thx parjolo.
Posted by fahmizaleeits on April 19, 2011 at 3:55 am
coba ke link ini gan… ni punya temen ane… dia ngeshare ttg codevision sepertinya cekidot https://sites.google.com/site/kardonoslab/avr-microcontroller 😀
Posted by Bayu on Mei 20, 2011 at 4:18 pm
Mas, maksud perintah “Dim Tulisan As String * 10” pada program “menuliskan variabel pada LCD” di atas apa y mas? yg saya tidak mengerti apa maksud tanda ” * 10 “? mengapa tipe string harus dikali 10? maaf banyak tanya mas, soalnya msh newbi. . .
Posted by fahmizaleeits on Juli 22, 2011 at 5:58 pm
10 itu menandakan jumlah banyaknya karakter string… string adalah karakater tulisan dalam bentuk ASCII kalo ndak salah hehehe 😀
Posted by kurniawan on Mei 22, 2011 at 10:03 pm
mas, klo program CVAVR menggerakkan motor stepper dengan di pengaruhi oleh sensor LDR gmn mas, LDR nya inputan di port ADC,???
ne saya mw buat solar tracker,
terimakasih,
kirim ke email saya ya mas,
tolong dengn gambar rangkaian nya.
kurniawasetiawa@yahoo.co.id
Posted by fahmizaleeits on Juli 22, 2011 at 6:10 pm
maaf lum bisa bantu
Posted by Rahmat on Mei 24, 2011 at 1:37 pm
Sayamau tanya bila mau menampilkan kecepatan rpm di LCD gi mana? saya sudah berhasil tapi respon keluaran di LCD lambat…,
memakai progam CVAVR, atmega 8535
Posted by fahmizaleeits on Juli 22, 2011 at 6:08 pm
mungkin atur delaynya kelamaan mas
Posted by dhanibeugeng on Juni 22, 2011 at 7:58 pm
Mas mau tannya, klo konfigurasi pin lcd 128*64 apakah sama dengan lcd 16*2? saya kesulitan dalam schematic.
Saya menggunakan GLCD JHD12864E berikut interface nya :
1.VSS
2.VDD
3.V0
4.RS
5.R/W
6.E
7-14.DB0-DB7
15.CS1
16.CS2
17.RST
18.VEE
19.Led+
20.Led-
yg jadi pertanyaan utama saya adalah CS1,CS2 itu di hubungkan kemana?
Mohon pencerahan nya.
Posted by apep on November 26, 2011 at 10:41 pm
Terima kasih atas ilmunya.
Posted by Fahmizal on Desember 2, 2011 at 9:48 pm
Sama-sama mas… semoga bisa membantu mas nya 😀
Posted by bagus ibnu ja on Desember 4, 2011 at 11:18 am
fahmi, lama tak bertemu,
kalo nyalain LCD merek sony yg 21 inch itu gimana.. weh blognya rame ya.. sukses ya…
Posted by Fahmizal on Desember 7, 2011 at 8:06 pm
iya Gus… sukses juga buat qmu ya ^_^
Posted by indra on Januari 23, 2012 at 11:52 am
wah komplit mas tutor nya…terimaksih mas,,jazakallah khair
Posted by Fahmizal on Januari 24, 2012 at 4:22 pm
iya sama2 mas 😀
Posted by kevin edward on Februari 21, 2012 at 11:00 pm
nanya donk mas Fahmi..
untuk program LCD dari AVR gimana yah ??
kalau di bascom sepertinya mudah, program hampir mirip dengan MCS51 😀
oh yah mas kalau bisa kirimin ke email saya yah cotalika@gmail.com
terimakasih.. salam kenal !!
Posted by Fahmizal on Februari 24, 2012 at 10:24 pm
silakan ke postingan ini https://fahmizaleeits.wordpress.com/2010/04/10/aplikasi-lcd-dengan-mikrokontroller-atmega8535/
Posted by syaiful on April 25, 2012 at 7:31 pm
mas mau tanya donk,,,,
klo program untuk kendali motor ac gmna ya?????
mksh sblmnya
Posted by mas on November 10, 2012 at 2:48 pm
trimakasih atas ilmunya… saya banyak menimba ilmu dari blog ini..
Posted by Fahmizal on November 11, 2012 at 5:29 am
oke, semoga bermanfaat 🙂
Posted by mas on November 10, 2012 at 2:54 pm
mau nanya mas… klw di proteus sumber vcc nya udh otomatis. dengan kata lain tampa kita buat rangkaian sumbernya tetap bisa run… kalaw mau buat pin vcc nya secara manual ge mna caranya..?
mohon pencerahannya..??
Posted by Fahmizal on November 11, 2012 at 5:29 am
kita beri label vcc udah otomatis mengacu ke level vcc 5 v, kalo mau buat secara manual di generator
Posted by joe on Januari 23, 2013 at 7:22 pm
tanks ilmunya,moga di tambah lagi,.ni mau nanya cara membuat running text menggunakan atmega,dngan metode dot metrik dengan led.cara krjanya yang simpel aja,cs baru blajar.hhihi
Posted by andi rachmansyah on Juni 4, 2013 at 5:47 pm
mau tanya mas, untuk capture karakter yang tampil di LCD untuk selanjutnya ditampilkan ke PC mungkin dilakukan tidak?
Posted by alief on Juli 13, 2013 at 7:28 pm
izin copas mas fahmi,buat referensi belajar saya.malum masih newbi.
Posted by Indra Wijaya on Februari 26, 2014 at 4:00 pm
mas fahmi…kalo mau nampilin di lcd bilangan berkoma pake keypad gimana?
misal 5,5…
terus nilai tersebut dipake buat perhitungan gimana?
kalo misal mau hapus satu digit gimana?
misal mau tulis 5,5 tapi tertulis 5,4 gimana ya?
mohon pencerahannya…
Posted by Kun on Maret 22, 2014 at 11:52 am
Mas kasih contoh dong saya baru belajar nih……buat control pakai lcd tapi ngak bisa jalan……saya mau contohnya kita mau tekan angka 23 atau 123 led pada portc menyala…….tapi percobaan saya baru satu angka uda nyala duluan lednya….saya gunakan perintah :..if angka = “123” then. Itu mas masa baru satu angka sudah menyala mohon pencerahannya ke kuntarno@yahoo.co.id he he he tanks ya mas sebelumnya
Posted by canal on Mei 17, 2014 at 8:57 am
gan, mw nanya nih.. untuk timer, saya mempergunakan ATMega8535..
pertama saya igin mengaktifkan fungsi osc1dan osc2 dengan menambahkan cristal 32.768 pada pin 28 dan 29, apa perlu menuliskannya dibascom? bentuk kodenya bagaimana..
yg kedua,awalnya kan saya pake cristal 11.0592mhz, karena merasa cukup lambat, saya mencoba mempergunakan cristal 16MHz, tapi tetap ngga ada perubahan… modelnya sperti ini :
Config Timer1 = Timer , Prescale = 1024
On Timer1 Isr_timer1
Enable Timer1
Timer1 = 33136
tolong kasih solusi gan…
terimakasih..
Posted by jannat on Juli 22, 2014 at 2:02 pm
maksud dari kalimat ini apa gan??”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 pin untuk data).”
Posted by jannat on Juli 22, 2014 at 2:08 pm
trus biasanya kalo yang d pake itu 4 bit doang kan pin yang digunakan dari db4-db7,,itu knp??apa gabisa pake dari db0-db3?
tlg bantuannya.thnx
Posted by hadiansyah_handi@yahoo.com on Januari 12, 2015 at 8:49 pm
mas pnya rangkaian lcd gk yg biasa, soal nya saya lagi tugas di skolah bkin lcd character, trus saya jga blum paham gmana rangkaian lcd nya ?
Posted by gio on Agustus 30, 2016 at 1:43 am
pagi mas fahmi, saya kesulitan perencanaan dalam rangkaian lcd 16×2. dengan program ARDUINO mas,. mohon bantuannya mas, saya baru pertama belajar lewat ARDUINO soalnya. makasi mas.
Posted by Manaf on November 24, 2016 at 5:15 pm
Mantap …, terima kasih bro
Posted by Proposal Proyek Akhir – sarinalimbong on April 19, 2018 at 8:43 am
[…] https://fahmizaleeits.wordpress.com/2010/04/10/aplikasi-lcd-dengan-mikrokontroller-atmega8535/ […]