Kontrol ADC Eksternal MCS51 dg Serial RS 232 (AT89S51)
Pada Aplikasi ini, digunakan ADC 0809 sebagai pengonversi tegangan analog dalam bentuk data digital. Data akan dikirimkan secara serial menggunakan AT89S51 ke PC dengan model koneksi RS 232. Data kanal ADC dapat di pilih dengan melakukan penekanan tombol 0 s.d. 7 pada keyboard. Data ADC dikirimkan secara terus menerus hingga terjadi penekanan tombol 9 agar data yang dikirimkan berhenti.Code program ini dibuat dengan menggunakan bahasa assembly, menggunakan compiler MIDE51.
1. Modul DT I/O Analog (ADC)
Merupakan modul yang dibuat oleh innovative electronics yang berisi rangkaian ADC 0809 dan DAC TLC5628CN siap pakai.Yang digunakan oleh modul ini adalah ADC 0809 untuk mengonversi sinyal analog dalam bentuk sinyal digital.Data digital hasil pengolahan adc inilah yang diolah oleh modul mikrokontroler AT89S51.
Gambar 1.2 Modul DT I/O Analog
2. MCS51(modul mikrokontroler AT89S51)
Merupakan modul yang berisi rangkaian minimum system AT89S51 dengan tambahan rangkaian UART. Modul ini berfungsi mengatur dan mengolah data digital hasil dari modul ADC dan mentransmit hasilnya dalam hyperterminal PC.
3. Rangkaian RS232
Konverter tegangan TTL (milik mikrokontroler) ke tegangan RS232 (milik PC).
4. PC (Komputer)
PC yang digunakan disini adalah PC dengan system operasi windows. Data hasil pembacaan dapat dilihat di software hyperterminal yang sudah satu paket dengan windows. Untuk mengakses hyperterminal, klik start – all program – accessories – communications – hyperterminal. Untuk setting hyperterminal akan dijelaskan dalam pembahasan selanjutnya.
;P2 : ALAMAT ADCDownload Source Code
;P1 : DATA ADC
$MOD51
ORG 0H
SJMP MAIN
ORG 23H
ACALL SER_INT
RETI
MAIN :
MOV SP,#07H
ACALL INIT_SER
MOV P2,#0H
MOV DPTR,#STRING
MOV R6,#57
MOV R7,#46
ACALL SER_TULIS
ACALL T_PILIH
START :
MOV IE,#90H
INTRO :
CJNE R6,#57,LANJUT
SJMP INTRO
WHILE1 :
CJNE R6,#57,LANJUT
MOV IE,#0H
ACALL T_PILIH
MOV IE,#90H
STOP :
CJNE R6,#57,LANJUT
SJMP STOP
LANJUT :
MOV IE,#0H
ACALL T_DATA
MOV IE,#90H
ACALL DELAY
SJMP WHILE1
INIT_SER :
MOV IE,#0H ; |EA|-|ET2|ES|ET1|EX1|ET0|EX0|
MOV SCON,#50H ; |SM0|SM1|SM2|REN|TB8|RB8|TI|RI|
MOV TH1,#0FDH
MOV PCON,#80H ; |SMOD|-|-|-|GF1|GF0|PD|IDL|
MOV TMOD,#20H ; |||||||||
MOV TCON,#40H ; |TF1|TR1|TF0|TRO|||||
RET
SER_INT :
ACALL RX_BYTE
MOV R6,A
RETI
RX_BYTE :
JNB RI,RX_BYTE
MOV A,SBUF
CLR RI
RET
TX_BYTE :
MOV SBUF,A
TX_WAIT :
JNB TI,TX_WAIT
CLR TI
RET
T_PILIH :
MOV DPTR,#PILIH
MOV R7,#24
ACALL SER_TULIS
RET
T_DATA :
MOV DPTR,#D_KANAL
MOV R7,#17
ACALL SER_TULIS
MOV A,#' '
ACALL TX_BYTE
MOV A,#'['
ACALL TX_BYTE
MOV A,R6
ACALL BIN2ASCII
MOV A,#']'
ACALL TX_BYTE
MOV DPTR,#SPACE
MOV R7,#3
ACALL ALAMAT
ACALL SER_TULIS
MOV A,P1
ACALL BIN2ASCII
ACALL TX_BYTE
MOV A,B
ACALL TX_BYTE
RET
ALAMAT :
MOV A,R6
SUBB A,#48
MOV P2,A
RET
BIN2ASCII :
MOV B,#100
DIV AB
ADD A,#48
ACALL TX_BYTE
MOV A,B
MOV B,#10
DIV AB
ADD A,#48
ACALL TX_BYTE
MOV A,B
ADD A,#48
ACALL TX_BYTE
MOV A,#0
RET
SER_TULIS :
PUSH ACC
MOV A,#0
NEXT_CHAR :
PUSH ACC
MOVC A,@A+DPTR
ACALL TX_BYTE
POP ACC
INC A
DJNZ R7,NEXT_CHAR
POP ACC
RET
DELAY:
MOV R4,#70H
DELAY1:
DJNZ R3,$
DJNZ R4,DELAY1
RET
STRING :
DB 'Remote Data Acquisition',13
DB 'NIAM TAMAMI',13
DB '7108040016'
PILIH :
DB 13,13,'Pilih Kanal Input ADC '
D_KANAL :
DB 13,'Data Input Kanal '
SPACE :
DB ' = '
END
0 Komentar