Anda di halaman 1dari 9

19.

Aplikasi multiplekser analog dan ADC dengan tampilan


LCD

gambar 12. Multiplekser, ADC

Perhatikan gambar 12 di atas.


Multiplekser analog 4051
IC ini digunakan untuk memasukkan input analog ke ADC secara
bergantian dengan mengatur sinyal kontrol A, B dan C. IC ini akan bekerja
sesuai dengan tabel kebenaran berikut:
INH
1
0
0
0
0
0
0
0
0

Mikrokontroler MCS51

C
X
0
0
0
0
1
1
1
1

B
X
0
0
1
1
0
0
1
1

A
X
0
1
0
1
0
1
0
1

X
X0
X1
X2
X3
X4
X5
X6
X7

144

ADC0804
IC ini berfungsi untuk mengubah besaran analog menjadi digital 8
bit. Mode kerja IC ini ada beberapa macam diantaranya adalah mode WR-RD,
yaitu :
WR = 1, RD = 1
WR = 0, RD = 1
WR = 1, RD = 1
Apakah INT = 0, jika tidak tunggu dan jika ya ambil datanya
dengan memberi WR = 1, RD = 0
WR = 1, RD = 1
Input analog ( 0 - 7 ) dipilih melalui multiplekser analog yang dikontrol
melalui P1.0, P1.1 dan P1.2. Input 0 dan 7 dihubungkan ke sumber tegangan
analog yang diberikan oleh potensiometer. Output multiplekser analog
dihubungkan ke ADC. ADC dikontrol oleh mikrokontroler melalui :
WR

: P3.6

RD

: P3.7

dan sinyal interupsi dipilih melalui INT0 atau INT1.


Output data digital hasil konversi dihubungkan ke port 0 dan ditampilkan ke
LCD melalui P2

Program utama
;-------------------------------;
MAIN PROGRAM
;-------------------------------MAIN:
ACALL CHANNEL_0
ACALL READ_ADC
ACALL DISP
SJMP
MAIN

Mikrokontroler MCS51

145

Prosedur pengambilan data dari ADC


;--------------------------------------------------; PENGAMBILAN DATA DARI ADC
; P0.5
:A
; P0.6
:B
; P0.7
:C
; P3.6
: WR
; P3.7
: RD
;--------------------------------------------------READ_ADC:
SETB
P3.6
; WR = 1
SETB
P3.7
; RD = 1
ACALL DELAY
CLR
P3.6
; WR = 0
ACALL DELAY
SETB
P3.6
; WR = 1
JB
P3.2,$
ACALL DELAY
CLR
P3.7
; RD = 0
MOV
A,P1
MOV
DATAADC,A
SETB
P3.7
; RD = 1
RET

Prosedur menampilkan data ADC ke LCD


;------------------------------------------------; MENAMPILKAN DATA KE LCD
;-----------------------------------------------DISP:
MOV
A,DATAADC
MOV
B,#100
DIV
AB
MOV
32H,A

; 32H : RATUSAN

MOV
MOV
DIV
MOV
MOV

A,B
B,#10
AB
31H,A
30H,B

MOV
ACALL
MOV
ADD
ACALL

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

; PESAN TEMPAT DI KOLOM 15 BARIS 2

MOV

A,#0CEH

; PESAN TEMPAT DI KOLOM 14 BARIS 2

Mikrokontroler MCS51

; 31H : PULUHAN
; 30H : SATUAN

; ASCII DARI SATUAN

146

ACALL
MOV
ADD
ACALL

CONTROLOUT
A,31H
A,#30H
DATAOUT

MOV
ACALL
MOV
ADD
ACALL

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

; ASCII DARI PULUHAN

; PESAN TEMPAT DI KOLOM 13 BARIS 2

; ASCII DARI RATUSAN

RET

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:
; PROG12.ASM DIGUNAKAN UNTUK MENGAMBIL DATA DARI ADC
; DAN DITAMPILKAN KE LCD
; JUMPER OUTPUT : LCD POSISI '0'
ORG
SJMP

00H
START

;------------------------------------;
LCD CONSTANTA
;-------------------------------------DISPCLR
EQU
00000001B
FUNCSET EQU
00111000B
ENTRMOD EQU
00000110B
DISPON
EQU
00001100B
DATAADC EQU

60H

START:
ACALL
MOV
ACALL
MOV
ACALL

INIT_LCD
DPTR,#BARIS1
PRINTSTRING1
DPTR,#BARIS2
PRINTSTRING2

;-------------------------------;
MAIN PROGRAM
;-------------------------------MAIN:
ACALL
CHANNEL_0
ACALL
READ_ADC
ACALL
DISP
SJMP
MAIN

