Kita akan mencoba menampilkan karakter di LCD 16*2 dan menggunakan LCD designer untuk menampilkan karakter2 unik buatan kita sendiri
. Pada bagian akhir kita juga akan berlatih membuat program yang lebih effisien dengan memanfaatkan perulangan FOR-NEXT.
Untuk menampilkan karakter di LCD, tuliskan code program berikut:
Program LCD1
$crystal = 11059200
$lib "lcd4busy.lbx"
Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Blink
Do
Cls
Waitms 500
Lcd " AVRku.com "
Lowerline
Lcd " INDOLAB.net "
Waitms 10000
Loop
End
Gambar tampilan hasil program diatas seperti ini:

Pembahasan program LCD1:
$regfile = "m16def.dat" ' menentukan chip AVR yang kita gunakan, disini menggunakan ATmega16
$crystal = 11059200 'menentukan frekuensi xtal yang digunakan, kita gunakan xtal 11,0592MHz
$lib "lcd4busy.lbx" 'library untuk LCD
Config Lcd = 16 * 2 'menentukan jenis LCD yang digunakan, dalam hal ini LCD 16*2
Const _lcdport = Portb 'LCD dihubungkan dengan PORTB
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2 ' pin Enable LCD dihubungkan ke PORTB.2
Const _lcd_rw = 1 'pin RW LCD dihubungkan ke PORTB.1
Const _lcd_rs = 0 'pin RW LCD dihubungkan ke PORTB.0
Cursor Blink 'membuat cursor LCD berkedip
Do
Cls 'Clear LCD Screen
Waitms 500
Lcd " AVRku.com " 'menampilkan tulisan AVRku.com di LCD
Lowerline 'menuju baris bawah LCD
Lcd " INDOLAB.net " 'menampilkan tulisan INDOLAB.net
Waitms 10000
Loop 'perintah untuk mengulangi program setelah "Do"
End
Selanjutnya kita akan menggunakan LCD designer untuk membuat karakter2 unik dan menampilkannya di LCD.
Tekan CTRL+L ata u klik Tool—>LCD Designer

Klik Ok, akan menghasilkan baris program seperti berikut:
Deflcdchar ?,32,4,4,31,4,4,32,32' replace ? with number (0-7)
Rubah “?” menjadi angka antara 0 sampai 7. Ini untuk memberi “nama” karakter yang telah kita buat sehingga memudahkan saat kita akan menggunakan karakter tersebut. Misalnya:
Deflcdchar 0,32,4,4,31,4,4,32,32
Angka “0” merupakan nama yang kita berikan untuk karakter. Jika ingin menampilkannya di LCD kita cukup menulis:
LCD Chr(0)
Karakter2 yang akan saya gunakan sebagai berikut:
'karakter bintang berputar
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32
'karakter logo AVRku.com - IndoLab.net
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8
Untuk menampilkannya di LCD, kita perlu menuliskan program berikut:
Program LCD2
$regfile = "m16def.dat"
$crystal = 11059200
$lib "lcd4busy.lbx"
'karakter bintang berputar
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32
'karakter logo AVRku.com - IndoLab.net
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8
Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off
Do
Cls
Lcd Chr(6)
Lcd Chr(32)
Lcd "AVRku-IndoLab"
Lcd Chr(6)
Locate 2 , 6
Lcd Chr(0)
Lcd Chr(0)
Lcd Chr(0)
Lcd Chr(0)
Waitms 100
Locate 2 , 6
Lcd Chr(1)
Lcd Chr(1)
Lcd Chr(1)
Lcd Chr(1)
Waitms 100
Locate 2 , 6
Lcd Chr(2)
Lcd Chr(2)
Lcd Chr(2)
Lcd Chr(2)
Waitms 100
Locate 2 , 6
Lcd Chr(3)
Lcd Chr(3)
Lcd Chr(3)
Lcd Chr(3)
Waitms 100
Locate 2 , 6
Lcd Chr(4)
Lcd Chr(4)
Lcd Chr(4)
Lcd Chr(4)
Waitms 100
Locate 2 , 6
Lcd Chr(5)
Lcd Chr(5)
Lcd Chr(5)
Lcd Chr(5)
Waitms 100
Loop
End
Hasil tampilannya:

Ini videonya:
http://www.youtube.com/watch?v=Z9XGiYB0-_4
Program LCD2 di atas bisa di tulis lebih simple seperti ini:
Program LCD3
$regfile = "m16def.dat"
$crystal = 11059200
$lib "lcd4busy.lbx"
'karakter bintang berputar
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 2 , 26 , 4 , 11 , 8 , 32 , 32
Deflcdchar 3 , 32 , 17 , 10 , 4 , 10 , 17 , 32 , 32
Deflcdchar 4 , 32 , 8 , 11 , 4 , 26 , 2 , 32 , 32
Deflcdchar 5 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32
'karakter logo AVRku.com - IndoLab.net
Deflcdchar 6 , 30 , 6 , 10 , 16 , 7 , 3 , 5 , 8
Config Lcd = 16 * 2
Const _lcdport = Portb
Const _lcdddr = Ddrb
Const _lcdin = Pinb
Const _lcd_e = 2
Const _lcd_rw = 1
Const _lcd_rs = 0
Cursor Off
Declare Sub Putar_bintang
Do
Cls
Lcd Chr(6)
Lcd Chr(32)
Lcd "AVRku-IndoLab"
Lcd Chr(6)
Call Putar_bintang
Loop
Sub Putar_bintang
Local Putar As Byte , Jumlah As Byte
For Putar = 0 To 5
Locate 2 , 6
For Jumlah = 1 To 4
Lcd Chr(putar)
Next
Waitms 100
Next
End Sub
End
Dalam program LCD3, kita menggunakan subrutin yang diberi nama Putar_bintang. Di dalam subrutin ini, command untuk menulis karakter ke LCD –>Lcd Chr(…), dipanggil beberapa kali menggunakan perulangan FOR-NEXT. Baris program yang ada diantara FOR dan NEXT akan diulang sesuai pernyataan yang dibentuk oleh TO.
Contoh perulangan1:
For Jumlah = 1 To 4
Lcd Chr(putar)
Next
Baris program yang diulang yaitu Lcd Chr(putar). Berapa kali baris ini diulang?
Liat baris program FOR Jumlah = 1 TO 4.
Artikan baris program ini secara harfiah.
FOR Jumlah=1 to 4 –> Untuk Jumlah sama dengan 1 sampai 4.
Nilai Jumlah ditambah, mulai dari 1 sampai menuju 4. Setiap Jumlah berubah nilai maka baris program Lcd Chr (putar) dikerjakan.
Dari 1 sampai 4 berarti 1—>2—>3—>4 sama dengan ada 4 kali pengulangan.
Contoh perulangan2:
For Putar = 0 To 5
Locate 2 , 6
For Jumlah = 1 To 4
Lcd Chr(putar)
Next
Waitms 100
Next
Untuk perulangan FOR Putar = 0 To 5, terjadi 6 kali pengulangan mulai dari 0—>1—>2—>3—>4—>5
yang diulang adalah baris program:
Locate 2 , 6
For Jumlah = 1 To 4
Lcd Chr(putar)
Next
Waitms 100
Dalam perulangan Contoh1, Lcd Chr(putar) diulang 4 kali.
Pada Contoh2, baris program untuk contoh1 di ulang 6 kali.
Berarti Lcd Chr(putar) diulang sebanyak 4*6 = 24 kali.
Lihat lagi program LCD2, untuk menampilkan karakter bintang{karakter-karakter DefLcdChr (0—>5)}, perintah Lcd Chr(0—>5) kita tulis berulang-ulang satupersatu. Hayoo coba dihitung berapa kali? 