A. Umum
LCD atau Liquid Crystal Display adalah merupakan wadah untuk menampilkan sesuatu
bentuk dari tulisan yang dapat berupa huruf, angka, dan tanda baca yang merupakan satu
modul. Tampilan dapat berupa 2 baris 16 kolom (2x16) atau berupa 4 baris 20 kolom (4x20)
seperti ditunjukkan pada gambar 1.
Pemilihan register DR dan IR dilakukan melalui sinyal pemilih register (RS) seperti
ditunjukkan pada tabel 2.
Tabel 2. Pemilihan Register
Addres Counter (AC) berfungsi untuk menandai alamat DDRAM atau CGRAM.
Saat suatu instruksi dituliskan pada IR, informasi alamat dikirimkan dari IR ke AC.
Pemilihan DDRAM atau CGRAM juga ditentukan oleh instruksi. Setelah penulisan atau
pembacaan data tampilan ke DDRAM atau CGRAM, AC secara otomatis bertambah satu. Isi
AC dikeluarkan pada DB0-DB6 saat RS=0 dan R/W=1 seperti ditunjukkan pada tabel
pemilihan register. Display Data RAM (DDRAM), berfungsi untuk menyimpan data yang
direpresentasikan dengan kode karakter 8-bit. DDRAM mempunyai kapasitas 80 x 8-bit atau
80 karakter.
20 KARAKTER
Hubungan antara alamat DDRAM dengan posisi pada LCD dengan 4x20 karakter
ditunjukkan pada gambar 2. Sesuai dengan kode instruksi, untuk menset alamat DDRAM bit
b7 harus logika 1.
Tabel 3. Instruksi Set HD44780
INSTRUCTION RS R/W D7 D6 D5 D4 D3 D2 D1 D0
Clear Display 0 0 0 0 0 0 0 0 0 1
Return Home 0 0 0 0 0 0 0 0 1 *
Entry Mode Set 0 0 0 0 0 0 0 1 I/D S
Display ON/OFF 0 0 0 0 0 0 1 D C B
Cursor and Display Shift 0 0 0 0 0 1 S/ R/ * *
C L
Function Set 0 0 0 0 1 DL N F * *
Set CG RAM address 0 0 0 1 A A A A A A
Set DD RAM 0 0 1 A A A A A A A
Read busy Flag and Address 0 1 BF A A A A A A A
Write data to CG or DD RAM 1 0 D D D D D D D D
Read data Form CG or DD 1 1 D D D D D D D D
RAM
Keterangan:
I/D 0= Decrement Cursor Position 1=Increment Cursor Position
S 0= No Display shift 1=Display shift
D 0= Display off 1= Display on
C 0= Cursor off 1= Cursor on
B 0= Cursor blink off 1= Cursor blink on
S/C 0=Move cursor 1= Shift display
R/L 0= Shift left 1= Shift Right
DL 0= 4-bit interface 1= 8-bit interface
N 0= 1/8 or 1/11 duty (1 line) 1= 1/16 Duty (2lines)
F 0= 5x7 dots 1= 5 x 10 dots
BF 0= Can accept instruction 1= Internal operation in progress
ROM Generator Karakter (CGROM) menghasilkan pola dot 5x7 atau 5x10 dari kode
karakter 8-bit. CGROM mempunyai 192 pola dot karakter 5x7 dan 192 pola karakter 5x10.
RAM generator karakter (CGRAM) adalah RAM yang digunakan pemakai untuk
menghasilkan pola-pola karakter secara software. Dengan pola 5x7 dot delapan pola
karakter yang dibentuk sendiri dapat disimpan, dan dengan ukuran 5x10 dot, 4 pola karakter
yang dibentuk sendiri dapat disimpan. Instruksi HD44780 ditunjukkan pada tabel 3.
Sebelum menampilkan karakter pada LCD, maka harus mengikuti prosedur sebagai
berikut:
Inisialisasi
Pemesanan tempat
Penulisan data
Inisialisasi terdiri dari
Display Clear
0 0 0 0 0 0 0 0 0 1
RS R/-W D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini akan menghapus semua display dan mengembalikan kursor ke posisi awal
(alamat 0)
Cursor Home
0 0 0 0 0 0 0 0 1 X
RS R/-W D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini mengembalikan kursor ke posisi awal (alamat 0)
Cursor/Display Shift
0 0 0 0 0 1 S/C R/L * *
RS R/-W D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini akan menggerakkan kursor dan menggeser display tanpa mengubah RAM.
Function Set
0 0 0 0 1 DL 1 * * *
RS R/-W D7 D6 D5 D4 D3 D2 D1 D0
DL = 1, panjang data diatur 8 bit DL= 0, panjang data 4 bit (D7 – D4)
Org 01F8H
clear_lcd: call lcd_ready
mvi a,1 ;Display clear
out command_write
exit_clear: ret
Org 0200H
init_lcd: call lcd_ready
mvi a,38h ;panjang karakter 8-bit
out command_write
call lcd_ready
mvi a, 0ch; kursor tdk tampil dan tdk berkedip
out command_write
call clear_lcd
ret
Org 0219H
put_str_lcd1: call lcd_ready
out data_write
inx h
jmp put_str_lcd
Org 0231H
goto_xy1: cpi 1
jnz goto_xy2
mov a,h
adi 0c0h
out command_write
ret
Org 023CH
goto_xy2: cpi 2
jnz goto_xy3
mov a,h
adi 094h
out command_write
ret
Org 0247H
goto_xy3: cpi 3
jnz goto_xy4
mov a,h
adi 0d4h
out command_write
ret
goto_xy4: ret
Org 0253H
put_ch_lcd: call lcd_ready
out data_write
ret
Routine LCD pada Monitor Program (EPROM)
Address Op-code Label Mnemonic
01EE F5 LCD_RDY: PUSH PSW
01EF DB-52 LCD_RDY1 IN 52
01F1 E6-80 ANI 80
01F3 C2-EF-01 JNZ LCD_RDY1
01F6 F1 POP PSW
01F7 C9 RET
B. Percobaan 2.
1. Masukkan program 3 dan Kode ASCII pada memori 8410H s.d 841BH
Catatan: Subrutine INIT_LCD, GOTOXY, StrLCD terdapat pada program monitor .
Program 3. Menampilkan isi memori mulai 8410 sampai datanya 00
Address Op-code Label Mnemonic
8400 CD-00-02 MAIN: CALL INT_LCD
8403 21-00-00 LXI H,0000
8406 CD-22-02 CALL GOTO_XY
8409 21-10-84 LXI H,8410 Awal memori data
840C CD-12-02 CALL StrLCD
840F FF RST 7
Agar dapat dibuat bergeser untuk 4 baris maka lokasi harus dibuat berurutan untuk 4 baris
tersebut. Karena baris ke dua dimulai alamat C0H sedangkan akhir baris 1 adalah 93 maka
tidak bisa alamat lokasi bertambah/berkurang satu terus. Salah satu cara memperbaiki adalah
dengan memasukkan alamat ke bentuk tabel.
Program geser untuk 4 baris.
Op-code Label Mnemonic
Address
8640 CD-00-02 MAIN: CALL INT_LCD
8643 11-00-87 ULANG: LXI D,8700
8646 01-00-82 LXI B,8200 Set alamat baris kolom
8649 6B GESER: MOV L,E
864A 62 MOV H,D
864B CD-50-81 CALL LCD_RDY
864E 0A UL-TULIS: LDAX B Ambil baris- kolom
864F D3-50 OUT 50H
8651 CD-50-81 CALL LCD_RDY
8654 7E MOV A,M Baca data
8655 D3-51 OUT 51 Tuliskan ke LCD
8657 23 INX H Naikkan alamat karakter
8658 03 INX B Naikkan lokasi LCD
8659 7D MOV A,L
865A FE-20 CPI 20 Hingga 32 karakter
865C C2-4E -86 JNZ UL-TULIS
865F 0E-08 MVI C,08H Set delay ON
8661 CD-80-81 CALL DELAY
8664 CD-50-81 CALL LCD_RDY
8667 3E-01 MVI A,01 Clear Display
8669 D3-50 OUT 50
866B 1C INR E
866C 7B MOV A,E
866D FE-10 CPI 10H Hingga 16 kali geser
866F C2-49-86 JNZ GESER
8672 C3-43-86 JMP ULANG Ulangi lagi