Perancangan Alat Pendeteksi Tingkat Kematangan Buah.

ABSTRAK
Otomatisasi pemilihan buah matang dan yang belum matang di dalam
industri perkebunan dapat meningkatkan efesiensi kerja dalam hal membantu
mempercepat proses pengemasan. Pada tugas akhir ini telah dibuat alat pendeteksi
tingkat kematangan buah. Photodioda digunakan sebagai sensor warna untuk
mendeteksi perbedaan warna pada kulit buah. Setiap perbedaan warna yang
dideteksi sensor warna akan menyebabkan perbedaan tegangan. Tegangan sensor
warna kemudian akan diubah menjadi bentuk digital oleh Analog to Digital
Converter (ADC) dan di proses Mikrokontroler. Hasil dari mikrokontroler akan
ditampilkan dalam

Liquid Crystal Display (LCD). Hasil pengujian yang

dilakukan dalam Tugas Akhir ini menunjukkan bahwa alat pendeteksi kematangan
buah telah berhasil mendeteksi kematangan buah dengan peluang keberhasilan
pada jeruk 78.33% dan tomat 77.67%.

i

ABSTRACT


Automatization election of ripe fruit or not in plantation industry can
improve efficiency works so that can assist to quicken packing process. In this
final project, tool for detection ripe of fruit has been made. Photodiode is used as
colour sensor to detect the difference of colour at fruit’s skin. Each difference of
colour is detected by colour sensor will cause difference voltages. Voltages from
colour sensor then will be turned into digital by Analogue to Digital Converter
(ADC) and will be processed in Microcontroller. Result from Microcontroller will
be presented in Liquid Crystal Display (LCD). The result of the test indicates
that tool for detection ripe of fruit has succeeded to detect level of ripe fruits with
opportunity of truth at orange 78.33% and tomato 77.67%.

ii

DAFTAR ISI

LEMBAR PENGESAHAN
SURAT PENGESAHAN
ABSTRAK………………………………………...................…......……………...i
ABSTRACT…………………………………….……….......................………….ii
KATA PENGANTAR………………………………….….………….....……….iii

DAFTAR ISI ……………………………………………...…………....................v
DAFTAR GAMBAR………………………………………..……………….......vii
DAFTAR TABEL……………………………………...…………………..........viii
BAB I PENDAHULUAN
1.1. Latar Belakang……………………………..………………………....1
1.2. Identifikasi Masalah…………………………..………………………1
1.3. Maksud dan Tujuan………………………...…………………………1
1.4. Pembatasan Masalah…………………..……………………………...1
1.5. Sistematika Penulisan……………………...……………………….....2
BAB II LANDASAN TEORI
2.1. Photodioda………………………...………………………………......3
2.1.1. Sensitivitas…………………………...………………………..3
2.1.2. Respon Warna...…………………………..…………………..5
2.1.3. Tanggap Waktu…………………………..…………………...5
2.2. Panjang Gelombang………………………..…………………………5
2.3. Analog to Digital Converter (ADC) ……………………...…………..8
2.4. Mikrokontroler AT89S51………………...………………………….10
2.4.1. Deskripsi Mikrokontroler AT89S51………………..…….....11
2.4.2. Deskripsi Software………………..……………...………….14
2.4.3. Struktur Memori AT89S51…………………..……………...14

2.5. Liquid Crystal Display (LCD) M1632………………..…….……….15
2.5.1. Display Data Random Access Memory (DDRAM) …...……15
2.5.2. Character Generator RAM (CGRAM) …………...…………16

iii

2.5.3. Character Generator ROM (CGROM) …………...…………16
2.5.4. Pin Out LCD M1632……………...…………………………18
2.5.5. Perintah-Perintah LCD M1632…………......……………….19
2.5.6. Perhitungan Rata-Rata…………………...…………………..20
BAB III PERANCANGAN DAN REALISASI SISTEM
3.1. Diagram Blok………………………………………..………............21
3.2. Perancangan dan Realisasi Perangkat Keras………………...………21
3.2.1. Rangkaian Power Supply…………………..………………..21
3.2.2. Rangkaian Sensor Warna……………………………..……..22
3.2.3. Rangkaian Analog To Digital Converter………………...…..23
3.2.4. Rangkaian Pengolah…………………………………............25
3.2.5. Rangkaian Liquid Crystal Display (LCD) …………...……...26
3.3. Perancangan Perangkat Lunak………………..……………………..26
BAB IV DATA PENGAMATAN DAN ANALISA

4.1. Setting Point…………………………..……………………………..32
4.2. Pengujian Terhadap Tingkat Keberhasilan Alat Pendeteksi Warna...38
BAB V KESIMPULAN DAN SARAN
5.1. Kesimpulan………………………………...………………………...44
5.2. Saran……………………………...........…………………….............44
LAMPIRAN A Skema Rangkaian………………………………...……………A-1
LAMPIRAN B Listing Program……………………………..………................B-1
LAMPIRAN C Foto Alat…………………………………..…………………...C-1
LAMPIRAN D Data Sheet………………………………...…………………....D-1

iv

DAFTAR GAMBAR
Halaman
Gambar 2.1

Rangkaian Photodioda..................................................................

3


Gambar 2.2

Fisik Photodioda...........................................................................

3

Gambar 2.3

Pemasangan Lensa Pada Photodioda............................................

4

Gambar 2.4

Pengaruh Lensa pada Photodioda.................................................

4

Gambar 2.5


Respon Photodioda Terhadap Panjang Gelombang...................... 5

Gambar 2.6

Hubungan Panjang Gelombang dengan Energi Foton..................

Gambar 2.7

Spektrum Cahaya Berdasarkan Panjang Gelombang.................... 8

Gambar 2.8

Setiap kode digital merepresentasikan sebagian dari rentang
masukan analog total.....................................................................

7

9

Gambar 2.9


Konfigurasi PIN ADC0804........................................................... 10

Gambar 2.10

Konfigurasi Pin Mikrokontroler AT89S51...................................
Struktur Memori AT89S51...........................................................

Gambar 2.11
Gambar 2.12

Ilustrasi Penempatan dan Pergeseran Data

Pada DDRAM

Sesuai Dengan Alamatnya............................................................

12
15
16


Gambar 2.13

Hubungan Antara CGROM dan DDRAM.................................... 17

Gambar 2.14

Posisi Pin Out M1632...................................................................

18

Gambar 3.1

Blok Diagram Alat Pendeteksi Kematangan Buah.…..................

21

Gambar 3.2

Rangkaian Power supply............................................................... 22


Gambar 3.3

Rangkaian Sensor Warna.............................................................. 23

Gambar 3.4

Rangkaian Analog To Digital Converter......................................

Gambar 3.5

Rangkaian Pengolah…………………………………………….. 25

Gambar 3.6

Rangkaian LCD…………………………………………………. 26

Gambar 3.7

Program


inisialisasi

LCD,

pemilihan

jenis

buah

serta

pengambilan data konversi ADC1 dan data konversi ADC2.......

24

27

Gambar 3.8


Program Membandingkan Data Buah Jeruk.................................

28

Gambar 3.9

Program Membandingkan Data Buah Tomat...............................

29

Gambar 4.1

Range Tegangan Untuk Buah Jeruk dan Tomat...........................

37

Gambar 4.2

Peluang Keberhasilan Pada Buah Jeruk dan Tomat ..................... 43

v

DAFTAR TABEL

halaman
Tabel 2.1

Port Paralel 8 Bit...........................................................................

Tabel 2.2

Pin Out M1632.............................................................................. 18

Tabel 2.3

Set Instruksi M1632…………………………………………......

19

Tabel 3.1

Tampilan LCD Pada Buah Jeruk..................................................

30

Tabel 3.2

Tampilan LCD pada buah Tomat.................................................. 31

Tabel 4.1
Tabel 4.2

Data Pengamatan Tegangan Pada Buah Jeruk dan Tomat............ 33
Setting point Pada Buah Jeruk dan Tomat.................................... 38

Tabel 4.3

Pengamatan Tingkat Keberhasilan Pada Buah Jeruk dan Tomat.. 39

vi

13

LAMPIRAN A

SKEMA RANGKAIAN

Sensor
5 VOLT

5 VOLT

ADC

MICRO CONTROLLER LCD 16*2

Resistor
220K ohm

Photodioda 1

Lamp

Resistor
KAPASITOR
10K ohm
150 pF
CS
RD
WR

5 VOLT

5 VOLT

Resistor
220K ohm

Resistor Variabel
125
Lamp

Photodioda 2

D1

INTR

D2

Vin(+)

D3

GND
5 VOLT

KAPASITOR
10 uF

5 VOLT

D4
D5
D6
D7

ADC 1

Resistor
KAPASITOR
10K ohm
150 pF
CS
RD
WR

Resistor
10K

VCC
CLK R
D0

CLK IN

Vin(-)
A GND
Vref/2

5 VOLT

VCC
CLK R
D0

CLK IN

D1

INTR

D2

Vin(+)

D3

Vin(-)
A GND
Vref/2

D4

GND
ADC 2

D5
D6
D7

5 VOLT
KAPASITOR
33 pF

XTAL

Resistor Variabel
125

KAPASITOR
33 pF

P1.0
VCC
P1.1
P0.0
P1.2
P0.1
P1.3
P0.2
P1.4
P0.3
P1.5
P0.4
P1.6
P0.5
P1.7
P0.6
RESET
P0.7
P3.0
EA/VPP
P3.1 SLE/PROG
P3.2
PSEN
P3.3
P2.7
P3.4
P2.6
P3.5
P2.5
P3.6
P2.4
P3.7
P2.3
XTAL2
P2.2
XTAL1
P2.1
VSS
P2.0
AT89S51

5 VOLT

1K

GND
VCC
Vo
RS
R/W
E
D0
D1
D2
D3
D4
D5
D6
D7
VCC
GND
LCD

5 VOLT

LAMPIRAN B

LISTING PROGRAM

;================================
;
Program Tampilan LCD
;================================
;VARIABEL:
command equ 31h
character equ 32h
D_BIN
equ 33h
ASCH
equ 34h
ASCL
equ 35h
L_DL0
equ 36h
L_DL1
equ 37h
L_DL2
equ 38h
S_DL0
equ 39h
S_DL1
equ 3Ah
S_DL2
equ 3Bh
RS
equ P2.4
EN
equ P2.5
LCD
equ P2
WR_ADC1
equ P0.1
WR_ADC2 equ P0.3
INTR_ADC1 equ P0.0
INTR_ADC2 equ P0.2
jeruk
equ P0.7
status1 equ 42h
status2 equ 43h
;================================
;
Subrutin Baris ke-1
;================================
line1:

mov command,#80h
lcall send_command
mov r7,#10h
next1: mov a,#0h
movc a,@a+dptr
mov character,a
lcall send_character
inc dptr
djnz r7,next1
ret
line1B: mov command,#85h
lcall send_command
mov r7,#11
next1B: mov a,#0h
movc a,@a+dptr

B-2

mov character,a
lcall send_character
inc dptr
djnz r7,next1B
ret
;=================================
;
Subrutin Baris ke-2
;=================================
line2:

mov command,#0C0h
lcall send_command
mov r7,#10h
next2: mov a,#0h
movc a,@a+dptr
mov character,a
lcall send_character
inc dptr
djnz r7,next2
ret
line2B: mov command,#0C5h
lcall send_command
mov r7,#11
next2B: mov a,#0h
movc a,@a+dptr
mov character,a
lcall send_character
inc dptr
djnz r7,next2B
ret
;=================================
;
Subrutin Inisialisasi LCD
;=================================
init_LCD:
lcall SDLY
lcall SDLY
MOV LCD,#02H;set mode operasi LCD 4bit
setb EN
mov S_DL0,#00h;delay power on LCD
MOV S_DL1,#4h
lcall SDLY
clr EN
mov

command,#28h;set mode LCD 16 karakter 2 baris

B-3

lcall
lcall
mov
lcall
lcall
mov
lcall
lcall
mov
lcall
lcall
ret

send_command
sdly
command,#08h;turn off LCD
send_command
sdly
command,#0Ch;turn on LCD
send_command
sdly
command,#06h;increment address mode
send_command
sdly

;=====================================
;
Subrutin Tulis Perintah ke LCD
;=====================================
send_command:
mov LCD,#00H
clr RS
mov a,command
anl a,#0f0h
swap a
mov LCD,a
setb EN
mov S_DL1,#1h
lcall SDLY
clr EN
mov a,command
anl a,#0fh
mov LCD,A
setb EN
mov S_DL1,#1h
lcall SDLY
clr EN
ret
;=====================================
;
Subrutin Tulis Karakter ke LCD
;=====================================
send_character:
mov LCD,#00H
mov a,character
anl a,#0F0h
swap a

B-4

mov LCD,a
setb RS
setb EN
mov S_DL1,#1h
lcall SDLY
clr EN
mov a,character
anl a,#0fh
mov LCD,a
setb RS
setb EN
mov S_DL1,#1h
lcall SDLY
clr EN
ret
;=====================================
;
Subrutin Short Delay
;=====================================
SDLY:
djnz S_DL0,SDLY
djnz S_DL1,SDLY
ret
;=====================================
;
Subrutin Long Delay
;=====================================
LDLY:
djnz L_DL0,LDLY
djnz L_DL1,LDLY
djnz L_DL2,LDLY
ret
;===========================================
;
Subrutin Tulis Karakter ASCII ke LCD
;===========================================
BIN2ASC: MOV A,D_BIN
ANL A,#0FH
ADD A,#0F6H
JNC NOADJL
ADD A,#07H
NOADJL: ADD A,#3AH
MOV ASCL,A
MOV A,D_BIN
SWAP A

B-5

ANL A,#0FH
ADD A,#0F6H
JNC NOADJL2
ADD A,#07H
NOADJL2: ADD A,#3AH
MOV ASCH,A
RET
;=====================================
;
Subrutin Delay 50 MiliDetik
;=====================================
delay_50_ms:MOV R5,#50
D50MS2: MOV R6,#04H
D50MS3: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,D50MS3
DJNZ R5,D50MS2
RET
;=====================================
;
Subrutin Delay 1 Detik
;=====================================
delay_1_s: lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
lcall delay_50_ms
ret

B-6

;==================================================
org 00h
; alamat awal 00
ljmp main_prog
; =================================================
;
MAIN PROGRAM
; =================================================
org 100h
; alamat program
main_prog:
lcall delay_1_s;delay
lcall init_lcd;inisialisasi LCD
ulang:
mov
acall
mov
acall
lcall
lcall
lcall
mov
acall
mov
acall

dptr,#pesan1
line1
dptr,#pesan2
line2
delay_1_s
delaY_1_s
delay_1_s
dptr,#blank
line1
dptr,#blank
line2

mov
acall
mov
acall
lcall
lcall
lcall

dptr,#pesan3
line1
dptr,#pesan4
line2
delay_1_s
delaY_1_s
delay_1_s

mov dptr,#blank
acall line1
mov dptr,#blank
acall line2
mov
mov
mov

p1,#0FFh
p3,#0FFh
p0,#0FFh

loop:
jnb jeruk,buah_jeruk ; P0.7
ljmp deteksi_buah_tomat

B-7

buah_jeruk:
mov dptr,#jerruk
lcall line1B
ljmp back

back:

here:

clr WR_ADC1
; WRITE (LOW)
nop
setb WR_ADC1
; WRITE (High)
jb
INTR_ADC1,here ; INTR
mov D_BIN,P1
lcall BIN2ASC
mov command,#080h
lcall send_command
mov character,ASCH
lcall send_character
mov character,ASCL
lcall send_character

lcall delay_1_s

; baca dulu ADC
back1:

here1:

clr WR_ADC2
; WRITE (LOW)
nop
setb WR_ADC2
; WRITE (High)
jb INTR_ADC2,here1
; INTR
mov D_BIN,P3
lcall BIN2ASC
mov command,#0C0h
lcall send_command
mov character,ASCH
lcall send_character
mov character,ASCL
lcall send_character
lcall delay_1_s

B-8

mov A,P3
cjne A,#0AFh,deteksi

; isi

; tampil _kosong
mov dptr,#kosong
lcall line2B
lcall delay_1_s
ljmp loop
clr c
deteksi:
subb A,#0AAh
jc
status1_matang
ljmp status1_tdk_matang

; carry = matang
; no carry = blm matang

status1_matang:
mov status1,#'M'
ljmp cekport3
status1_tdk_matang:
mov status1,#'B'
ljmp cekport3

cekport3:
mov A,P1
cjne A,#0ADh,cekport4

; isi

