Anda di halaman 1dari 17

MODUL 12

PERAGA LCD
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.

(a) 2x16 (b) 4x20


Gambar 1. Peraga LCD
B. Modul LCD HD44780
Salah satu modul LCD adalah Chip HD44780 berbasis karakter yang dihasilkan
perusahaan Hitachi dengan spesifikasi berikut ini:
1. Pembangkit karakter ROM terdiri 192 karakter dalam format 5 x 7.
2. Pembangkit karakter RAM dapat mencapai delapan model karakter.
3. Memiliki tampilan 80 byte RAM.
4. Memiliki kemampuan transfer data 4 bit atau 8 bit.
5. Sudah terdapat Osilator.
6. Terdapat rangkaian reset daya.
7. Memiliki beberapa instruksi meliputi: Membersihkan layar LCD, Kembali ke
posisi semula, Penampilan kontrol on/off, Cursor on/off/berkelip dan
Pergantian penampilan.
Blok diagram hubungan driver dan LCD dapat dilihat pada Gambar 2 dan
urutan-urutan pin, simbol dan kegunaannya masing-masing ditunjukkan pada
tabel 1.
D7
COM 16 LCD
D0
CONTROL
E
LSI
R/W
SEG 160
RS SEG 40
Vee HD 44780
SEGMENT
Vcc 4 DRIVER X 4
Vss

Gambar 2. Diagram Blok LCD

Tabel 1. Urutan pin konektor, simbol dan kegunaannya.


No Nama Fungsi
1 Vss GND
2 Vcc +5V
3 Vee LCD Contrast
4 RS 1 = Input data, 0 = Input Instruksi
5 R/-W 1= Read, 0 = Write
6 E Enable
7 D0 Data 0
8 D1 Data 1
9 D2 Data 2
10 D3 Data 3
11 D4 Data 4
12 D5 Data 5
13 D6 Data 6
14 D7 Data 7
15 VBL+ 4 - 4.2 volt
16 VBL- GND

HD44870 mempunyai dua register 8-bit yaitu Register Instruksi (IR) dan
Register Data (DR). Register IR berfungsi untuk menyimpan kode perintah seperti
Clear Display, Geser Cursor dan menyimpan alamat informasi untuk Display Data
RAM (DDRAM) dan karakter generator (CGRAM). Register IR dapat ditulisi
mikroprosesor tetapi tidak dapat dibaca. Register Data (DR) berfungsi menyimpan
sementara data yang dituliskan ke DDRAM atau CGRAM dan juga menyimpan
sementara data yang dibaca dari DDRAM atau CGRAM. Data dari mikroprosesor
yang dituliskan ke DR dengan operasi internal secara otomatis dituliskan ke DDRAM
atau CGRAM. Register DR juga digunakan untuk menyimpan data yang dibaca dari
DDRAM dan CGRAM. Saat alamat dituliskan pada register IR dengan operasi
internal, data dari DDRAM atau CGRAM dibaca ke register DR. Pentransferan data
ke mikroprosesor selesai setelah mikroprosesor membaca DR. Setelah
mikroprosesor membaca DR, data di dalam DDRAM dan CGRAM pada alamat
berikutnya dikirim ke DR untuk pembacaan mikroprosesor berikutnya.

Pemilihan register DR dan IR dilakukan melalui sinyal pemilih register (RS)


seperti ditunjukkan pada tabel 2.
Tabel 2. Pemilihan Register

RS R/W Enabel Operasi


0 0 1, 1 0 Penulisan IR secara internal
1 0 1, 1 0 DR ditulisi dengan operasi internal
(DR ke DDRAM atau DR ke CGRAM)
0 1 1 Pembacaan Busy Flag yang mengindikasikan
operasi internal dan membaca CGRAM dan
DDRAM
1 1 1 DR dibaca dgn operasi internal (DDRAM atau
CGRAM ke DR)

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

Line 1 $80 $81 $82 $92 $93

Line 2 $C0 $C1 $C2 $D2 $D3

Line 3 $94 $95 $96 $A6 $A7

Line 4 $D4 $D5 $D6 $E6 $E7

Gambar 2. Susunan peta memori pada LCD

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/C R/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 RAM 1 1 D D D D D D D D

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)

 Entry Mode Set


0 0 0 0 0 0 0 1 I/D S
RS R/-W D7 D6 D5 D4 D3 D2 D1 D0
Instruksi ini mengatur arah pergerakan kursor dan apakah display akan digeser.
 Jika I/D = 1 alamat akan dinaikkan dan kursor bergerak ke kanan dan jika I/D
