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 LCDConfig Lcd = 16 * 2 'menentukan jenis LCD yang digunakan, dalam hal ini LCD 16*2Const _lcdport = Portb 'LCD dihubungkan dengan PORTBConst _lcdddr = DdrbConst _lcdin = PinbConst _lcd_e = 2 ' pin Enable LCD dihubungkan ke PORTB.2Const _lcd_rw = 1 'pin RW LCD dihubungkan ke PORTB.1Const _lcd_rs = 0 'pin RW LCD dihubungkan ke PORTB.0Cursor Blink 'membuat cursor LCD berkedipDoCls 'Clear LCD ScreenWaitms 500Lcd " AVRku.com " 'menampilkan tulisan AVRku.com di LCDLowerline 'menuju baris bawah LCDLcd " INDOLAB.net " 'menampilkan tulisan INDOLAB.netWaitms 10000Loop '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?
nice info MAs.,
ohya kalo utk gambar skematik rangkaian LCD ke mikro ada gak...??
emailnya? akan kita kirim ke email rangkaiannya
mas saya minta rangkain komunikasnya LCD nya..
saya bingung
RS= pin.0
RW= pin.1
EN= pin.2
lalu sisa nya pin apa saja..??yang kemikronya
email camp_646@yahoo.co.id
mas krimkan jga ya ke emailku skemaik lcd ke mikro
email : ramadhan_fa05@yahoo.com
mas tolong kirim ke email ku juga ya bambang.snap@gmail.com
boleh juga mas.. saya sedang belajar mikro.. tolong kirim juga ke email saya gunawanit@gmail.com
ada sample listing untuk membaca input dari sensor PiR gak mas.. jika ada boleh juga mas.. thanks
Mas minta bantuannya, saya rencana menggunakan LCD 16x2, digunakan untuk menampilkan :
1. tegangan (pada baris 1 & 2)
2. arus (pada baris 1 & 2)
3. Daya (Pada baris 1 & 2)
Tampilan diatas bergantian selama 10 detik.
namun apabila terjadi alarm tampilan tersebut berubah menjadi :
misal ;
Over voltage / over current (pada baris 1 & 2)
tampilan harus tetap pada posisi ini sebelum mikro di reset.
mohon bantuan code bascom nya. trims
Mas minta bantuannya, saya rencana menggunakan LCD 16x2, digunakan untuk menampilkan :
1. tegangan (pada baris 1 & 2)
2. arus (pada baris 1 & 2)
3. Daya (Pada baris 1 & 2)
Tampilan diatas bergantian selama 10 detik.
namun apabila terjadi alarm tampilan tersebut berubah menjadi :
misal ;
Over voltage / over current (pada baris 1 & 2)
tampilan harus tetap pada posisi ini sebelum mikro di reset.
mohon bantuan code bascom nya. trims
mas tolong bantuannya donk gimana caranya bikin sebuah program pada lcd yang hasilnya unik. kirim ke email rini.aza64@yahoo.com. thanks...