Anda di halaman 1dari 6

13.

Input DIPSWITCH dan ditampilkan di LCD

gambar 13.1. Aplikasi tampilan LCD dengan input DIPSWITCH

Percobaan ini gabungan dari percobaan pengambilan data lewat


DIPSWITCH dengan percobaan 3. Mula-mula data diambil dari DIPSWITCH
lewat port 0 kemudian dikirim ke LCD melalui logika sebagai berikut :
Data DIPSWITCH mempunyai range 0 -255 dan diambil dengan
perintah sbb: Data dari P0 dipindah ke akumulator
MOV

Mikrokontroler MCS51

A,P0

112

Karena LCD terdiri dari kolom dan setiap kolom mewakili 1 karakter,
maka data harus diambil dalam ratusan, puluhan dan satuan kemudian
ditempatkan di lokasi yang diinginkan
MOV
DIV
MOV

B,#10
AB
R2,B

; R2 : SATUAN

MOV
DIV
MOV
MOV

B,#10
AB
R1,B
R0,A

; R1 : PULUHAN
; R0 : RATUSAN

Misal satuan ditampilkan di baris 2 kolom 15


MOV
ACALL
MOV
ADD
ACALL

A,#0CFH
CONTROLOUT
A,R2
A,#30H
DATAOUT

; ASCII DARI SATUAN

Misal puluhan ditampilkan di baris 2 kolom 14


MOV
ACALL
MOV
ADD
ACALL

A,#0CEH
CONTROLOUT
A,R1
A,#30H
DATAOUT

; ASCII DARI PULUHAN

Misal ratusan ditampilkan di baris 2 kolom 13


MOV
ACALL
MOV
ADD
ACALL

A,#0CDH
CONTROLOUT
A,R0
A,#30H
DATAOUT

; ASCII DARI RATUSAN

LCD bisa digunakan jika sudah diinisialisasi

Untuk melakukan percobaan ini, lakukan langkah-langkah sebagai berikut:


1. Hubungkan modul MICROTRAINER dengan memasang kabel DB25
dengan LPT1 pada PC. Mode printer adalah SPP atau output only.
2. Ketikkan di sembarang editor yang anda miliki listing program berikut:
Mikrokontroler MCS51

113

; PROG06.ASM DIGUNAKAN UNTUK MENGAMBIL DATA DARI DIPSWITCH


; DAN DITAMPILKAN KE LCD
; JUMPER OUTPUT : DI LCD PADA POSISI '0'
; JUMPER INPUT
: DI DIPSWITCH POSISI '0'
ORG 00H
SJMP START
;-------------------------------------;
LCD CONSTANTA
;-------------------------------------DISPCLR
EQU
FUNCSET
EQU
ENTRMOD
EQU
DISPON
EQU

00000001B
00111000B
00000110B
00001100B

START:
ACALL
MOV
ACALL
MOV
ACALL

INIT_LCD
DPTR,#BARIS1
PRINTSTRING1
DPTR,#BARIS2
PRINTSTRING2

ACALL
SJMP

DIPSWITCH
MAIN

MAIN:

;----------------------------------------------------------------; PENGAMBILAN DATA DARI DISPSWITCH


;----------------------------------------------------------------DIPSWITCH:
MOV
A,P0
MOV
B,#10
DIV
AB
MOV
R2,B
; R2 : SATUAN
MOV
DIV
MOV
MOV

B,#10
AB
R1,B
R0,A

MOV
ACALL
MOV
ADD
ACALL

A,#0CFH
CONTROLOUT
A,R2
A,#30H
DATAOUT

; PESAN TEMPAT DI KOLOM 15 BARIS 2

MOV
ACALL
MOV
ADD
ACALL

A,#0CEH
CONTROLOUT
A,R1
A,#30H
DATAOUT

; PESAN TEMPAT DI KOLOM 14 BARIS 2

MOV
ACALL
MOV
ADD
ACALL
RET

A,#0CDH
CONTROLOUT
A,R0
A,#30H
DATAOUT

; PESAN TEMPAT DI KOLOM 13 BARIS 2

Mikrokontroler MCS51

; R1 : PULUHAN
; R0 : RATUSAN

; ASCII DARI SATUAN

; ASCII DARI PULUHAN

; ASCII DARI RATUSAN

114

;-------------------------------------------------------; PROSEDUR PEMESANAN TEMPAT