; tampil _kosong
mov dptr,#kosong
lcall line2B
lcall delay_1_s
ljmp loop
clr c
cekport4:
subb A,#0A9h
jc
status2_matang
ljmp status2_tdk_matang
status2_matang:
mov status2,#'M'
ljmp cek_status

; carry = matang
; no carry = blm matang

B-9

status2_tdk_matang:
mov status2,#'B'
ljmp cek_status
cek_status:
mov A,status1
cjne A,#'M',status1tdkmatang
ljmp statusmatang

; periksa status2

status1tdkmatang:
mov A,status2
cjne A,#'M',tampilkan_blm_matang
ljmp tampilkan_setengah_matang
statusmatang:
mov A,status2
cjne A,#'M',tampilkan_setengah_matang
ljmp tampilkan_matang
;=====================================
;
Subrutin Matang
;=====================================
tampilkan_matang:
mov dptr,#matang
lcall line2B
lcall delay_1_s
ljmp loop
;======================================
;
Subrutin Tampilkan Belum Matang
;======================================
tampilkan_blm_matang:
mov dptr,#bmatang
lcall line2B
lcall delay_1_s
ljmp loop
;=========================================
;
Subrutin Tampilkan Setengah Matang
;=========================================
tampilkan_setengah_matang:
mov dptr,#smatang
lcall line2B

B-10

lcall delay_1_s
ljmp loop
;=====================================
;
Deteksi Buah Tomat
;=====================================
deteksi_buah_tomat:
mov dptr,#tomat
lcall line1B
; buah tomat

backt:
clr WR_ADC1
; WRITE (LOW)
nop
setb WR_ADC1
; WRITE (High)
jb
INTR_ADC1,heret
; INTR

heret:

mov D_BIN,P1
lcall BIN2ASC
mov command,#080h
lcall send_command
mov character,ASCH
lcall send_character
mov character,ASCL
lcall send_character

lcall delay_1_s

; baca dulu ADC
back1t:

clr WR_ADC2
; WRITE (LOW)
nop
setb WR_ADC2
; WRITE (High)
here1t:
jb INTR_ADC2,here1t
; INTR
mov D_BIN,P3
lcall BIN2ASC
mov command,#0C0h
lcall send_command

B-11

mov character,ASCH
lcall send_character
mov character,ASCL
lcall send_character
lcall delay_1_s

mov A,P3
cjne A,#0AFh,deteksit

; isi

; tampil _kosong
mov dptr,#kosong
lcall line2B
lcall delay_1_s
ljmp loop
clr c
deteksit:
subb A,#0A5h
jnc status1_matangt
ljmp status1_tdk_matangt

; carry = matang
; no carry = blm matang

status1_matangt:
mov status1,#'M'
ljmp cekport3t
status1_tdk_matangt:
mov status1,#'B'
ljmp cekport3t

cekport3t:
mov A,P1
cjne A,#0ADh,cekport4t
; tampil _kosong
mov dptr,#kosong
lcall line2B
lcall delay_1_s
ljmp loop
clr c
cekport4t:
subb

A,#0A9h

; isi

B-12

jnc status2_matangt
ljmp status2_tdk_matangt

; carry = matang
; no carry = blm matang

status2_matangt:
mov status2,#'M'
ljmp cek_statust
status2_tdk_matangt:
mov status2,#'B'
ljmp cek_statust
cek_statust:
mov A,status1
cjne A,#'M',status1tdkmatangt
ljmp statusmatangt
status1tdkmatangt:
mov A,status2
cjne A,#'M',tbm
ljmp tampilkan_setengah_matang
statusmatangt:
mov A,status2
cjne A,#'M',tsm
ljmp tampilkan_matang
tsm:
ljmp tampilkan_setengah_matang
tbm: ljmp tampilkan_blm_matang
org

500h

pesan1: db ' DETEKSI BUAH '
pesan2: db ' MATANG / BLM '
pesan3: db ' JOHAN HALIM '
pesan4: db ' NRP : 0322103 '
blank: db '
'
jerruk: db 'BUAH JERUK '
tomat: db 'BUAH TOMAT '
matang: db 'M A T A N G'
bmatang: db 'BLM MATANG '
smatang: db '1/2 MATANG '
kosong: db 'K O S O N G'
isi:
db ' I S I '
end

; periksa status2

LAMPIRAN C

FOTO ALAT

LAMPIRAN D

DATA SHEET

D-1

D-2

D-3

D-4

D-5

D-6

D-7

D-8

D-9

D-10

D-11

Instruksi-instruksi Keluarga MCS51
A. Operasi Aritmatika
1. ADD
ADD A,Rn
Tambahkan Akumulator A dengan Rn di mana n = 0…7 dan simpan hasil
di Akumulator A
Contoh:
Add A,R7
Isi dari R7 akan ditambahkan dengan akumulator A dan hasilnya disimpan
di Akumulator A
ADD A,direct
Tambahkan Akumulator A dengan data di alamat memori tertentu secara
langsung.
Contoh:
Add A,00H
Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM
Internal di alamat 00H
ADD A,@Ri
Tambahkan Akumulator A dengan data yang berada di alamat Ri (ditunjuk
oleh Ri) dan hasilnya disimpan di Akumulator A. Ri adalah Register Index
di mana pada MCS51 adalah berupa R0 atau R1
Contoh:
Add A,@R0
Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM
Internal yang ditunjuk oleh R0. Apabila R0 berisi 05H maka, isi dari
alamat 05H akan dijumlahkan dengan Akumulator A dan hasilnya
disimpan di Akumulator A
ADD A,#data
Tambahkan Akumulator A dengan sebuah konstanta dan hasilnya
disimpan dalam akumulator A.

D-12