= 0 alamat akan diturunkan dan kursor bergerak ke kiri
 Jika S = 1, semua display akan digeser, tetapi posisi kursor tidak berubah,
 Jika S = 1 dan I/D = 1 , display akan digeser ke kiri dan jika S = 1 dan I/D = 0
display akan digeser ke kanan.
 Jika S = 0 , display tidak akan digeser.

 Display ON/OFF Control


0 0 0 0 0 0 1 D C B
RS R/-W D7 D6 D5 D4 D3 D2 D1 D0

D = 1, display akan ditampilkan D = 0, display tidak ditampilkan


C = 1, kursor akan ditampilkan C = 0 , kursor tidak ditampilkan
B = 1, karakter tempat posisi kursor berkedip
B = 0, karakter tempat posisi kursor tidak berkedip

 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.

S/C R/L Operasi


0 0 Posisi kursor digeser ke kiri
0 1 Posisi kursor digeser ke kanan
1 0 Seluruh display digeser ke kiri dengan kursornya
1 1 Seluruh display digeser ke kanan dengan
kursornya

 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)

C. Rangkaian LCD Pada Mikrokomputer Trainer MTK-85


LCD pada mikrokomputer Trainer MTK-85 mempunyai 4 baris dan 20 kolom
dengan rangkaian ditunjukkan pada gambar 3.

Gambar 3. Rangkaian LCD


Dekoder alamat GAL 16V8 akan menghasilkan logika 0 pada masukan LCD-E
bila logika saluran alamat A7-A0 berlogika 0101 00xx yang berarti alamat LCD ini
adalah 50H-53H. Dengan demikian untuk menuliskan perintah (R/-W=0, RS=0 )
alamatnya adalah 50H dan untuk membaca perintah (R/-W=1, RS=0) alamatnya
adalah 52H. Untuk menuliskan data (R/-W=0, RS=1) alamatnya=51 H, dan untuk
membaca data (R/-W=1, RS=1) alamatnya adalah 53H. Program monitor routine
LCD ditunjukkan pada sub-program berikut:
Routine Driver LCD
;------------------- onboard LCD registers -----------------
command_write equ 50h
command_read equ 52h
data_write equ 51h
data_read equ 53h
busy equ 80h
;--------------------- LCD driver routines -----------------
Org 01EEH
lcd_ready: push psw
lcd_ready1: in command_read
ani busy
jnz lcd_ready1 ; wait until lcd ready
pop psw
ret

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

; print ASCII text on LCD


; entry: HL pointer with 0 for end of string
Org 0212H
put_str_lcd: mov a,m ; get A from [HL]
cpi 0
jnz put_str_lcd1
ret

Org 0219H
put_str_lcd1: call lcd_ready
out data_write
inx h
jmp put_str_lcd

; goto_xy set cursor location on lcd


; entry: HL: H = y, L = x (H=kolom L=Baris)
Org 0222H
goto_xy: call lcd_ready
mov a,l
cpi 0
jnz goto_xy1
mov a,h
adi 80h
out command_write
ret
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

; put_ch_lcd put character to lcd


; entry: A

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

01F8 CD-EE-01 CLR_LCD: CALL LCD_RDY


01FB 3E-01 MVI A,01
01FD D3-50 OUT 50
01FF C9 EXIT_CLR: RET

0200 CD-EE-01 INIT_LCD: CALL LCD_RDY


0203 3E-38 MVI A,38H
0205 D3-50 OUT 50H
0207 CD-EE-01 CALL LCD_RDY
020A 3E-0C MVI A,0CH
020C D3-50 OUT 50
020E CD-F8-01 CALL CLR_LCD
0211 C9 RET

0212 7E PUT_STR_LCD: MOV A,M Ambil data


0213 FE-00 CPI 00
0215 C2-19-02 JNZ PUT_STR_LCD1
0218 C9 RET

0219 CD-EE-01 PUT_STR_LCD1: CALL LCD_ RDY


021C D3-51 OUT 51
021E 23 INX H
021F C3-12-02 JMP PUT_STR_LCD
Posisi Kursor
0222 CD-EE-01 GOTO_XY: CALL LCD_RDY H=x=kolom
L=y=baris
0225 7D MOV A,L
0226 FE-00 CPI 00
0228 C2-31-02 JNZ GOTO_XY1
022B 7C MOV A,H
022C C6-80 ADI 80H
022E D3-50 OUT 50
0230 C9 RET

0231 FE-01 GOTO_XY1: CPI 01


0233 C2-3C-02 JNZ GOTO_XY2
0236 7C MOV A,H
0237 C6-C0 ADI C0H
0239 D3-50 OUT 50
023B C9 RET

023C FE-02 GOTO_XY2: CPI 02


023E C2-47-02 JNZ GOTO_XY3
0241 7C MOV A,H
0242 C6-94 ADI 94H
0244 D3-50 OUT 50
0246 C9 RET

0247 FE-03 GOTO_XY3: CPI 03


0249 C2-52-02 JNZ GOTO_XY4
024C 7C MOV A,H
024D C6-D4 ADI D4H
024F D3-50 OUT 50
0251 C9 RET
0252 C9 GOTO_XY4: RET

0253 CD-EE-01 PUT_CH_LCD: CALL LCD_RDY


0256 D3-51 OUT 51
0258 C9 RET

PERCOBAAN
A. Percobaan 1

1. Hubungkan modul LCD ke mikrokomputer MTK-85. Perhatikan susunan pin


2. Masukkan program Program 1 berikut
Program 1. Menampilkan Karakter “AB”
Op-code Label Mnemonic
Address
8100 CD-50-81 CALL LCD_RDY Check Kesiapan LCD
8103 3E-38 MVI A,38H Set Fungsi LCD
8105 D3-50 OUT 50H
8107 CD-50-81 CALL LCD_RDY Check LCD
810A 3E-0C MVI A,0CH Atur Cursor and Display Shift
810C D3-50 OUT 50
810E CD-50-81 CALL LCD_RDY Check kesiapan LCD
8111 3E-06 MVI A,06 Set Modus LCD
8113 D3-50 OUT 50
8115 CD-50-81 CALL LCD_RDY Check kesiapan LCD
8118 3E-01 MVI A,01 Clear LCD
811A D3-50 OUT 50
811C CD-50-81 CALL LCD_RDY Check kesiapan LCD
811F 3E-80 MVI A,80 Kolom 0 baris 0
8121 D3-50 OUT 50
8123 CD-50-81 CALL LCD_RDY Check kesiapan LCD
8126 3E- 41 MVI A, 41H Tampil char ‘A’
8128 D3-51 OUT 51
812A CD-80-81 CALL TUNDA
812D CD-50-81 CALL LCD_RDY Check Kesiapan LCD
8130 3E- 42 MVI A, 42H Tampil char ‘B’
8132 D3-51 OUT 51
8134 FF RST 7

8150 F5 LCD_RDY: PUSH PSW Amankan PSW


8151 DB-52 TUNG: IN 52 Periksa LCD
8153 E6-80 ANI 80 Jika sibuk
8155 C2-51-81 JNZ TUNG Tunggu
8158 F1 POP PSW
8159 C9 RET Kembali

8180 F5 TUNDA: PUSH PSW


8181 D5 PUSH D
8182 11-FF-C0 UL-TUN: LXI D,C0FF
8185 00 TUN: NOP
8186 00 NOP
8187 1B DCX D
8188 7B MOV A,E
8189 B2 ORA D
818A C2-85-81 JNZ TUN
818D D1 POP D
818E F1 POP PSW
818F C9 RET

3. Eksekusi program dan perhatikan tampilan pada LCD


4. Ubah program alamat 810A menjadi
810A 3E-0F MVI A,0FH Atur Cursor and Display Shift
5. Eksekusi program dan perhatikan perubahan pada LCD
6. Ubah program sehingga posisi karakter “AB” pada baris 2 dan kolom 5.
7. Berikan analisa anda .
Dengan menggunakan subroutine pada program monitor Program 1 di atas

sama fungsinya dengan program 2 di bawah ini


Program 2.
Address Op-code Label Mnemonic
8D00 CD-00-02 MAIN: CALL INT_LCD
8D03 21-00-00 LXI H,0000
8D06 CD-22-02 CALL GOTO_XY
8D09 3E- 41 MVI A, 41H Tampil char ‘A’
8D0B CD-EE-01 CALL LCD_RDY
8D0E D3-51 OUT 51
8D10 CD-80-81 CALL TUNDA
8D13 CD-EE-01 CALL LCD_RDY
8D16 3E-42 MVI A,42 Tampil char ‘B’
8D18 D3-51 OUT 51
8D1A FF RST 7

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

Karakter yang ditadatampilkan:”ABCDEF01234”


Adress ASCII Karakter Adress ASCII Karakter
8410 41 A 8416 30 0
8411 42 B 8417 31 1
8412 43 C 8418 32 2
8413 44 D 8419 33 3
8414 45 E 841A 34 4
8415 46 F 841B 00 Selesai

2. Eksekusi program 2 dan perhatikan hasilnya pada display LCD.


3. Ubah isi memori yang dimulai 8410 dengan kode ASCII dari “Politeknik Negeri
Medan” dan diakhiri dengan data 00.
4.Eksekusi program perhatikan hasilnya pada LCD
5. Berikan analisa anda

C. Percobaan 3 Program Counter 2-DIGIT Pada LCD


Untuk membuat counter 2-digit pada LCD dapat dibuat dengan Algoritma berikut:
1. - Set Fungsi LCD
2. - Set Crusor dan Dispay
3. - Clear Display
4. - Clear Counter
5. - Ubah isi counter ke ASCII dan simpan pada memori 8200 dan 8201
6. - Set Kolom dan Baris
7. - Baca isi buffer dan Tampilkan ke LCD
8. - Delay counter
9. - Isi counter ditambah 1 dan desimalkan
10.-Ulangi langkah 5

Program 4. Counter 2-digit


Address Op-code Label Mnemonic
8300 CD-00-02 MAIN: CALL INT_LCD
8303 0E-00 MVI C,00 Clear Counter
8305 79 ULANG: MOV A,C Ambil nilai counter
8306 CD-50-83 CALL ASCII Ubah ke kode ASCII
8309 21-00-00 LXI H,0000 Kolom 0 baris 0
830C CD-22-02 CALL GOTO_XY
830F 21-00-82 LXI H,8200 Awal memori data
8312 CD-12-02 CALL StrLCD
8315 CD-80-81 CALL TUNDA Tunggu sesaat
8318 79 MOV A,C
8319 C6-01 ADI 01 Counter +1
831B 27 DAA Desimalkan
831C 4F MOV C,A Simpan
831D C3-05-83 JMP ULANG Ulangi

Address Op-code Label Mnemonic


8350 F5 ASCII: PUSH PSW
8351 E5 PUSH H
8352 21-01-82 LXI H,8201H
8355 4F MOV C,A
8356 E6-0F ANI 0F Ambil low nibble
8358 C6-30 ADI 30 Ubah ke Kode ASCII
835A 77 MOV M,A Simpan ke Buffer
835B 2B DCX H Kurangi alamat buffer
835C 79 MOV A,C Ambil High nibble
835D 0F RRC
835E 0F RRC
835F 0F RRC
8360 0F RRC
8361 E6-0F ANI 0F
8363 C6-30 ADI 30 Ubah ke ASCII
8365 77 MOV M,A Simpan ke buffer
8366 23 INX H
8367 23 INX H
8369 36-00 MVI M,00 Tanda akhir karakter
836A E1 POP H
836B F1 POP PSW
836C C9 RET

1. Masukkan program counter di atas


2. Eksekusi program
3. Amati tampilan pada LCD
4. Ubah tampilan counter pada baris 2 (ke-3) kolom 10

D. Percobaan 4. Karakter bergeser


Tampilan karakter pada LCD dapat dibuat seolah-olah bergeser dari kanan ke kiri.
Untuk membuat karakter bergerak dapat dilakukan dengan menampilkan kembali
karakter tersebut dengan membuat posisinya berubah misalnya karakter A mula-mula
pada baris ke-dua kolom ke-empat kemudian display dihapus dan kembali menampilkan
karakter A tersebut pada baris ke-dua dan kolom ke ke-tiga. Dengan mengubah posisi
karakter dari sebelumnya maka seolah-olah karakter bergerak. Berikut diberikan
Algoritma untuk menggeser karakter
Tampilan Bergerser
Address Op-code Label Mnemonic
8540 CD-00-02 MAIN: CALL INT_LCD
8543 11-00-87 ULANG: LXI D,8700
8546 6B GESER: MOV L,E
8547 62 MOV H,D
8548 CD-50-81 CALL LCD_RDY
854B 3E-C0 MVI A,C0H Baris 2 kolom0
854D D3-50 OUT 50H
854F 7E UL-TULIS: MOV A,M Baca data
8550 CD-50-81 CALL LCD_RDY
8553 D3-51 OUT 51 Tuliskan ke LCD
8555 23 INX H
8556 7D MOV A,L
8557 FE-0B CPI 0B Hingga kolom ke 11
8559 C2-4F -85 JNZ UL-TULIS
855C 0E-08 MVI C,08H Set delay ON
855E CD-80-81 CALL DELAY
8561 CD-50-81 CALL LCD_RDY
8564 3E-01 MVI A,01 Clear Display
8566 D3-50 OUT 50
8568 1C INR E
8569 7B MOV A,E
856A FE-10 CPI 10H Hingga 16 kali geser
856C C2-46-85 JNZ GESER
856F C3-43-85 JMP ULANG Ulangi lagi

