Menampilkan Custom Character pada LCD dengan CodeVisionAVR

Custom character font LCDDalam aplikasi embedded system, kadang dibutuhkan suatu HMI(Human Machine Interface) untuk menjembatani antara cara kerja mesin dan indra manusia. Misalnya untuk masukan suatu seting, user juga harus dapat melihat parameter feedback dari sistem yang diseting seperti penambahan dan pengurangan suatu nilai variabel. Salah satu HMI yang paling populer adalah penampil LCD. Salah satunya adalah jenis ALPHANUMERIC LCD yang tergolong murah. Jenis ini mempunyai standar karakter yang sudah di disain oleh manufakturnya dan jumlah tersebut masih sangat terbatas bila kita butuh simbol atau tampilan huruf sesuai dengan keinginan kita.

Dalam tutorial ini akan dijelaskan langkah-langkah untuk menampilkan karakter custom pada LCD alfanumerik menggunakan CodevisionAVR C Compiler dan interfacing LCD 16×2 untuk ATmega.

Langkah pertama untuk membuat dan menampilkan karakter sendiri adalah membuat pola karakter  bitmap seperti yang kita inginkan. Seperti terlihat pada gambar dibawah ini.

Custom Char LCD Pixel

Langkah selanjutnya adalah mengkonversi gambar pixel yang telah dibuat menjadi kode biner atau hexadsimal, konversi dilakukan per-baris. Jika pixel menyala maka nilainya “1” sebaliknya jika pixel mati maka nilainya “0”. Data inilah yang akan dikirim ke LCD untuk ditampilkan.

Untuk mempermudah dan mempercepat dalam mendapatkan kode hexa dari pixel LCD, dapat menggunakan program LCD Custom Character Builder yang dapat diunduh di sini.

LCD Custom Character Builder 1

Caranya mudah kita hanya menggambar karakter sesuai keinginan kita, lalu klik Generate Code, langsung akan muncul kode hexadesimal untuk kode tersebut. Pada program ini hanya bisa menggambar untuk 8 karakter yang berbeda.

LCD Custom Character Builder 2

Kemudian selanjutnya adalah generate code pada CodeVisionAVR. Misal saya menggunakan ATmega16 dan LCD dihubungkan ke PORTC. Berikut adalah kode lengkapnya.

#include <mega16.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm

typedef unsigned char byte;

//tipe data flash untuk satu karakter
//ganti KODE PIXEL dengan kode karakter yang telah dibuat

flash byte char0[8]={KODE PIXEL};

/* function untuk define custom char */
void define_char(byte flash *pc,byte char_code)
{
 byte i,a;
 a=(char_code&lt;&lt;3) | 0x40;
 for (i=0; i&lt;8; i++) lcd_write_byte(a++,*pc++);
}

void main(void)
{
 lcd_init(16); // LCD module initialization
 define_char(char0,0); //define custom char
 lcd_gotoxy(0,0); //posisi karakter yang akan ditampilkan pd LCD
 lcd_putchar(0); //tampilkan custom char
 while (1) {}
}

Selesai. Kode diatas juga dapat digunakan untuk menampilkan lebih dari satu karakter. Berikut contoh yang saya buat untuk menampilakan 8 karakter.

custom cahracter LCD

Selamat Mencoba 😀

Advertisements

Posted on June 30, 2013, in Electronics, Mikrokontroler, Tutorial and tagged , , , , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

%d bloggers like this: