Kamis, 12 November 2015

Membuat Karakter Spesial pada LCD Alphanumeric

LCD alphanumeric sudah tentu tidak asing lagi bagi para hobi mikrokontroler. Tapi pada kesempatan kali ini saya ingin mengulas lebih lanjut mengenai LCD alphanumeric.
LCD alphanumeric merupakan alat penampil (display) yang digunakan untuk menampilkan karakter atau tulisan. Kebanyakan perangkat ini telah dilengkapi perangkat pengontrol sendiri, sehingga untuk memanfaatkan perangkat ini kita tinggal mengikuti aturan standar yang telah disimpan dalam pengontrol tersebut.

LCD Alphanumeric dipasaran yang umum dijumpai adalah LCD dengan ukuran 16x2, 16x4, 20x2, 20x4 dengan kontroler yang umum dijumpai adalah kontroler dengan prefik LMxxx. Ukuran tersebut mewakili jumlah karakter pada satu baris dan jumlah baris dalam satu modul. Misalnya LCD 16x2 mempunyai kapasitas 16 karakter per baris dan dalam 1 modul terdapat 2 baris.


Interface

Symbol
Fungsi
Sinyal
Pin
VSS
GND Power Supply
GND
1
VDD
+5V Power Supply
+5V
2
VEE
Contrast adjust
0V s/d 5V
3
RS
Register Select
0 = instruction
1 = data
4
R/W
Read / Write
0 = Write
1 = Read
5
E
Enable
1-> 0
6
Db 0
Data bit 0
0/1
7
Db 1
Data bit 1
0/1
8
Db 2
Data bit 2
0/1
9
Db 3
Data bit 3
0/1
10
Db 4
Data bit 4
0/1
11
Db 5
Data bit 5
0/1
12
Db 6
Data bit 6
0/1
13
Db 7
Data bit 7
0/1
14
VB+
+ LED back light
+5 V
15
VB-
- LED back light
GND
16

Secara umum pin LCD Alphanumeric dibagi menjadi 3 kelompok yaitu:
  1. Kelompok power supply (Vss,Vdd,Vee,VB+,VB-)
  2.  Port Data (Db7:Db0)
  3.  Port Control (RS, R/W, E)

