Anda di halaman 1dari 15

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

 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 50 H-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 52 H. Untuk menuliskan data
(R/-W=0, RS=1) alamatnya=51H, 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_LC MOV A,M Ambil data


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

0219 CD-EE-01 PUT_STR_LC CALL LCD_ RDY


D1:
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_LC CALL LCD_RDY


D:
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

Anda mungkin juga menyukai