Pengembangan Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol
PENGEMBANGAN PROTOTIPE LAMPU LALU LINTAS
PEJALAN KAKI BERBASIS MIKROKONTROLER
MCS-51 YANG DIINISIASI DENGAN TOMBOL
IRENE PRICELLA SITUMORANG
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013
PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Pengembangan
Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang
Diinisiasi dengan Tombol adalah benar karya saya dengan arahan dari komisi
pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi
mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan
maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan
dicantumkan dalam Daftar Pustaka di bagian akhir disertasi ini.
Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut
Pertanian Bogor.
Bogor, Juli 2013
Irene Pricella Situmorang
NIM G64104038
ABSTRAK
IRENE PRICELLA SITUMORANG. Pengembangan Prototipe Lampu Lalu
Lintas Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang Diinisiasi dengan
Tombol. Dibimbing oleh KARLISA PRIANDANA.
Saat ini, di Indonesia, hak pejalan kaki untuk menyeberang jalan pada zebra
cross sering diabaikan. Padahal, UU No. 22 tahun 2009 tentang Lalu Lintas dan
Angkutan Jalan, Pasal 130 ayat 2 secara eksplisit menjelaskan bahwa pejalan kaki
yang menyeberang pada zebra cross berhak mendapat prioritas. Penelitian ini
mengembangkan dua prototipe lampu lalu lintas untuk pejalan kaki yang dapat
diinisiasi dengan tombol dengan menggunakan mikrokontroler keluarga MCS-51,
untuk diimplementasikan di zebra cross. Prototipe pertama menggunakan pushbutton, sedangkan prototipe kedua menggunakan keypad sebagai tombol untuk
menginisiasi lampu lalu lintas. Penekanan tombol akan memulai kondisi
menyeberang, yaitu kondisi pada saat lampu lalu lintas kendaraan menjadi merah
dan lampu lalu lintas penyeberang jalan menjadi hijau. Dalam hal ini, seven
segment akan menampilkan waktu hitung mundur yang dapat dipilih melalui
tombol. Penelitian ini menunjukkan bahwa penggunaan push-button lebih ramah
guna dan lebih mudah dipelihara. Sementara itu, penggunaan keypad lebih
fleksibel dalam hal pemilihan waktu menyeberang.
Kata kunci: keypad, lampu lalu lintas, mikrokontroler MCS-51, push-button,
seven segment
ABSTRACT
IRENE PRICELLA SITUMORANG. Development of Button-Initiated Pedestrian
Traffic Lights Using MCS-51 Microcontroller. Supervised by KARLISA
PRIANDANA.
Nowadays, in Indonesia, pedestrian’s right to cross through zebra cross is
often abandoned. On the other hand, Law No. 22 of 2009 concerning Traffic and
Road Transportation, article 130 paragraph 2 explicitly mentioned that pedestrian
who cross through zebra cross shall be prioritized. This study develops two
button-initiated pedestrian traffic light prototypes using MCS-51 microcontroler,
to be implemented in zebra cross. The first prototype utilizes several push-buttons,
whereas the second prototype uses keypad as the button to initiate the traffic light.
Pressure on the button will trigger the crossing condition, where the vehicle’s
traffic light becomes red and the pedestrian’s traffic light becomes green. In this
condition, seven segment will show the count down time that can be selected
through the button. This study shows that the push-button prototype is more user
friendly and easily maintained. Meanwhile, the keypad prototype is more flexible
in terms of selecting the crossing time.
Keywords: keypad, MCS-51 microcontroller, push-button, seven segment, traffic
light
PENGEMBANGAN PROTOTIPE LAMPU LALU LINTAS
PEJALAN KAKI BERBASIS MIKROKONTROLER
MCS-51 YANG DIINISIASI DENGAN TOMBOL
IRENE PRICELLA SITUMORANG
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada
Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013
Judul Skripsi : Pengembangan Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis
Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol
: Irene Pricella Situmorang
Nama
N1M
: G64104038
Disetujui oleh
Karlisa Priandana, ST M Eng
Pembimbing L
o MSiMKom
Tanggal Lulus: セイ
2 AUG
2013
Judul Skripsi : Pengembangan Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis
Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol
Nama
: Irene Pricella Situmorang
NIM
: G64104038
Disetujui oleh
Karlisa Priandana, ST M Eng
Pembimbing I
Diketahui oleh
Dr Ir Agus Buono, MSi M Kom
Ketua Departemen
Tanggal Lulus:
PRAKATA
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala
karunia-Nya sehingga tugas akhir ini berhasil diselesaikan. Tema yang dipilih
dalam tugas akhir yang dilaksanakan sejak bulan September 2012 ini ialah
mikrokontroler, dengan judul Pengembangan Prototipe Lampu Lalu Lintas
Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol.
Penulis sadar bahwa tugas akhir ini tidak akan terselesaikan tanpa bantuan
dari berbagai pihak. Pada kesempatan ini, penulis ingin mengucapkan terima
kasih kepada:
1 Orang tua tercinta Bapak Mangapul Adil Situmorang, SSos dan almarhum Ibu
Ernata Siregar, kakak penulis Santa Elizabeth Situmorang, SE, dan Christina
Natalia Situmorang, SE, abang penulis Ellyas Tarnama Uli Situmorang, ST,
serta adik penulis Gunawan Situmorang atas segala doa dan dukungan yang
tiada hentinya.
2 Ibu Karlisa Priandana ST MEng selaku dosen pembimbing tugas akhir.
Terima kasih atas kesabaran dan dukungan dalam penyelesaian tugas akhir ini.
3 Teman-teman Ilkomerz Angkatan 5 atas kebersamaannya.
4 Gunawan Purba, SH yang selalu memberikan dukungan dan semangat kepada
penulis.
Penulis menyadari bahwa masih terdapat kekurangan dalam penulisan tugas
akhir ini. Semoga tugas akhir ini bermanfaat.
Bogor, Juli 2013
Irene Pricella Situmorang
DAFTAR ISI
DAFTAR TABEL
vi
DAFTAR GAMBAR
vi
DAFTAR LAMPIRAN
vi
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
2
Tujuan Penelitian
2
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
METODE
3
Alat
4
Penentuan Fungsi Prototipe
8
Perancangan dan Modifikasi Algoritme
8
Implementasi Algoritme pada Prototipe
8
Evaluasi
8
HASIL DAN PEMBAHASAN
9
Rancangan Fungsi Prototipe
9
Rancangan Algoritme
9
SIMPULAN DAN SARAN
14
Simpulan
14
Saran
15
DAFTAR PUSTAKA
15
LAMPIRAN
15
RIWAYAT HIDUP
27
DAFTAR TABEL
1
2
3
4
Tabel Kebenaran 74LS138
Alamat vektor interupsi
Evaluasi prototipe
Perbandingan kedua prototipe yang dikembangkan
6
12
14
14
DAFTAR GAMBAR
1
2
3
4
5
6
7
8
9
10
11
12
Diagram alur metode penelitian
Mikrokontroler 89x52 merupakan keluarga MCS-51
Konfigurasi pin MCS-51
Seven segment
Rangkaian decoder 74LS138 dengan mikrokontroler dan 7-Segment
Skema rangkaian antarmuka push-button
In-System Programming (ISP)
Dua set lampu lalu lintas
Rangkaian dasar keypad 4x4
Algoritme dengan push-button
Algoritme dengan keypad
Algoritme interupsi Timer 0
3
4
5
5
6
6
7
7
7
10
10
13
DAFTAR LAMPIRAN
1
2
3
4
5
6
Rangkaian praktikum yang digunakan
Skematik antarmuka prototipe dengan push button
Skematik antarmuka prototipe dengan keypad
Diagram alir subrutin interupsi dan subrutin seven segment
Listing program prototipe dengan push-button
Listing program prototipe dengan keypad
16
16
17
18
18
23
PENDAHULUAN
Latar Belakang
Saat ini, kecelakaan lalu lintas yang menyebabkan pejalan kaki menjadi
korban meningkat di Indonesia. Pengemudi kendaraan kurang memperdulikan hak
pejalan kaki dalam penggunaan lalu lintas dan jalan raya. Walaupun, pejalan kaki
memiliki hak yang sama dengan pengemudi kendaraan dalam penggunaan lalu
lintas dan jalan raya.
Kecelakaan-kecelakaan tersebut menunjukkan bahwa pejalan kaki kurang
mendapatkan perlindungan yang memadai dalam penggunaan lalu lintas dan jalan
raya. Meskipun fasilitas-fasilitas pendukung bagi pejalan kaki telah disediakan
oleh pemerintah. Selain itu, fasilitas pendukung bagi pejalan kaki tersebut belum
berfungsi sebagaimana mestinya.
Zebra cross adalah salah satu fasilitas pendukung bagi pejalan kaki yang
dinyatakan dengan marka jalan berbentuk garis membujur berwarna putih dan
hitam, berfungsi untuk memberikan keamanan bagi pejalan kaki pada saat
menyeberang jalan. Undang-Undang Nomor 22 Tahun 2009 Tentang Lalu Lintas
dan Angkutan Jalan Pasal 130 ayat 2 menyatakan bahwa “Pejalan kaki yang
sedang berjalan pada zebra cross berhak mendapatkan prioritas untuk
menyeberang jalan”. Namun pada kenyataannya, banyak pengemudi kendaraan
lebih mengutamakan kepentingannya dari pada pejalan kaki. Pengemudi
kendaraan melaju kendaraannya lebih cepat pada saat melihat pejalan kaki yang
akan atau sedang menyeberang jalan. Oleh karena, itu diperlukan suatu sistem lalu
lintas tambahan untuk membantu memaksimalkan fungsi zebra cross tersebut.
Adapun penelitian yang pernah dilakukan adalah Traffic Signal Control
Modification Based on Self-Organizing in Indonesia (Jatmiko et al. 2009), yaitu
mengenai kontrol lampu lalu lintas pada persimpangan jalan berdasarkan
perubahan jumlah kendaraan pada masing-masing bagian simpang. Penelitian
dalam bentuk simulasi ini menggunakan pendekatan pada suara dengan
menghitung nilai frekuensi suara yang ditimbulkan. Penelitian tersebut diharapkan
dapat mengurangi kemacetan di Indonesia khususnya pada bagian persimpangan
jalan. Terkait penelitian sebelumnya, penelitian ini mengembangkan suatu sistem
lalu lintas berbasis mikrokontroler yang juga masih dalam bentuk simulasi atau
prototipe.
Implementasi lampu lalu lintas pejalan kaki sudah diterapkan dibeberapa
negara, salah satunya Indonesia. Beberapa kota di Indonesia yang telah
mengimplementasi lampu lalu lintas tersebut adalah Jakarta, Bogor, dan
Semarang. Tetapi implementasi lampu lalu lintas tersebut belum mendapat
sambutan yang baik dari masyarakat. Selain itu pemerintah pun kurang
memberikan sosialisasi cara penggunaannya kepada masyarakat.
Mikrokontroler yang digunakan adalah mikrokontroler keluarga MCS51yang banyak dijumpai di pasaran. Kelebihan mikrokontroler ini yaitu memiliki
fitur yang praktis dan ukuran memori yang cukup besar (Suyatno et al. 2007).
2
Perumusan Masalah
Masalah yang akan diangkat dalam penelitian ini adalah bagaimana cara
merancang atau mengembangkan suatu sistem lalu lintas untuk pejalan kaki.
Sistem lalu lintas tersebut dirancang dalam bentuk prototipe berbasis
mikrokontroler. Prototipe lampu lalu lintas bagi pejalan kaki yang dikembangkan
tersebut akan diinisiasi dengan tombol. Tombol yang digunakan adalah pushbutton dan keypad sehingga sistem akan menghasilkan 2 prototipe.
Mikrokontroler yang digunakan adalah mikrokontroler 89x52 yang telah terangkai
pada rangkaian praktikum. Mikrokontroler 89x52 merupakan mikrokontroler
keluarga MCS-51.
Tujuan Penelitian
Penelitian ini bertujuan membuat prototipe sebuah aplikasi sederhana yang
berbasis mikrokontroler MCS-51 berupa lampu lalu lintas pejalan kaki yang
diinisiasi dengan tombol.
Manfaat Penelitian
Penelitian ini diharapkan dapat menjadi pionir dalam pembuatan alat lalu
lintas pejalan kaki berbasis mikrokontroler untuk diimplementasikan pada zebra
cross. Implementasi lampu lalu lintas ini diharapkan dapat membantu
memaksimalkan fungsi zebra cross untuk memberi keamanan bagi pejalan kaki
dalam menyeberang jalan.
Ruang Lingkup Penelitian
Ruang lingkup pada penelitian ini adalah:
1 Mikrokontroler yang digunakan adalah mikrokontroler 89x52, merupakan
salah satu keluarga MCS-51, yang telah terangkai pada rangkaian praktikum.
2 Tombol yang digunakan adalah 6 push-button dan keypad sebagai inisiasi
penyeberangan jalan yang dikembangkan pada 2 prototipe. Inisiasi tombol
kembali dapat dilakukan setelah jeda waktu selama 5 menit.
3 Kondisi default adalah kondisi dimana lampu hijau pada salah satu set lampu
lalu lintas (diasumsikan untuk kendaraan) dan lampu merah pada set lampu
lalu lintas lainnya (diasumsikan untuk pejalan kaki) menyala.
4 Seven segment menampilkan perhitungan waktu mundur dari x detik ke 0.
Rentang nilai x pada masing-masing push-button adalah 10-60 detik. Dan
rentang nilai x dengan menggunakan keypad adalah 0-99 detik.
5 Lampu kuning digunakan sebagai lampu transisi yang akan menyala pada saat
pergantian state dari lampu merah menyala menjadi lampu hijau menyala dan
sebaliknya.
6 Implementasi prototipe diterapkan pada zebra cross yang berada pada jalan
lurus dan bukan persimpangan.
3
METODE
Metode yang digunakan adalah metode Trial and Error dengan alur yang
dapat dilihat pada Gambar 1. Prototipe yang dikembangkan menggunakan
perangkat keras berupa sebuah rangkaian praktikum (Lampiran 1) yang telah
terangkai dengan mikrokontroler jenis 89x52, salah satu mikrokontroler keluarga
MCS-51.
Selain mikrokontroler, komponen lain yang terangkai pada rangkaian
tersebut dan digunakan untuk mengembangkan prototipe adalah seven segment,
light-emitting diode (LED) lampu lalu lintas, push-button, dan keypad. Setiap
fungsi prototipe akan disesuaikan dengan kebutuhan pejalan kaki dalam
menyeberang jalan.
Fungsi-fungsi tersebut dirancang dengan menggunakan algoritme dan
kemudian diimplementasikan pada prototipe. Implementasi algoritme dalam
bentuk program menggunakan perangkat lunak Emulator MCU 8051 IDE dan
compiler MIDE51 yang telah diinstal pada komputer. Kemudian program tersebut
akan dimasukkan pada mikrokontroler dengan menggunakan In-System
Programming (ISP) sebagai penghubung antara komputer dan mikrokontroler.
Prototipe dievaluasi kembali untuk disesuaikan dengan fungsinya. Jika belum
sesuai dengan fungsinya, algoritme akan dimodifikasi.
Hasil modifikasi algoritme tersebut diimplementasikan kembali dan
dievaluasi apakah syaratnya telah terpenuhi. Jika seluruh syarat telah terpenuhi,
penelitian telah berhasil dan prototipe telah selesai dikembangkan.
Gambar 1 Diagram alur metode penelitian
4
Alat
Perangkat Keras
Mikrokontroler adalah suatu komponen elektronik, miniatur dari suatu
sistem komputer. Mikrokontroler mempunyai kemampuan untuk diprogram sesuai
keinginan seperti halnya komputer. Namun, mikrokontroler hanya dapat di
gunakan untuk suatu aplikasi tertentu saja karena keterbatasan dalam menyimpan
program. Mikrokontroler terdiri atas sebuah inti processor, memori (sejumlah
kecil RAM, memori program, atau keduanya) dan perlengkapan input-output.
Penelitian ini menggunakan mikrokontroler 89x52 yang merupakan salah
satu mikrokontroler keluarga MCS-51 seperti terlihat pada Gambar 2.
Mikrokontroler 89x52 memiliki respons yang lebih cepat daripada 89x51.
Gambar 2 Mikrokontroler 89x52 merupakan
keluarga MCS-51
Beberapa fitur mikrokontroler ini adalah (Hamirani 2012):
Sebuah CPU (Central Prossesing Unit) 8 bit yang termasuk keluarga osilator
internal dan rangkaian timer.
Flash memori 8 Kb
RAM 128 bytes
Empat buah programmable port I/O, masing-masing terdiri dari atas 8 jalur
I/O
Lima buah jalur interupsi (2 buah interupsi eksternal dan 3 buah interupsi
internal)
Sebuah port serial dengan kontrol serial full duplex UART.
Kecepatan pelaksanaan intruksi persiklus untuk mikrokontroler ini adalah 1
mikrodetik pada frekuensi clock 12 MHz. Mikrokontroler ini memiliki timer
internal dengan frekuensi 12 MHz (Suyatno et al. 2007). Susunan pin-pin
mikrokontroler 89x52 dapat dilihat pada Gambar 3 dengan konfigurasi sebagai
berikut.
Pin 1 sampai 8 (Port 1) merupakan port paralel 8 bit 2 arah (input-output)
yang digunakan untuk berbagai keperluan (general purpose).
Pin 9 (Reset) adalah interupsi reset (aktif high) perpindahan kondisi rendah ke
tinggi akan mereset 89x52. Pin ini dihubungkan dengan rangkaian power on
reset.
Pin 10 sampai 17 (port 3) adalah port paralel 8 bit 2 arah (input-output) yang
memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmisi Data),
RXD (Receiver Data), INT0 (Interrupt 0), INT1 (Interrupt 1), T0 (timer 0),
T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti tidak
dipakai, pin-pin ini dapat digunakan sebagai port paralel 8 bit serba guna.
5
Pin 18 dan 19 (XTAL1 dan XTAL2) adalah pin input osilator kristal, yang
merupakan input clock bagi rangkaian osilator internal.
Pin 20 (ground) dihubungkan ke VSS atau Ground.
Pin 21 sampai 28 (port 2) adalah port paralel 8 bit 2 arah (input-output). Port
2 ini mengirim byte alamat apabila dilakukan pengaksesan memori ekternal.
Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit open drain 2 arah. Bila
digunakan untuk mengakses memori luar, port ini akan memultipleks alamat
memori dengan data.
Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt) sebagai power supply untuk
mikrokontroler.
Gambar 3 Konfigurasi pin MCS-51
Komponen pendukung lainnya yang digunakan pada penelitian ini ialah
dapat seven segment (Gambar 4) yang digunakan untuk menampilkan waktu
hitung mundur dalam satuan detik.
Gambar 4 Seven segment
Seven segment merupakan sebuah display yang terbentuk dari 7 buah segmen
LED (ditambah 1 segmen untuk menampilkan titik) dan terhubung pada port 0.
Tujuh segmen tersebut dinamakan segmen A, B, C, D, E, F, dan G, serta DP, satu
buah segmen tambahan untuk menampilkan titik. Pengaturan tampilan seven
segment dilakukan dengan menyalakan/ memadamkan segmen led yang sesuai.
Seven segment yang menyala dikontrol oleh decoder/ demultiplexer 74LS138
seperti yang ditunjukkan pada Gambar 5.
6
Gambar 5 Rangkaian decoder 74LS138 dengan
mikrokontroler dan 7-Segment
Pada Tabel 1, tampak bahwa seven segment yang menyala tergantung pada
output dari decoder 74LS138. Output ini dikontrol oleh ketiga input decoder
74LS138 yang terhubung ke P3.5, P3.6, dan P3.7. Oleh karena itu, dari 8 buah
display seven segment yang ada pada kit praktikum, selalu hanya ada satu display
yang menyala. Display seven segment dihidupkan secara bergantian dengan waktu
tunda tertentu yang tidak kasat mata akan membuat display tampak menyala
secara bersamaan.
Tabel 1 Tabel Kebenaran 74LS138
SELEKTOR
C
B
A
P3.7 P3.6 P3.5
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
G1
VCC
1
1
1
1
1
1
1
1
ENABLE
G2A G2B
EN
EN
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
OUTPUT
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
Gambar 6 merupakan push-button yang digunakan sebagai tombol inisiasi
terhadap lampu lalu lintas. Selain push-button, keypad juga dapat digunakan
sebagai tombol untuk inisiasi.
7
Keypad terdiri dari sejumlah saklar yang terhubung sebagai baris dan kolom
seperti Gambar 7. Untuk mengetahui tombol mana yang ditekan, mikrokontroler
akan melakukan teknik scanning dengan cara memberi logika low “0” ke salah
satu port yang terhubung ke kolom keypad (C1–C4). Selanjutnya, mikrokontroler
memeriksa seluruh port yang terhubung pada baris (R1–R4) untuk menguji jika
ada tombol yang ditekan pada baris dan kolom tersebut. Jika tidak ada tombol
yang ditekan, maka mikrokontroler akan mendapati bahwa seluruh port yang
terhubung pada baris (R1–R4) memiliki logika high “1”. Kedua tombol akan
terhubung pada port yang sama, yaitu port 2. Oleh karena itu, dikembangkanlah 2
prototipe.
Gambar 7 Rangkaian dasar keypad 4x4
Dua set lampu lalu lintas yang digunakan dapat dilihat pada Gambar 8. Satu
set lampu lalu lintas digunakan untuk pejalan kaki dan satu set lainnya digunakan
untuk pengemudi kendaraan. Led yang digunakan sebagai lampu lalu lintas
terhubung pada port 1. Komponen in system programming pada Gambar 9
digunakan untuk memprogram mikrokontroler 89x52. Skematik prototipe dengan
push button dan keypad yang telah dihubungkan dengan seluruh komponen yang
digunakan dapat dilihat pada Lampiran 2 dan Lampiran 3.
Gambar 8 Dua set lampu lalu
lintas
Gambar 9 In-System Programming
(ISP)
Perangkat Lunak
Perangkat lunak yang akan digunakan pada penelitian ini adalah Emulator
MCU 8051 IDE, compiler MIDE51, dan driver programmer ProgISP versi 1.72.
8
Penentuan Fungsi Prototipe
Pada tahap ini prototipe akan dirancang sesuai dengan kebutuhan pejalan
kaki dalam menyeberang jalan.
Perancangan dan Modifikasi Algoritme
Algoritme yang diadopsi dalam penelitian ini adalah algoritme jam digital.
Timer yang digunakan pada algoritme jam digital adalah timer internal. Algoritme
lainnya akan dikembangkan sesuai dengan fungsi yang diinginkan.
Pengembangan algoritme dilakukan dengan menggunakan bahasa Assembly
dengan bantuan perangkat lunak Emulator MCU 8051 IDE.
Implementasi Algoritme pada Prototipe
Algoritme yang telah dikembangkan akan diimplementasikan pada
perangkat prototipe. Compiler yang digunakan adalah MIDE51 sedangkan
programmer mikrokontroler yang digunakan adalah ProgISP versi 1.72.
Evaluasi
Pada tahap ini, fungsionalitas prototipe akan diiuji dengan beberapa
persyaratan, yaitu:
1 Kondisi default dapat ditampilkan.
2 Kondisi menyeberang dapat diinisiasi dengan tombol. Tombol yang
digunakan terdiri atas push-button dan keypad.
a Waktu kondisi menyeberang dengan menggunakan push-button diaktifkan
dengan menekan push-button sebanyak 2 kali.
b Waktu kondisi menyeberang dengan menggunakan tombol keypad
diaktifkan dengan menekan keypad ENT setelah terlebih dahulu menekan
keypad angka secara bebas. Pada keypad, waktu hitung mundur dapat
dihapus dan kemudian diganti dengan menggunakan keypad COR atau
MEN.
3 Waktu hitung mundur dapat ditampilkan pada seven segment.
4 Setelah waktu habis, lampu lalu lintas kembali ke kondisi default.
5 Tombol tidak dapat ditekan kembali sebelum jeda waktu 5 menit.
6 Prototipe akan memberikan waktu hitung mundur selama x detik. Nilai x yang
tersimpan pada masing-masing push-button adalah 10, 20, 30, 40, 50, dan 60
detik, sedangkan nilai x yang dapat dihasilkan dengan keypad adalah 0-99
detik.
7 Transisi lampu merah menjadi hijau dan sebaliknya menggunakan lampu
kuning.
Apabila persyaratan fungsionalitas di atas belum seluruhnya terpenuhi maka
algoritme yang dirancang perlu ditelusuri kembali. Penelitian dianggap selesai
setelah ke-7 fungsi terpenuhi.
9
HASIL DAN PEMBAHASAN
Rancangan Fungsi Prototipe
Fungsi prototipe yang dikembangkan adalah:
Kondisi default: lampu hijau pada salah satu set lampu lalu lintas (yang
diasumsikan untuk kendaraan) dan lampu merah pada set lampu lalu lintas
lainnya (yang diasumsikan untuk pejalan kaki) menyala.
2 Kondisi lampu lalu lintas dapat diubah menjadi “kondisi menyeberang”, yaitu
kebalikan dari kondisi default-nya melalui inisiasi tombol. Setelah tombol
ditekan, seven segment akan menampilkan perhitungan mundur dalam detik.
3 Waktu “kondisi menyeberang” yang akan ditampilkan pada seven segment
ditentukan melalui push-button, dengan rentang nilai antara 10-60 detik, dan
keypad, dengan rentang nilai 0-99 detik.
4 Transisi lampu merah menjadi hijau dan sebaliknya menggunakan lampu
kuning.
5 Tombol dapat ditekan kembali setelah jeda waktu 5 menit.
1
Rancangan Algoritme
Algoritme dikembangkan berdasarkan fungsi prototipe yang telah
ditentukan, seperti yang dapat dilihat pada Gambar 10 (dengan push-button) dan
Gambar 11 (dengan keypad). Prototipe dimulai dengan kondisi default, yaitu
lampu hijau pada lampu A, satu set lampu lalu lintas untuk pengemudi kendaraan,
dan lampu merah pada lampu B, satu set lampu lalu lintas untuk pejalan kaki,
menyala serta seven segment masih dalam keadaan non-aktif.
Tombol yang digunakan untuk inisiasi terdiri atas push-button dan keypad.
Pada Gambar 10, dapat dilihat bahwa apabila push-button ditekan sekali, seven
segment aktif untuk menampilkan waktu penyeberangan x detik. Enam buah pushbutton yang digunakan mewakili masing-masing nilai x, yaitu 10, 20, 30, 40, 50,
dan 60. Penekanan push-button kedua kalinya akan membuat kondisi default
berubah menjadi kondisi menyeberang, yaitu lampu hijau pada lampu A berubah
menjadi merah, lampu merah pada lampu B berubah menjadi hijau, serta seven
segment akan mulai menampilkan hitungan mundur dari x detik ke 0.
Selain push-button, keypad dapat digunakan untuk menentukan waktu
menyeberang. Prototipe yang kedua (Gambar 10), penekanan angka keypad akan
menentukan waktu menyeberang. Nilai x yang dihasilkan dengan keypad
memiliki rentang nilai yang lebih luas, yaitu antara 0-99 detik. Seven segment
akan mulai menampilkan hitung mundur setelah keypad ENT ditekan.
Pada kondisi ini, pejalan kaki menyeberang jalan. Transisi lampu merah
menjadi hijau dan sebaliknya menggunakan lampu kuning. Setelah waktu
penyeberangan mencapai 0, kondisi menyeberang berubah kembali menjadi
kondisi default dan inisiasi tombol untuk kedua kalinya dapat digunakan setelah
jeda waktu 5 menit.
10
Keterangan gambar:
A= Pengemudi kendaraan
B= Pejalan kaki
x= 10, 20, 30, 40, 50, 60
Gambar 10 Algoritme dengan
push-button
Keterangan gambar:
A= Pengemudi kendaraan
B= Pejalan kaki
x= 00-99
Gambar 11 Algoritme dengan
keypad
Pilihan waktu menyeberang yang diterapkan pada prototipe cukup bervarisi.
Waktu menyeberang dipengaruhi oleh lebar jalan dan kecepatan pejalan kaki.
Ukuran umum lebar jalan adalah 3.25 sampai 3.75 m (Bang 1997). Sedangkan
rata-rata kecepatan pejalan kaki adalah 3.5 ft/s atau sama dengan 1.1 m/s
(LaPlante and Kaeser 2007). Oleh karena itu, standar waktu menyeberang pejalan
kaki dapat ditentukan dengan menghitung hasil bagi lebar jalan dengan kecepatan
pejalan kaki. Rata-rata waktu menyeberang yang dapat dijadikan acuan untuk
menyeberang adalah 20-30 detik (LaPlante and Kaeser 2007).
11
Perhitungan mundur (detik) yang ditampilkan pada seven segment
menggunakan algoritme jam digital yang menggunakan sarana timer yang
ditimbulkan oleh interupsi, ditunjukkan pada Gambar 12. Mikrokontroler jenis
89x52 mempunyai 3 perangkat timer/ counter, yaitu Timer 0, Timer 1, dan Timer
2. Perangkat timer/ counter tersebut dapat diakses dengan menggunakan register
khusus yang tersimpan dalam SFR (Special Function Register). Dalam mengatur
kerja timer/ counter tersebut digunakan 2 register tambahan yang dipakai bersama
oleh Timer 0 dan Timer 1. Register tambahan tersebut adalah register TCON
(Timer Control Register) dan register TMOD (Timer Mode Register).
Pencacah biner timer/ counter 89x52 merupakan pencacah biner 16 bit naik
yang mencacah dari 0000h sampai FFFFh. Saat kondisi pencacah berubah dari
FFFFh kembali ke 0000h akan timbul sinyal limpahan (overflow). TL0 (Timer 0
low byte), TH0 (Timer 0 high byte), TL1 (Timer 1 low byte), dan TH1 (Timer 1
high byte) merupakan SFR yang dipakai untuk membentuk pencacah biner Timer
0 dan Timer 1 dengan indikator limpahan pada TF0 dan TF1. Timer 2
menggunakan register TL2, TH2, RCAP2L dan RCAP2H serta indikator
limpahan TF2.
Jumlah ruang untuk pencacahan ditentukan oleh mode kerja timer sebagai
berikut:
1 Mode 0 mengaktifkan timer sebagai pencacah 13 bit dan diaktifkan dengan
mengeset bit M1 = 0 dan bit M0 = 0 pada SFR TMOD. Pada mode ini, TLx
hanya akan menghitung hingga 5 bit, sedangkan THx akan menghitung hingga
8 bit. Timer pencacah 13 bit akan overflow setelah 213 atau 8192 hitungan.
2 Mode 1 mengaktifkan timer sebagai pencacah 16 bit dan diaktifkan dengan
mengeset bit M1 = 0 dan bit M0 = 1 pada SFR TMOD. Pada mode ini, TLx
dan Thx difungsikan secara penuh (masing-maisng 8 bit). Timer pencacah 16
bit akan overflow setelah 216 atau 65536 hitungan.
3 Mode 2 mengaktifkan timer sebagai pencacah 8 bit dengan autoreload. Mode
ini diaktifkan dengan mengeset bit M1 = 1 dan bit M0 = 0 pada SFR TMOD.
TLx digunakan sebagai register pencacah, sementara THx diisi dengan data
yang akan di-“reload”-kan jika TLx telah overflow. Jumlah hitungan
pencacahan yang dilakukan adalah 28 atau 256 dikurangi nilai yang tersimpan
pada THx.
4 Mode 3 hanya berlaku pada timer 0 yang akan memfungsikan TL0 dan TH0
sebagai register 8 bit yang memiliki fungsi berbeda satu sama lain. TL0
dikendalikan oleh bit-bit TMOD dan TCON untuk timer 0, sedangkan TH0
diatur oleh bit-bit TCON untuk timer 1. Mode ini diaktifkan dengan mengeset
bit M1 = 1 dan bit M0 = 1 pada SFR TMOD.
Prototipe ini menggunakan Timer 0 yang akan diakses melalui register TL0
dan TH0. Indikator limpahan memakai TF0 untuk membangkitkan clock jam
digital yang akan ditampilkan pada seven segmen, bagian detik puluhan (display
6), dan detik satuan (display 7). Mode timer yang digunakan adalah mode 1 (timer
16 bit). Clock yang digunakan untuk timer adalah clock internal mikrokontroler,
yaitu 12 MHz sehingga frekuensi pencacah adalah 12 MHz/12 = 1 MHz. Pembagi
12 ini diperlukan karena 1 machine cycle mikrokontroler MCS-51 setara dengan
12 clock cycle. Hal ini berarti bahwa satu hitungan timer setara dengan 1
mikrodetik.
12
Timer akan overflow setiap 65536 hitungan. Clock internal mikrokontroler
adalah 12 MHz, maka satu hitungan setara dengan 1 mikrodetik. Dengan kata lain,
timer akan overflow setiap 65536 mikrodetik. Hitungan timer yang akan
digunakan setiap kali overflow adalah 50000 mikrodetik atau 0.05 detik dan 20
kali overflow akan setara dengan 1 detik. Angka 50000 dipilih agar hitungan
menjadi bulat dan mudah dikonversi menjadi satuan detik. Untuk membangkitkan
interupsi timer setiap 50000 mikrodetik, maka data awal yang harus diisikan pada
register timer adalah sebagai berikut:
65536 - 50000 = 15536 (desimal) atau 3CB0h
Nilai 3CB0h akan diberikan sebagai nilai awal timer dengan aturan data 3Ch
diisikan sebagai nilai awal register TH0 dan B0h diisikan sebagai nilai awal
register TL0. Dengan demikian, interupsi TF0 akan segera dibangkitkan setiap
50000 mikrodetik atau 0,05 detik.
Berdasarkan perhitungan di atas, penggunaan mode 1 lebih mudah
dibanding mode lainnya. Misalnya, perhitungan dengan menggunakan mode 3.
Mode 3 sebagai register 8 bit memiliki nilai overflow setiap 28 atau 255
mikrodetik. Untuk menghasilkan 1 detik, maka timer dengan mode 3 akan
overflow sebanyak 1 detik/ 255 mikrodetik. Nilai dari hasil bagi tersebut tidak
bulat sehingga untuk mengkonversikannya pada bilangan hexadesimal cukup sulit.
Oleh karena itu, dipilihlah angka 250 sebagai nilai untuk overflow. Untuk
membangkitkan interupsi timer setiap 250 mikrodetik, data awal yang harus
diisikan pada register timer adalah sebagai berikut:
255-250 = 5 (desimal) atau 5h
Nilai 5h akan diberikan sebagai nilai awal timer pada register TL0. Timer dengan
nilai overflow 250 mikrodetik akan menghasilkan 1 detik setelah 4000 kali
overflow. Satu detik diperoleh setelah 4000 kali akan membutuhkan daya yang
besar dibandingkan dengan overflow setelah 20 kali. Oleh karena itu, penggunaan
timer 0 dengan mode 1 lebih menguntungkan untuk perhitungan interupsi pada
prototipe.
Mikrokontroler keluarga MCS51 menyediakan fasilitas untuk 5 jenis
sumber interupsi yaitu 2 sumber interupsi eksternal (melalui pin INT0 dan INT1
pada mikrokontroler) dan 3 sumber interupsi internal (Timer 0, Timer 1, dan Port
Serial). Agar interupsi dapat dilayani maka instruksi Assembly interrupt routine
harus ditempatkan pada alamat vektor tertentu seperti pada Tabel 2, sesuai dengan
sumber interupsi yang akan digunakan. Prototipe ini menggunakan interupsi
internal Timer 0 (alamat 000Bh).
Tabel 2 Alamat vektor interupsi
Source
Vector Address
IE0
TF0
IE1
TF1
RI + TI
0003h
000Bh
0013h
001Bh
0023h
13
Gambar 12 Algoritme interupsi Timer 0
Implementasi Algoritme
Algoritme yang telah dirancang diimplementasikan dalam bahasa Assembly
8051. Diagram alir untuk subrutin interupsi dan seven segment dapat dilihat pada
Lampiran 4. Listing program Assembly untuk prototipe dengan push-button dapat
dilihat pada Lampiran 5. Listing program Assembly untuk prototipe dengan
keypad dapat dilihat pada Lampiran 6.
Evaluasi
Evaluasi kedua prototipe ditunjukkan pada Tabel 3. Prototipe yang
dikembangkan berhasil memenuhi seluruh persyaratan/ fungsi yang diinginkan.
Namun, prototipe pertama masih memiliki kekurangan, yaitu pemilihan waktu
menyeberang belum fleksibel. Misalnya waktu yang diinginkan adalah 20, tetapi
tombol yang di tekan adalah tombol 30 (salah menekan push-button), maka untuk
menampilkan angka 20, tombol 40, 50, 60, dan 10 harus ditekan terlebih dahulu.
Perbandingan kedua prototipe yang telah berhasil dikembangkan dapat
dilhat pada Tabel 4. Prototipe dengan push-button kurang fleksibel dalam
penentuan waktu menyeberang, hanya 10, 20, 30, 40, 50, dan 60 detik. Sedangkan
prototipe dengan keypad dapat dipilih pada rentang nilai 0-99. Tetapi prototipe
dengan push-button lebih mudah dalam penggunaannya dibandingkan dengan
prototipe dengan keypad. Dalam implementasi, jika terjadi kerusakan pada pushbutton maka cukup dengan mengganti push-button yang rusak saja. Sedangkan
keypad, apabila 1 keypad mengalami kerusakan maka keseluruhan keypad harus
diganti karena keypad bersifat paralel. Koreksi kesalahan dalam pemilihan waktu
14
menyeberang dengan push-button lebih sulit dilakukan daripada prototipe dengan
keypad karena pada keypad ada tombol yang digunakan untuk menghapus.
Tabel 3 Evaluasi prototipe
No
Fungsionalitas
Hasil
1
2
Kondisi default dapat ditampilkan
Kondisi menyeberang dapat diinisiasi dengan tombol yang
terdiri atas push button dan keypad
Waktu hitung mundur dapat ditampilkan pada seven
segment
Setelah waktu habis, lampu lalu lintas kembali ke kondisi
default
Tombol tidak dapat ditekan kembali sebelum jeda waktu 5
menit
Prototipe akan memberikan waktu hitung mundur selama x
detik. Nilai x yang tersimpan pada masing-masing push
button adalah 10, 20, 30, 40, 50, dan 60 detik. Nilai x yang
dapat dihasilkan dengan keypad adalah 0-99 detik
Transisi lampu merah menjadi hijau dan sebaliknya
menggunakan lampu kuning
√
3
4
5
6
7
√
√
√
√
√
√
Tabel 4 Perbandingan kedua prototipe yang dikembangkan
No
1
2
3
4
Perbandingan
Fleksibilitas penentuan waktu
menyeberang
Kemudahan penggunaan
Pemeliharaan
Koreksi kesalahan penekanan
Prototipe dengan
push-button
Prototipe
dengan keypad
Kurang fleksibel
Lebih fleksibel
Lebih mudah
Lebih mudah
sulit
Lebih kompleks
Lebih kompleks
mudah
SIMPULAN DAN SARAN
Simpulan
Prototipe lampu lalu lintas bagi pejalan kaki berbasis mikrokontroler yang
diinisiasi dengan tombol telah berhasil dikembangkan pada 2 prototipe. Kedua
prototipe yang telah berhasil dibuat dengan menggunakan push-button dan
menggunakan keypad. Kedua prototipe telah memenuhi ke-7 fungsi yang
diinginkan. Prototipe dengan push-button lebih mudah dalam penggunaan dan
pemeliharaannya. Sedangkan prototipe dengan keypad memiliki fleksibilitas
dalam penentuan waktu menyeberang dan koreksi kesalahan penekanan lebih
mudah.
15
Saran
Prototipe dengan push-button masih memiliki kekurangan dalam hal koreksi
kesalahan penekanan. Pada penelitian selanjutnya, algoritme scan push-button
dapat diubah agar penekanan push-button tidak perlu berurutan. Kekurangan
lainnya adalah jeda waktu penekanan tombol tidak dapat diubah selain melalui
pemrograman ulang. Pada implementasinya dapat ditambahkan modul CCTV
untuk menangkap gambar traffic kendaraan dan penyeberang jalan. Gambar ini
dapat diolah dengan image processing untuk menentukan jumlah kendaraan dan
penyeberang jalan. Informasi ini dapat digunakan untuk menentukan jeda waktu
penekanan tombol berikutnya.
DAFTAR PUSTAKA
Bang KL. 1997. Final Report: Indonesia Highway Capacity Manual and Software
(Kaji). Indonesian Highway Capacity Manual Project. 1997 Feb 25; Bandung,
Jakarta. Bandung (ID).
Hamirani NS, Shaikh AA, Memon PM, Khatri YA. 2012. Wireless dual purpose
propeller clock display. International Journal of Engineering and Technology.
2(3): 553-556.
Indonesia. Undang-Undang tentang Lalu Lintas dan Angkutan Jalan. UndangUndang Nomor 22 Tahun 2009 Pasal 130 ayat 2
Jatmiko W, Arfan A, Krisnadhi AA, Kusumoputro B, Takagawa I, Sekiyama K,
Fukuda T. 2009. Traffic signal control modification based on self-organizing in
Indonesia. Di dalam: International Symposium on Micro-NanoMechatronics
and Human Science. 2009 Nov 9-11. Nagoya, Jepang. hlm 598-601.
LaPlante J., Kaeser TP. 2007. A history of pedestrian signal walking speed
assumptions. Di dalam: 3rd Urban Street Symposium; 2007 Jun 24-27; Seattle,
Amerika Serikat. hlm 1-8.
Suyatno P, Istofa, Yuniarsari L. 2007. Rekayasa sistem pengatur parameter
pesawat sinar-X diagnostik berbasis mikrokontroler keluarga MCS 51. Seminar
Nasional III SDM Teknologi Nuklir; 2007 Nov 21-22; Yogyakarta, Indonesia.
Yogyakarta (ID). hlm 337-344.
16
Lampiran 1 Rangkaian praktikum yang digunakan
Lampiran 2 Skematik antarmuka prototipe dengan push button
17
Lampiran 3 Skematik antarmuka prototipe dengan keypad
18
Lampiran 4 Diagram alir subrutin interupsi dan subrutin seven segment
Lampiran 5 Listing program prototipe dengan push-button
;program untuk perubahan lampu oleh tombol P2.1 sudah benar
;pada program ini waktu tunggu dibuat 5s
detik equ 30h
detikpuluhan equ 31h
detiksatuan equ 32h
counter20 equ 33h
Org 0h
Start0:
sjmp Start
Org 0bh
Ljmp Interrupt_Timer0
Start:
Mov P1,#11110011b
loop:
19
jb P2.0,loop1
mov R7,#10
call delay_500ms
disp:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.0,run
jb P2.1, disp
loop1:
jb P2.1,loop2
mov R7,#20
call delay_500ms
disp1:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.1,run
jb P2.2,disp1
loop2:
jb P2.2,loop3
mov R7,#30
call delay_500ms
disp2:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.2,run
jb P2.3,disp2
loop3:
jb P2.3,loop4
mov R7,#40
call delay_500ms
disp3:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.3,run
jb P2.4,disp3
loop4:
jb P2.4,loop5
mov R7,#50
call delay_500ms
disp4:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.4,run
jb P2.5,disp4
loop5:
jb P2.5,loop
mov R7,#60
call delay_500ms
disp5:
20
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.5,run
jb P2.0,disp5
jmp loop
run:
call delay_500ms
jmp kuning_tombol
kuning_tombol:
Mov P1,#11101101b
call delay_1s
Mov P1,#11011110b
call tunggu_tombol
;
kuning2_tombol:
call delay_500ms
Mov P1,#11101101b
call delay_1s
Mov P1,#11110011b
call delay_1s
ulang_tombol:
Mov P1,#11110011b
call delay_60s
jmp Start0
tunggu_tombol:
mov Counter20,#20
mov detik,R7
call Update_tombol
call ClockDisplay_tombol
call DoClock_tombol
call InitTimer
call interrupt_timer0
Forever_tombol:
call ClockDisplay_tombol
sjmp Forever_tombol
Interrupt_Timer0:
mov tl0,#0b0h
mov th0,#03ch
djnz Counter20, EndInterrupt
mov Counter20,#20
call DoClock_tombol
EndInterrupt:
reti
;
DoClock_tombol:
dec detik
mov A,detik
cjne A,#00h,Update_tombol
call Update_tombol;
call ClockDisplay_tombol
jmp kuning2_tombol
Update_tombol:
mov A,detik
mov B,#10
21
DIV AB
mov detikpuluhan,A
mov detiksatuan,B
ret
;
ClockDisplay_tombol:
Mov DPTR,#Decoder7Segmen
mov A,detikpuluhan
Movc A,@A+DPTR
mov P0,A
;
clr P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
Mov DPTR,#Decoder7Segmen
mov A,detiksatuan
Movc A,@A+DPTR
mov P0,A
;
Setb P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
ret
;
InitTimer:
mov TMOD,#00000001b
mov tl0,#0b0h
mov th0,#03ch
setb ET0 ;Enable Timer 0 Interrupt
setb EA ;Master Interrupt Enable
setb TR0 ;Clock start running
ret
;
;subroutine delay time
delay:
mov R1,#2
del1:
mov R2,#255
del2:
djnz R2,del2
djnz R1,del1
ret
; L O O K U P T A B L E
; Decode to Seven Segmen -> g f e d c b a
Decoder7segmen:
DB 11000000b,11111001b,10100100b,10110000b,10011001b
DB 10010010b,10000010b,11111000b,10000000b,10010000b
;
delay_60s:
; START: Wait loop, time: 60 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3, R4
MOV
R4, #02Ah
MOV
R3, #083h
MOV
R2, #006h
22
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
DJNZ
; Rest: 0
; END: Wait
ret
R1, #0B5h
R0, #003h
R0,
R1,
R2,
R3,
R4,
R2,
R1,
R0,
$
$-5
$-9
$-13
$-17
#002h
#0A0h
#0A1h
R0,
R1,
R2,
R2,
R1,
R0,
$
$-5
$-9
#008h
#0FCh
#005h
R0,
R1,
R2,
R0,
R0,
$
$-5
$-9
#011h
$
loop
delay_1s:
; START: Wait loop, time: 1 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3
MOV
R3, #003h
MOV
R2, #0D2h
MOV
R1, #024h
MOV
R0, #014h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
DJNZ R3, $-13
MOV
R0, #059h
DJNZ R0, $
NOP
; Rest: 0
; END: Wait loop
ret
delay_500ms:
; START: Wait loop, time: 500 ms
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2
MOV
R2, #004h
MOV
R1, #0FAh
MOV
R0, #0F8h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
23
; Rest: -13.0 us
ret
End
Lampiran 6 Listing program prototipe dengan keypad
col4 bit P2.7
col3 bit P2.6
col2 bit P2.5
col1 bit P2.4
row1 bit P2.0
row2 bit P2.1
row3 bit P2.2
row4 bit P2.3
counter20 equ 30h
detik equ 31h
output equ 32h
keydata equ 33h
keybounc equ 34h
check equ 40h
satuan equ 41h
puluhan equ 42h
keyport equ P2
Org 0h
Start0:
sjmp Start1 ;lompat ke Start
Org 0bh ;mulai program dari alamat
Ljmp Interrupt_Timer0
Start1:
MOV P2,#11111111b ;isi P2 dengan 11111111
mov keydata,#00h
mov output,#00h
CALL CLEAR
start:
Mov 90h,#11110011b
CALL keypad4x4 ;Calling subroutine keypad4x4
MOV A,keydata ;Copy keydata ke A
CALL count0
call bin2dec
CALL display2sevensegmen ;
SJMP start
tunggu:
Mov P1,#11101101b
call delay_1s
Mov P1,#11011110b
call delay_1s
mov Counter20,#20
mov detik,output
call Update
call ClockDisplay
call DoClock
call InitTimer ;memanggil InitTimer
call interrupt_timer0
Forever:
call ClockDisplay
24
sjmp Forever ;
Interrupt_Timer0:
mov tl0,#0b0h
mov th0,#03ch
djnz Counter20, EndInterrupt
mov Counter20,#20
call DoClock
EndInterrupt:
reti
;
DoClock:
dec detik
;mengurangi 1 nilai detik
mov A,detik
;memindahkan nilai detik ke A
cjne A,#0h,Update
call Update;
call ClockDisplay
jmp kuning2
Update:
mov A,detik
mov B,#10
DIV AB
mov puluhan,A
mov satuan,B
ret
;
ClockDisplay:
Mov DPTR,#data7segmen
mov A,puluhan
Movc A,@A+DPTR
mov P0,A
;
clr P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
Mov DPTR,#data7segmen
mov A,satuan
Movc A,@A+DPTR
mov P0,A
Setb P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
ret
InitTimer:
mov TMOD,#00000001b
mov tl0,#0b0h
mov th0,#03ch
setb ET0 ;Enable Timer 0 Interrupt
setb EA ;Master Interrupt Enable
setb TR0 ;Clock start running
ret
;
;subroutine delay time
delay:
mov R1,#2
25
del1:
mov R2,#255
del2:
djnz R2,del2
djnz R1,del1
ret
kuning2:
call delay_500ms
Mov P1,#11101101b
call delay_1s
Mov P1,#11110011b
call delay_1s
ulang_tombol:
Mov P1,#11110011b
call delay_60s
jmp Start0
mundur:
mov a, output
mov b,#10d
div ab
mov b,#0
mov output,a
mov keydata, a
dec r7
MOV R5,#0
ret
COUNT0:
CJNE R7, #00, COUNT1
MOV A, OUTPUT
RET
COUNT1:
CJNE r7, #01, COUNT2
MOV R5, A
MOV OUTPUT,A
RET
COUNT2:
MOV R4,A
MOV A,R5
MOV B,#10D
MUL AB
MOV r6,b
mov b,#0
ADD A,R4
MOV R4,A
MOV OUTPUT,A
RET
clear:
MOV A,#00
MOV B,#00
MOV R1,#00
MOV R2,#00
MOV R3,#00
MOV R4,#00
MOV R5,#00
MOV R6,#00
MOV R7,#00
MOV KEYDATA,#00
26
mov
mov
clr
RET
Bin2Dec:
mov
div
mov
mov
ret
puluhan,#0
satuan,#0
c
b,#10d
ab
puluhan,a
satuan,b
Keypad4x4:
MOV keybounc,#1 ;keybounc = (default)50
MOV keyport,#0FFh ;keyport=P2= FF
CLR col4 ;col4 = 0
keyC:
jb row2,keyclr
DJNZ keybounc, keyc
call delaytombol
call mundur
ret
keyCLR:
jb row1,keyENT ; Key CLR
DJNZ keybounc,keyCLR
call delaytombol
mov output,#00h
CALL clear
RET
keyENT:
setb col4
CLR col3
jb row4,key3
DJNZ keybounc,keyENT
call delaytombol
call tunggu
RET
key3:
jb row1,key6
DJNZ keybounc,key3 ; Key ENT
call delaytombol
MOV keydata,#03D ;Data Output
INC R7
RET
key6:
jb row2,key9
DJNZ keybounc,key6 ; Key 9
call delaytombol
MOV keydata,#06D ;Data Output
inc R7
RET
key9:
jb row3,key0
DJNZ keybounc,key9 ; Key 6
call delaytombol
MOV keydata,#09D ;Data Output
inc R7
RET
key0:
setb col3
27
CLR col2
jb row4,key2
DJNZ keybounc,key0
call delaytombol
MOV keydata,#00D ;Data Output
inc R7
RET
key2:
jb row1,key5
DJNZ keybounc,key2
call delaytombol
MOV keydata,#02D ;Data Output
inc R7
RET
key5:
jb row2,key8
DJNZ keybounc,key5
call delaytombol
MOV keydata,#05D ;Data Output
inc R7
RET
key8:
jb row3,keyCAN
DJNZ keybounc,key8
call delaytombol
MOV keydata,#08D ; Data Output
inc R7
RET
keyCAN:
setb col2
CLR col1
jb row4,key1
DJNZ keybounc,keyCAN
call delaytombol
RET
key1:
jb row1,key4
DJNZ keybounc,key1
MOV keydata,#01D ;Data Output
call delaytombol
inc R7
RET
key4:
jb row2,key7
DJNZ keybounc,key4
call delaytombol
MOV keydata,#04D ;Data Output
inc R7
RET
key7:
jb row3,Nokey
DJNZ keybounc,key7
call delaytombol
MOV keydata,#07D ;Data Output
inc R7
RET
28
Nokey:
RET
Display2SevenSegmen:
mov A,puluhan
mov DPTR, #data7segmen
movc A, @A+DPTR
mov P0,A
;
clr P3.5 ;untuk kit praktikum: clr P3.5
setb P3.6 ;untuk kit praktikum: Setb P3.6
SETB P3.7
;untuk kit praktikum: Setb P3.7
call delay;delaydisplay
;
mov A,satuan
mov DPTR, #data7segmen
movc A, @A+DPTR
mov P0,A
;
setb P3.5 ;untuk kit praktikum: Setb P3.5
setb P3.6 ;untuk kit praktikum: Setb P3.6
setb P3.7 ;untuk kit praktikum: Setb P3.7
call delay;delaydisplay
ret
delaydisplay:
MOV
R1,
MOV
R0,
NOP
DJNZ R0,
DJNZ R1,
NOP
NOP
NOP
ret
delaytombol:
MOV
R2,
MOV
R1,
MOV
R0,
NOP
DJNZ R0,
DJNZ R1,
DJNZ R2,
ret
#002h
#0F7h
$
$-5
#004h
#0FAh
#050h
$
$-5
$-9
delay_60s:
; START: Wait loop, time: 60 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3, R4
MOV
R4, #02Ah
MOV
R3, #083h
MOV
R2, #006h
MOV
R1, #0B5h
MOV
R0, #003h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
29
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
DJNZ
; Rest: 0
ret
R3,
R4,
R2,
R1,
R0,
$-13
$-17
#002h
#0A0h
#0A1h
R0,
R1,
R2,
R2,
R1,
R0,
$
$-5
$-9
#008h
#0FCh
#005h
R0,
R1,
R2,
R0,
R0,
$
$-5
$-9
#011h
$
delay_1s:
; START: Wait loop, time: 1 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3
MOV
R3, #003h
MOV
R2, #0D2h
MOV
R1, #024h
MOV
R0, #014h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
DJNZ R3, $-13
MOV
R0, #059h
DJNZ R0, $
NOP
; Rest: 0
ret
delay_500ms:
; START: Wait loop, time: 500 ms
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2
MOV
R2, #004h
MOV
R1, #0FAh
MOV
R0, #0F8h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
; Rest: -13.0 us
ret
data7segmen:
db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
end
30
RIWAYAT HIDUP
Penulis dilahirkan di Padangsidimpuan pada tanggal 8 Maret 1989 dari
almarhum ibu Ernata boru Siregar dan bapak Mangapul Adil Situmorang. Penulis
merupakan anak ke-4 dari 5 bersaudara. Pada tahun 2007, penulis lulus dari
Sekolah Menengah Atas (SMA) Negeri 4 Padangsidimpuan dan pada tahun yang
sama diterima di Diploma Universitas Sumatera Utara (USU) Keahlian Ilmu
Komputer. Pada tahun 2010 penulis lulus dari Diploma USU dan melanjutkan
pendidikan di Program Alih Jenis Ilmu Komputer, Fakultas Matematika dan Ilmu
Pengetahuan Alam, IPB.
PEJALAN KAKI BERBASIS MIKROKONTROLER
MCS-51 YANG DIINISIASI DENGAN TOMBOL
IRENE PRICELLA SITUMORANG
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013
PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Pengembangan
Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang
Diinisiasi dengan Tombol adalah benar karya saya dengan arahan dari komisi
pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi
mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan
maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan
dicantumkan dalam Daftar Pustaka di bagian akhir disertasi ini.
Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut
Pertanian Bogor.
Bogor, Juli 2013
Irene Pricella Situmorang
NIM G64104038
ABSTRAK
IRENE PRICELLA SITUMORANG. Pengembangan Prototipe Lampu Lalu
Lintas Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang Diinisiasi dengan
Tombol. Dibimbing oleh KARLISA PRIANDANA.
Saat ini, di Indonesia, hak pejalan kaki untuk menyeberang jalan pada zebra
cross sering diabaikan. Padahal, UU No. 22 tahun 2009 tentang Lalu Lintas dan
Angkutan Jalan, Pasal 130 ayat 2 secara eksplisit menjelaskan bahwa pejalan kaki
yang menyeberang pada zebra cross berhak mendapat prioritas. Penelitian ini
mengembangkan dua prototipe lampu lalu lintas untuk pejalan kaki yang dapat
diinisiasi dengan tombol dengan menggunakan mikrokontroler keluarga MCS-51,
untuk diimplementasikan di zebra cross. Prototipe pertama menggunakan pushbutton, sedangkan prototipe kedua menggunakan keypad sebagai tombol untuk
menginisiasi lampu lalu lintas. Penekanan tombol akan memulai kondisi
menyeberang, yaitu kondisi pada saat lampu lalu lintas kendaraan menjadi merah
dan lampu lalu lintas penyeberang jalan menjadi hijau. Dalam hal ini, seven
segment akan menampilkan waktu hitung mundur yang dapat dipilih melalui
tombol. Penelitian ini menunjukkan bahwa penggunaan push-button lebih ramah
guna dan lebih mudah dipelihara. Sementara itu, penggunaan keypad lebih
fleksibel dalam hal pemilihan waktu menyeberang.
Kata kunci: keypad, lampu lalu lintas, mikrokontroler MCS-51, push-button,
seven segment
ABSTRACT
IRENE PRICELLA SITUMORANG. Development of Button-Initiated Pedestrian
Traffic Lights Using MCS-51 Microcontroller. Supervised by KARLISA
PRIANDANA.
Nowadays, in Indonesia, pedestrian’s right to cross through zebra cross is
often abandoned. On the other hand, Law No. 22 of 2009 concerning Traffic and
Road Transportation, article 130 paragraph 2 explicitly mentioned that pedestrian
who cross through zebra cross shall be prioritized. This study develops two
button-initiated pedestrian traffic light prototypes using MCS-51 microcontroler,
to be implemented in zebra cross. The first prototype utilizes several push-buttons,
whereas the second prototype uses keypad as the button to initiate the traffic light.
Pressure on the button will trigger the crossing condition, where the vehicle’s
traffic light becomes red and the pedestrian’s traffic light becomes green. In this
condition, seven segment will show the count down time that can be selected
through the button. This study shows that the push-button prototype is more user
friendly and easily maintained. Meanwhile, the keypad prototype is more flexible
in terms of selecting the crossing time.
Keywords: keypad, MCS-51 microcontroller, push-button, seven segment, traffic
light
PENGEMBANGAN PROTOTIPE LAMPU LALU LINTAS
PEJALAN KAKI BERBASIS MIKROKONTROLER
MCS-51 YANG DIINISIASI DENGAN TOMBOL
IRENE PRICELLA SITUMORANG
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada
Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013
Judul Skripsi : Pengembangan Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis
Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol
: Irene Pricella Situmorang
Nama
N1M
: G64104038
Disetujui oleh
Karlisa Priandana, ST M Eng
Pembimbing L
o MSiMKom
Tanggal Lulus: セイ
2 AUG
2013
Judul Skripsi : Pengembangan Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis
Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol
Nama
: Irene Pricella Situmorang
NIM
: G64104038
Disetujui oleh
Karlisa Priandana, ST M Eng
Pembimbing I
Diketahui oleh
Dr Ir Agus Buono, MSi M Kom
Ketua Departemen
Tanggal Lulus:
PRAKATA
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala
karunia-Nya sehingga tugas akhir ini berhasil diselesaikan. Tema yang dipilih
dalam tugas akhir yang dilaksanakan sejak bulan September 2012 ini ialah
mikrokontroler, dengan judul Pengembangan Prototipe Lampu Lalu Lintas
Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol.
Penulis sadar bahwa tugas akhir ini tidak akan terselesaikan tanpa bantuan
dari berbagai pihak. Pada kesempatan ini, penulis ingin mengucapkan terima
kasih kepada:
1 Orang tua tercinta Bapak Mangapul Adil Situmorang, SSos dan almarhum Ibu
Ernata Siregar, kakak penulis Santa Elizabeth Situmorang, SE, dan Christina
Natalia Situmorang, SE, abang penulis Ellyas Tarnama Uli Situmorang, ST,
serta adik penulis Gunawan Situmorang atas segala doa dan dukungan yang
tiada hentinya.
2 Ibu Karlisa Priandana ST MEng selaku dosen pembimbing tugas akhir.
Terima kasih atas kesabaran dan dukungan dalam penyelesaian tugas akhir ini.
3 Teman-teman Ilkomerz Angkatan 5 atas kebersamaannya.
4 Gunawan Purba, SH yang selalu memberikan dukungan dan semangat kepada
penulis.
Penulis menyadari bahwa masih terdapat kekurangan dalam penulisan tugas
akhir ini. Semoga tugas akhir ini bermanfaat.
Bogor, Juli 2013
Irene Pricella Situmorang
DAFTAR ISI
DAFTAR TABEL
vi
DAFTAR GAMBAR
vi
DAFTAR LAMPIRAN
vi
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
2
Tujuan Penelitian
2
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
METODE
3
Alat
4
Penentuan Fungsi Prototipe
8
Perancangan dan Modifikasi Algoritme
8
Implementasi Algoritme pada Prototipe
8
Evaluasi
8
HASIL DAN PEMBAHASAN
9
Rancangan Fungsi Prototipe
9
Rancangan Algoritme
9
SIMPULAN DAN SARAN
14
Simpulan
14
Saran
15
DAFTAR PUSTAKA
15
LAMPIRAN
15
RIWAYAT HIDUP
27
DAFTAR TABEL
1
2
3
4
Tabel Kebenaran 74LS138
Alamat vektor interupsi
Evaluasi prototipe
Perbandingan kedua prototipe yang dikembangkan
6
12
14
14
DAFTAR GAMBAR
1
2
3
4
5
6
7
8
9
10
11
12
Diagram alur metode penelitian
Mikrokontroler 89x52 merupakan keluarga MCS-51
Konfigurasi pin MCS-51
Seven segment
Rangkaian decoder 74LS138 dengan mikrokontroler dan 7-Segment
Skema rangkaian antarmuka push-button
In-System Programming (ISP)
Dua set lampu lalu lintas
Rangkaian dasar keypad 4x4
Algoritme dengan push-button
Algoritme dengan keypad
Algoritme interupsi Timer 0
3
4
5
5
6
6
7
7
7
10
10
13
DAFTAR LAMPIRAN
1
2
3
4
5
6
Rangkaian praktikum yang digunakan
Skematik antarmuka prototipe dengan push button
Skematik antarmuka prototipe dengan keypad
Diagram alir subrutin interupsi dan subrutin seven segment
Listing program prototipe dengan push-button
Listing program prototipe dengan keypad
16
16
17
18
18
23
PENDAHULUAN
Latar Belakang
Saat ini, kecelakaan lalu lintas yang menyebabkan pejalan kaki menjadi
korban meningkat di Indonesia. Pengemudi kendaraan kurang memperdulikan hak
pejalan kaki dalam penggunaan lalu lintas dan jalan raya. Walaupun, pejalan kaki
memiliki hak yang sama dengan pengemudi kendaraan dalam penggunaan lalu
lintas dan jalan raya.
Kecelakaan-kecelakaan tersebut menunjukkan bahwa pejalan kaki kurang
mendapatkan perlindungan yang memadai dalam penggunaan lalu lintas dan jalan
raya. Meskipun fasilitas-fasilitas pendukung bagi pejalan kaki telah disediakan
oleh pemerintah. Selain itu, fasilitas pendukung bagi pejalan kaki tersebut belum
berfungsi sebagaimana mestinya.
Zebra cross adalah salah satu fasilitas pendukung bagi pejalan kaki yang
dinyatakan dengan marka jalan berbentuk garis membujur berwarna putih dan
hitam, berfungsi untuk memberikan keamanan bagi pejalan kaki pada saat
menyeberang jalan. Undang-Undang Nomor 22 Tahun 2009 Tentang Lalu Lintas
dan Angkutan Jalan Pasal 130 ayat 2 menyatakan bahwa “Pejalan kaki yang
sedang berjalan pada zebra cross berhak mendapatkan prioritas untuk
menyeberang jalan”. Namun pada kenyataannya, banyak pengemudi kendaraan
lebih mengutamakan kepentingannya dari pada pejalan kaki. Pengemudi
kendaraan melaju kendaraannya lebih cepat pada saat melihat pejalan kaki yang
akan atau sedang menyeberang jalan. Oleh karena, itu diperlukan suatu sistem lalu
lintas tambahan untuk membantu memaksimalkan fungsi zebra cross tersebut.
Adapun penelitian yang pernah dilakukan adalah Traffic Signal Control
Modification Based on Self-Organizing in Indonesia (Jatmiko et al. 2009), yaitu
mengenai kontrol lampu lalu lintas pada persimpangan jalan berdasarkan
perubahan jumlah kendaraan pada masing-masing bagian simpang. Penelitian
dalam bentuk simulasi ini menggunakan pendekatan pada suara dengan
menghitung nilai frekuensi suara yang ditimbulkan. Penelitian tersebut diharapkan
dapat mengurangi kemacetan di Indonesia khususnya pada bagian persimpangan
jalan. Terkait penelitian sebelumnya, penelitian ini mengembangkan suatu sistem
lalu lintas berbasis mikrokontroler yang juga masih dalam bentuk simulasi atau
prototipe.
Implementasi lampu lalu lintas pejalan kaki sudah diterapkan dibeberapa
negara, salah satunya Indonesia. Beberapa kota di Indonesia yang telah
mengimplementasi lampu lalu lintas tersebut adalah Jakarta, Bogor, dan
Semarang. Tetapi implementasi lampu lalu lintas tersebut belum mendapat
sambutan yang baik dari masyarakat. Selain itu pemerintah pun kurang
memberikan sosialisasi cara penggunaannya kepada masyarakat.
Mikrokontroler yang digunakan adalah mikrokontroler keluarga MCS51yang banyak dijumpai di pasaran. Kelebihan mikrokontroler ini yaitu memiliki
fitur yang praktis dan ukuran memori yang cukup besar (Suyatno et al. 2007).
2
Perumusan Masalah
Masalah yang akan diangkat dalam penelitian ini adalah bagaimana cara
merancang atau mengembangkan suatu sistem lalu lintas untuk pejalan kaki.
Sistem lalu lintas tersebut dirancang dalam bentuk prototipe berbasis
mikrokontroler. Prototipe lampu lalu lintas bagi pejalan kaki yang dikembangkan
tersebut akan diinisiasi dengan tombol. Tombol yang digunakan adalah pushbutton dan keypad sehingga sistem akan menghasilkan 2 prototipe.
Mikrokontroler yang digunakan adalah mikrokontroler 89x52 yang telah terangkai
pada rangkaian praktikum. Mikrokontroler 89x52 merupakan mikrokontroler
keluarga MCS-51.
Tujuan Penelitian
Penelitian ini bertujuan membuat prototipe sebuah aplikasi sederhana yang
berbasis mikrokontroler MCS-51 berupa lampu lalu lintas pejalan kaki yang
diinisiasi dengan tombol.
Manfaat Penelitian
Penelitian ini diharapkan dapat menjadi pionir dalam pembuatan alat lalu
lintas pejalan kaki berbasis mikrokontroler untuk diimplementasikan pada zebra
cross. Implementasi lampu lalu lintas ini diharapkan dapat membantu
memaksimalkan fungsi zebra cross untuk memberi keamanan bagi pejalan kaki
dalam menyeberang jalan.
Ruang Lingkup Penelitian
Ruang lingkup pada penelitian ini adalah:
1 Mikrokontroler yang digunakan adalah mikrokontroler 89x52, merupakan
salah satu keluarga MCS-51, yang telah terangkai pada rangkaian praktikum.
2 Tombol yang digunakan adalah 6 push-button dan keypad sebagai inisiasi
penyeberangan jalan yang dikembangkan pada 2 prototipe. Inisiasi tombol
kembali dapat dilakukan setelah jeda waktu selama 5 menit.
3 Kondisi default adalah kondisi dimana lampu hijau pada salah satu set lampu
lalu lintas (diasumsikan untuk kendaraan) dan lampu merah pada set lampu
lalu lintas lainnya (diasumsikan untuk pejalan kaki) menyala.
4 Seven segment menampilkan perhitungan waktu mundur dari x detik ke 0.
Rentang nilai x pada masing-masing push-button adalah 10-60 detik. Dan
rentang nilai x dengan menggunakan keypad adalah 0-99 detik.
5 Lampu kuning digunakan sebagai lampu transisi yang akan menyala pada saat
pergantian state dari lampu merah menyala menjadi lampu hijau menyala dan
sebaliknya.
6 Implementasi prototipe diterapkan pada zebra cross yang berada pada jalan
lurus dan bukan persimpangan.
3
METODE
Metode yang digunakan adalah metode Trial and Error dengan alur yang
dapat dilihat pada Gambar 1. Prototipe yang dikembangkan menggunakan
perangkat keras berupa sebuah rangkaian praktikum (Lampiran 1) yang telah
terangkai dengan mikrokontroler jenis 89x52, salah satu mikrokontroler keluarga
MCS-51.
Selain mikrokontroler, komponen lain yang terangkai pada rangkaian
tersebut dan digunakan untuk mengembangkan prototipe adalah seven segment,
light-emitting diode (LED) lampu lalu lintas, push-button, dan keypad. Setiap
fungsi prototipe akan disesuaikan dengan kebutuhan pejalan kaki dalam
menyeberang jalan.
Fungsi-fungsi tersebut dirancang dengan menggunakan algoritme dan
kemudian diimplementasikan pada prototipe. Implementasi algoritme dalam
bentuk program menggunakan perangkat lunak Emulator MCU 8051 IDE dan
compiler MIDE51 yang telah diinstal pada komputer. Kemudian program tersebut
akan dimasukkan pada mikrokontroler dengan menggunakan In-System
Programming (ISP) sebagai penghubung antara komputer dan mikrokontroler.
Prototipe dievaluasi kembali untuk disesuaikan dengan fungsinya. Jika belum
sesuai dengan fungsinya, algoritme akan dimodifikasi.
Hasil modifikasi algoritme tersebut diimplementasikan kembali dan
dievaluasi apakah syaratnya telah terpenuhi. Jika seluruh syarat telah terpenuhi,
penelitian telah berhasil dan prototipe telah selesai dikembangkan.
Gambar 1 Diagram alur metode penelitian
4
Alat
Perangkat Keras
Mikrokontroler adalah suatu komponen elektronik, miniatur dari suatu
sistem komputer. Mikrokontroler mempunyai kemampuan untuk diprogram sesuai
keinginan seperti halnya komputer. Namun, mikrokontroler hanya dapat di
gunakan untuk suatu aplikasi tertentu saja karena keterbatasan dalam menyimpan
program. Mikrokontroler terdiri atas sebuah inti processor, memori (sejumlah
kecil RAM, memori program, atau keduanya) dan perlengkapan input-output.
Penelitian ini menggunakan mikrokontroler 89x52 yang merupakan salah
satu mikrokontroler keluarga MCS-51 seperti terlihat pada Gambar 2.
Mikrokontroler 89x52 memiliki respons yang lebih cepat daripada 89x51.
Gambar 2 Mikrokontroler 89x52 merupakan
keluarga MCS-51
Beberapa fitur mikrokontroler ini adalah (Hamirani 2012):
Sebuah CPU (Central Prossesing Unit) 8 bit yang termasuk keluarga osilator
internal dan rangkaian timer.
Flash memori 8 Kb
RAM 128 bytes
Empat buah programmable port I/O, masing-masing terdiri dari atas 8 jalur
I/O
Lima buah jalur interupsi (2 buah interupsi eksternal dan 3 buah interupsi
internal)
Sebuah port serial dengan kontrol serial full duplex UART.
Kecepatan pelaksanaan intruksi persiklus untuk mikrokontroler ini adalah 1
mikrodetik pada frekuensi clock 12 MHz. Mikrokontroler ini memiliki timer
internal dengan frekuensi 12 MHz (Suyatno et al. 2007). Susunan pin-pin
mikrokontroler 89x52 dapat dilihat pada Gambar 3 dengan konfigurasi sebagai
berikut.
Pin 1 sampai 8 (Port 1) merupakan port paralel 8 bit 2 arah (input-output)
yang digunakan untuk berbagai keperluan (general purpose).
Pin 9 (Reset) adalah interupsi reset (aktif high) perpindahan kondisi rendah ke
tinggi akan mereset 89x52. Pin ini dihubungkan dengan rangkaian power on
reset.
Pin 10 sampai 17 (port 3) adalah port paralel 8 bit 2 arah (input-output) yang
memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmisi Data),
RXD (Receiver Data), INT0 (Interrupt 0), INT1 (Interrupt 1), T0 (timer 0),
T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti tidak
dipakai, pin-pin ini dapat digunakan sebagai port paralel 8 bit serba guna.
5
Pin 18 dan 19 (XTAL1 dan XTAL2) adalah pin input osilator kristal, yang
merupakan input clock bagi rangkaian osilator internal.
Pin 20 (ground) dihubungkan ke VSS atau Ground.
Pin 21 sampai 28 (port 2) adalah port paralel 8 bit 2 arah (input-output). Port
2 ini mengirim byte alamat apabila dilakukan pengaksesan memori ekternal.
Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit open drain 2 arah. Bila
digunakan untuk mengakses memori luar, port ini akan memultipleks alamat
memori dengan data.
Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt) sebagai power supply untuk
mikrokontroler.
Gambar 3 Konfigurasi pin MCS-51
Komponen pendukung lainnya yang digunakan pada penelitian ini ialah
dapat seven segment (Gambar 4) yang digunakan untuk menampilkan waktu
hitung mundur dalam satuan detik.
Gambar 4 Seven segment
Seven segment merupakan sebuah display yang terbentuk dari 7 buah segmen
LED (ditambah 1 segmen untuk menampilkan titik) dan terhubung pada port 0.
Tujuh segmen tersebut dinamakan segmen A, B, C, D, E, F, dan G, serta DP, satu
buah segmen tambahan untuk menampilkan titik. Pengaturan tampilan seven
segment dilakukan dengan menyalakan/ memadamkan segmen led yang sesuai.
Seven segment yang menyala dikontrol oleh decoder/ demultiplexer 74LS138
seperti yang ditunjukkan pada Gambar 5.
6
Gambar 5 Rangkaian decoder 74LS138 dengan
mikrokontroler dan 7-Segment
Pada Tabel 1, tampak bahwa seven segment yang menyala tergantung pada
output dari decoder 74LS138. Output ini dikontrol oleh ketiga input decoder
74LS138 yang terhubung ke P3.5, P3.6, dan P3.7. Oleh karena itu, dari 8 buah
display seven segment yang ada pada kit praktikum, selalu hanya ada satu display
yang menyala. Display seven segment dihidupkan secara bergantian dengan waktu
tunda tertentu yang tidak kasat mata akan membuat display tampak menyala
secara bersamaan.
Tabel 1 Tabel Kebenaran 74LS138
SELEKTOR
C
B
A
P3.7 P3.6 P3.5
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
G1
VCC
1
1
1
1
1
1
1
1
ENABLE
G2A G2B
EN
EN
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
OUTPUT
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
Gambar 6 merupakan push-button yang digunakan sebagai tombol inisiasi
terhadap lampu lalu lintas. Selain push-button, keypad juga dapat digunakan
sebagai tombol untuk inisiasi.
7
Keypad terdiri dari sejumlah saklar yang terhubung sebagai baris dan kolom
seperti Gambar 7. Untuk mengetahui tombol mana yang ditekan, mikrokontroler
akan melakukan teknik scanning dengan cara memberi logika low “0” ke salah
satu port yang terhubung ke kolom keypad (C1–C4). Selanjutnya, mikrokontroler
memeriksa seluruh port yang terhubung pada baris (R1–R4) untuk menguji jika
ada tombol yang ditekan pada baris dan kolom tersebut. Jika tidak ada tombol
yang ditekan, maka mikrokontroler akan mendapati bahwa seluruh port yang
terhubung pada baris (R1–R4) memiliki logika high “1”. Kedua tombol akan
terhubung pada port yang sama, yaitu port 2. Oleh karena itu, dikembangkanlah 2
prototipe.
Gambar 7 Rangkaian dasar keypad 4x4
Dua set lampu lalu lintas yang digunakan dapat dilihat pada Gambar 8. Satu
set lampu lalu lintas digunakan untuk pejalan kaki dan satu set lainnya digunakan
untuk pengemudi kendaraan. Led yang digunakan sebagai lampu lalu lintas
terhubung pada port 1. Komponen in system programming pada Gambar 9
digunakan untuk memprogram mikrokontroler 89x52. Skematik prototipe dengan
push button dan keypad yang telah dihubungkan dengan seluruh komponen yang
digunakan dapat dilihat pada Lampiran 2 dan Lampiran 3.
Gambar 8 Dua set lampu lalu
lintas
Gambar 9 In-System Programming
(ISP)
Perangkat Lunak
Perangkat lunak yang akan digunakan pada penelitian ini adalah Emulator
MCU 8051 IDE, compiler MIDE51, dan driver programmer ProgISP versi 1.72.
8
Penentuan Fungsi Prototipe
Pada tahap ini prototipe akan dirancang sesuai dengan kebutuhan pejalan
kaki dalam menyeberang jalan.
Perancangan dan Modifikasi Algoritme
Algoritme yang diadopsi dalam penelitian ini adalah algoritme jam digital.
Timer yang digunakan pada algoritme jam digital adalah timer internal. Algoritme
lainnya akan dikembangkan sesuai dengan fungsi yang diinginkan.
Pengembangan algoritme dilakukan dengan menggunakan bahasa Assembly
dengan bantuan perangkat lunak Emulator MCU 8051 IDE.
Implementasi Algoritme pada Prototipe
Algoritme yang telah dikembangkan akan diimplementasikan pada
perangkat prototipe. Compiler yang digunakan adalah MIDE51 sedangkan
programmer mikrokontroler yang digunakan adalah ProgISP versi 1.72.
Evaluasi
Pada tahap ini, fungsionalitas prototipe akan diiuji dengan beberapa
persyaratan, yaitu:
1 Kondisi default dapat ditampilkan.
2 Kondisi menyeberang dapat diinisiasi dengan tombol. Tombol yang
digunakan terdiri atas push-button dan keypad.
a Waktu kondisi menyeberang dengan menggunakan push-button diaktifkan
dengan menekan push-button sebanyak 2 kali.
b Waktu kondisi menyeberang dengan menggunakan tombol keypad
diaktifkan dengan menekan keypad ENT setelah terlebih dahulu menekan
keypad angka secara bebas. Pada keypad, waktu hitung mundur dapat
dihapus dan kemudian diganti dengan menggunakan keypad COR atau
MEN.
3 Waktu hitung mundur dapat ditampilkan pada seven segment.
4 Setelah waktu habis, lampu lalu lintas kembali ke kondisi default.
5 Tombol tidak dapat ditekan kembali sebelum jeda waktu 5 menit.
6 Prototipe akan memberikan waktu hitung mundur selama x detik. Nilai x yang
tersimpan pada masing-masing push-button adalah 10, 20, 30, 40, 50, dan 60
detik, sedangkan nilai x yang dapat dihasilkan dengan keypad adalah 0-99
detik.
7 Transisi lampu merah menjadi hijau dan sebaliknya menggunakan lampu
kuning.
Apabila persyaratan fungsionalitas di atas belum seluruhnya terpenuhi maka
algoritme yang dirancang perlu ditelusuri kembali. Penelitian dianggap selesai
setelah ke-7 fungsi terpenuhi.
9
HASIL DAN PEMBAHASAN
Rancangan Fungsi Prototipe
Fungsi prototipe yang dikembangkan adalah:
Kondisi default: lampu hijau pada salah satu set lampu lalu lintas (yang
diasumsikan untuk kendaraan) dan lampu merah pada set lampu lalu lintas
lainnya (yang diasumsikan untuk pejalan kaki) menyala.
2 Kondisi lampu lalu lintas dapat diubah menjadi “kondisi menyeberang”, yaitu
kebalikan dari kondisi default-nya melalui inisiasi tombol. Setelah tombol
ditekan, seven segment akan menampilkan perhitungan mundur dalam detik.
3 Waktu “kondisi menyeberang” yang akan ditampilkan pada seven segment
ditentukan melalui push-button, dengan rentang nilai antara 10-60 detik, dan
keypad, dengan rentang nilai 0-99 detik.
4 Transisi lampu merah menjadi hijau dan sebaliknya menggunakan lampu
kuning.
5 Tombol dapat ditekan kembali setelah jeda waktu 5 menit.
1
Rancangan Algoritme
Algoritme dikembangkan berdasarkan fungsi prototipe yang telah
ditentukan, seperti yang dapat dilihat pada Gambar 10 (dengan push-button) dan
Gambar 11 (dengan keypad). Prototipe dimulai dengan kondisi default, yaitu
lampu hijau pada lampu A, satu set lampu lalu lintas untuk pengemudi kendaraan,
dan lampu merah pada lampu B, satu set lampu lalu lintas untuk pejalan kaki,
menyala serta seven segment masih dalam keadaan non-aktif.
Tombol yang digunakan untuk inisiasi terdiri atas push-button dan keypad.
Pada Gambar 10, dapat dilihat bahwa apabila push-button ditekan sekali, seven
segment aktif untuk menampilkan waktu penyeberangan x detik. Enam buah pushbutton yang digunakan mewakili masing-masing nilai x, yaitu 10, 20, 30, 40, 50,
dan 60. Penekanan push-button kedua kalinya akan membuat kondisi default
berubah menjadi kondisi menyeberang, yaitu lampu hijau pada lampu A berubah
menjadi merah, lampu merah pada lampu B berubah menjadi hijau, serta seven
segment akan mulai menampilkan hitungan mundur dari x detik ke 0.
Selain push-button, keypad dapat digunakan untuk menentukan waktu
menyeberang. Prototipe yang kedua (Gambar 10), penekanan angka keypad akan
menentukan waktu menyeberang. Nilai x yang dihasilkan dengan keypad
memiliki rentang nilai yang lebih luas, yaitu antara 0-99 detik. Seven segment
akan mulai menampilkan hitung mundur setelah keypad ENT ditekan.
Pada kondisi ini, pejalan kaki menyeberang jalan. Transisi lampu merah
menjadi hijau dan sebaliknya menggunakan lampu kuning. Setelah waktu
penyeberangan mencapai 0, kondisi menyeberang berubah kembali menjadi
kondisi default dan inisiasi tombol untuk kedua kalinya dapat digunakan setelah
jeda waktu 5 menit.
10
Keterangan gambar:
A= Pengemudi kendaraan
B= Pejalan kaki
x= 10, 20, 30, 40, 50, 60
Gambar 10 Algoritme dengan
push-button
Keterangan gambar:
A= Pengemudi kendaraan
B= Pejalan kaki
x= 00-99
Gambar 11 Algoritme dengan
keypad
Pilihan waktu menyeberang yang diterapkan pada prototipe cukup bervarisi.
Waktu menyeberang dipengaruhi oleh lebar jalan dan kecepatan pejalan kaki.
Ukuran umum lebar jalan adalah 3.25 sampai 3.75 m (Bang 1997). Sedangkan
rata-rata kecepatan pejalan kaki adalah 3.5 ft/s atau sama dengan 1.1 m/s
(LaPlante and Kaeser 2007). Oleh karena itu, standar waktu menyeberang pejalan
kaki dapat ditentukan dengan menghitung hasil bagi lebar jalan dengan kecepatan
pejalan kaki. Rata-rata waktu menyeberang yang dapat dijadikan acuan untuk
menyeberang adalah 20-30 detik (LaPlante and Kaeser 2007).
11
Perhitungan mundur (detik) yang ditampilkan pada seven segment
menggunakan algoritme jam digital yang menggunakan sarana timer yang
ditimbulkan oleh interupsi, ditunjukkan pada Gambar 12. Mikrokontroler jenis
89x52 mempunyai 3 perangkat timer/ counter, yaitu Timer 0, Timer 1, dan Timer
2. Perangkat timer/ counter tersebut dapat diakses dengan menggunakan register
khusus yang tersimpan dalam SFR (Special Function Register). Dalam mengatur
kerja timer/ counter tersebut digunakan 2 register tambahan yang dipakai bersama
oleh Timer 0 dan Timer 1. Register tambahan tersebut adalah register TCON
(Timer Control Register) dan register TMOD (Timer Mode Register).
Pencacah biner timer/ counter 89x52 merupakan pencacah biner 16 bit naik
yang mencacah dari 0000h sampai FFFFh. Saat kondisi pencacah berubah dari
FFFFh kembali ke 0000h akan timbul sinyal limpahan (overflow). TL0 (Timer 0
low byte), TH0 (Timer 0 high byte), TL1 (Timer 1 low byte), dan TH1 (Timer 1
high byte) merupakan SFR yang dipakai untuk membentuk pencacah biner Timer
0 dan Timer 1 dengan indikator limpahan pada TF0 dan TF1. Timer 2
menggunakan register TL2, TH2, RCAP2L dan RCAP2H serta indikator
limpahan TF2.
Jumlah ruang untuk pencacahan ditentukan oleh mode kerja timer sebagai
berikut:
1 Mode 0 mengaktifkan timer sebagai pencacah 13 bit dan diaktifkan dengan
mengeset bit M1 = 0 dan bit M0 = 0 pada SFR TMOD. Pada mode ini, TLx
hanya akan menghitung hingga 5 bit, sedangkan THx akan menghitung hingga
8 bit. Timer pencacah 13 bit akan overflow setelah 213 atau 8192 hitungan.
2 Mode 1 mengaktifkan timer sebagai pencacah 16 bit dan diaktifkan dengan
mengeset bit M1 = 0 dan bit M0 = 1 pada SFR TMOD. Pada mode ini, TLx
dan Thx difungsikan secara penuh (masing-maisng 8 bit). Timer pencacah 16
bit akan overflow setelah 216 atau 65536 hitungan.
3 Mode 2 mengaktifkan timer sebagai pencacah 8 bit dengan autoreload. Mode
ini diaktifkan dengan mengeset bit M1 = 1 dan bit M0 = 0 pada SFR TMOD.
TLx digunakan sebagai register pencacah, sementara THx diisi dengan data
yang akan di-“reload”-kan jika TLx telah overflow. Jumlah hitungan
pencacahan yang dilakukan adalah 28 atau 256 dikurangi nilai yang tersimpan
pada THx.
4 Mode 3 hanya berlaku pada timer 0 yang akan memfungsikan TL0 dan TH0
sebagai register 8 bit yang memiliki fungsi berbeda satu sama lain. TL0
dikendalikan oleh bit-bit TMOD dan TCON untuk timer 0, sedangkan TH0
diatur oleh bit-bit TCON untuk timer 1. Mode ini diaktifkan dengan mengeset
bit M1 = 1 dan bit M0 = 1 pada SFR TMOD.
Prototipe ini menggunakan Timer 0 yang akan diakses melalui register TL0
dan TH0. Indikator limpahan memakai TF0 untuk membangkitkan clock jam
digital yang akan ditampilkan pada seven segmen, bagian detik puluhan (display
6), dan detik satuan (display 7). Mode timer yang digunakan adalah mode 1 (timer
16 bit). Clock yang digunakan untuk timer adalah clock internal mikrokontroler,
yaitu 12 MHz sehingga frekuensi pencacah adalah 12 MHz/12 = 1 MHz. Pembagi
12 ini diperlukan karena 1 machine cycle mikrokontroler MCS-51 setara dengan
12 clock cycle. Hal ini berarti bahwa satu hitungan timer setara dengan 1
mikrodetik.
12
Timer akan overflow setiap 65536 hitungan. Clock internal mikrokontroler
adalah 12 MHz, maka satu hitungan setara dengan 1 mikrodetik. Dengan kata lain,
timer akan overflow setiap 65536 mikrodetik. Hitungan timer yang akan
digunakan setiap kali overflow adalah 50000 mikrodetik atau 0.05 detik dan 20
kali overflow akan setara dengan 1 detik. Angka 50000 dipilih agar hitungan
menjadi bulat dan mudah dikonversi menjadi satuan detik. Untuk membangkitkan
interupsi timer setiap 50000 mikrodetik, maka data awal yang harus diisikan pada
register timer adalah sebagai berikut:
65536 - 50000 = 15536 (desimal) atau 3CB0h
Nilai 3CB0h akan diberikan sebagai nilai awal timer dengan aturan data 3Ch
diisikan sebagai nilai awal register TH0 dan B0h diisikan sebagai nilai awal
register TL0. Dengan demikian, interupsi TF0 akan segera dibangkitkan setiap
50000 mikrodetik atau 0,05 detik.
Berdasarkan perhitungan di atas, penggunaan mode 1 lebih mudah
dibanding mode lainnya. Misalnya, perhitungan dengan menggunakan mode 3.
Mode 3 sebagai register 8 bit memiliki nilai overflow setiap 28 atau 255
mikrodetik. Untuk menghasilkan 1 detik, maka timer dengan mode 3 akan
overflow sebanyak 1 detik/ 255 mikrodetik. Nilai dari hasil bagi tersebut tidak
bulat sehingga untuk mengkonversikannya pada bilangan hexadesimal cukup sulit.
Oleh karena itu, dipilihlah angka 250 sebagai nilai untuk overflow. Untuk
membangkitkan interupsi timer setiap 250 mikrodetik, data awal yang harus
diisikan pada register timer adalah sebagai berikut:
255-250 = 5 (desimal) atau 5h
Nilai 5h akan diberikan sebagai nilai awal timer pada register TL0. Timer dengan
nilai overflow 250 mikrodetik akan menghasilkan 1 detik setelah 4000 kali
overflow. Satu detik diperoleh setelah 4000 kali akan membutuhkan daya yang
besar dibandingkan dengan overflow setelah 20 kali. Oleh karena itu, penggunaan
timer 0 dengan mode 1 lebih menguntungkan untuk perhitungan interupsi pada
prototipe.
Mikrokontroler keluarga MCS51 menyediakan fasilitas untuk 5 jenis
sumber interupsi yaitu 2 sumber interupsi eksternal (melalui pin INT0 dan INT1
pada mikrokontroler) dan 3 sumber interupsi internal (Timer 0, Timer 1, dan Port
Serial). Agar interupsi dapat dilayani maka instruksi Assembly interrupt routine
harus ditempatkan pada alamat vektor tertentu seperti pada Tabel 2, sesuai dengan
sumber interupsi yang akan digunakan. Prototipe ini menggunakan interupsi
internal Timer 0 (alamat 000Bh).
Tabel 2 Alamat vektor interupsi
Source
Vector Address
IE0
TF0
IE1
TF1
RI + TI
0003h
000Bh
0013h
001Bh
0023h
13
Gambar 12 Algoritme interupsi Timer 0
Implementasi Algoritme
Algoritme yang telah dirancang diimplementasikan dalam bahasa Assembly
8051. Diagram alir untuk subrutin interupsi dan seven segment dapat dilihat pada
Lampiran 4. Listing program Assembly untuk prototipe dengan push-button dapat
dilihat pada Lampiran 5. Listing program Assembly untuk prototipe dengan
keypad dapat dilihat pada Lampiran 6.
Evaluasi
Evaluasi kedua prototipe ditunjukkan pada Tabel 3. Prototipe yang
dikembangkan berhasil memenuhi seluruh persyaratan/ fungsi yang diinginkan.
Namun, prototipe pertama masih memiliki kekurangan, yaitu pemilihan waktu
menyeberang belum fleksibel. Misalnya waktu yang diinginkan adalah 20, tetapi
tombol yang di tekan adalah tombol 30 (salah menekan push-button), maka untuk
menampilkan angka 20, tombol 40, 50, 60, dan 10 harus ditekan terlebih dahulu.
Perbandingan kedua prototipe yang telah berhasil dikembangkan dapat
dilhat pada Tabel 4. Prototipe dengan push-button kurang fleksibel dalam
penentuan waktu menyeberang, hanya 10, 20, 30, 40, 50, dan 60 detik. Sedangkan
prototipe dengan keypad dapat dipilih pada rentang nilai 0-99. Tetapi prototipe
dengan push-button lebih mudah dalam penggunaannya dibandingkan dengan
prototipe dengan keypad. Dalam implementasi, jika terjadi kerusakan pada pushbutton maka cukup dengan mengganti push-button yang rusak saja. Sedangkan
keypad, apabila 1 keypad mengalami kerusakan maka keseluruhan keypad harus
diganti karena keypad bersifat paralel. Koreksi kesalahan dalam pemilihan waktu
14
menyeberang dengan push-button lebih sulit dilakukan daripada prototipe dengan
keypad karena pada keypad ada tombol yang digunakan untuk menghapus.
Tabel 3 Evaluasi prototipe
No
Fungsionalitas
Hasil
1
2
Kondisi default dapat ditampilkan
Kondisi menyeberang dapat diinisiasi dengan tombol yang
terdiri atas push button dan keypad
Waktu hitung mundur dapat ditampilkan pada seven
segment
Setelah waktu habis, lampu lalu lintas kembali ke kondisi
default
Tombol tidak dapat ditekan kembali sebelum jeda waktu 5
menit
Prototipe akan memberikan waktu hitung mundur selama x
detik. Nilai x yang tersimpan pada masing-masing push
button adalah 10, 20, 30, 40, 50, dan 60 detik. Nilai x yang
dapat dihasilkan dengan keypad adalah 0-99 detik
Transisi lampu merah menjadi hijau dan sebaliknya
menggunakan lampu kuning
√
3
4
5
6
7
√
√
√
√
√
√
Tabel 4 Perbandingan kedua prototipe yang dikembangkan
No
1
2
3
4
Perbandingan
Fleksibilitas penentuan waktu
menyeberang
Kemudahan penggunaan
Pemeliharaan
Koreksi kesalahan penekanan
Prototipe dengan
push-button
Prototipe
dengan keypad
Kurang fleksibel
Lebih fleksibel
Lebih mudah
Lebih mudah
sulit
Lebih kompleks
Lebih kompleks
mudah
SIMPULAN DAN SARAN
Simpulan
Prototipe lampu lalu lintas bagi pejalan kaki berbasis mikrokontroler yang
diinisiasi dengan tombol telah berhasil dikembangkan pada 2 prototipe. Kedua
prototipe yang telah berhasil dibuat dengan menggunakan push-button dan
menggunakan keypad. Kedua prototipe telah memenuhi ke-7 fungsi yang
diinginkan. Prototipe dengan push-button lebih mudah dalam penggunaan dan
pemeliharaannya. Sedangkan prototipe dengan keypad memiliki fleksibilitas
dalam penentuan waktu menyeberang dan koreksi kesalahan penekanan lebih
mudah.
15
Saran
Prototipe dengan push-button masih memiliki kekurangan dalam hal koreksi
kesalahan penekanan. Pada penelitian selanjutnya, algoritme scan push-button
dapat diubah agar penekanan push-button tidak perlu berurutan. Kekurangan
lainnya adalah jeda waktu penekanan tombol tidak dapat diubah selain melalui
pemrograman ulang. Pada implementasinya dapat ditambahkan modul CCTV
untuk menangkap gambar traffic kendaraan dan penyeberang jalan. Gambar ini
dapat diolah dengan image processing untuk menentukan jumlah kendaraan dan
penyeberang jalan. Informasi ini dapat digunakan untuk menentukan jeda waktu
penekanan tombol berikutnya.
DAFTAR PUSTAKA
Bang KL. 1997. Final Report: Indonesia Highway Capacity Manual and Software
(Kaji). Indonesian Highway Capacity Manual Project. 1997 Feb 25; Bandung,
Jakarta. Bandung (ID).
Hamirani NS, Shaikh AA, Memon PM, Khatri YA. 2012. Wireless dual purpose
propeller clock display. International Journal of Engineering and Technology.
2(3): 553-556.
Indonesia. Undang-Undang tentang Lalu Lintas dan Angkutan Jalan. UndangUndang Nomor 22 Tahun 2009 Pasal 130 ayat 2
Jatmiko W, Arfan A, Krisnadhi AA, Kusumoputro B, Takagawa I, Sekiyama K,
Fukuda T. 2009. Traffic signal control modification based on self-organizing in
Indonesia. Di dalam: International Symposium on Micro-NanoMechatronics
and Human Science. 2009 Nov 9-11. Nagoya, Jepang. hlm 598-601.
LaPlante J., Kaeser TP. 2007. A history of pedestrian signal walking speed
assumptions. Di dalam: 3rd Urban Street Symposium; 2007 Jun 24-27; Seattle,
Amerika Serikat. hlm 1-8.
Suyatno P, Istofa, Yuniarsari L. 2007. Rekayasa sistem pengatur parameter
pesawat sinar-X diagnostik berbasis mikrokontroler keluarga MCS 51. Seminar
Nasional III SDM Teknologi Nuklir; 2007 Nov 21-22; Yogyakarta, Indonesia.
Yogyakarta (ID). hlm 337-344.
16
Lampiran 1 Rangkaian praktikum yang digunakan
Lampiran 2 Skematik antarmuka prototipe dengan push button
17
Lampiran 3 Skematik antarmuka prototipe dengan keypad
18
Lampiran 4 Diagram alir subrutin interupsi dan subrutin seven segment
Lampiran 5 Listing program prototipe dengan push-button
;program untuk perubahan lampu oleh tombol P2.1 sudah benar
;pada program ini waktu tunggu dibuat 5s
detik equ 30h
detikpuluhan equ 31h
detiksatuan equ 32h
counter20 equ 33h
Org 0h
Start0:
sjmp Start
Org 0bh
Ljmp Interrupt_Timer0
Start:
Mov P1,#11110011b
loop:
19
jb P2.0,loop1
mov R7,#10
call delay_500ms
disp:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.0,run
jb P2.1, disp
loop1:
jb P2.1,loop2
mov R7,#20
call delay_500ms
disp1:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.1,run
jb P2.2,disp1
loop2:
jb P2.2,loop3
mov R7,#30
call delay_500ms
disp2:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.2,run
jb P2.3,disp2
loop3:
jb P2.3,loop4
mov R7,#40
call delay_500ms
disp3:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.3,run
jb P2.4,disp3
loop4:
jb P2.4,loop5
mov R7,#50
call delay_500ms
disp4:
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.4,run
jb P2.5,disp4
loop5:
jb P2.5,loop
mov R7,#60
call delay_500ms
disp5:
20
MOV detik, R7
CALL Update_tombol
call ClockDisplay_tombol
jnb P2.5,run
jb P2.0,disp5
jmp loop
run:
call delay_500ms
jmp kuning_tombol
kuning_tombol:
Mov P1,#11101101b
call delay_1s
Mov P1,#11011110b
call tunggu_tombol
;
kuning2_tombol:
call delay_500ms
Mov P1,#11101101b
call delay_1s
Mov P1,#11110011b
call delay_1s
ulang_tombol:
Mov P1,#11110011b
call delay_60s
jmp Start0
tunggu_tombol:
mov Counter20,#20
mov detik,R7
call Update_tombol
call ClockDisplay_tombol
call DoClock_tombol
call InitTimer
call interrupt_timer0
Forever_tombol:
call ClockDisplay_tombol
sjmp Forever_tombol
Interrupt_Timer0:
mov tl0,#0b0h
mov th0,#03ch
djnz Counter20, EndInterrupt
mov Counter20,#20
call DoClock_tombol
EndInterrupt:
reti
;
DoClock_tombol:
dec detik
mov A,detik
cjne A,#00h,Update_tombol
call Update_tombol;
call ClockDisplay_tombol
jmp kuning2_tombol
Update_tombol:
mov A,detik
mov B,#10
21
DIV AB
mov detikpuluhan,A
mov detiksatuan,B
ret
;
ClockDisplay_tombol:
Mov DPTR,#Decoder7Segmen
mov A,detikpuluhan
Movc A,@A+DPTR
mov P0,A
;
clr P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
Mov DPTR,#Decoder7Segmen
mov A,detiksatuan
Movc A,@A+DPTR
mov P0,A
;
Setb P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
ret
;
InitTimer:
mov TMOD,#00000001b
mov tl0,#0b0h
mov th0,#03ch
setb ET0 ;Enable Timer 0 Interrupt
setb EA ;Master Interrupt Enable
setb TR0 ;Clock start running
ret
;
;subroutine delay time
delay:
mov R1,#2
del1:
mov R2,#255
del2:
djnz R2,del2
djnz R1,del1
ret
; L O O K U P T A B L E
; Decode to Seven Segmen -> g f e d c b a
Decoder7segmen:
DB 11000000b,11111001b,10100100b,10110000b,10011001b
DB 10010010b,10000010b,11111000b,10000000b,10010000b
;
delay_60s:
; START: Wait loop, time: 60 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3, R4
MOV
R4, #02Ah
MOV
R3, #083h
MOV
R2, #006h
22
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
DJNZ
; Rest: 0
; END: Wait
ret
R1, #0B5h
R0, #003h
R0,
R1,
R2,
R3,
R4,
R2,
R1,
R0,
$
$-5
$-9
$-13
$-17
#002h
#0A0h
#0A1h
R0,
R1,
R2,
R2,
R1,
R0,
$
$-5
$-9
#008h
#0FCh
#005h
R0,
R1,
R2,
R0,
R0,
$
$-5
$-9
#011h
$
loop
delay_1s:
; START: Wait loop, time: 1 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3
MOV
R3, #003h
MOV
R2, #0D2h
MOV
R1, #024h
MOV
R0, #014h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
DJNZ R3, $-13
MOV
R0, #059h
DJNZ R0, $
NOP
; Rest: 0
; END: Wait loop
ret
delay_500ms:
; START: Wait loop, time: 500 ms
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2
MOV
R2, #004h
MOV
R1, #0FAh
MOV
R0, #0F8h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
23
; Rest: -13.0 us
ret
End
Lampiran 6 Listing program prototipe dengan keypad
col4 bit P2.7
col3 bit P2.6
col2 bit P2.5
col1 bit P2.4
row1 bit P2.0
row2 bit P2.1
row3 bit P2.2
row4 bit P2.3
counter20 equ 30h
detik equ 31h
output equ 32h
keydata equ 33h
keybounc equ 34h
check equ 40h
satuan equ 41h
puluhan equ 42h
keyport equ P2
Org 0h
Start0:
sjmp Start1 ;lompat ke Start
Org 0bh ;mulai program dari alamat
Ljmp Interrupt_Timer0
Start1:
MOV P2,#11111111b ;isi P2 dengan 11111111
mov keydata,#00h
mov output,#00h
CALL CLEAR
start:
Mov 90h,#11110011b
CALL keypad4x4 ;Calling subroutine keypad4x4
MOV A,keydata ;Copy keydata ke A
CALL count0
call bin2dec
CALL display2sevensegmen ;
SJMP start
tunggu:
Mov P1,#11101101b
call delay_1s
Mov P1,#11011110b
call delay_1s
mov Counter20,#20
mov detik,output
call Update
call ClockDisplay
call DoClock
call InitTimer ;memanggil InitTimer
call interrupt_timer0
Forever:
call ClockDisplay
24
sjmp Forever ;
Interrupt_Timer0:
mov tl0,#0b0h
mov th0,#03ch
djnz Counter20, EndInterrupt
mov Counter20,#20
call DoClock
EndInterrupt:
reti
;
DoClock:
dec detik
;mengurangi 1 nilai detik
mov A,detik
;memindahkan nilai detik ke A
cjne A,#0h,Update
call Update;
call ClockDisplay
jmp kuning2
Update:
mov A,detik
mov B,#10
DIV AB
mov puluhan,A
mov satuan,B
ret
;
ClockDisplay:
Mov DPTR,#data7segmen
mov A,puluhan
Movc A,@A+DPTR
mov P0,A
;
clr P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
Mov DPTR,#data7segmen
mov A,satuan
Movc A,@A+DPTR
mov P0,A
Setb P3.5 ;
Setb P3.6
Setb P3.7
call delay
;
ret
InitTimer:
mov TMOD,#00000001b
mov tl0,#0b0h
mov th0,#03ch
setb ET0 ;Enable Timer 0 Interrupt
setb EA ;Master Interrupt Enable
setb TR0 ;Clock start running
ret
;
;subroutine delay time
delay:
mov R1,#2
25
del1:
mov R2,#255
del2:
djnz R2,del2
djnz R1,del1
ret
kuning2:
call delay_500ms
Mov P1,#11101101b
call delay_1s
Mov P1,#11110011b
call delay_1s
ulang_tombol:
Mov P1,#11110011b
call delay_60s
jmp Start0
mundur:
mov a, output
mov b,#10d
div ab
mov b,#0
mov output,a
mov keydata, a
dec r7
MOV R5,#0
ret
COUNT0:
CJNE R7, #00, COUNT1
MOV A, OUTPUT
RET
COUNT1:
CJNE r7, #01, COUNT2
MOV R5, A
MOV OUTPUT,A
RET
COUNT2:
MOV R4,A
MOV A,R5
MOV B,#10D
MUL AB
MOV r6,b
mov b,#0
ADD A,R4
MOV R4,A
MOV OUTPUT,A
RET
clear:
MOV A,#00
MOV B,#00
MOV R1,#00
MOV R2,#00
MOV R3,#00
MOV R4,#00
MOV R5,#00
MOV R6,#00
MOV R7,#00
MOV KEYDATA,#00
26
mov
mov
clr
RET
Bin2Dec:
mov
div
mov
mov
ret
puluhan,#0
satuan,#0
c
b,#10d
ab
puluhan,a
satuan,b
Keypad4x4:
MOV keybounc,#1 ;keybounc = (default)50
MOV keyport,#0FFh ;keyport=P2= FF
CLR col4 ;col4 = 0
keyC:
jb row2,keyclr
DJNZ keybounc, keyc
call delaytombol
call mundur
ret
keyCLR:
jb row1,keyENT ; Key CLR
DJNZ keybounc,keyCLR
call delaytombol
mov output,#00h
CALL clear
RET
keyENT:
setb col4
CLR col3
jb row4,key3
DJNZ keybounc,keyENT
call delaytombol
call tunggu
RET
key3:
jb row1,key6
DJNZ keybounc,key3 ; Key ENT
call delaytombol
MOV keydata,#03D ;Data Output
INC R7
RET
key6:
jb row2,key9
DJNZ keybounc,key6 ; Key 9
call delaytombol
MOV keydata,#06D ;Data Output
inc R7
RET
key9:
jb row3,key0
DJNZ keybounc,key9 ; Key 6
call delaytombol
MOV keydata,#09D ;Data Output
inc R7
RET
key0:
setb col3
27
CLR col2
jb row4,key2
DJNZ keybounc,key0
call delaytombol
MOV keydata,#00D ;Data Output
inc R7
RET
key2:
jb row1,key5
DJNZ keybounc,key2
call delaytombol
MOV keydata,#02D ;Data Output
inc R7
RET
key5:
jb row2,key8
DJNZ keybounc,key5
call delaytombol
MOV keydata,#05D ;Data Output
inc R7
RET
key8:
jb row3,keyCAN
DJNZ keybounc,key8
call delaytombol
MOV keydata,#08D ; Data Output
inc R7
RET
keyCAN:
setb col2
CLR col1
jb row4,key1
DJNZ keybounc,keyCAN
call delaytombol
RET
key1:
jb row1,key4
DJNZ keybounc,key1
MOV keydata,#01D ;Data Output
call delaytombol
inc R7
RET
key4:
jb row2,key7
DJNZ keybounc,key4
call delaytombol
MOV keydata,#04D ;Data Output
inc R7
RET
key7:
jb row3,Nokey
DJNZ keybounc,key7
call delaytombol
MOV keydata,#07D ;Data Output
inc R7
RET
28
Nokey:
RET
Display2SevenSegmen:
mov A,puluhan
mov DPTR, #data7segmen
movc A, @A+DPTR
mov P0,A
;
clr P3.5 ;untuk kit praktikum: clr P3.5
setb P3.6 ;untuk kit praktikum: Setb P3.6
SETB P3.7
;untuk kit praktikum: Setb P3.7
call delay;delaydisplay
;
mov A,satuan
mov DPTR, #data7segmen
movc A, @A+DPTR
mov P0,A
;
setb P3.5 ;untuk kit praktikum: Setb P3.5
setb P3.6 ;untuk kit praktikum: Setb P3.6
setb P3.7 ;untuk kit praktikum: Setb P3.7
call delay;delaydisplay
ret
delaydisplay:
MOV
R1,
MOV
R0,
NOP
DJNZ R0,
DJNZ R1,
NOP
NOP
NOP
ret
delaytombol:
MOV
R2,
MOV
R1,
MOV
R0,
NOP
DJNZ R0,
DJNZ R1,
DJNZ R2,
ret
#002h
#0F7h
$
$-5
#004h
#0FAh
#050h
$
$-5
$-9
delay_60s:
; START: Wait loop, time: 60 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3, R4
MOV
R4, #02Ah
MOV
R3, #083h
MOV
R2, #006h
MOV
R1, #0B5h
MOV
R0, #003h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
29
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
MOV
MOV
NOP
DJNZ
DJNZ
DJNZ
MOV
DJNZ
; Rest: 0
ret
R3,
R4,
R2,
R1,
R0,
$-13
$-17
#002h
#0A0h
#0A1h
R0,
R1,
R2,
R2,
R1,
R0,
$
$-5
$-9
#008h
#0FCh
#005h
R0,
R1,
R2,
R0,
R0,
$
$-5
$-9
#011h
$
delay_1s:
; START: Wait loop, time: 1 s
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2, R3
MOV
R3, #003h
MOV
R2, #0D2h
MOV
R1, #024h
MOV
R0, #014h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
DJNZ R3, $-13
MOV
R0, #059h
DJNZ R0, $
NOP
; Rest: 0
ret
delay_500ms:
; START: Wait loop, time: 500 ms
; Clock: 12000.0 kHz (12 / MC)
; Used registers: R0, R1, R2
MOV
R2, #004h
MOV
R1, #0FAh
MOV
R0, #0F8h
NOP
DJNZ R0, $
DJNZ R1, $-5
DJNZ R2, $-9
; Rest: -13.0 us
ret
data7segmen:
db 11000000b,11111001b,10100100b,10110000b,10011001b
db 10010010b,10000010b,11111000b,10000000b,10010000b
end
30
RIWAYAT HIDUP
Penulis dilahirkan di Padangsidimpuan pada tanggal 8 Maret 1989 dari
almarhum ibu Ernata boru Siregar dan bapak Mangapul Adil Situmorang. Penulis
merupakan anak ke-4 dari 5 bersaudara. Pada tahun 2007, penulis lulus dari
Sekolah Menengah Atas (SMA) Negeri 4 Padangsidimpuan dan pada tahun yang
sama diterima di Diploma Universitas Sumatera Utara (USU) Keahlian Ilmu
Komputer. Pada tahun 2010 penulis lulus dari Diploma USU dan melanjutkan
pendidikan di Program Alih Jenis Ilmu Komputer, Fakultas Matematika dan Ilmu
Pengetahuan Alam, IPB.