19.Aplikasi multiplekser analog dan ADC dengan tampilan
19.Aplikasi multiplekser analog dan ADC dengan tampilan
LCD
LCD
gambar 12. Multiplekser, ADC
gambar 12. Multiplekser, ADC
Perhatikan gambar 12 di atas.
Perhatikan gambar 12 di atas.
Multiplekser analog 4051
Multiplekser analog 4051
IC ini digunakan untuk memasukkan input analog ke ADC secara
IC ini digunakan untuk memasukkan input analog ke ADC secara
bergantian
bergantian dengan
dengan mengatur
mengatur sinyal
sinyal kontrol
kontrol A,
A, B
B dan
dan C.
C. IC
IC ini
ini akan
akan bekerja
bekerja
sesuai dengan tabel kebenaran berikut:
sesuai dengan tabel kebenaran berikut:
INH
INH
C
C
B
B
A
A
X
X
1
1
X
X
X
X
X
X
--0
0
0
0
0
0
0
0
X0
X0
0
0
0
0
0
0
1
1
X1
X1
0
0
0
0
1
1
0
0
X2
X2
0
0
0
0
1
1
1
1
X3
X3
0
0
1
1
0
0
0
0
X4
X4
0
0
1
1
0
0
1
1
X5
X5
0
0
1
1
1
1
0
0
X6
X6
0
0
1
1
1
1
1
1
X7
X7
ADC0804
ADC0804
IC ini berfungsi untuk mengubah besaran analog menjadi digital 8
IC ini berfungsi untuk mengubah besaran analog menjadi digital 8
bit. Mode kerja IC ini ad
bit. Mode kerja IC ini ada beberapa macam diantaranya adalah mode WR-RD,
a beberapa macam diantaranya adalah mode WR-RD,
yaitu :
yaitu :
WR = 1, RD = 1
WR = 1, RD = 1
WR = 0, RD = 1
WR = 0, RD = 1
WR = 1, RD = 1
WR = 1, RD = 1
Apakah INT = 0, jika tidak tunggu dan jika ya ambil datanya
Apakah INT = 0, jika tidak tunggu dan jika ya ambil datanya
dengan
dengan memberi WR
memberi WR = 1, R
= 1, RD =
D = 0
0
WR = 1, RD = 1
WR = 1, RD = 1
Input analog ( 0 - 7 ) dipilih melalui multiplekser analog yang dikontrol
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
melalui P1.0, P1.1 dan P1.2. Input 0 dan 7 dihubungkan ke sumber tegangan
analog yang diberikan oleh potensiometer. Output multiplekser analog
analog yang diberikan oleh potensiometer. Output multiplekser analog
dihubungkan ke ADC. A
dihubungkan ke ADC. ADC dikontrol oleh mikrokontroler melalui :
DC dikontrol oleh mikrokontroler melalui :
WR
WR
:
: P3.6
P3.6
RD
RD
:
: P3.7
P3.7
dan sinyal interupsi dipilih melalui INT0 atau INT1.
dan sinyal interupsi dipilih melalui INT0 atau INT1.
Output data digital hasil konversi dihubungkan ke port 0 dan ditampilkan ke
Output data digital hasil konversi dihubungkan ke port 0 dan ditampilkan ke
LCD melalui P2
LCD melalui P2
Program utama
Program utama
;---;
;
MAIN
MAIN PROGRAM
PROGRAM
;---MAIN:
MAIN:
ACALL
ACALL CHANNEL_
CHANNEL_0
0
ACALL
ACALL READ_ADC
READ_ADC
ACALL
ACALL DISP
DISP
SJMP
MAIN
SJMP
MAIN
Prosedur pengambilan data dari ADC
Prosedur pengambilan data dari ADC
;---;
; PENGAMBILAN
PENGAMBILAN DATA
DATA DARI
DARI ADC
ADC
;
; P0.5
P0.5
:
: A
A
;
; P0.6
P0.6
:
: B
B
;
; P0.7
P0.7
:
: C
C
;
; P3.6
P3.6
:
: WR
WR
;
; P3.7
P3.7
:
: RD
RD
;---READ_ADC:
READ_ADC:
SETB
SETB
P3.6
P3.6
;
; WR
WR =
= 1
1
SETB
SETB
P3.7
P3.7
;
; RD
RD =
= 1
1
ACALL
ACALL DELAY
DELAY
CLR
CLR
P3.6
P3.6
;
; WR
WR =
= 0
0
ACALL
ACALL DELAY
DELAY
SETB
SETB
P3.6
P3.6
;
; WR
WR =
= 1
1
JB
P3.2,$
JB
P3.2,$
ACALL
ACALL DELAY
DELAY
CLR
CLR
P3.7
P3.7
;
; RD
RD =
= 0
0
MOV
A,P1
MOV
A,P1
MOV
DATAADC,A
MOV
DATAADC,A
SETB
SETB
P3.7
P3.7
;
; RD
RD =
= 1
1
RET
RET
Prosedur menampilkan data ADC ke LCD
Prosedur menampilkan data ADC ke LCD
;---;
; MENAMPILKAN
MENAMPILKAN DATA
DATA KE
KE LCD
LCD
;---DISP:
DISP:
MOV
A,DATAADC
MOV
A,DATAADC
MOV
B,#100
MOV
B,#100
DIV
AB
DIV
AB
MOV
MOV
32H,A
32H,A
;
; 32H
32H :
: RATUSAN
RATUSAN
MOV
A,B
MOV
A,B
MOV
B,#10
MOV
B,#10
DIV
AB
DIV
AB
MOV
MOV
31H,A
31H,A
;
; 31H
31H :
: PULUHAN
PULUHAN
MOV
MOV
30H,B
30H,B
;
; 30H
30H :
: SATUAN
SATUAN
MOV
MOV
A,#0CFH
A,#0CFH
;
; PESAN
PESAN TEMPAT
TEMPAT DI
DI KOLOM
KOLOM 15
15 BARIS
BARIS 2
2
ACALL
ACALL CONTROLOU
CONTROLOUT
T
MOV
A,30H
MOV
A,30H
ADD
ADD
A,#30H
A,#30H
; ASCII DARI SATUAN
; ASCII DARI SATUAN
ACALL
ACALL
ACALL CONTROLOU
CONTROLOUT
T
MOV
A,31H
MOV
A,31H
ADD
ADD
A,#30H
A,#30H
; ASCII DARI PULU
; ASCII DARI PULUHAN
HAN
ACALL
ACALL DATAOUT
DATAOUT
MOV
MOV
A,#0CDH
A,#0CDH
;
; PESAN
PESAN TEMPAT
TEMPAT DI
DI KOLOM
KOLOM 13
13 BARIS
BARIS 2
2
ACALL
ACALL CONTROLOU
CONTROLOUT
T
MOV
A,32H
MOV
A,32H
ADD
ADD
A,#30H
A,#30H
; ASCII DARI RATUSAN
; ASCII DARI RATUSAN
ACALL
ACALL DATAOUT
DATAOUT
RET
RET
Untuk melakukan percobaan ini, lakukan langkah-langkah sebagai berikut:
Untuk melakukan percobaan ini, lakukan langkah-langkah sebagai berikut:
1. Hubungkan modul MICROTRAINER dengan memasang kabel DB25
1. Hubungkan modul MICROTRAINER dengan memasang kabel DB25
dengan LPT1 pada PC. Mode printer adalah SPP atau
dengan LPT1 pada PC. Mode printer adalah SPP atau output only
output only..
2.
2. Ketikkan di
Ketikkan di sembarang
sembarang editor yang
editor yang anda miliki
anda miliki listing
listing program berikut:
program berikut:
; PROG12.ASM DIGUNAKAN UNTUK MENGAMBIL DATA DARI ADC; PROG12.ASM DIGUNAKAN UNTUK MENGAMBIL DATA DARI ADC ; DAN DITAMPILKAN KE LCD
; DAN DITAMPILKAN KE LCD ;
; JUMPER JUMPER OUTPUT OUTPUT : : LCD LCD POSISI POSISI '0''0' ORG 00H ORG 00H SJMP START SJMP START ;---; ; LCD LCD CONSTANTACONSTANTA ;---DISPCLR
DISPCLR EQU EQU 00000001B00000001B FUNCSET
FUNCSET EQU EQU 00111000B00111000B ENTRMOD
ENTRMOD EQU EQU 00000110B00000110B DISPON
DISPON EQU EQU 00001100B00001100B DATAADC
DATAADC EQU EQU 60H60H START:
START:
ACALL
ACALL INIT_LCINIT_LCDD MOV DPTR,#BARIS1 MOV DPTR,#BARIS1 ACALL
ACALL PRINTSTRINPRINTSTRING1G1 MOV DPTR,#BARIS2 MOV DPTR,#BARIS2 ACALL
ACALL PRINTSTRINPRINTSTRING2G2
;---;
; MAIN MAIN PROGRAMPROGRAM ;---MAIN:
MAIN:
ACALL
ACALL CHANNEL_0CHANNEL_0 ACALL
ACALL READ_ADCREAD_ADC ACALL
CHANNEL_0: CHANNEL_0: CLR P0.5 CLR P0.5 CLR P0.6 CLR P0.6 CLR P0.7 CLR P0.7 RET RET CHANNEL_7: CHANNEL_7: SETB P0.5 SETB P0.5 SETB P0.6 SETB P0.6 SETB P0.7 SETB P0.7 RET RET ;---;
; PENAMBILAN PENAMBILAN DATA DATA DARI DARI ADCADC ; ; P0.5 P0.5 : A: A ; ; P0.6 P0.6 : B: B ; ; P0.7 P0.7 : C: C ; ; P3.6 P3.6 : WR: WR ; ; P3.7 P3.7 : RD: RD ;---READ_ADC: READ_ADC: SETB SETB P3.6 P3.6 ; ; WR WR = = 11 SETB SETB P3.7 P3.7 ; ; RD RD = = 11 ACALL
ACALL DELAYDELAY CLR
CLR P3.6 P3.6 ; ; WR WR = = 00 ACALL
ACALL DELAYDELAY SETB
SETB P3.6 P3.6 ; ; WR WR = = 11 JB P3.2,$
JB P3.2,$ ACALL
ACALL DELAYDELAY CLR CLR P3.7 P3.7 ; ; RD RD = = 00 MOV A,P1 MOV A,P1 MOV DATAADC,A MOV DATAADC,A SETB SETB P3.7 P3.7 ; ; RD RD = = 11 RET RET ;---;
; MENAMPILKAN MENAMPILKAN DATA DATA KE KE LCDLCD ;---DISP: DISP: MOV A,DATAADC MOV A,DATAADC MOV B,#100 MOV B,#100 DIV AB DIV AB MOV
MOV 32H,A 32H,A ; ; 32H 32H : : RATUSANRATUSAN MOV A,B MOV A,B MOV B,#10 MOV B,#10 DIV AB DIV AB MOV
MOV 31H,A 31H,A ; ; 31H 31H : : PULUHANPULUHAN MOV
MOV 30H,B 30H,B ; ; 30H 30H : : SATUANSATUAN MOV
MOV A,#0CFH A,#0CFH ; ; PESAN PESAN TEMPAT TEMPAT DI DI KOLOM KOLOM 15 15 BARIS BARIS 22 ACALL
ACALL CONTROLOUCONTROLOUTT MOV A,30H
MOV A,30H ADD
ADD A,#30H A,#30H ; ASCII ; ASCII DARI SATUANDARI SATUAN ACALL
ACALL
ACALL CONTROLOUCONTROLOUTT MOV A,31H
MOV A,31H ADD
ADD A,#30H A,#30H ; ASCII ; ASCII DARI PULUDARI PULUHANHAN ACALL
ACALL DATAOUTDATAOUT MOV
MOV A,#0CDH A,#0CDH ; ; PESAN PESAN TEMPAT TEMPAT DI DI KOLOM KOLOM 13 13 BARIS BARIS 22 ACALL
ACALL CONTROLOUCONTROLOUTT MOV A,32H
MOV A,32H ADD
ADD A,#30H A,#30H ; ASCII ; ASCII DARI RATUSADARI RATUSANN ACALL
ACALL DATAOUTDATAOUT RET
RET
;---;
; PROSEDUR PROSEDUR PEMESANAN PEMESANAN TEMPATTEMPAT ;---; ; RS RS : : 0 0 : : P3.5P3.5 ; ; E E : : 0 0 - - 1 1 - - 0 0 : : P3.4P3.4 ; ; DATA DATA : : P2P2 CONTROLOUT: CONTROLOUT: CLR CLR P3.5 P3.5 ; ; RS RS = = 00 ACALL
ACALL DELAYDELAY CLR P3.4 CLR P3.4 ACALL
ACALL DELAYDELAY SETB P3.4 SETB P3.4 ACALL
ACALL DELAYDELAY MOV P2,A MOV P2,A CLR P3.4 CLR P3.4 ACALL
ACALL DELAYDELAY RET
RET
;---;
; PROSEDUR PROSEDUR PENEMPATAN PENEMPATAN DATADATA ;---; ; RS RS : : 0 0 : : P3.5P3.5 ; ; E E : : 0 0 - - 1 1 - - 0 0 : : P3.4P3.4 DATAOUT: DATAOUT: SETB SETB P3.5 P3.5 ; ; RS RS = = 11 ACALL
ACALL DELAYDELAY CLR
CLR P3.4 P3.4 ; ; E E = = 00 ACALL
ACALL DELAYDELAY SETB
SETB P3.4 P3.4 ; ; E E = = 11 ACALL
ACALL DELAYDELAY MOV P2,A MOV P2,A CLR
CLR P3.4 P3.4 ; ; E E = = 00 ACALL
ACALL DELAYDELAY RET
RET
;---;
; PROSEDUR PROSEDUR DELAY DELAY LCDLCD ;---DELAY.INIT.LCD: DELAY.INIT.LCD: MOV R6,#20H MOV R6,#20H DLY.LCD.LP: DLY.LCD.LP: MOV R7,#10H MOV R7,#10H DJNZ R7,$ DJNZ R7,$ DJNZ R6,DLY.LCD.LP DJNZ R6,DLY.LCD.LP
INIT_LCD: INIT_LCD:
MOV A,#FUNCSET MOV A,#FUNCSET ACALL
ACALL CONTROLOUCONTROLOUTT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD MOV A,#DISPON MOV A,#DISPON ACALL
ACALL CONTROLOUCONTROLOUTT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD MOV A,#DISPCLR MOV A,#DISPCLR ACALL
ACALL CONTROLOUCONTROLOUTT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD MOV A,#ENTRMOD MOV A,#ENTRMOD ACALL
ACALL CONTROLOUCONTROLOUTT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD RET
RET
;---; PROCEDURE LCD BARIS KOLOM LCD ; PROCEDURE LCD BARIS KOLOM LCD ;---POSISI2.1: POSISI2.1: MOV A,#1 MOV A,#1 POSISI2: POSISI2: ADD
ADD A,#110000A,#11000000B 00B ; BARIS KED; BARIS KEDUAUA DEC A
DEC A ACALL
ACALL CONTROLOUCONTROLOUTT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD RET RET POSISI1.1: POSISI1.1: MOV A,#1 MOV A,#1 POSISI1: POSISI1: ADD
ADD A,#100000A,#10000000B 00B ; BARIS PER; BARIS PERTAMATAMA DEC A
DEC A ACALL
ACALL CONTROLOUCONTROLOUTT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD RET
RET PRINTSTRING2: PRINTSTRING2:
ACALL
ACALL POSISI2POSISI2.1.1 CLR A CLR A MOVC A,@A+DPTR MOVC A,@A+DPTR JNZ PRINTSTRINGLOOP JNZ PRINTSTRINGLOOP PRINTSTRINGLOOP: PRINTSTRINGLOOP: ACALL
ACALL DATAOUTDATAOUT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD INC DPTR INC DPTR CLR A CLR A MOVC A,@A+DPTR MOVC A,@A+DPTR JNZ PRINTSTRINGLOOP JNZ PRINTSTRINGLOOP RET RET PRINTSTRING1: PRINTSTRING1: ACALL
MOVC A,@A+DPTR MOVC A,@A+DPTR JNZ PRINTSTRINGLOOP2 JNZ PRINTSTRINGLOOP2 PRINTSTRINGLOOP2: PRINTSTRINGLOOP2: LCALL DATAOUT LCALL DATAOUT ACALL
ACALL DELAY.INDELAY.INIT.LCDIT.LCD INC DPTR INC DPTR CLR A CLR A MOVC A,@A+DPTR MOVC A,@A+DPTR JNZ PRINTSTRINGLOOP2 JNZ PRINTSTRINGLOOP2 RET RET ;---;
; PROCEDURE PROCEDURE DELAYDELAY ;---DELAY: DELAY: MOV R5,#0 MOV R5,#0 U1:
U1: MOV MOV R6,#0R6,#0 U2:
U2: MOV MOV R7,#0R7,#0
U3: INC R7 U3: INC R7 CJNE R7,#10,U3 CJNE R7,#10,U3 INC R6 INC R6 CJNE R6,#10,U2 CJNE R6,#10,U2 INC R5 INC R5 CJNE R5,#10,U1 CJNE R5,#10,U1 RET RET BARIS1: BARIS1: DB '
DB ' DATA DARI DATA DARI ADC ADC ',0',0 BARIS2:
BARIS2:
DB
DB 'DATA 'DATA ADC ADC : : ',0',0