;-------------------------------------------------------; RS : 0
: P3.5
;E :0-1-0
: P3.4
; DATA
: P2
CONTROLOUT:
CLR
P3.5
ACALL
DELAY
CLR
P3.4
ACALL
DELAY
SETB
P3.4
ACALL
DELAY
MOV
P2,A
CLR
P3.4
ACALL
DELAY
RET
;---------------------------------------------------------; PROSEDUR PENEMPATAN DATA
;---------------------------------------------------------; RS : 0
: P3.5
DATAOUT:
SETB
P3.5
ACALL
DELAY
CLR
P3.4
ACALL
DELAY
SETB
P3.4
ACALL
DELAY
MOV
P2,A
CLR
P3.4
ACALL
DELAY
RET
;-------------------------------------------;
PROSEDUR DELAY LCD
;-------------------------------------------DELAY.INIT.LCD:
MOV
R6,#20H
DLY.LCD.LP:
MOV
R7,#10H
DJNZ
R7,$
DJNZ
R6,DLY.LCD.LP
RET

; RS = 0

; RS = 1
;E=0
;E=1

;E=0

;----------------------------------------------; PROSEDUR INISIALISASI LCD


;----------------------------------------------INIT_LCD:
MOV
A,#FUNCSET
ACALL
CONTROLOUT
ACALL
DELAY.INIT.LCD
MOV
ACALL
ACALL

A,#DISPON
CONTROLOUT
DELAY.INIT.LCD

MOV

A,#DISPCLR

Mikrokontroler MCS51

115

ACALL
ACALL

CONTROLOUT
DELAY.INIT.LCD

MOV
ACALL
ACALL
RET

A,#ENTRMOD
CONTROLOUT
DELAY.INIT.LCD

;---------------------------------------------------------; PROCEDURE LCD BARIS KOLOM LCD


;---------------------------------------------------------POSISI2.1:
MOV
A,#1
POSISI2:
ADD
A,#11000000B ; BARIS KEDUA
DEC
A
ACALL
CONTROLOUT
ACALL
DELAY.INIT.LCD
RET
POSISI1.1:
MOV

A,#1

ADD
DEC
ACALL
ACALL
RET

A,#10000000B ; BARIS PERTAMA


A
CONTROLOUT
DELAY.INIT.LCD

POSISI1:

PRINTSTRING2:
ACALL
CLR
MOVC
JNZ
PRINTSTRINGLOOP:
ACALL
ACALL
INC
CLR
MOVC
JNZ
RET

POSISI2.1
A
A,@A+DPTR
PRINTSTRINGLOOP
DATAOUT
DELAY.INIT.LCD
DPTR
A
A,@A+DPTR
PRINTSTRINGLOOP

PRINTSTRING1:
ACALL
POSISI1.1
CLR
A
MOVC
A,@A+DPTR
JNZ
PRINTSTRINGLOOP2
PRINTSTRINGLOOP2:
LCALL
DATAOUT
ACALL
DELAY.INIT.LCD
INC
DPTR
CLR
A
MOVC
A,@A+DPTR
JNZ
PRINTSTRINGLOOP2
RET

Mikrokontroler MCS51

116

;-----------------------------------------;
PROCEDURE DELAY
;-----------------------------------------DELAY:
MOV
R5,#0
U1:
MOV
R6,#0
U2:
MOV
R7,#0
U3:
INC
R7
CJNE
R7,#5,U3
INC
R6
CJNE
R6,#5,U2
INC
R5
CJNE
R5,#5,U1
RET
BARIS1:
DB 'INPUT DIPSWITCH ',0
BARIS2:
DB 'DIPSWITCH:

',0

3. Simpanlah program yang anda ketik dan beri nama prog06.asm


4. Kemudian keluarlah ke DOS prompt dan ketikkan
A PROG06 <ENTER>
Jika tidak ada kesalahan, tekan <ENTER>
5. Anda akan langsung masuk ke program AEC_ISP, kemudian pilihlah option
A. Load HEX File to flash buffer,
kemudian ketik PROG04.HEX <ENTER> dan tekan
sebarang tombol
6. Pilih E.Program <ENTER> dan tunggu sebentar sampai ada indikator 100
% dan tekan sebarang tombol
7. Pilih I. Reset . Putarlah potensiometer 1 dan lihatlah tampilan di LCD nya
8. Berilah kesimpulan anda
............................................................................................................................
......................................................................................................................

Mikrokontroler MCS51

117