Ada pertanyaan masuk ke saya, bagaimana program untuk tampilan ke LCD (misalnya tipe LCD 2×16 karakter) menggunakan CodeVision. Maka pada kesempatan kali ini saya bahas jawaban dari pertanyaan itu.
Yang perlu Anda ketahui bahwa CodeVision AVR sudah menyediakan pustaka untuk antarmuka LCD, hanya saja, Anda harus menyesuaikan rangkaian dengan ketentuan yang dimiliki CodeVision, perhatikan ketentuan antarmuka LCD dari CodeVision berikut ini (PORT mewakili PORT apa saja yang Anda gunakan untuk antarmuka LCD dengan AVR), atau perhatikan Gambar 3:
- PORT.0 – pin RS
- PORT.1 – pin R/W
- PORT.2 – PIN EN
- PORT.3 – tidak dipakai
- PORT.4 – pin D4
- PORT.5 – pin D5
- PORT.6 – pin D6
- PORT.7 – pin D7
Beberapa fungsi pada pustaka LCD milik CodeVision antara lain:
- void _lcd_ready(void);
- void _lcd_write_data(unsigned char data);
- void lcd_write_byte(unsigned char addr, unsigned char data); – menuliskan sebuah BYTE ke generator karakter LCD atau RAM tampilan
- unsigned char lcd_read_byte(unsigned char addr); – membaca sebuah BYTE dari generator karakter LCD atau RAM tampilan
- void lcd_gotoxy(unsigned char x, unsigned char y); – meletakkan kursor pada x (kolom, 0..39) dan y (baris,0..3)
- void lcd_clear(void); – membersihkan layar LCD
- void lcd_putchar(char c);
- void lcd_puts(char *str); – menuliskan string STR di dalam SRAM ke LCD
- void lcd_putsf(char flash *str); – menuliskan string STR di dalam flash ke LCD
- unsigned char lcd_init(unsigned char lcd_columns); – inisialisasi kontroler LCD
- void lcd_control (unsigned char control); – menuliskan BYTE kontrol ke LCD
Contoh program pertama ditunjukkan pada Gambar 1, sedangkan contoh program kedua ditunjukkan pada Gambar 2. Hasilnya sama saja, seperti ditunjukkan pada Gambar 3. Penjelasan masing-masing baris program bisa Anda perhatikan keterangan dari masing-masing gambar dan fungsi pustaka lcd.h yang sudah saya jelaskan sebelumnya.
Gambar 1
Baris 3-5 merupakan deklarasi antarmuka LCD dengan mikrokontroler AVR yang bersangkutan, karena kita menggunakan PORTC maka tertulis alamatnya 0x15. Ingat untuk menyertakan pustaka <lcd.h> selalu, sehingga kita bisa menggunakan fungsi-fungsi LCD yang terkait.
Lakukan inisialisasi LCD terlebih dahulu (baris 11), kemudian tempatkan kalimat “Halo Dunia!” pada kolom-1, baris-1 (atau posisi 0,0), perhatikan baris program 12-13. Kalimat “ATMega16 Euy” ditempatkan pada kolom-1, baris-2 (atau posisi 0,1), perhatikan baris program 14-15. Pengiriman kalimat-kalimat atau string-string tersebut masing-masing menggunakan lcd_putsf.
Gambar 2
Program ini sama saja hasilnya dengan program pertama (Gambar 1), hanya saja digunakan variabel lcd_buffer untuk menampilkan 2 kalimat yang sama seperti sebelumnya. Catatan: simbol “\n” pada instruksi sprintf digunakan untuk berganti baris, pada LCD artinya tempatkan pada baris berikutnya kolom-1. Sehingga untuk menampilkan ke LCD digunakan instruksi lcd_puts.
Gambar 3
Bisakah Anda membedakan instruksi lcd_putsf dan lcd_puts? Kemudian apa maksud dari instruksi sprintf sedemikian hingga mengharuskan program mikrokontroler AVR menggunakan lcd_puts bukan lcd_putsf?
Silahkan berkomentar, terima kasih dan semoga bermanfaat…