Kelompok power supply merupaka penyedia tegangan kerja bagi LCD, pengatur tingkat kecerahan (contrast), dan penyedia tegangan untuk back light LCD.
Port data merupakan jalur data yang masuk dan keluar LCD,  jumlah bit data adalah 8 sehingga lebar data untuk port data adalah 1 byte. Aliran data pada LCD terdapat dua mode yaitu mode 8 bit dan mode 4 bit. Untuk mode 8 bit, port data digunakan semuanya (Db7:Db0) sedangkan mode 4 bit hanya menggunakan 4 bit dari port data yaitu Db7:Db4.
Port Control merupakan port yang digunakan untuk mengatur aliran data yang masuk dan keluar LCD. Masing masing Pin mempunyai fungsi sebagai berikut.
  1. Pin RS : jika “0” maka  byte yang ada pada port data akan ditujukan ke register perintah pada kontroler LCD. Jika “1” maka byte yang ada pada port data akan ditujukan ke register data pada kontroler LCD.
  2. Pin R/W : jika “0” maka LCD diset untuk menerima data (menulis data ke LCD. Jika “1” maka LCD diset untuk mengirimkan data (membaca data LCD)
  3. Pin E : perubahan state dari 1 ke 0 akan membuat kontroler LCD enable (dapat menerima atau mengirim data). Untuk mode 8 bit, penulisan/pembacaan data hanya butuh 1 enable, sedangkan mode 4 bit membutuhkan 2 kali enable ( nible atas kemudian nible bawah).

Memori LCD alphanumeric


CGROM (Character Generator Read Only Memory)

CGROM adalah memori ROM yang telah diisi pola karakter oleh pabrik pembuat LCD. Ukuran CGROM adalah 256x8 Byte. Alamat CGROM dimulai dari 0x00 s/d 0xFF untuk setiap alamat mempunyai ukuran 8 byte.  Khusus untuk alamat 0x00 s/d 0x07 tidak diisi pola karakter oleh pabrik karena alamat ini tempat dimana memori CGRAM berada, sehingga pengguna dapat membuat sendiri arakter special dan menyimpanya ke alamat ini.
Karena sifat memori pada alamat ini adalah non volatile (RAM) sehingga apabila catu daya pada kontroler LCD hilang, data yang tersimpan pada CGRAM juga ikut hilang.

CGRAM(Character Generator Random Access Memory)

Telah disinggung diatas bahwa CGRAM menempati alamat 0x00 s/d 0x07 pada CGROM, berarti bahwa CGRAM merupakan bagian dari CGROM akan tetapi mempunyai karakteristik yang berbeda. Setiap alamat CGRAM mempunyai ukuran 8 bit dan dimulai dari alamat 0x40 s/d 0x47 untuk alamat 0x00 pada CGROM  hingga 0x78 s/d 0x7F untuk alamat 0x07 pada CGROM.

DDRAM (Dynamic Data Random Access Memory)

Merupakan memori tempat kita meletakan karakter yang akan ditampilkan pada layar LCD. Alamat DDRAM merupakan format baris dan kolom pada LCD Alphanumeric yang kita gunakan. Perbedaan pengalamatan memori DDRAM terletak pada type LCD. Untuk LCD dengan jumlah kolom 20 berbeda dengan LCD dengan jumlah kolom 16. Akan tetapi pengalamatan barisnya sama.
Sebagai contoh, jika kita akan merubah tampilan pada kolom 5 baris 0 maka kita harus mengakses alamat DDRAM 0x85



Karakter / Font


Pada LCD alphanumeric disediakan 2 pilhan format font yaitu ukuran 5x7 dan 5x10 akan tetapi format font tersebut tergantung dari kontroler yang ada pada LCD sendiri. Font yang paling umum dan sering digunakan adalah font dengan ukuran 5x7 titik. Maksudnya adalah satu karakter / font tersusun dari matrik bilangan biner 5x7.

Contoh diatas adalah pembentukan matrik huruf capital ‘A’. Karakter tersebut berada pada alamat CGROM 0x41. Sejauh ini apakah anda dapat membayangkan bagaimana data matrik karakter tersebut tersimpan dalam alamat 0x41?
Ya, gambar diatas merupakan ilustrasi data yang tersimpan dalam alamat 0x41, dengan isi dari kolom HEX merupakan nilai pada masing – masing byte data pada alamat tersebut.
Karena alamat untuk membuat karakter special pada CGROM dari 0x00 s/d 0x07 berarti ada 8x8 byte ruang memori sehingga kita dapat membuat 8 jenis karakter special.

Instruksi  - instruksi LCD


Ada dua jenis instruksi pada LCD alphanumeric, yaitu function set dan entry mode.
Function set merupakan instruksi untuk melakukan setting pada LCD sedangkan Entry mode merupakan instruksi yang berkaitan dengan display LCD.

Uji coba menampilkan karakter special


Langkah 1

Menyiapkan software pemrograman mikrokontroler dan simulatornya. Untuk software pemrograman saya menggunakan AVR-Studio dan simulator menggunakan ISIS Proteus.

Langkah 2

Buat skematik pada ISIS seperti gambar berikut.

Langkah 3

Membuat program.
Program yang pertama dibuat adalah library untukLCD alphanumeric. Sebenarnya kita juga dapat mengetikan program instruksi LCD pada program utama kita akan tetapi kita membuat library supaya kita tidak perlu lagi mengetik ulang naskah program yang sama jika kita akan memanfaatkan LCD alphanumeric lagi.
Untuk membuat file library pada AVR-Studio diperlukan 2 file yaitu header file (ekstensi ”.h”) dan source file ( ekstensi “.c”). Berikut adalah library alphanumeric LCD  hasil modifikasi dari www.eXtremeElectronics.co.in.

File header

"alcd.h" dapat di unduh disini

File Source

"alcd.c" dapat diunduh disini

File program utamanya adalah sebagai berikut:

Berikut adalah contoh file program utama yang saya buat menggunakan AVR Studio.

//==========================================================================//
// Judul Program     = Menampilkan karakter spesial pada LCD Alphanumerik
// File              = TestLCD.c
// Programmer        = Dwi Kurniawan
// Mikrokontroller   = ATmega32
// Frekuensi OSC     = 8 MHz (internal)
// Deskripsi         = Program akan menampilkan berbagai karakter spesial yang 
//                     disimpan pada CGRAM. Format karekter yang akan ditampilkan
//                     terdapat pada array _cgram[] pada file alcd.c
//==========================================================================//

#include "alcd.h"
#include
#include

int main(void)
{
       lcd_init(2);  // 2 adalah jumlah baris LCD ex: LCD 2x16
       lcd_clear();
       lcd_cursor(NONE);    //kursor tidak terlihat
       lcd_gotoxy(0,0);
       lcd_puts("`3 T_SEL");
       lcd_gotoxy(14,0);
       lcd_puts("`4`7");
       while(1)
       {
              lcd_gotoxy(0,1);
              lcd_puts("  New Message    ");
              _delay_ms(500);
              lcd_gotoxy(0,1);
              lcd_puts("   Aku `2 Kamu   ");
              _delay_ms(1000);
       }
       return(0);
}

Video tutorial ini dapat dilihat dibawah ini atau klik disini


Tidak ada komentar:

Posting Komentar