Wow enaknya belajar pemrograman aplikasi mikrokontroler AVR menggunakan Flowcode 3 for AVR sebagaimana sudah saya tulis artikel-nya sejak awal. Kali ini dicoba membuat aplikasi dengan tampilan LCD 2×16, hanya sekedar menampilkan dua kalimat, masing-masing di baris-1 dan baris-2, diagram atau flow-nya ditunjukkan pada Gambar 1 (termasuk hasil simulasinya).
Gambar 1
Hasil kompilasi kedalam Bahasa C saya tunjukkan satu persatu. Pada bagian pertama, sebagaimana ditunjukkan pada Gambar 2, merupakan deklarasi fungsi-fungsi makro untuk menangani LCD (baris 66 – 74). Terdapat 9 macam fungsi makro LCD dan hanya 3 yang akan digunakan dalam program, yaitu:
- FCD_LCDDisplay0_Start(), digunakan untuk inisialisasi LCD;
- FCD_LCDDisplay0_PrintString(char* String, char MSZ_String), digunakan untuk menuliskan string, dan
- FCD_LCDDisplay0_Cursor(char x, char y), digunakan untuk menempatkan kursor dengan posisi kolom,baris).
Gambar 2
Untuk fungsi FCD_LCDDisplay0_Start() listing programnya ditunjukkan pada Gambar 3. Apa yang dilakukan oleh fungsi ini adalah melakukan inisialisasi tampilan LCD dengan antarmuka 4 bit data (Flowcode 3 AVR hanya menyediakan antarmuka 4-bit data LCD walaupun bisa juga digunakan rangkaian antarmuka 8-bit data LCD). Rangkaian yang digunakan menggunakan pemetaan PORT dan pin LCD sebagai berikut:
#define LCD_2360334_BIT0 2 #define LCD_2360334_BIT1 3 #define LCD_2360334_BIT2 4 #define LCD_2360334_BIT3 5 #define LCD_2360334_RS 0 #define LCD_2360334_E 1
Gambar 3
Untuk fungsi FCD_LCDDisplay0_PrintString() listingnya ditunjukkan pada Gambar 4. Fungsi ini digunakan untuk menampilkan string ke LCD pada posisi kursor saat itu. Fungsi ini membutuhkan dua parameter, string yang akan ditampilkan dan jumlah karakter pada string tersebut.
Gambar 4
Untuk fungsi FCD_LCDDisplay0_Cursor(char x, char y) listingnya ditunjukkan pada Gambar 5. Fungsi ini membutuhkan dua parameter yaitu x (untuk posisi kolom) dan y (untuk posisi baris), jika dituliskan FCD_LCDDisplay0_Cursor(0,1) artinya menempatkan kursor pada kolom pertama baris kedua, demikian seterusnya…
Gambar 5
Nah program utama ditunjukkan pada Gambar 6. Diawali dengan inisialisasi register MCUCSR dan WDTCR pada baris 373 dan 374 (baca artikel saya sebelumnya). Kemudian dilanjutkan dengan melakukan inisialisasi LCD (baris 381) menggunakan fungsi FCD_LCDDisplay0_Start(). Diikuti dengan menampilkan string “Halo Flowcode3” (baris 386, angka 14 merupakan jumlah karakter pada string yang bersangkutan), menempatkan kursor pada baris kedua kolom pertama (baris 391), menampilkan string “by ATMega32” (baris 396) dan diakhiri dengan infinite-loop atau kalang-takhingga (baris 399).
Gambar 6
Jika Anda perhatikan baik-baik pada ketiga fungsi tersebut, maka bisa Anda temukan pemanggilan fungsi lain yaitu LCD_2360334_RawSend(char nIn, char nMask), yang digunakan untuk mengirimkan satu karakter. Pendefinisian fungsi ini ada di dalam fungsi FCD_LCDDisplay0_GetDefines().
Program selengkapnya bisa diunduh disini.
Semoga bermanfaat.