Contoh:
Add A,#05H
Isi Akumulator A ditambah dengan data 05H dan hasilnya disimpan dalam
Akumulator A
2. ADDC
ADDC A,Rn
Tambahkan Akumulator A dengan Rn di mana n = 0…7 dan simpan hasil
di Akumulator A
Contoh:
Addc A,R7
Isi dari R7 akan ditambahkan dengan akumulator A beserta carry flag dan
hasilnya disimpan di Akumulator A. Apabila carry flag set maka hasil
yang tersimpan di Akumulator A adalah A + R7 + 1.
ADDC A,direct
Tambahkan Akumulator A dan carry flag dengan data di alamat memori
tertentu secara langsung.
Contoh:
Addc A,00H
Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM
Internal di alamat 00H beserta carry flag dan hasilnya disimpan di
Akumulator A, Apabila carry flag set maka hasil yang tersimpan di
Akumulator A adalah A + isi alamat 00H + 1
ADDC A,@Ri
Tambahkan Akumulator A beserta carry flag dengan data yang berada di
alamat Ri (ditunjuk oleh Ri) dan hasilnya disimpan di Akumulator A. Ri
adalah Register Index di mana pada MCS51 adalah berupa R0 atau R1
ADDC A,#data
Tambahkan Akumulator A beserta carry flag dengan sebuah konstanta dan
hasilnya disimpan dalam akumulator A.

D-13

Contoh:
Addc A,#05H Isi Akumulator A beserta carry flag ditambah dengan data
05H dan hasilnya disimpan dalam Akumulator A. Apabila carry flag set
maka hasil di Akumulator A adalah A + 5H+ 1.
3. SUBB
SUBB A,Rn
Lakukan pengurangan data di Akumulator A dengan Rn (n = 0…7) dan
simpan hasilnya di Akumulator A
Contoh:
Subb A,R0
Data di akumulator A beserta carry flagnya dikurangi dengan isi R0 dan
hasilnya disimpan di Akumulator A
SUBB A,direct
Lakukan pengurangan data di Akumulator A dengan data di memori
tertentu yang ditunjuk secara langsung.
Contoh:
Subb A,00H
Data di Akumulator A beserta carry flagnya dikurangi dengan data
dialamat 00H dari RAM Internal dan hasilnya disimpan di Akumulator A
SUBB A,@Ri
Lakukan pengurangan data di Akumulator A beserta carry flag dengan
data yang ditunjuk oleh Ri (Register Index) di mana Ri dapat berupa R0
atau R1
Contoh:
SUBB A,@R0
Data di Akumulator A beserta carry flagnya dikurangi dengan data yang
ditunjuk oleh R0 dan hasilnya disimpan di Akumulator A
SUBB A,#data
Lakukan pengurangan data di Akumulator A beserta carry flag dengan
sebuah konstanta dan hasilnya disimpan di Akumulator A
Contoh:
SUBB A,#05H

D-14

Data di Akumulator A beserta carry flag dikurangi dengan data 05H dan
hasilnya disimpan di Akumulator A
4. INC
INC A
Tambahkan nilai Akumulator A dengan 1 dan hasilnya disimpan di
Akumulator A
INC Rn
Tambahkan nilai Rn (n= 0…7) dengan 1 dan hasilnya disimpan di Rn
tersebut
INC direct
Tambahkan data yang di RAM Internal yang alamatnya ditunjuk secara
langsung dengan 1 dan hasilnya disimpan di alamat tersebut.
Contoh:
Inc 00H
Data di alamat 00H ditambah dengan 1 dan hasilnya disimpan di alamat
00H.
INC @Ri
Tambahkan data yang alamatnya ditunjuk oleh Ri (Register Index) dengan
1 dan simpan hasilnya di alamat tersebut.
Contoh:
Inc @R1
Data di alamat yang ditunjuk oleh R1 dan hasilnya disimpan di alamat
tersebut, apabila R1 berisi 10H maka data di alamat 10H ditambah dengan
1 dan simpan kembali di alamat 10H.
INC DPTR
5. DEC
DEC A
Lakukan pengurangan pada nilai Akumulator A dengan 1 dan hasilnya
disimpan di Akumulator A
DEC Rn
Lakukan pengurangan pada nilai Rn (n= 0…7) dengan 1 dan hasilnya
disimpan di Rn tersebut

D-15

DEC direct
Lakukan pengurangan pada data yang di RAM Internal yang alamatnya
ditunjuk secara langsung dengan 1 dan hasilnya disimpan di alamat
tersebut.
Contoh:
Dec 00H
Data di alamat 00H dikurangi dengan 1 dan hasilnya disimpan di alamat
00H.
DEC @Ri
Lakukan pengurangan pada data yang alamatnya ditunjuk oleh Ri
(Register Index) dengan 1 dan simpan hasilnya di alamat tersebut.
Contoh:
DEC @R1
Data di alamat yang ditunjuk oleh R1 dan hasilnya disimpan di alamat
tersebut, apabila R1 berisi 10H maka data di alamat 10H dikurangi dengan
1 dan simpan kembali di
alamat 10H.
B. Operasi Logika dan Manipulasi Bit
1. ANL
ANL A,Rn
Melakukan operasi AND antara akumulator A dan Rn (R0…R7) dan
hasilnya disimpan di akumulator A
ANL A,direct
Melakukan operasi AND antara akumulator A dan alamat langsung dan
hasilnya disimpan di akumulator A.
Contoh:
ANL A,05H
Akumulator A di AND dengan data di alamat 05H dan hasilnya disimpan
di akumulator A
ANL A,@Ri
Melakukan operasi AND antara akumulator A dan data yang ditunjuk oleh
Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A.

D-16

Contoh:
ANL A,@R0
Akumulator A di AND dengan data yang ditunjuk oleh R0, misalkan R0
berisi 50H, maka akumulator A di AND dengan data yang tersimpan di
alamat 50H dan hasilnya disimpan di akumulator A.
ANL A,#data
Melakukan operasi AND antara akumulator A dan immediate data serta
hasilnya disimpan di akumulator A
ANL direct,A
Melakukan operasi AND antara alamat langsung dengan akumulator A
serta hasilnya disimpan di alamat langsung tersebut.
Contoh:
ANL 07H,A
Data di alamat 07H di AND dengan akumulator A dan hasilnya kembali
disimpan di alamat 07H
ANL direct,#data
Melakukan operasi AND antara alamat langsung dengan immediate data
serta hasilnya disimpan di alamat langsung tersebut.
2. ORL
ORL A,Rn
Melakukan operasi OR antara akumulator A dan Rn (R0…R7) dan
hasilnya disimpan di akumulator A
ORL A,direct
Melakukan operasi OR antara akumulator A dan alamat langsung dan
hasilnya disimpan di akumulator A.
Contoh:
ORL A,05H
Akumulator A di OR dengan data di alamat 05H dan hasilnya disimpan di
akumulator A
ORL A,@Ri
Melakukan operasi OR antara akumulator A dan data yang ditunjuk oleh
Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A.

D-17

Contoh:
ORL A,@R0
Akumulator A di OR dengan data yang ditunjuk oleh R0, misalkan R0
berisi 50H, maka akumulator A di OR dengan data yang tersimpan di
alamat 50H dan hasilnya disimpan di akumulator A.
ORL A,#data
Melakukan operasi OR antara akumulator A dan immediate data serta
hasilnya disimpan di akumulator A
ORL direct,A
Melakukan operasi OR antara alamat langsung dengan akumulator A serta
hasilnya disimpan di alamat langsung tersebut.
Contoh:
ORL 07H,A
Data di alamat 07H di OR dengan akumulator A dan hasilnya kembali
disimpan di alamat 07H
ORL direct,#data
Melakukan operasi OR antara akumulator A dan immediate data serta
hasilnya disimpan di akumulator A
3. CLR
CLR A
Memberikan nilai 0 pada 8 bit Akumulator A
4. CPL
CPL A
Melakukan komplemen pada setiap bit dalam akumulator A.
Contoh :
Bila nilai akumulator A adalah 55H atau 01010101b, maka setelah terjadi
proses komplemen nilai akumulator A berubah menjadi AAH atau
10101010b.
5. RL
RL A
Melakukan pergeseran ke kiri 1 bit untuk setiap bit dalam akumulator A

D-18

Contoh:
Nilai Akumulator A adalah 05H atau 00000101b, setelah dilakukan proses
pergeseran maka nilai Akumulator A akan berubah menjadi 00001010b
atau 0AH.
6. RR
RR A
Melakukan pergeseran ke kanan 1 bit untuk setiap bit dalam akumulator A
Contoh:
Nilai Akumulator A adalah 05H atau 00000101b, setelah dilakukan proses
pergeseran maka nilai Akumulator A akan berubah menjadi 10000010b
atau 0AH.
7. SWAP
SWAP A
Melakukan operasi penukaran nibble tinggi dan nibble rendah di
akumulator A
Contoh:
Isi akumulator A adalah 51H, setelah instruksi SWAP A dilakukan maka
data 5 di nibble tinggi akan ditukar dengan data 1 di nibble rendah menadi
15H
8. SETB
SETB bit
Set bit atau mengubah bit-bit pada RAM Internal maupun register yang
dapat dialamat secara bit (bit addressable) menjadi 1
9. JC
JC rel
Melakukan lompatan ke suatu alamat yang didefinisikan apabila carry flag
set. Apabila carry flag clear maka program akan menjalankan instruksi
selanjutnya.
Contoh:
Jc Alamat1
Mov A,#05H
Alamat1: Mov R1,#00H

D-19

Apabila carry flag set, maka program akan lompat label alamat 1 dan
menjalankan instruksi Mov R1,#00H, namun bila carry flag clear maka
program akan menjalankan instruksi Mov A,#05H terlebih dahulu sebelum
menjalankan instruksi di label alamat 1.
10 JNC
JNC rel
Melakukan lompatan ke suatu alamat yang didefinisikan apabila carry flag
clear. Apabila carry flag set maka program akan menjalankan instruksi
selanjutnya.
Contoh:
Jnc Alamat1
Mov A,#05H
Alamat1: Mov R1,#00H
Apabila carry flag clear, maka program akan lompat label alamat 1 dan
menjalankan instruksi Mov R1,#00H, namun bila carry flag set maka
program akan menjalankan instruksi Mov A,#05H terlebih dahulu sebelum
menjalankan instruksi di label alamat 1.

C. Transfer Data
1. MOV
MOV A,Rn
Melakukan pemindahan data dari Rn (R0…R7) menuju ke akumulator A
MOV A,direct
Melakukan pemindahan data dari alamat langsung ke akumulator A
Mov A,@Ri
Melakukan pemindahan data dari alamat yang ditunjuk oleh Register
Index (R0 atau R1) menuju ke akumulator A
Mov A,#data
Melakukan pemindahan data dari immediate menuju ke akumulator A
Contoh:
Data EQU 05H
Mov A,#Data

D-20