Adress ASCII Karakter Adress ASCII Karakter


8700 00 8710 47 G
8701 00 8711 48 H
8702 00 8712 49 I
8703 00 8713 4A J
8704 00 8714 4B K
8705 00 8715 4C L
8706 00 8716 4D M
8707 00 8717 4E N
8708 00 8718 4F O
8709 00 8719 50 P
870A 41 A 871A 51 Q
870B 42 B 871B 52 R
870C 43 C 871C 53 S
870D 44 D 871D 54 T
870E 45 E 871E 55 U
870F 46 F 871F 56 V
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

Tabel Alamat LCD:


8200=80 820A=8A 8214=C0 821E=CA 8228=94 8231=9E 823B=D4 8245=DE
8201=81 820B=8B 8215=C1 821F=CB 8229=95 8232=9F 823C=D5 8246=DF
8202=82 820C=8C 8216=C2 8220=CC 822A=96 8233=A0 823D=D6 8247=E0
8203=83 820D=8D 8217=C3 8221=CD 822B=97 8234=A1 823E=D7 8248=E1
8204=84 820E=8E 8218=C4 8222=CE 822C=98 8235=A2 823F=D8 8249=E2
8205=85 820F=8F 8219=C5 8223=CF 822D=99 8236=A3 8240=D9 824A=E3
8206=86 8210=90 821A=C6 8224=D0 822D=9A 8237=A4 8241=DA 824B=E4
8207=87 8211=91 821B=C7 8225=D1 822E=9B 8238=A5 8242=DB 824C=E5
8208=88 8212=92 821C=C8 8226=D2 822F=9C 8239=A6 8243=DC 824D=E6
8209=89 8213=93 821D=C9 8227=D3 8230=9D 823A=A7 8244=DD 824E=E7

E. Percobaan 5. Tampilan Nyala Padam


1. Ubah rutin INIT_LCD dan program 2 sehingga tampilan nama anda nyala/padam

Address Op-code Label Mnemonic


8D40 CD-00-02 MAIN: CALL INT_LCD
8D43 21-00-00 ULANG: LXI H,0000
8D46 CD-22-02 CALL GOTO_XY
8D49 21-00-87 LXI H,8700 Awal isi memori’
8D4C CD-12-02 CALL STR_LCD
8D4F 0E-08 MVI C,08H Set delay ON
8D51 CD-70-8D CALL DELAY2
8D54 CD-EE-01 CALL LCD_RDY
8D57 3E-01 MVI A,01 Clear Display
8D59 D3-50 OUT 50
8D5B 0E-08 MVI C,08H Set delay Off
8D5D CD-70-8D CALL DELAY2
8D60 C3-43-8D JMP ULANG

Routine Delay2
Address Op-Code Label Mnemonic Komentar
8D70 E5 DELAY2: PUSH H
8D71 F5 PUSH PSW
8D72 21-FF-08 UDEL1: LXI H,08FF
8D75 00 UDEL2; NOP
8D76 00 NOP
8D77 00 NOP
8D78 00 NOP
8D79 2B DCX H
8D7A 7D MOV A,L
8D7B B4 ORA H
8D7C C2-75-8D JNZ UDEL2
8D7F 0D DCR C
8D80 C2-72-8D JNZ UDEL1
8D83 F1 POP PSW
8D84 E1 POP H
8D85 C9 RET

Tugas
1. Buat Program untuk menghitung banyak tombol MOD ditekan dimana hitungan
tampil pada LCD baris 1 kolom 15.
2. Buat Program untuk menampilkan karakter bergerak pada baris 1 dari LCD dimana
karakternya adalah” SELAMAT DATANG DI POLITEKNIK NEGERI MEDAN”
Tabel Kode ASCII

Anda mungkin juga menyukai