Posts Tagged ‘akses LCD’

Aplikasi LCD 2*16 dengan Mikrokontroler ATmega8535

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 Byte

Do
Cls
Lcd “*Belajar LCD*”
Lowerline
Waitms 10
Lcd “*FAHMIZAL*”
Waitms 10
For A = 1 To 25
Shiftlcd Right
Waitms 10
Next

For A = 1 To 25
Shiftlcd Left
Waitms 10
Next
Home Upper
Lcd “_UNIVERSITAS_”
Waitms 10
Lowerline
Waitms 10
Lcd “_Gadjah Mada_”
Waitms 10

For 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 1

Loop
End

Selamat berkarya teman2. Semoga bermanfaat…