Konstanta Data yang dideklarasikan sebagai 05H dipindah ke akumulator
A sehingga nilai akumulator A menjadi 05H
Mov Rn,A
Melakukan pemindahan data dari akumulator A menuju ke Rn (R0…R7)
Mov Rn,direct
Melakukan pemindahan data dari alamat langsung menuju ke Rn
(R0…R7)
Contoh:
Mov R7,10H
Data di alamat 10H dipindah ke dalam R7
Mov Rn,#data
Melakukan pemindahan data dari immediate menuju ke Rn (R0…R7)
Contoh:
Mov R7,#05H
Data 05H dipindah ke dalam R7
Mov direct,A
Melakukan pemindahan data dari akumulator A menuju ke alamat
langsung
Contoh:
Mov 10H,A
Data di akumulator A dipindah ke alamat 10H
Mov direct,Rn
Melakukan pemindahan data dari Rn (R0…R7) menuju ke alamat
langsung
Mov direct,direct
Melakukan pemindahan data dari alamat langsung menuju ke alamat
langsung.
Mov direct,@Ri
Melakukan pemindahan data dari alamat yang ditunjuk oleh Register
Index (R0 atau R1) ke alamat langsung
Contoh:
Mov 05H,@R0

D-21

Bila R0 sebelumnya berisi 20H, maka nilai atau data yang tersimpan di
alamat 20H akan dipindah ke alamat 05H.
Mov direct,#data
Melakukan pemindahan data dari immediate ke alamat langsung.
Mov @Ri,A
Melakukan pemindahan data dari akumulator A menuju ke alamat yang
ditunjuk oleh Register Index (R0 atau R1).
Mov @Ri,direct
Melakukan pemindahan data dari alamat langsung menuju ke alamat yang
ditunjuk oleh Register Index (R0 atau R1)
Mov @Ri,#data
Melakukan pemindahan data immediate menuju ke alamat yang ditunjuk
oleh Register Index (R0 atau R1)
Mov DPTR,#data16
Melakukan pemindahan data immediate 16 bit menuju ke DPTR.
Contoh:
Mov DPTR,#2000H
Data 2000H dalam bentuk 16 bit dipindah ke alamat Register DPTR
Movc A,@A+DPTR
Contoh:
Mov A,#50H
Mov DPTR,#2000H
Movc A,@A+DPTR
Data yang terletak di komponen memori di luar AT89S51 dan terletak
pada alamat 2000H + 50H akan dibaca dan hasilnya disimpan di
akumulator A

D. Percabangan
1. ACALL
ACALL addr11
Melakukan lompatan ke suatu subroutine yang ditunjuk oleh alamat pada
addr11. Lompatan yang dapat dilakukan berada di area sebesar 2K byte.

D-22

2.RET
RET
Instruksi ini digunakan pada saat kembali dari subroutine yang dipanggil
dengan instruksi ACALL atau LCALL.
RETI
Instruksi ini digunakan untuk melompat ke alamat tempat akhir instruksi
yang sedang dijalankan ketika.
3. JUMP
LJMP addr16
Long Jump, melompat dan menjalankan program yang berada di alamat
yang ditentukan oleh addr16.
Contoh:
LJMP Lompatan2
Mov A,#05H
Lompatan2: Mov R0,#00H
Program akan melompat ke alamat lompatan 2 dan menjalankan instruksi
Mov R0,#00H, tanpa melalui instruksi MOV A,#05H
JZ rel
Melakukan lompatan ke alamat yang ditentukan apabila akumulator A
adalah 00H dan langsung meneruskan instruksi dibawahnya bila
akumulator A tidak 00H.
Contoh:
JZ Lompat1
MOV A,#07H
Lompat1: MOV B,#00H
Apabila nilai akumulator A tidak 00H maka program akan langsung
meneruskan instruksi dibawahnya yaitu MOV A,#07H dan program akan
menjalankan instruksi di alamat Lompat1 yaitu MOV B,#00H apabila nilai
akumulator A adalah 00H.

D-23

JNZ rel
Melakukan lompatan ke alamat yang ditentukan apabila akumulator A
adalah bukan 00H dan langsung meneruskan instruksi dibawahnya bila
akumulator A adalah 00H.
Contoh:
JNZ Lompat1
MOV A,#07H
Lompat1: MOV B,#00H
Apabila nilai akumulator A adalah 00H maka program akan langsung
meneruskan instruksi dibawahnya yaitu MOV A,#07H dan program akan
menjalankan instruksi di alamat Lompat1 yaitu MOV B,#00H apabila nilai
akumulator A adalah bukan 00H.
4. CJNE
Instruksi ini melakukan perbandingan antara data tujuan dan data sumber
serta melakukan lompatan ke alamat yang ditentukan apabila hasil
perbandingan tidak sama.
CJNE A,#data,rel
Melakukan perbandingan antara akumulator A dan data immediate serta
melakukan

lompatan

ke

alamat

yang

ditentukan

apabila

hasil

perbandingan tidak sama.
Contoh:
CJNE A,#00H,lompat1
Program akan menuju ke alamat lompat 1 apabila data akumulator A tidak
sama dengan data 00H..
5. DJNZ
DJNZ Rn,rel
Melakukan pengurangan pada Rn (R0…R7) dengan 1 dan lompat ke
alamat yang ditentukan apabila hasilnya bukan 00.
Apabila hasilnya telah mencapai 00, maka program akan terus
menjalankan instruksi di bawahnya.

D-24

Contoh:
Tunggu: DJNZ R7,Tunggu
RET
Selalu melakukan lompatan ke alamat tunggu dan mengurangi R7 dengan
1 selama nilai R7 belum mencapai 00
6. NOP
NOP
Instruksi ini berfungsi untuk melakukan tundaan pada program sebesar 1
cycle tanpa mempengaruhi register-register maupun flag.

BAB I
PENDAHULUAN

