• Tidak ada hasil yang ditemukan

PENGEMBANGAN PROTOTIPE LAMPU LALU LINTAS PEJALAN KAKI BERBASIS MIKROKONTROLER MCS-51 YANG DIINISIASI DENGAN TOMBOL IRENE PRICELLA SITUMORANG

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENGEMBANGAN PROTOTIPE LAMPU LALU LINTAS PEJALAN KAKI BERBASIS MIKROKONTROLER MCS-51 YANG DIINISIASI DENGAN TOMBOL IRENE PRICELLA SITUMORANG"

Copied!
41
0
0

Teks penuh

(1)

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

(2)
(3)

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

(4)

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 push-button, 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

(5)

Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer

pada

Departemen Ilmu Komputer

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

(6)
(7)

Judul Skripsi : Pengembangan Prototipe Lampu Lalu Lintas Pejalan Kaki Berbasis Mikrokontroler MCS-51 yang Diinisiasi dengan Tombol

Nama : Irene Pricella Situmorang

N1M : G64104038

Disetujui oleh

Karlisa Priandana, ST M Eng Pembimbing L

o MSiMKom

(8)

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

(9)

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

(10)

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

(11)

DAFTAR TABEL

1 Tabel Kebenaran 74LS138 6

2 Alamat vektor interupsi 12

3 Evaluasi prototipe 14

4 Perbandingan kedua prototipe yang dikembangkan 14

DAFTAR GAMBAR

1 Diagram alur metode penelitian 3

2 Mikrokontroler 89x52 merupakan keluarga MCS-51 4

3 Konfigurasi pin MCS-51 5

4 Seven segment 5

5 Rangkaian decoder 74LS138 dengan mikrokontroler dan 7-Segment 6

6 Skema rangkaian antarmuka push-button 6

7 In-System Programming (ISP) 7

8 Dua set lampu lalu lintas 7

9 Rangkaian dasar keypad 4x4 7

10 Algoritme dengan push-button 10

11 Algoritme dengan keypad 10

12 Algoritme interupsi Timer 0 13

DAFTAR LAMPIRAN

1 Rangkaian praktikum yang digunakan 16

2 Skematik antarmuka prototipe dengan push button 16

3 Skematik antarmuka prototipe dengan keypad 17

4 Diagram alir subrutin interupsi dan subrutin seven segment 18

5 Listing program prototipe dengan push-button 18

(12)

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 MCS-51yang banyak dijumpai di pasaran. Kelebihan mikrokontroler ini yaitu memiliki fitur yang praktis dan ukuran memori yang cukup besar (Suyatno et al. 2007).

(13)

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 push-button 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.

(14)

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.

(15)

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.

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.

Gambar 2 Mikrokontroler 89x52 merupakan keluarga MCS-51

(16)

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.

Komponen pendukung lainnya yang digunakan pada penelitian ini ialah dapat seven segment (Gambar 4) yang digunakan untuk menampilkan waktu hitung mundur dalam satuan detik.

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.

Gambar 3 Konfigurasi pin MCS-51

(17)

6

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.

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.

Gambar 5 Rangkaian decoder 74LS138 dengan mikrokontroler dan 7-Segment

Tabel 1 Tabel Kebenaran 74LS138

SELEKTOR ENABLE OUTPUT C B A G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 P3.7 P3.6 P3.5 VCC EN EN 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0

(18)

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.

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.

(19)

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.

(20)

9

HASIL DAN PEMBAHASAN

Rancangan Fungsi Prototipe Fungsi prototipe yang dikembangkan adalah:

1 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.

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 push-button 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.

(21)

10

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).

Keterangan gambar: A= Pengemudi kendaraan B= Pejalan kaki

x= 00-99

Gambar 11 Algoritme dengan keypad

Keterangan gambar: A= Pengemudi kendaraan B= Pejalan kaki

x= 10, 20, 30, 40, 50, 60

Gambar 10 Algoritme dengan push-button

(22)

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.

(23)

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 0003h

TF0 000Bh

IE1 0013h

TF1 001Bh

(24)

13

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 push-button maka cukup dengan mengganti push-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

(25)

14

menyeberang dengan push-button lebih sulit dilakukan daripada prototipe dengan keypad karena pada keypad ada tombol yang digunakan untuk menghapus.

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.

Tabel 3 Evaluasi prototipe

No Fungsionalitas Hasil

1 Kondisi default dapat ditampilkan

2 Kondisi menyeberang dapat diinisiasi dengan tombol yang

