judul
Breaking News
Loading...
Sabtu, 31 Januari 2015

Membuat Animasi karakter pada LCD 16x2

Sabtu, Januari 31, 2015
Terimakasih sebelumnya, karena telah bersedia mengunjungi blog ini. 

Next to Point, artikel ini akan menjelasakan tentang bagaimana memebuat custom karakter pada LCD 16x2, dengan menggunakan codevision AVR sebagai compiler.

LCD (Liquid Crystal Display) adalah suatu jenis media tampil yang menggunakan kristal cair sebagai penampil utama. LCD sudah digunakan diberbagai bidang misalnya alal–alat elektronik seperti televisi, kalkulator, atau pun layar komputer. Pada postingan aplikasi LCD yang dugunakan ialah LCD dot matrik dengan jumlah karakter 2 x 16. LCD sangat berfungsi sebagai penampil yang nantinya akan digunakan untuk menampilkan status kerja alat.

Cara Kerja LCD Secara Umum


Pada aplikasi umumnya RW diberi logika rendah “0”. Bus data terdiri dari 4-bit atau 8-bit. Jika jalur data 4-bit maka yang digunakan ialah DB4 sampai dengan DB7. Sebagaimana terlihat pada table diskripsi, interface LCD merupakan sebuah parallel bus, dimana hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan penulisan data dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang 8-bit dikirim ke LCD secara 4-bit atau 8 bit pada satu waktu. Jika mode 4-bit yang digunakan, maka 2 nibble data dikirim untuk membuat sepenuhnya 8-bit (pertama dikirim 4-bit MSB lalu 4-bit LSB dengan pulsa clock EN setiap nibblenya). Jalur kontrol EN digunakan untuk memberitahu LCD bahwa mikrokontroller mengirimkan data ke LCD. Untuk mengirim data ke LCD program harus menset EN ke kondisi high “1” dan kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur data bus.

Saat jalur lainnya sudah siap, EN harus diset ke “0” dan tunggu beberapa saat (tergantung pada datasheet LCD), dan set EN kembali ke high “1”. Ketika jalur RS berada dalam kondisi low “0”, data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika RS dalam kondisi high atau “1”, data yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Misal, untuk menampilkan huruf “A” pada layar maka RS harus diset ke “1”. Jalur kontrol R/W harus berada dalam kondisi low (0) saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high “1”, maka program akan melakukan query (pembacaan) data dari LCD. Instruksi pembacaan hanya satu, yaitu Get LCD status (membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu diset ke “0”. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna), DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4-bit atau 8-bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting.

Mode 4 bit minimal hanya membutuhkan 7-bit (3 pin untuk kontrol, 4 pin untuk data). Bit RS digunakan untuk memilih apakah data atau instruksi yang akan ditransfer antara mikrokontroller dan LCD. Jika bit ini di set (RS = 1), maka byte pada posisi kursor LCD saat itu dapat dibaca atau ditulis. Jika bit ini di reset (RS = 0), merupakan instruksi yang dikirim ke LCD atau status eksekusi dari instruksi terakhir yang dibaca. 

Syntak program
Dibawah ini adalah contoh coding untuk membuat animasi karakter pada Codevision avr. 

........................................................... subroutien .....................................................

Disamping adalah subroutien yang digunakan untuk mengubah deretan data 4bit menjadi karakter animasi pada lcd 16x2.




Menyediakan variabel global array 8 byte sebagai penampung karakter animasi:
//======================================================================

flash byte Bar4[8]={0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E};
flash byte Bar3[8]={0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E};
flash byte Bar2[8]={0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E};
flash byte Bar1[8]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E};
flash byte * Signal[4]={Bar1,Bar2,Bar3,Bar4};

//======================================================================
flash byte indsatlock[8]={0x00, 0x04, 0x0E, 0x15, 0x15, 0x0E, 0x04, 0x00}; //lock
flash byte indsatnotlock[8]={0x1B, 0x15, 0x1F, 0x0A, 0x0A, 0x1F, 0x15, 0x1B};//notlock
flash byte * FixSat[2]={indsatnotlock,indsatlock};

flash byte BarSig[8]={0x1F, 0x15, 0x15, 0x0E, 0x04, 0x04, 0x04, 0x04}; // indikator signal


flash byte mmc[8]={0x0F, 0x1F, 0x1F, 0x09, 0x19, 0x19, 0x1F, 0x00 };//mmc indikator
flash byte disable[8]={0x1B, 0x15, 0x1F, 0x0A, 0x0A, 0x1F, 0x15, 0x1B};
flash byte * mmcind[2]={disable,mmc};


flash byte record[8]={0x04, 0x0E, 0x0E, 0x0E, 0x1B, 0x0E, 0x04, 0x0E};  //voice record aktif
flash byte * recordind[2]={disable,record};

Proses pemanggilan subroutien
define_char(recordind[xue],4);

Kemudian karakter ditampilkan pada LCD 16x2 
lcd_gotoxy(7,1);lcd_putchar(4);   //record

Well down, Tidak sulitkan kawan... Anda akan dengan mudah mengembangkan coding diatas. Make simply for easy understanding.
Jika ada pertanyaan silahkan tinggalkan dikolom komentar. semoga bermanfaat.




0 komentar:

Posting Komentar

 
Toggle Footer