Mikrokontroler MCS51

147

CHANNEL_0:
CLR
CLR
CLR
RET

P0.5
P0.6
P0.7

CHANNEL_7:
SETB
SETB
SETB
RET

P0.5
P0.6
P0.7

;--------------------------------------------------; PENAMBILAN DATA DARI ADC


; P0.5
:A
; P0.6
:B
; P0.7
:C
; P3.6
: WR
; P3.7
: RD
;--------------------------------------------------READ_ADC:
SETB
P3.6
; WR = 1
SETB
P3.7
; RD = 1
ACALL
DELAY
CLR
P3.6
; WR = 0
ACALL
DELAY
SETB
P3.6
; WR = 1
JB
P3.2,$
ACALL
DELAY
CLR
P3.7
; RD = 0
MOV
A,P1
MOV
DATAADC,A
SETB
P3.7
; RD = 1
RET
;------------------------------------------------; MENAMPILKAN DATA KE LCD
;-----------------------------------------------DISP:
MOV
A,DATAADC
MOV
B,#100
DIV
AB
MOV
32H,A

; 32H : RATUSAN

MOV
MOV
DIV
MOV
MOV

A,B
B,#10
AB
31H,A
30H,B

MOV
ACALL
MOV
ADD
ACALL

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

; PESAN TEMPAT DI KOLOM 15 BARIS 2

MOV

A,#0CEH

; PESAN TEMPAT DI KOLOM 14 BARIS 2

Mikrokontroler MCS51

; 31H : PULUHAN
; 30H : SATUAN

; ASCII DARI SATUAN

148

ACALL
MOV
ADD
ACALL

CONTROLOUT
A,31H
A,#30H
DATAOUT

MOV
ACALL
MOV
ADD
ACALL
RET

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

;--------------------------------------------------------; 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
;E :0-1-0
: P3.4
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

; ASCII DARI PULUHAN

; PESAN TEMPAT DI KOLOM 13 BARIS 2

; ASCII DARI RATUSAN

; RS = 0

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

;E=0

;----------------------------------------------;
PROSEDUR DELAY LCD
;----------------------------------------------DELAY.INIT.LCD:
MOV
R6,#20H
DLY.LCD.LP:
MOV
R7,#10H
DJNZ
R7,$
DJNZ
R6,DLY.LCD.LP
RET

Mikrokontroler MCS51

149

INIT_LCD:
MOV
ACALL
ACALL

A,#FUNCSET
CONTROLOUT
DELAY.INIT.LCD

MOV
ACALL
ACALL

A,#DISPON
CONTROLOUT
DELAY.INIT.LCD

MOV
ACALL
ACALL

A,#DISPCLR
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
PRINTSTRING1:
ACALL
CLR

POSISI2.1
A
A,@A+DPTR
PRINTSTRINGLOOP

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

POSISI1.1
A

Mikrokontroler MCS51

150

MOVC
A,@A+DPTR
JNZ
PRINTSTRINGLOOP2
PRINTSTRINGLOOP2:
LCALL
DATAOUT
ACALL
DELAY.INIT.LCD
INC
DPTR
CLR
A
MOVC
A,@A+DPTR
JNZ
PRINTSTRINGLOOP2
RET
;----------------------------------------;
PROCEDURE DELAY
;----------------------------------------DELAY:
MOV
R5,#0
U1:
MOV
R6,#0
U2:
MOV
R7,#0
U3:
INC
R7
CJNE
R7,#10,U3
INC
R6
CJNE
R6,#10,U2
INC
R5
CJNE
R5,#10,U1
RET
BARIS1:
DB ' DATA DARI ADC ',0
BARIS2:
DB 'DATA ADC :

',0

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


4. Kemudian keluarlah ke DOS prompt dan ketikkan
A PROG12 <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 PROG12.HEX <ENTER> dan tekan
sebarang tombol
6. Pilih E.Program <ENTER> dan tunggu sebentar sampai ada indikator 100
% dan tekan sebarang tombol

Mikrokontroler MCS51

151

7. Pilih I. Reset dan Jelaskan apa yang terjadi pada LCD jika potensiometer
input 0 diputar-putar! Isilah tabel di bawah (Tegangan di REF = 2.55)

IN0 (VOLT)
0.02
0.5
1.0
1.5
2.0
2.5
3.0
3.5
4.0
4.5
5.0

LCD

8. Kesimpulan apa yang bisa anda tarik ?


............................................................................................................................
............................................................................................................................
..................................

Mikrokontroler MCS51

151