1.1. Latar Belakang
Negara Indonesia merupakan negara agraris yang terkenal akan hasil pertanian
yang termasuk didalamnya bidang perkebunan. Hasil dari perkebunan berupa
buah-buahan kemudian akan didistribusikan ke industri perkebunan. Didalam
industri perkebunan buah-buahan akan dipilih berdasarkan buah matang dan
belum matang. Oleh karena itu dibutuhkan alat yang secara otomatis dapat
memilih buah matang dan belum matang. Alat tersebut dapat direalisasikan
dengan sensor elektronik yang mampu membedakan warna kulit buah.
Dalam Tugas Akhir ini dibuat sebuah alat elektronika yang mampu
mendeteksi kematangan buah untuk keperluan industri perkebunan sehingga dapat
meningkatkan efesiensi kerja industri tersebut.

1.2. Identifikasi Masalah

¾ Bagaimana merancang sebuah alat elektronika yang mampu mendeteksi
kematangan buah?

1.3. Maksud dan Tujuan
Merancang dan merealisasikan aplikasi peralatan elektronika yang mampu
mendeteksi kematangan buah berdasarkan warnanya sehingga dengan
mengetahui warnanya diharapkan dapat diketahui buah itu matang atau
belum.

1.4. Pembatasan Masalah
1 Buah yang akan dijadikan sebagai objek percobaan adalah Buah Tomat
dan Buah Jeruk yang berubah warna pada saat matang.
2 Output hanya ditampilkan melalui LCD (Liquid Crystal Display).
3 Jumlah sensor yang dipakai sebanyak 2(dua) buah.
4 Jenis sensor yang dipakai adalah Photodioda.

1

2

5 Sensor tidak dapat mendeteksi kebusukan.

1.5. Sistematika Penulisan
Agar dalam penulisan laporan Tugas Akhir ini lebih terarah dan teratur serta
terstruktur maka akan dibagi dalam :
BAB I

PENDAHULUAN
Berisi latar belakang, maksud dan tujuan, pembatasan masalah,
identifikasi masalah dan sitematika penulisan.

BAB II

LANDASAN TEORI
Berisi teori-teori yang menunjang dalam pembuatan alat. Teori
yang dimaksud adalah Photodioda sebagai sensor warna, Analog to
Digital Converter untuk mengubah tegangan analog menjadi
digital, Mikrokontroler sebagai pengolah dari keseluruhan sistem,
Liquid Crystal Display sebagai Output.

BAB III

PERANCANGAN
Berisi perancangan dan implementasi, yang membahas tentang
perencanaan dan implementasi sistem yang dibangun, meliputi
pembuatan

rangkaian

sensor,

menjalankan

fungsi-fungsi

mikrokontroler dan perangkat lunak untuk pengontrol perangkat
keras.
BAB IV

DATA PENGAMATAN DAN ANALISA
Berisi hasil pengamatan dan analisa terhadap alat yang telah
dirancang. Pengamatan dan analisa untuk 100 kali percobaan pada
buah tomat dan jeruk. Pengamatan dan analisa untuk rangkaian
Analog to Digital Converter – Liquid Crystal Display.

BAB V

KESIMPULAN DAN SARAN
Berisi Kesimpulan dan Saran.

BAB V
KESIMPULAN DAN SARAN

Dari hasil pengamatan dan analisa dalam tugas akhir ini, dapat diambil
kesimpulan dan saran sebagai berikut:

5.1. Kesimpulan
1 Rangkaian yang dirancang dalam Tugas Akhir ini telah berhasil mendeteksi
kematangan buah dengan tingkat keberhasilan pada jeruk 78.33% dan pada
tomat 77.67%.
2 Sistem dapat mendeteksi kematangan buah jeruk dan tomat berdasarkan warna
kulit buah dengan asumsi tidak ada buah yang busuk.
3. Selain bekerja sebagai infra merah, sensor Photodioda dapat digunakan untuk
mendeteksi perbedaan warna berdasarkan tingkat penyerapan warna bahan.

5.2. Saran
1. Sensor photodioda dapat diganti menjadi sensor yang lebih baik untuk
mendapatkan peluang keberhasilan lebih baik.
2. Pada sensor photodioda perlu ditambahkan lensa cembung supaya dapat
meningkatkan akurasinya.
3. Untuk menjaga kestabilan sistem, diperlukan tambahan rangkaian buffer
amplifier pada sensor.

44

DAFTAR PUSTAKA
1. Craig Freudenrich, Ph.D., ”How Light works”, 2005.
http://science.howstuffworks.com/physical-science-channel.htm
2. Doebelin, Ernest O, 1983, Measurement Systems. Tokyo: McGraw-Hill
International BookCompany, 1983.
3. Histand Michael, “Introduction to Mechatronics and Measurement Systems”,
2003.
4. Kirkup, Les, Calculating and Expressing Uncertainty in Measurement.
Faculty of science, University of Technology Sidney, Australia (dari
internet),2002.
5. Krutz Ronald, “Interfacing Techniques in Digital design With Emphasis on
Mikroprocessors”, 1988.
6. Malik Ibnu, ST, ”Belajar Mikrokontroler ATMEL AT89S8252”, 2003.
7. Paulus Andi Nalwan, Panduan Praktis Teknik Antar Muka dan Pemrograman
Mikrokontroller AT89S51, 2003.
8. Putra Agfianto,”Belajar Mikrokontroler AT89C51/52/55(Teori dan Aplikasi)”,
2004.
9. Richard Syms dan John Cozens, Optical Guided Waves and Device, McGraw
Hill, London 1993.
10. Texas Instrument, “Data Sheet”, 2005.
http://www.ti.com/
11. Wahyunggoro, Oyas, Pengukuran Besaran Listrik. Yogyakarta: Diktat bahan
kuliahJurusan Teknik Elektro Universitas Gadjah Mada, 1998.