terdiri atas push button dan keypad

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. Nilai x yang dapat dihasilkan dengan keypad adalah 0-99 detik

7 Transisi lampu merah menjadi hijau dan sebaliknya

menggunakan lampu kuning √

Tabel 4 Perbandingan kedua prototipe yang dikembangkan No Perbandingan Prototipe dengan

push-button

Prototipe dengan keypad 1 Fleksibilitas penentuan waktu

menyeberang Kurang fleksibel Lebih fleksibel 2 Kemudahan penggunaan Lebih mudah Lebih kompleks

3 Pemeliharaan Lebih mudah Lebih kompleks

(26)

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 tentang Lalu Lintas dan Angkutan Jalan. Undang-Undang 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.

(27)

16

Lampiran 1 Rangkaian praktikum yang digunakan

(28)

17 Lampiran 3 Skematik antarmuka prototipe dengan keypad

(29)

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:

(30)

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:

(31)

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

(32)

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

(33)

22 MOV R1, #0B5h MOV R0, #003h NOP DJNZ R0, $ DJNZ R1, $-5 DJNZ R2, $-9 DJNZ R3, $-13 DJNZ R4, $-17 MOV R2, #002h MOV R1, #0A0h MOV R0, #0A1h NOP DJNZ R0, $ DJNZ R1, $-5 DJNZ R2, $-9 MOV R2, #008h MOV R1, #0FCh MOV R0, #005h NOP DJNZ R0, $ DJNZ R1, $-5 DJNZ R2, $-9 MOV R0, #011h DJNZ R0, $ ; Rest: 0

; END: Wait loop ret

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

(34)

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:

(35)

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:

(36)

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

(37)

26 mov puluhan,#0 mov satuan,#0 clr c RET Bin2Dec: mov b,#10d div ab mov puluhan,a mov satuan,b ret 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:

(38)

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

(39)

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, #002h MOV R0, #0F7h NOP DJNZ R0, $ DJNZ R1, $-5 NOP NOP NOP ret delaytombol: MOV R2, #004h MOV R1, #0FAh MOV R0, #050h NOP DJNZ R0, $ DJNZ R1, $-5 DJNZ R2, $-9 ret 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

(40)

29 DJNZ R3, $-13 DJNZ R4, $-17 MOV R2, #002h MOV R1, #0A0h MOV R0, #0A1h NOP DJNZ R0, $ DJNZ R1, $-5 DJNZ R2, $-9 MOV R2, #008h MOV R1, #0FCh MOV R0, #005h NOP DJNZ R0, $ DJNZ R1, $-5 DJNZ R2, $-9 MOV R0, #011h DJNZ R0, $ ; Rest: 0 ret 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

(41)

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.

Gambar

Gambar 1  Diagram alur metode penelitian
Gambar  6  merupakan  push-button  yang  digunakan  sebagai  tombol  inisiasi  terhadap  lampu  lalu  lintas
Gambar 8  Dua set lampu lalu
Gambar 11  Algoritme dengan  keypad
+3

Referensi

Dokumen terkait

Meity (2014:3) menyatakan Guru sebagai orang yang paling memahami dalam menghadapi perilaku anak saat proses belajar, kadang anak-anak tidak fokus pada saat

Pembelajaran teknik pemeraan dapat dilakukan dengan menggunakan pendekatan yang dilakukan oleh Boleslavsky melalui Enam Pelajaran Pertama Bagi Aktor aplikasinya

Peraturan Rektor Universitas Negeri Semarang Nomor 9 Tahun 2010 tentang Pedoman Praktik Pengalaman Lapangan Bagi Mahasiswa Program Kependidikan Universitas

Wawancara dilakukan terhadap 7 orang informan yang merupakan bidan dari kelompok responden yang tidak melakukan pijat perineum di Kota Surakarta bertujuan untuk menggali

Menimbang, bahwa Majelis Hakim Tingkat Banding setelah membaca, meneliti dan mempelajari dengan seksama berkas perkara dan surat-surat yang berhubungan dengan perkara ini,

Dengan demikian dapat dipahami kedua penjelasan di atas berbeda, artinya siswa ada yang menerima dan menolak ikut kegiatan pendidikan agama Islam di dalam kelas,

Pada umumnya kesadaran dan pemahaman manusia dapat dipengaruhi dan mempengaruhi budaya; (5).. Budaya dapat diubah. Dengan demikian, Pemerintah daerah Kota Metro