TUGAS AKHIR
Diajukan untuk memenuhi salah satu syarat Memperoleh gelar Sarjana Teknik
Program Studi Teknik elektro
Fakultas Teknik Universitas Sanata Dharma
Disusun oleh : Laurentius Tutus Adhi P.
NIM : 995114036
JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2007
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements To Obtain the Sarjana Teknik Degre
In Electrical Engineering
Compiled By Laurentius Tutus Adhi P.
NIM : 995114036
ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTMENT
ENGINEERINGFACULTY SANATA DHARMA UNIVERSITY
2007
PENAMPIL WAKTU PADA PERTANDINGAN TINJU BERBASIS MIKROKONTROLER AT 89S51 (THE TIME DISPLAY IN BOXING BASED ON
MICROCONTROLLER AT89S51)
Disusun oleh :
Laurentius Tutus Adhi P
NIM : 995114036
Telah disetujui oleh :
Dosen Pembimbing
Martanto, S.T., M.T. tanggal :25 Januari 2007
BERBASIS MIKROKONTROLER AT 89S51 (THE TIME DISPLAY IN BOXING BASED ON
MICROCONTROLLER AT89S51)
Disusun oleh : Laurentius Tutus Adhi P
995114036
Telah dipertahankan di depan Panitia Penguji pada tanggal : 30 Januari 2007
dan dinyatakan memenuhi syarat.
Susunan Panitia Penguji :
Nama Lengkap Tanda Tangan
Ketua : B. Djoko Untoro Suwarno, S.Si., M.T., ...
Sekretaris : Martanto, S.T., M.T., ...
Anggota : Ir. Tjendro ...
Anggota : Pius Yozy Merucahyo, S.T., M.T., ...
Yogyakarta,... Fakultas Teknik
Universitas Sanata Dharma Dekan,
Ir. Greg. Heliarko S.J.,S.S.,B.S.T.,M.A.,M.Sc
ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah”
Yogyakarta,
Laurentius Tutus Adhi P
Skripsi ini dipersembahkan untuk :
¾ Gusti Yesus yang telah memberi saya hidup
¾ Kepada bapak dan ibu serta adikku yang sangat kucintai ¾ Semua teman – teman senasib seperjuangan
alat penampil waktu pada pertandingan tinju yang proses kerjanya dikendalikan oleh mikrokontroler AT89SA51.
Mikrokontroler diprogram sebagai penampil waktu dengan menggunakan bahasa assembly dan menggunakan programmer kit untuk men download program kedalam mikrokontroler tersebut. Sebagai masukan digunakan tiga tombol, yaitu tombol start, reset, dan pause. Alat penampil waktu ini akan mulai bekerja bila tombol start ditekan. Dan sebagai keluaran digunakan LCD 2 x 16 karakter untuk menampilkan waktu setiap ronde dan waktu istirahat. Untuk waktu setiap rondenya telah di setting 3 menit dan untuk waktu istirahat adalah 1 menit. Selain LCD, keluaran juga menggunakan buzzer yang berfungsi sebagai bel tanda waktu pertandingan setiap ronde dimulai ataupun telah habis.
Kata Kunci : penampil waktu ; mikrokontroler AT89S51
Using assembly language, microcontroller as programed as a timer display and the program is download by programmer kit. As input button it use start, reset, and pause button. This timer display will work if the start button is pushed. As an output LCD caracter 2 x 16 is use to show the time for every match period and time out. The time is set 3 minutes for one periode and 1 minutes for time out.
Beside use LCD as an out pat, this display timer also use buzzer that function as bell that rings in the beginning and in the end of each periode.
Key word : timer display, microcontroller AT89S51
dan karunia-Nya sehingga penulis dapat menyelesaikan penulisan skripsi ini tepat
pada waktunya sesuai dengan yang diharapkan. Tugas akhir ini diberi judul :
Penampil Waktu Pada Pertandingan Tinju Berbasis Mikrokontroler AT89S51.
Tugas Akhir ini ditulis bertujuan untuk memenuhi salah satu syarat dalam
memperoleh gelar sarjana teknik pada program studi Teknik Elektro Universitas
Sanata Dharma. Penulisan skripsi ini didasarkan pada hasil-hasil yang penulis peroleh
berdasarkan pada perancangan alat, pembuatan alat, dan sampai pada pengujian alat
dan pengembangannya.
Penulisan tugas ini dapat diselesaikan berkat bantuan, dorongan, dan
bimbingan dari berbagai pihak. Pada kesempatan ini penulis ingin mengucapkan
terima kasih yang sebesar-besarnya kepada :
1. Romo Ir. Greg. Heliarko S.J.,S.S.,B.S.T.,M.A.,M.Sc., selaku Dekan Fakultas
Teknik Universitas Sanata Dharma.
2. Bapak Agustinus Bayu Primawan S.T., M.Eng., selaku Ketua Jurusan Teknik
Elektro Universaitas Sanata Dharma .
3. Bapak Martanto S.T., selaku dosen pembimbing akademik dan dosen
pembimbing tugas akhir yang telah bersedia memberikan ide, saran,
bimbingan, dan waktu untuk penulis dalam menyelesaikan tugas akhir ini.
4. Bapak dan ibu dosen yang telah banyak memberikan pengetahuan dan
bimbingan kepada penulis selama kuliah di Universitas Sanata Dharma.
5. Bapak Djito selaku pimpinan dan seluruh karyawan sekretariat Teknik
Universitas Sanata Dharma.
8. Mbah Marto Kakung dan Puteri yang mau menampung penulis.
9. Bapak dan Ibu Sihono sekeluarga serta Bapak dan Ibu Jumiran sekeluarga
yang mau membimbing dan membantu penulis dan sudah penulis anggap
sebagai orang tua kandung, Terima kasih atas bantuan yang tidak mungkin
bisa penulis lupakan dan tidak mungkin bisa terbalaskan.
10. Teman yang kukasihi dan kusayangi Whenny Evietha Dewi, yang telah
memberikan semangat, perhatian, kasih sayang, yang dengan sabar dan
senantiasa menghibur penulis.
11. Teman – teman mahasiswa Teknik Elektro, khususnya angkatan 99 yang
sudah mendahului maupun seperjuangan dengan penulis: Giri, Boim, Bagus,
Apri, Agung, Adri, Rahmad, Brown, Roni, Ari Inyonx, dan semua saja yang
tidak dapat penulis sebutkan satu persatu.
12. Teman – teman Mudika St. Michael : Kodok, Bongkeng, Cempluk, Kentul,
Joko ( dobel ), Nanang ( dobel ), dll.
13. Semua pihak yang tidak dapat disebutkan satu persatu disini, yang tak perlu
diragukan lagi atas segala kebaikan dan ketulusannya dalam membantu
penulis.
Penulis menyadari bahwa pada penulisan skripsi ini masih banyak terdapat
kesalahan dan kekurangannya, maka dari itu segala kritik dan saran dari berbagai
pihak sangat diharapkan agar penulis dapat lebih maju dan lebih baik.
Akhirnya penulis juga berharap semoga karya tulis ini dapat bermanfaat bagi
pembaca. Dan kiranya Tuhan selalu membalas kebaikan kepada semua yang telah
mendidik mahasiswa yang cemerlang demi kepentingan bersama. Sekian dan terima
kasih.
Yogyakarta, 2 Februari 2007
Penulis,
Laurentius Tutus Adhi P
.
HALAMAN JUDUL ...ii
HALAMAN PERSETUJUAN...iii
HALAMAN PENGESAHAN ...iv
PERNYATAAN KEASLIAN ...v
PERSEMBAHAN...vi
INTISARI ...vii
ABSTRACT...viii
KATA PENGANTAR ...ix
DAFTAR ISI...xii
DAFTAR GAMBAR ...xvi
DAFTAR TABEL...xviii
BAB I PENDAHULUAN...1
1.1 Judul...1
1.2 Latar Belakang Masalah ...1
1.3 Perumusan Masalah ...2
1.4 Batasan Masalah ...3
1.5 Tujuan Penelitian ...3
1.6 Manfaat Penelitian ...3
1.7 Sistematika Penulisan ...3
2.2.1 Organisasi Memori AT89S51 ...7
2.2.1.1 Memori Program...8
2.2.1.2 Memori Data ...8
2.2.2 Register Fungsi Khusus ...9
2.2.3 Timer / Counter...12
2.2.3.1 Register TCON ...12
2.2.3.2 Register TMOD ...13
2.2.3.3 Mode Timer / Counter ...14
2.2.4.Port Masukan / Keluaran ( I/O Port)...16
2.2.5.Sistem Interupsi Mikrokontroler AT89S51 ...18
2.2.5.1. Pengaktifan Interupsi ...18
2.2.5.2. Vektor Interupsi ...19
2.3 LCD ( Liquid Crystal Display ) ...20
2.4. Buzzer ...23
BAB III PERANCANGAN ALAT ...26
3.1 Perancangan Perangkat Keras...27
3.1.1 Saklar Push-Button ...27
3.1.2 Rangkaian Reset Mikrokontroler AT89S51 ...28
3.1.3 Rangkaian Osilator ...30
3.1.4 LCD...30
3.1.5 Buzzer ...31
3.2.1.2.Program Interupsi Timer 0...35
3.2.1.3.Waktu Main dan Istirahat...36
3.2.1.4.Program Interupsi Eksternal 0 ...38
3.2.2.Implementasi Diagram Alir ...39
3.2.2.1.Inisialisasi LCD ...39
3.2.2.2.Menampilkan Karakter Pada LCD...39
3.2.2.3 Program Utama ...42
3.2.2.4.Program Interupsi Timer 0...42
3.2.2.5.Program Eksternal 0...44
BAB IV PENGAMATAN DAN PEMBAHASAN...45
4.1 Cara Kerja Alat ...46
4.2 Pengamatan Waktu ...48
4.2.1.Pengamatan Waktu Tiap Ronde...49
4.2.2.Pengamatan Waktu Istirahat ...50
4.3 Pengamatan Penekanan Tombol ...51
4.3.1.Tombol Start ...51
4.3.2.Tombol Pause...52
4.3.3.Tombol Reset ...52
4.4.Pengamatan Buzzer...53
BAB V KESIMPULAN DAN SARAN ...54
5.1.Kesimpulan ...54
Gambar 2.2 Peta Memori Data ...9
Gambar 2.3 Register Program Status Word...11
Gambar 2.4 Register AUXR1 ...11
Gambar 2.4 Register TCON ...12
Gambar 2.6 Register TMOD...13
Gambar 2.7 Register IE...18
Gambar 2.8 Dimensi Layar LCD...20
Gambar 2.9 Rangkaian Penggerak Buzzer ...24
Gambar 3.1.Diagram Blok Alat Penampil Waktu Tinju...26
Gambar 3.2.Rangkaian Reset dengan Mikrokontroler ...27
Gambar 3.3.Rangkaian Reset AT89S51 ...28
Gambar 3.4.Rangkaian Osilator AT89S51 ...30
Gambar 3.5.Rangkaian LCD dengan Mikrokontroler ...31
Gambar 3.6.Rangkaian Buzzer dengan Mikrokontroler ...31
Gambar 3.7.Diagram Alir Program Utama...35
Gambar 3.8.Diagram Alir Program Interupsi Timer 0 ...36
Gambar 3.9.Diagram Alir Sub Program Waktu Main dan Istirahat ...37
Gambar 3.10.Diagram Alir Program Interupsi Eksternal ...38
Gambar 4.1.Bentuk Alat Penampil Waktu pada Pertandingan tinju ...45
Gambar 4.2 Tampilan Awal LCD...46
Gambar 4.3. Tampilan Setelah Tombol Start Ditekan...47
Gambar 4.4.Tampilan Ronde 01 Selesai...47
Tabel 2.2 Keterangan Register TCON...13
Tabel 2.3 Keterangan Register TMOD...14
Tabel 2.4. Keterangan Kombinasi M0 dan M1 Register TMOD . ...14
Tabel 2.5. Fungsi Alternatif Port 1 ...17
Tabel 2.6.Fungsi Alternatif Port 3 ...17
Tabel 2.7.Register IE ...19
Tabel 2.8.Daftar Vektor Interupsi...19
Tabel 2.9.Penomoran Pin LCD...22
Tabel 4.1.Data Pengamatan Waktu Tiap Ronde...49
Tabel 4.2.Data Pengamatan Waktu Istirahat...50
Tabel 4.3. Data Pengamatan Penekanan Tombol………...53
1.1Judul
Alat Penampil Waktu Pada Pertandingan Tinju Berbasis Mikrokontroler
AT89S51.
1.2Latar Belakang Masalah
Perkembangan teknologi yang sangat pesat saat ini telah banyak membuat
perubahan dalam kehidupan manusia sehari–hari. Bahkan telah banyak ditemukan
berbagai macam fasilitas dan kemudahan yang diberikan oleh kemajuan
teknologi, sehingga hal ini membuat manusia merasa sangat membutuhkan
teknologi dalam kehidupannya. Hal–hal yang sebelumnya sulit dan seakan tidak
dapat dilakukan, kini dengan kemajuan teknologi hal tersebut dapat dilakukan
dengan cukup mudah.
Perkembangan teknologi saat ini hampir mencakup di segala bidang,
seperti bidang komunikasi, kesehatan, keamanan, transportasi, bahkan juga olah
raga. Salah satu perkembangan teknologi yang cukup banyak digunakan oleh
manusia dalam kehidupannya sehari–hari ialah peralatan dengan menggunakan
sistem mikrokontroler. Dalam pembahasan kali ini akan dibahas aplikasi
teknologi mikrokontroler dalam bidang olah raga, khususnya olah raga tinju.
Dalam pertandingan tinju, untuk mengontrol waktu yang berjalan yang
beracuan pada stopwatch dan membunyikan bel sebagai tanda untuk dimulai
ataupun berakhirnya setiap ronde diperlukan operator atau petugas. Dengan
mikrokontroler beberapa bagian dari alat itu yang tidak terintegrasi seperti
stopwatch, bel tanda dapat diintegrasikan kedalam alat. Stopwatch sendiri dapat
dirancang dengan mikrokontroler. Mikrokontroler juga dapat mengendalikan
buzzer yang dapat menghasilkan suara, sehingga suara tersebut dapat digunakan
sebagai bel. Selain itu dengan menggunakan mikrokontroler, kita dapat
menampilkan ronde dan waktu yang sedang berjalan pada sebuah LCD.
1.3Perumusan Masalah
Yang menjadi pokok permasalahan dalam penelitian ini adalah bagaimana
menggantikan peran operator atau petugas yang bertugas untuk membunyikan bel
dan menjalankan waktu. Kemudian peran dari operator dalam mengendalikan
waktu dan bel dalam pertandingan tinju ini akan digantikan dengan
mikrokontroler AT89S51. Pada alat penampil waktu pada pertandingan tinju ini
menggunakan IC AT89S51 yang digunakan sebagai pengendali utamanya, dimana
waktu akan berjalan secara mundur. Kemudian waktu tersebut akan ditampilkan
pada sebuah LCD dengan jumlah karakter sebanyak 2x16. Selain waktu, LCD juga
akan menampilkan ronde yang sedang berjalan. Sebagai keluaran suara akan
digunakan buzzer yang apabila waktu tersebut telah habis ataupun dimulainya
ronde berikutnya maka buzzer akan berbunyi.
Untuk merealisasikan semua ide tersebut maka dibuat dalam suatu
program dalam bahasa assembly pada komputer yang nantinya akan di download
1.4Batasan Masalah
Batasan yang ditentukan pada perancangan alat penampil waktu pada
pertandingan tinju adalah :
1. Jumlah ronde dalam alat ini terdiri dari 12 ronde
2. Waktu satu ronde berjalan selama 3 menit dan waktu istirahat berjalan 1
menit, dengan tampilan waktu dihitung mundur
1.5Tujuan Penelitian
Tujuan yang ingin dicapai dalam penelitian ini adalah :
1. Merancang dan membuat suatu penampil waktu pada pertandingan tinju
dengan menggunakan mikrokontroler AT89S51.
2. Mempelajari dan memanfaatkan mikrokontroler AT89S51 dalam
penerapannya di bidang olah raga.
1.6Manfaat Penelitian
Manfaat dari penelitian ini adalah:
1. Dapat mempermudah dalam menghitung waktu pada pertandingan tinju.
2. Dapat menghemat tenaga yang dibutuhkan dalam menghitung waktu pada
pertandingan tinju.
1.7.Sistematika Penulisan
BAB I Membahas tentang latar belakang, tujuan, manfaat penelitian, betas
BAB II Membahas dasar teori, untuk memberikan gambaran mengenai
fungsi, cara kerja dan karakteristikdari komponen – komponen
yang digunakan.
BAB III Membahas mengenai perancangan alat, baik hardware maupun
software.
BAB IV Pengamatan dan pengambilan data, serta pembahasannya.
BAB V Kesimpulan dan saran
BAB II
DASAR TEORI
Pada bab ini akan dijelaskan mengenai teori dasar komponen dan
rangkaian, termasuk juga teori dasar yang digunakan untuk merancang perangkat
lunak sebagai pembentuk sistem ‘ Penampil Waktu Pada Pertandingan Tinju
Berbasis Mikrokontroler AT89S51’. Pembentuk sistem terdiri dari:
mikrokontroler AT89S51, pengendali speaker menggunakan transistor, penampil
LCD.
2.1.Tinjauan Umum
Olah raga tinju merupakan olah raga yang cukup digemari oleh banyak
orang, baik di Indonesia maupun di dunia. Setelah olah raga sepak bola tentunya.
Olah raga tinju termasuk olah raga keras, karena olah raga ini mempertontonkan
orang yang saling pukul. Tetapi disamping mengandalkan teknik – teknik
pukulan, olah raga tinju juga membutuhkan strategi yang cukup jitu karena bila
salah strategi atau taktik maka petinju dalam setiap pertandingan hanya akan
membuang – buang tenaga karena asal memukul tanpa strategi atau taktik yang
jelas.
Pertandingan tinju dibagi atau dibedakan dalam beberapa kelas. Kelas –
kelas tersebut dibedakan berdasarkan berat dari petinju. Pembagian kelas dalam
pertandingan tinju adalah :
2. kelas terbang 51 kg
3. kelas bantam 54 kg
4. kelas bulu 57 kg
5. kelas ringan 60 kg
6. kelas welter ringan 63,3 kg
7. kelas welter 67 kg
8. kelas menengah ringan 71 kg
9. kelas menengah 75 kg
10.kelas berat ringan 81 kg
11.kelas berat diatas 81 kg
Sedangkan pertandingan tinju itu sendiri dibedakan menjadi dua ( 2 ), yaitu :
1. amatir
Dilakukan hanya semata – mata demi kesenangan atau hobi, tanpa
menerima bayaran atau hadiah berupa uang ataupun benda berharga
lainnya. Terdiri dari tiga ( 3 ) ataupun empat ( 4 ) ronde. Tiap ronde
berlangsung selama 3 menit dengan waktu istirahat selama 1 menit.
2. profesional
Dilakukan dengan mengharap bayaran uang sebanyak yang telah
dijanjikan dalam kontrak yang telah disepakati. Terdiri dari 7, 12,
ataupun 15 ronde sesuai dengan perjanjian sebelumnya. Untuk tinju
professional, waktu untuk setiap ronde dan waktu istirahatnya sama
dengan tinju amatir yaitu 3 menit untuk waktu setiap rondenya dan 1
Dalam perancangan alat penampil waktu ini digunakan acuan untuk pertandingan
tinju professional yaitu pertandingan tinju dengan 12 ronde.
2.2.Mikrokontroler AT89S51
Mikrokontroler AT89S51 adalah mikrokontroler CMOS 8-bit yang
berkemampuan tinggi dengan 4 Kbytes in-system programmable Flash Memory.
AT89S51 ini dibuat dengan teknologi Atmel, memori non-volatile dan sesuai
dengan standar industri pinout dan instruksi set MCS 51. AT89S51 yang dipakai
memiliki fitur: 4KB In-System Programmable Flash, 128 Bytes RAM, 32 jalur
I/O, dua 16-bit timers / counters, Watchdog Timer, 2 data pointer, 5 vektor dua
level interupsi, serial portfull duplex, osilatoron-chip dan clock circuitry.
2.2.1 Organisasi Memori AT89S51
Mikrokontroler AT89S51 memiliki ruang alamat untuk memori program
dan memori data yang terpisah, seperti terlihat pada gambar 2.1. di bawah. Setiap
memori program dan memori data eksternal dapat dialamati hingga 64 Kbytes.
Pemisahan program dan data memori ini memungkinkan pengaksesan data
memori dengan pengalamatan 8 bit, sehingga dapat langsung disimpan dan
dimanipulasi oleh mikrokontroler dengan kapasitas akses 8 bit. Namun demikian,
untuk pengaksesan data memori dengan alamat 16 bit, harus dilakukan dengan
menggunakan register DPTR (Data Pointer). Program memori hanya dapat
dibaca saja (diletakkan pada ROM / EPROM). Untuk membaca program memori
eksternal, mikrokontroler akan mengirim sinyal PSEN (Program Store Enable).
Sebagai data memori eksternal dapat digunakan RAM eksternal (maksimum 64
Kbyte). Dalam pengaksesannya mikrokontroler akan mengirimkan sinyal RD
(Read, melakukan operasi pembacaan data) dan WR (Write, melakukan operasi
penulisan data).
2.2.1.1 Memori Program
Memori program atau sering disebut dengan flash memory pada
mikrokontroler AT89S51 memiliki kapasitas sebesar 4KByang hanya bisa dibaca
saja. Bila pin EA dihubungkan pada ground program memori dapat di akses
secara eksternal, bila pin EAdihubungkan pada VCC memori program 4KB dapat
diakses langsung pada alamat 0000H-0FFFH secara internal dan pada alamat
1000H-FFFFH secara eksternal.
2.2.1.2. Memori Data
Memori data menggunakan memori jenis RAM. RAM merupakan memori
yang dapat dibaca dan ditulis. RAM dipakai sebagai penyimpan data pada saat
Mikrokontroler AT89S51 memiliki memori data 256 bytes dan dapat
diakses secara pengalamatan langsung dan pengalamatan tidak langsung.
Pengoperasian stack adalah contoh dari pengalamatan tidak langsung, jadi 128
bytes RAM data tersedia sebagai ruang stack. Peta memori data dapat dilihat pada
Gambar 2.2.
Gambar 2.2. Peta memori data
2.2.2 Register Fungsi Khusus (Special Function Register)
Peta dari memori on-chip disebut dengan ruang register fungsi khusus
(Special Function Register) yang diperlihatkan pada Tabel 2.1.
Tabel 2.1. Peta memori SFR
Akumulator
ACC atau akumulator yang menempati lokasi E0H digunakan sebagai
register untuk penyimpanan data sementara, dalam program.
Register B
Register B (lokasi F0) digunakan selama operasi perkalian dan pembagian ,
untuk intruksi lain dapat diperlakukan sebagai register scratch pad (papan
coret-coret).
Program Status Word (PSW)
Register PSW (lokasi D0H) mengandung informasi status program seperti
terlihat pada Gambar 2.3. Fungsi bit pada PSW sebagai berikut:
CY (PSW7) : carry setelah operasi aritmatika.
AC (PSW6) : auxiliary carry setelah operasi aritmatika.
F0 (PSW5) : flag untuk fungsi umum.
RS0 (PSW4) : untuk memilih bank register.
RS1 (PSW3) : untuk memilih bank register.
0V (PSW2) : overflow setelah operasi aritmatika.
( – ) (PSW1) : user definable flag
P (PSW0) : Parity Flag (P), merupakan bit even-parity dari
akumulator. Jika banyaknya angka 1 dalam
Akumulator ganjil, maka P akan di-set menjadi 1;
Gambar 2.3. Register Program Status Word
Stack Pointer
Register Stack Pointer (lokasi 81H) merupakan register dengan panjang
8-bit, digunakan dalam proses simpan dan ambil dari atau ke stack.
Data Pointer
Register Data Pointer mengandung DPTR untuk byte tinggi (DPH) dan
byte rendah (DPL). Pada AT89S51 memiliki 2 buah DPTR untuk memudahkan
pengaksesan baik internal maupun eksternal, yaitu DP0 di lokasi 82H-83H dan
DP1 di lokasi 84H-85H. Untuk menggunakannya harus menginisialisasi bit DPS
pada register AUXR1 (lokasi A2H). Bila DPS = 0, maka memilih register DPTR
DP0L - DP0H dan bila DPS = 1, maka memilih register DPTR DP1L - DP1H.
Register AUXR1 dapat dilihat pada Gambar 2.4.
__ __ __ __ __ __ __ DPS
7 6 5 4 3 2 1 0
Gambar 2.4. Register AUXR1
Kontrol Register
Register-register IP, IE, TMOD, dan TCON berisi bit-bit kontrol dan status
2.2.3. Timer / Counter
Mikrokontroler AT89S51 mempunyai dua buah register timer/counter 16
bit , Timer 0 dan Timer 1. Pada saat sebagai Timer, register naik satu (increment)
setiap satu cycle. Jika digunakan osilator 12 Mhz, maka satu cycle sama dengan
1/12 frekuensi osilator = 1µs. Pada saat sebagai counter, register naik satu
(increment) pada saat transisi 1 ke 0 dari input eksternal , T0 atau T1. Apabila
periode tertentu telah dilampaui, timer/counter segera menginterupsi
mikrokontroler untuk memberitahukan bahwa perhitungan periode waktu telah
selesai dilaksanakan. Periode waktu timer/counter secara umum ditentukan oleh
persamaan berikut:
a. Sebagai T/C 8 bit
T = (255 – TLx) * 1µs ……..………..(2.1)
Dimana TLx adalah isi register TL0 atau TL1.
b. Sebagai T/C 16 bit
T = (65535 – THx TLx) * 1µs ……..………..(2.2)
THx = isi register TH0 atau TH1
TLx = isi register TL0 atau TL1
2.2.3.1. Register TCON
Pengontrol kerja timer/counter ada pada register timer control (TCON).
Adapun definisi dari bit-bit pada timer control adalah sebagai berikut:
Tabel 2.2. Keterangan register TCON
Simbol Fungsi
TF1 Timer 1 overflow flag. Di set oleh hardware pada saat timer/counter overflow. Di clear oleh hardware pada saat menjalankan rutin TR1 Timer 1 Run control bit. Di set/clear oleh software. Digunakan untuk
mengaktifkan/nonaktifkan timer/counter
TF0 Timer 0 overflow flag. Di set oleh hardware pada saat timer/counter overflow.
TR0 Timer 0 Run control bit. Di set/clear oleh software. Digunakan untuk mengaktifkan / nonaktifkan timer/counter
IE1 Interrupt 1 Edge flag. Di set oleh hardware ketika interupsi eksternal mendeteksi adanya edge. Di clear ketika proses interupsi
IT1 Interrupt 1 Type control bit. Di set / clear oleh software untuk menentukan pen-triger-an interrupsi eksternal pada transisi turun / low IE0 Interrupt 0 Edge flag. Di set oleh hardware ketika interupsi eksternal
mendeteksi adanya edge. Di clear ketika proses interupsi
IR0 Interrupt 0 Type control bit. Di set/clear oleh perangkat lunak untuk menentukan pen-triger-an interrupsi eksternal pada transisi turun / low
2.2.3.2. Register TMOD
Pengontrol pemilihan mode operasi timer/counter ada pada register timer
mode (TMOD) . Definisi bit-bitnya adalah sebagai berikut:
Tabel 2.3. Keterangan register TMOD
Simbol Fungsi GATE Gate control set. Timer/counter ‘x’ akan aktif jika pin “INT” high dan
kondisi pin “TRx” sedang set.
Gate control clear. Timer”x” akan aktif jika “TRx” set
C / T Selector timer/counter. Clear untuk mode timer ( input dari internal lock ) dan set untuk mode counter (input dari pin “Tx” )
c
M1 Bit untuk memilih mode timer/counter
M0 Bit untuk memilih mode timer/counter
x = 0 atau 1.
Tabel 2.4. Keterangan Kombinasi M0 dan M1 register TMOD M1 M0 Mode Operasi
0 0 0 Timer 13 bit
0 1 1 Timer/counter 16 bit
1 0 2 Timer/counter pengisian otomatis (auto reload) 8 bit
1 1 3 (Timer 0)
TL0 adalah T/C 8 bit yang dikontrol oleh kontrol bit standar timer 0. TH0 adalah timer 8 bit dan dikontrol oleh kontrol bit timer 1
(Timer 1)
Timer/counter 1 tidak aktif
2.2.3.3. Mode Timer/Counter
Terdapat empat jenis mode yang dapat ditentukan melalui pengisian
register TMOD yang dibahas pada bagian 2.1.3.3, yaitu:
a. Mode 0
Pada mode ini timer bekerja sebagai timer 13 bit yang terdiri dari counter
8-bit dengan pembagi 32 (pembagi 5 bit). Setelah perhitungan selesai,
GATE = 1, timer dapat dikontrol oleh input dari luar (INT1), untuk fasilitas
pengukuran lebar pulsa. Register 13 bit yang digunakan terdiri dari 8 bit dari TH1
dan 5 bit bawah dari TL1 ( bit 6,7,8 tidak digunakan ). Mengeset TR1 tidak akan
menghapus isi register. Operasi pada mode 0 untuk Timer 0 dan Timer 1 adalah
sama.
b. Mode 1
Mode 1 sama dengan mode 0 kecuali register timer akan bekerja dalam
mode 16 bit.
c. Mode 2
Mode 2 menyusun register timer sebagai 8 bit counter (TL1) dengan
kemampuan pengisian otomatis. Overflow dari TL1 tidak hanya men-set TF1
tetapi juga mengisi TL1 dengan isi TH1 yang diisi sebelumnya oleh software.
Pengisian ulang ini tidak mengubah nilai TH1.
d. Mode 3
Dalam operasi mode 3 timer 1 akan berhenti, hitungan yang sedang
berjalan dipegang. Efeknya sama seperti mengatur TR1 = 0. Timer 0 dalam mode
3 membuat TL0 dan TH0 sebagai dua counter terpisah. TL0 menggunakan
kontrol bit timer 0 yaitu C/T, GATE, TR0, INT0 dan TF0.. TH0 berfungsi hanya
sebagai timer dan mengambil alih penggunaan TR1 dan TF1 dari timer 1 dan
sekarang TH0 mengontrol interupsi timer 1. Mode 3 diperlukan untuk aplikasi
yang membutuhkan ekstra timer/counter 8 bit. Dengan timer 0 dalam mode 3,
mode 3, timer 1 dapat dihidupkan atau dimatikan, atau dapat digunakan oleh port
serial sebagai pembangkit baud rate dalam aplikasi komunikasi serial.
2.2.4. Port masukan/keluaran (I/O port)
Sama seperti keluarga MCS-51 lainnya mikrokontroler AT89S51 memiliki
4 port masukan/keluaran (I/O port) yang diberi nama port 0, port 1, port 2 dan port
3. Setiap port selain sebagai jalur masuk atau keluar data, juga memiliki
karakteristik masing-masing.
a. Port 0
Port 0 merupakan port keluaran/masukan (I/O) bertipe open drain
bidirectional. Port 0 juga dapat dikonfigurasikan sebagai bus alamat/ data bagian
rendah selama proses pengaksesan memori data dan program eksternal. Port ini
berada di alamat 80H SFR.
b. Port 1
Port 1 merupakan port I/O dwiarah yang dilengkapi dengan pull-up
internal. Jika ‘1’ dituliskan ke kaki-kaki port 1, masing-masing kaki akan di pull
high dengan pull up internal sehingga dapat digunakan sebagai masukan. Port 1
berada di alamat 90H juga menerima alamat bagian rendah (low bit) selama
pemrograman dan verifikasi flash. Selain sebagai piranti I/O, port 1 mempunyai
Tabel 2.5. Fungsi alternatif port 1
Pin Port Fungsi Alternatif
P1.5 MOSI (digunakan untuk In-System Programming) P1.6 MISO (digunakan untuk In-System Programming) P1.7 SCK (digunakan untuk In-System Programming)
c. Port 2
Port 2 berada di alamat A0H dan memiliki karakteristik yang mirip dengan
port 1. Port 2 akan memberikan byte alamat bagian tinggi selama pengambilan
instruksi dari memori program eksternal dan selama pengaksesan memori data
eksternal yang menggunakan perintah dengan alamat 16-bit (misalnya: MOVX
@DPTR). Port ini juga menerima alamat bagian tinggi selama pemrograman dan
verifikasi flash.
d. Port 3
Port 3 terletak di alamat B0H. Selain berfungsi untuk menerima
sinyal-sinyal kontrol untuk pemrograman dan verifikasi flash, dapat juga digunakan
untuk fungsi-fungsi yang lain seperti terlihat pada Tabel 2.6.
Tabel 2.6. fungsi alternatif port 3.
Pin Port Fungsi Alternatif
P3.0 RXD (masukan port serial) P3.1 TXD (keluaran port serial) P3.2 INT0 (interupsi 0 eksternal) P3.3 INT1 (interupsi 1 eksternal) P3.4 T0 (input eksternal timer 0) P3.5 T1 (input eksternal timer 1)
2.2.5. Sistem Interupsi Mikrokontroler AT89S51
Interupsi merupakan suatu sarana dalam mikrokontroler yang sangat
berperan dalam penanganan sistem input output. Dalam proses interupsi,
terjadinya sesuatu pada perangkat keras akan dicatat pada flip-flop yang sering
disebut petanda (flag). Catatan dalam petanda tersebut diatur sedemikian rupa
sehingga merupakan sinyal permintaan interupsi pada prosesor.
Program yang dijalankan dengan cara tersebut dinamakan sebagai program
pelayanan interupsi (ISR - Interrupt Service Routine). Saat prosesor menjalankan
ISR, pekerjaan yang sedang dilakukan dalam program utama ditinggalkan
sementara, selesai menjalankan ISR program utama kembali dijalankan.
AT89S51 memiliki 5 sumber interupsi, yaitu: 2 interupsi pewaktu yaitu
interupsi yang terjadi pada saat timer mengalami overflow dari semua bit 1 ke
semua bit 0, atau bit TF=1. 2 interupsi eksternal yaitu interupsi yang terjadi karena
adanya sinyal interupsi yang berasal dari luar, dan sebuah interupsi port serial
yaitu interupsi yang terjadi pada saat diterimanya/ dikirimnya sinyal serial antara 2
mikrokontroler.
2.2.5.1. Pengaktifan Interupsi
Masing-masing sumber interupsi dapat diaktifkan dan dimatikan secara
individual dengan menset bit EA dalam register IE (lihat gambar 2.7).
Gambar 2.7. Register IE
Tabel 2.7. Register IE
Simbol Posisi Fungsi
EA IE.7 Untuk mengaktifkan (IE =1) dan menon-aktifkan (IE =0)
__ IE.6 Cadangan
ET2 IE.5 Cadangan
ES IE.4 Bit aktivasi interupsi Port Serial ET1 IE.3 Bit aktivasi interupsi Timer 1 EX1 IE.2 Bit aktivasi interupsi Eksternal 1 ET0 IE.1 Bit aktivasi interupsi Timer 0 EX0 IE.0 Bit aktivasi interupsi Eksternal 0
2.2.5.2. Vektor Interupsi
Saat suatu interupsi diterima, nilai yang disimpan ke PC sebagai alamat
RLI selanjutnya disebut sebagai vektor interupsi, yang sekaligus merupakan awal
alamat RLI yang bersangkutan. Daftar vektor interupsi terdapat pada Tabel 2.8.
Tabel 2.8. Daftar vektor interupsi
Interupsi Tanda (Flag) Alamat Vektor
Reset sistem RST 0000H
Eksternal 0 IE0 0003H
Timer 0 TF0 000BH
Eksternal 1 IE1 0013H
Timer 1 TF1 001BH
2.3.LCD ( Liquid Crystal Display )
LCD ( Liquid Crystal Display ) merupakan suatu tampilan ( display ) yang
terdiri dari bahan cairan kristal yang dioperasikan dengan menggunakan sistem
dotmatrix.
LCD yang digunakan dalam pembuatan alat ini adalah LCD dengan
menggunakan driver HD44780U. LCD ini dapat menampilkan angka-angka,
abjad, huruf jepang, dan juga simbol - simbol lainnya. Interface LCD HD44780U
dengan mikrokontroler AT89S51 dapat dilakukan dengan sistem 4 bit ataupun 8
bit.
Dimensi LCD dengan driver HD44780U yang digunakan memiliki ukuran
2 x 16. Hal ini menandakan bahwa LCD tersebut memiliki layar tampilan yang
terdiri atas 2 baris dan 16 kolom seperti yang ditunjukkan pada gambar 2.8.
Tiap segment Dimensi layar LCD terdiri dari 8x5 dot
Gambar 2.8. Dimensi Layar LCD
Dengan demikian total jumlah karakter yang dapat ditampilkan sekaligus
dalam satu layar adalah sebanyak 32 karakter, masing-masing karakter tersebut
HD44780U memiliki beberapa bagian seperti yang disampaikan di bawah
ini :
Register
HD44780U memiliki dua buah register 8 bit, yaitu IR ( Instruction Register ) dan
DR ( Data Register ). IR ( Instruction Register ) merupakan register yang hanya
dapat ditulis dan berguna untuk menyimpan kode-kode instruksi seperti Display
Clear, Cursor Shift, dan juga untuk alamat dari DDRAM ( Display Data RAM )
ataupun CGRAM ( Character Generator RAM ). Sedangkan DR ( Data Register )
merupakan register yang bisa ditulis maupun dibaca dan juga berguna untuk
penyimpanan sementara data yang akan ditulis atau dibaca dari/ ke dalam
DDRAM ataupun CGRAM.
BF ( Busy Flag )
Sewaktu BF ( Busy Flag ) bernilai “1” maka driver HD44780U akan menjalankan
operasi internal sehingga instruksi selanjutnya tidak dapat dijalankan. Maka untuk
dapat menjalankan instruksi selanjutnya perlu diperiksa apakah busy flag tersebut
telah bernilai “0”, atau dapat dilakukan dengan memberikan waktu yang lebih
lama dari waktu yang dibutuhkan oleh eksekusi instruksi itu sendiri diantara
instruksi pertama dengan instruksi selanjutnya.
AC ( Address Counter )
Fungsi dari AC ( Address Counter ) adalah untuk mengalamati DDRAM dan juga
DDRAM ( Display Data RAM )
DDRAM digunakan untuk menyimpan tampilan data yang direpresentasikan
dalam bentuk 8 bit kode karakter. DDRAM memiliki kapasitas 80 x 8 bit atau 80
karakter.
CGROM ( Character Generator ROM )
CGROM merupakan ROM ( Read Only Memory ) berukuran 80 x 8 bit yang
mampu membangkitkan bentuk dot matriks berukuran 5 x 8 maupun 5x10 dari 8
bit kode karakter.
CGRAM ( Character Generator RAM )
CGRAM merupakan RAM ( Random Access Memory ) berukuran 64 x 8 bit yang
memungkinkan untuk memprogram karakter yang diinginkan.
Pin LCD
LCD ini memiliki 14 kaki pin dengan konfigurasi pin seperti yang ditunjukkan pada tabel 2.8.
Tabel 2.8 Penomoran Pin LCD
Nomor Pin Simbol
1 Vcc ( +5 V )
2 Vee ( 0 V )
3 GND ( 0 V )
4 RS
5 R / W
Deskripsi LCD :
DB0 sampai dengan DB7 merupakan jalur data yang dipakai untuk
menyalurkan kode ASCII maupun perintah pengatur kerja LCD tersebut.
RS merupakan Register Select yang dipakai untuk membedakan jenis data
yang dikirim ke LCD, jika RS = 0 maka data yang dikirim adalah perintah untuk
mengatur kerja LCD tersebut. Sebaliknya jika RS = 1 maka data yang dikirim
adalah kode ASCII yang ingin ditampilkan.
R / W merupakan Read / Write. Jika R / W = 0 maka menandakan akan
diadakan pengiriman data ke LCD. Dan jika R / W = 1 maka menandakan akan
diadakan pengambilan data dari LCD.
E ( Enable ) merupakan sinyal sinkronisasi. Saat E berubah dari ‘1’
menjadi ‘0’ maka data di DB0 hingga DB7 akan diterima atau diambil dari atau
oleh LCD.
Kemudian untuk menyalakan backlight pada layar LCD maka terdapatlah
A ( Anoda ) dan K ( Katoda ) yang nantinya akan dihubungkan pada +5V dan
ground. Anoda dan katoda ini terpisah dari pin namun kadang pada LCD lain
sudah ada yang termasuk pada pin.
2.4.Buzzer
Buzzer digunakan sebagai keluaran bunyi. Dengan menggunakan buzzer,
kita tidak perlu mengatur frekuensi yang akan digunakan sebagai bunyi karena
Re
FCS 9012
3
2
1
VCC
BUZZER
input
Rb
Gambar 2.9 Rangkaian Penggerak Buzzer
Untuk mengatur buzzer agar dapat berbunyi ataukah tidak maka digunakan
rangkaian penggerak buzzer. Pada gambar 2.9 terlihat bahwa rangkaian penggerak
buzzer tersebut menggunakan transistor, yang pada dasarnya berfungsi sebagai
saklar untuk menghubungkan antara buzzer dengan tegangan Vcc. Re dan Rb
digunakan sebagai pembatas arus yang akan masuk ke dalam transistor. Karena
adanya transistor tersebut, maka buzzer mendapatkan arus atau tidaknya
tergantung dari kondisi transistor saat itu, jika transistor on ( karena adanya arus
low pada basis, yang dilakukan dengan pemberian logika ‘0’ pada port input
transistor ) maka buzzer mendapatkan tegangan Vcc sehingga menjadi on. Namun
sebaliknya pula jika transistor off maka buzzer juga akan menjadi off. Jika kondisi
on dan off dilakukan secara periodik maka akan diperoleh gelombang kotak
dengan frekuensi atau periode tertentu.
buzzer membutuhkan arus (Ibuzzer) agar bekerja (aktif) yang nilainya dapat
ditentukan dengan spesifikasi daya (P) dan hambatan (R) pada buzzer. Nilai arus
R P
Ibuzzer = (Ampere) ………. (2.3)
Nilai hambatan basis (RB) dapat ditentukan dengan menghitung nilai
arus basis (IB) dengan arus kolektor (IC) dan penguatan arus transistor (hFE ), yang
besarnya:
FE C B
h I
I = ………... (2.4)
Arus buzzer (Ibuzzer) pada gambar 2.11 sama dengan arus IC transistor,
sehingga nilai arus basis adalah:
FE buzzer B
h I
I = ………... (2.5)
Nilai hambatan basis dengan mensubsitusi persamaan 2.5 adalah:
B EB CC B
I V V
R = − atau
FE buzzer
EB CC B
h I
V V R
/
−
BAB III
PERANCANGAN
Perancangan alat penampil waktu tinju terdiri perancangan perangkat keras
dan perancangan perangkat lunak. Perancangan perangkat keras terdiri dari
rangkaian mikrokontroler, saklar, dan LCD. Sedangkan perancangan perangkat
lunak berupa diagram alir atau urutan langkah bagaimana mikrokontroler dapat
bekerja sebagai penghitung waktu tinju. Diagram blok dari keseluruhan alat ini
digambarkan pada gambar 3.1.
START
PAUSE
RESET
BUZZER
LCD
Gambar 3.1 Diagram blok alat penampil waktu tinju
Keterangan gambar :
Sebagai pengendali utama : mikrokontroler AT89S51
Sebagai masukan : tombol ‘START’, ‘PAUSE’. ‘RESET’
Sebagai keluaran : buzzer dan LCD
3.1. Perancangan Perangkat Keras
Perancangan perangkat keras utama pada alat ini berupa rangkaian
mikrokontroler. Mikrokontroler bekerja mengendalikan karakter yang akan
tertampil di LCD dan membunyikan buzzer saat awal ronde dan akhir ronde.
Proses bekerjanya mikrokontroler akan diatur dengan menggunakan perangkat
lunak.
3.1.1. Saklar push-button
Saklar push-button ini berfungsi sarana pemutus hubungan arus antara
port I/O mikrokontroler dengan ground. Saat saklar ditekan maka arus akan
mengalir dari port mikrokontroler ke ground, sedangkan saat saklar tidak ditekan
arus akan mengambang. Sehingga saat tombol ditekan berarti memberikan logika
0 pada mikrokontroler karena arus pada port mikrokontroler mengalir ke ground.
Pada perancangan ini tombol start dihubungkan ke P2.6 sedangan tombol pause
diumpankan ke P3.2 sebagai penanda sinyal interupsi. Pada gambar 3.2
digambarkan bagaimana saklar dihubungkan pada mikrokontroler.
MIKROKONTROLER
P 3.2
PAUSE
P 2.6
START
Gambar 3.2 Rangkaian Saklar dengan Mikrokontroler
3.1.2. Rangkaian reset mikrokontroler AT89S51
Reset dilakukan secara otomatis saat power diaktifkan. Menurut lembar
data AT89S51, reset terjadi saat adanya logika 1 selama 2 ( dua ) siklus mesin
pada pin 9 ( RST ). Dalam perancangan ini karena menggunakan osilator kristal
12 MHz dan satu siklus mesin dikerjakan dalam 12 periode osilator, maka satu
siklus mesin dikerjakan selama :
Tcycle =
OSC f
12 =
MHz
12 12
= 1 µd
Dengan demikian, maka untuk keperluan reset dibutuhkan logika 1 pada pin RST
selama 2 × 1µd = 2 µd.
Gambar 3.3 Rangkaian Reset AT89S51
Cara kerja rangkaian power-on reset sebenarnya hanya merupakan
pengisian muatan kapasitor C ( gambar 3.3 ). Pada saat sumber daya diaktifkan,
karena muatan kapasitor masih kosong ( VC = 0 ), maka pin RST akan terhubung
langsung dengan Vcc ( logika 1 ). Sejalan dengan pertambahan waktu, kapasitor
akan diisi muatannya yang mengakibatkan VC ( tegangan antara Vcc dengan pin
mengecil. Yang perlu diperhatikan disini untuk power-on reset adalah nilai R dan
C agar VR selama minimal 2 µd ( 2 siklus mesin ) masih dianggap berlogika 1.
Dari data sheet AT89S51, didapat tegangan masukan logika 1 pin RST memiliki
batas bawah VH(min) = 0,7 Vcc. Dengan memasukkan rumus VR didapatkan
perhitungan :
Vcc - VC≥ 0,7 Vcc
Vcc - Vcc (1 – e –t / RC ) ≥ 0,7 Vcc
(e – 2µd / RC ) ≥ 0,7
- 2• 10-6 / RC ≥ ln (0,7)
2• 10-6≤ RC (0,357)
RC ≥
357 , 0
10 2• −6
RC ≥ 5,60 . 10-6 ……… (3.1)
Dengan demikian konstanta waktu RC haruslah lebih besar dari 5,6 µd.
Jika toleransi komponen R dan C diperhitungkan, maka pada perancangan
digunakan waktu reset ( konstanta waktu RC ) yang jauh lebih besar dari syarat
pada ( 3.1 ), yaitu 100 ms dengan menggunakan kapasitor C = 1 µF dan resistor R
= 100 KΩ ( dari data sheet AT89S51 ). Setelah power-on kapasitor akan terus
terisi hingga tegangan VC sama dengan Vcc ( dibutuhkan waktu 100 ms ) dengan
polaritas yang berlawanan, yang berarti pin RST akan berlogika 0 ( VR1 = 0 ) dan
3.1.3. Rangkaian Osilator
Rangkaian osilator menggunakan on-chip oscillator yang membutuhkan
sebuah kristal pembangkit frekuensi dan 2 buah kapasitor eksternal yang
ditunjukan pada gambar 3.4 .Frekuensi osilator untuk mikrokontroler AT89S51
maksimal 33 MHz. Dalam perancangan digunakan kristal (X1) 12 MHz dengan
alasan mempermudah untuk menghitung satu detik karena satu siklus mesin
dibutuhkan 1 µdetik. Kapasitor yang digunakan ( C1 dan C2 ) masing – masing
besarnya 30 pF (gambar 3.4).
X1 12 MHz
C2 30 pF C1 30 pF
18 19
20
XTAL1 GND XTAL2
AT89S51
Gambar 3.4 Rangkaian Osilator AT89S51
3.1.4. LCD
Alat Penampil Waktu Pada Pertandingan Tinju Berbasis Mikrokontroler
AT89S51 ini menggunakan LCD. LCD yang digunakan pada alat ini adalah LCD
yang mempunyai 16 kolom dan 2 baris. dimana LCD tersebut menggunakan
sistem pengiriman data 8 bit sehingga diperlukan 11 buah jalur untuk
berhubungan dengan mikrokontroler AT89S51. Kesebelas jalur tersebut terdiri
masing untuk RS (Register Select), R/W (Read/Write), dan E (Enable). Adapun
jalur-jalur tersebut dapat dilihat pada gambar 3.5.
+ 5 V
HD 44780U GN D VC C DB 3 DB 7 DB 2 R/ W
DOT MATRIKS LCD
DB 6 E K RS DB 5 A VE E DB 4 VCC DB 0 DB 1 AT89S51 9 18 19 29 30 31 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 RST XTAL2 XTAL1 PSEN ALE/PROG EA/VPP P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INTO P3.3/INT1 P3.4/TO P3.5/T1 P3.6/WR P3.7/RD P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
Gambar 3.5 Rangkaian LCD dengan Mikrokontroler
3.1.5. Buzzer
Dalam Alat Penampil Waktu Pada Pertandingan Tinju Berbasis
Mikrokontroler AT89S51 ini menggunakan buzzer untuk menandakan waktu
setiap awal ronde dan akhir ronde dimana saat akhir ronde juga sebagai tanda
waktu istirahat. Rangkaian penggerak buzzer tersebut dihubungkan dengan P2.7
mikrokontroler. Gambar 3.6 digambarkan rangkaian penggerak buzzer.
Re
P 2.7 Rb
FCS 9012 3 2 1 VCC MIKROKONTROLER AT 89S51 BUZZER
Rangkaian penggerak buzzer ini berupa rangkaian transistor sebagai
saklar. Transistor yang digunakan adalah transistor FCS9012. Keadaan bunyi atau
tidaknya buzzer tergantung dari keadaan hidup atau tidaknya transistor. buzzer
yang digunakan adalah buzzer 5 volt. Arus yang yang melewati buzzer dipilih
sebesar 25 mA. Maka dengan melihat datasheet arus Ic sebesar 25 mA. Dengan
menggunakan rumus 2.6 maka tahanan Rc dapat ditentukan. Nilai dari Vce sangat
kecil maka dianggap 0.
Re =
Ic Vce Vcc−
= 3 10 . 25
5 −
= 200 Ω
Dalam perhitungan didapatkan Rc sebesar 200 Ω, maka digunakanlah resistor
dengan hambatan sebesar 200 Ω. Untuk menentukan besarnya Rb ditentukan
terlebih dahulu nilai dari Ib seperti pada perhitungan dibawah ini.
Ib =
hfe Ic
= 64
10 . 25 −3
Maka nilai Rb ditentukan dari perhitungan berikut ini,
Rb =
Ib Vbe Vcc−
=
0,00039 7 , 0 5−
= 11025,64Ω
Vbe merupakan tegangan antara basis dan emitor, dimana besarnya Vbe adalah
0,7 Volt, dikarenakan transistor FCS9012 terbuat dari bahan silikon. Dalam
perhitungan didapatkan Rb sebesar 11025,64 Ω, maka digunakan resistor yang
mendekati harga tersebut, yaitu resistor dengan nilai hambatan sebesar 10 K Ω
dan 1K Ω ( di seri ).
3.2. Perancangan Perangkat Lunak
Perancangan perangkat lunak alat penghitung waktu tinju terdiri dari tiga
program, yaitu program utama dan dua program interupsi. Program utama
menjalankan perintah-perintah inisialisasi awal program. Inisialisasi yang
dilakukan adalah inisialisasi LCD, timer, interupsi, dan tampilan awal.
3.2.1.Diagram Alir
3.2.1.1.Program utama
Program utama diawali dengan melakukan inisialisasi LCD dan inisialisasi
timer. Inisialisasi LCD adalah mengatur bagaimana LCD ini bekerja dan juga
tampilan awal pertandingan tinju, proses inisialisasi awal LCD mengikuti data
sheet M1632. Sedangkan inisialisasi timer adalah mengisi register TMOD untuk
menentukan timer mana yang akan digunakan dan mode apa yang akan dipakai.
yaitu timer 16 bit. Pengisian register timer akan diisi sesuai penggunaan timer
tersebut sebab dalam perancangan alat ini digunakan sebagai tunda waktu dan
penghitung waktu satu detik. Proses penggunaan timer akan dijelaskan pada
bagian berikutnya.
Proses selanjutnya adalah mengisi alamat data detik dengan 60 desimal
dan alamat data menit dengan 3 desimal. Hal ini berarti waktu satu ronde adalah
tiga menit. Kemudian program akan menunggu tombol start ditekan, setelah
tombol ditekan maka dipanggil sub program tampilan awal satu ronde pada LCD
dengan tampilan waktu tiga menit pada baris satu dan tampilan ronde 1 pada baris
2 dan juga membunyikan buzzer. Setelah itu dilakukan pengaktifkan interupsi
timer 0 dengan sebelumnya mengisi register timer agar terjadi overflow saat 50
ms. Pengaturan overflow register timer sebesar 50 ms dimaksudkan agar dapat
menghitung waktu satu detik. Dengan terjadinya 20 kali overflow menandakan
waktu satu detik telah terlewati. Program akan selalu berputar dengan
menanyakan apakah data di alamat counter ronde sudah terisi 12 yang berarti
pertandingan sudah selesai. Data di alamat counter ronde akan selalu bertambah
ketika satu ronde telah terlewati. Bila belum maka program akan selalu berputar
di sini. Program utama akan terinterupsi ketika timer 0 overflow yang berarti
mikrokontroler akan melayani program interupsi. Ketika 12 ronde telah terlewati
maka akan ditampilkan tampilan selesai pertandingan dan menunggu tombol start
ditekan agar kembali memulai pertandingan tinju lagi. Jalannya program utama
Gambar 3.7 Diagram alir program utama
3.2.1.2Program interupsi timer0
Mikrokontroler akan melayani program interupsi ketika terjadi overflow di
timer 0, keadaan overflow ini terjadi setiap 50 ms. Dengan pengulangan selama 20
kali maka waktu satu detik telah terlewati. Sehingga jalannya program menuju
mainnya setiap ronde, waktu istirahat, dan juga menaikkan variabel counter
ronde. Dan selanjutnya mengirim karakter ke LCD. Jalannya program interupsi
timer 0 ditunjukkan pada gambar 3.8
Gambar 3.8 Diagram alir program interupsi timer0
3.2.1.3.Waktu Main dan Istirahat
Sub program ini akan menampilkan waktu main untuk setiap ronde, waktu
istirahat, dan juga menaikkan variabel counter ronde. Dan selanjutnya mengirim
karakter ke LCD. Gambar 3.9 adalah diagram alir untuk sub program waktu main
Gambar 3.9 Diagram Alir Sub Program Waktu main & istirahat
3.2.1.4.Program Interupsi External0
Program interupsi eksternal 0 ini berfungsi sebagai penghenti keseluruhan
program. Dengan kondisi default, prioritas utama dari interupsi adalah interupsi
eksternal 0 sehingga jalannya program akan melayani layanan program interupsi
bersamaan. Tombol pause berguna untuk mengaktifkan interupsi eksternal 0 ini.
Diagram alir dari program interupsi ini digambarkan pada gambar 3.10.
Gambar 3.10 Diagram Alir Program Interupsi Eksternal
3.2.2 Implementasi Diagram Alir
3.2.2.1.Inisialisasi LCD
Agar LCD dapat menampilkan karakter LCD dengan baik maka LCD
tersebut harus diberikan inisialisasi terlebih dahulu. Pemberian inisialisasi ini
dapat dimaksudkan agar LCD dapat bekerja sesuai dengan spesifikasi dan
karakteristik yang diinginkan. Adapun program untuk menginisialisasi LCD
; - - - ; I ni s i al i s as i LCD
; - - - i ni t _l c d:
mov a, #3f h ; f unc t i on s et
l c al l t ul i s _per i nt ah ; 8 bi t 2 bar i s , bent uk k ar ak t er 5 x 8 l c al l t ul i s _per i nt ah
mov a, #0dh ; di s pl ay ON, ny al ak an LCD l c al l t ul i s _per i nt ah
mov a, #06h ; c ur s or ber j al an k ek anan l c al l t ul i s _per i nt ah ; s et i ap ada pengi r i man dat a
mov a, #01h ; di s pl ay c l ear , menghapus s emua t ampi l an l c al l t ul i s _per i nt ah
mov a, #0c h ; di s pl ay ON, ny al ak an LCD l c al l t ul i s _per i nt ah ; t anpa i ndi k at or k ur s or r et
3.2.2.2Menampilkan karakter pada LCD
Untuk menampilkan karakter pada LCD, perintah yang akan diberikan
terdiri dari dua jenis perintah yaitu perintah untuk menuliskan instruksi dan
perintah untuk menuliskan data. Perintah untuk menuliskan instruksi dilakukan
dengan cara membuat pin RS dan pin R / W berlogika ‘0’, sedangkan perintah
penulisan data dilakukan dengan cara membuat pin RS berlogika ‘1’ dan pin R /
W berlogika ‘0’. Adapun programnya adalah sebagai berikut :
; - - - ; Wr i t e Command t o LCD ; - - - CommandLCD:
LCALL CBF
PUSH ACC
CLR LCD_RS
CLR LCD_RW ; E=0, R/ W=0, RS=0
MOV A, R1
ANL A, #0F0h
MOV DATA_LCD, A
SETB LCD_E ; E=1, R/ W=0, RS=0
CLR LCD_E ; E=0, R/ W=0, RS=0
MOV A, R1
SWAP A
ANL A, #0F0h
MOV DATA_LCD, A
SETB LCD_E ; E=1, R/ W=0, RS=0
CLR LCD_E ; E=0, R/ W=0, RS=0
POP ACC
LCALL CBF
; - - - ; Wr i t e Dat a t o LCD
; - - - Wr i t eLCD:
LCALL CBF
PUSH ACC
SETB LCD_RS
CLR LCD_RW ; E=0, R/ W=0, RS=1
MOV A, R1
ANL A, #0F0h
MOV DATA_LCD, A
SETB LCD_E ; E=1, R/ W=0, RS=1
CLR LCD_E ; E=0, R/ W=0, RS=1
MOV A, R1
SWAP A
ANL A, #0F0h
MOV DATA_LCD, A
SETB LCD_E ; E=1, R/ W=0, RS=1
CLR LCD_E ; E=0, R/ W=0, RS=1
POP ACC
LCALL CBF
RET
Terdapat pula program untuk menampilkan tulisan pada LCD, seperti
berikut ini sebagai contoh dalam menampilkan tulisan pertama pada LCD :
; - - - Di s pl ay at Li ne1- - -
MOV R1, #80H ; s et pos i s i k ar ak t er l c d bar i s per t ama
LCALL CommandLCD
MOV DPTR, #Tex t 1 LCALL Get Tex t
; - - - Di s pl ay at Li ne2- - -
MOV R1, #0C0H ; s et pos i s i k ar ak t er l c d bar i s k edua LCALL CommandLCD
MOV DPTR, #Tex t 2
LCALL Get Tex t RET
; - - - Di s pl ay at Li ne1- - - TAMPI L_MULAI :
MOV R1, #80H ; s et pos i s i k ar ak t er l c d LCALL CommandLCD
MOV DPTR, #Tex t 3 LCALL Get Tex t
; - - - Di s pl ay at Li ne2- - -
MOV R1, #0C0H ; s et pos i s i k ar ak t er l c d bar i s k edua LCALL CommandLCD
MOV DPTR, #Tex t 4 LCALL Get Tex t
MOV R1, #0CBh
LCALL CommandLCD
MOV A, R5
MOV B, #10
DI V AB
ADD A, #30h
MOV R1, A
LCALL Wr i t eLCD
MOV A, B
ADD A, #30h
MOV R1, A
Tex t 1: DB ' MULAI ' , 0 Tex t 2: DB ' TEKAN START ' , 0 Tex t 3: DB ' 3 : 00 ' , 0 Tex t 4: DB ' RONDE ' , 0
Pada bagian subroutine dari masing – masing pengatur kerja LCD tersebut
terdapat bagian yang berfungsi untuk memberikan tunda sesaat agar antara
instruksi yang satu dengan instruksi yang lainnya tidak saling bertabrakan, yaitu
program delay dengan program sebagai berikut :
; - - - ; Del ay Rout i ne
; - - - Del ay :
MOV R0, #0 ; 2 c y c l e Del ay 1:
MOV R6, #50h ; 2 c y c l e J uml ah c y c l e =
DJ NZ R6, $ ; 2 c y c l e 2+( ( 2+( 2x 280) +2) x 256) +2= DJ NZ R0, Del ay 1 ; 2 c y c l e 41. 988 c y c l e
RET ; 2 c y c l e ;
LDel ay :
MOV R2, #030h ; 2 c y c l e
Ld1: j uml ah c y c l e = ACALL Del ay ; 2 c y c l e 2+( ( 41. 988+2+2) x 48) +2 = DJ NZ R2, Ld1 ; 2 c y c l e 2. 015. 620 c y c l e
RET ; 2 c y c l e
Dalam mikrokontroler AT89S51, 1 cycle membutuhkan 12 periode osilasi,
dan osilator Kristal yang digunakan adalah sebesar 12 MHz, maka :
MHz MHz
fclk 1
12 12
=
= , dan ik
f T
clk
clk 1 det
1 μ
= =
Sehingga dapat disimpulkan bahwa 1 cycle membutuhkan 1 μd. Berdasarkan pada
data sheet LCD, minimal waktu tunda yang harus diberikan antar instruksi adalah
3.2.2.3Program Utama
Dibawah ini adalah potongan program dari program utama.
mul ai :
s et b ex 0 ; ak t i f as i i nt er ups i ek s t er nal 0 s et b ea ; ak t i f as i l ay anan i nt er ups i s et b s t ar ; s et p2. 6 s ebagai i nput c l r r w ; buat l c d s el al u menul i s l c al l i ni t _l c d ; i ni s i al i s as i l c d
l c al l t ampi l an_awal mul ai _l agi :
j b s t ar , $ ; t unggu t ombol s t ar di t ek an c l r p2. 7 ; buny i k an buz z er mov r 7, #1 ; s et awal c ount er r onde 1 l c al l t ampi l an_r onde ; t ampi l an mul ai
mov t mod, #01h ; t i mer 0 mode1
mov t h0, #hi gh( - 50000) ; t i mer di buat i nt er ups i s et i ap 50mS mov t l 0, #l ow( - 50000)
s et b t r 0 ; ak t i f as i t i mer 0
s et b et 0 ; ak t i f as i i nt er ups i t i mer 0 s et b ea
mov det i k , #60 ; i s i dat a det i k 60 mov meni t , #3 ; i s i dat a meni t 3 meni t
c j ne r 7, #13, $ ; t unggu s ampai r onde k e- 12 c l r t r 0
c l r et 0 c l r ea
l c al l t ampi l an_s el es ai ; t ampi l an s el es ai l j mp mul ai _l agi
3.2.2.4Program Interupsi Timer 0
1dt k :
c l r t r 0 c l r et 0
i nc c ount _det i k mov a, c ount _det i k c j ne a, #20, bel um mov c ount _det i k , #0 LCALL mai n
bel um:
mov TH0, #hi gh( - 50000) ; r es et agar ov er f l ow 50mS mov TL0, #l ow( - 50000)
s et b t r 0 s et b et 0 r et i
Potongan program diatas adalah program interupsi timer 0. Dari potongan
program tersebut terlihat bahwa terdapat 20 kali pengulangan sehingga akan
memanggil sub program waktu main & istirahat. Potongan program waktu main
dan istirahat terlihat pada sub program dibawah ini.
mai n:
s et b p2. 7 ; mat i k an buz z er
mov a, 46h ; i s i a dengan dat a di 46h c j ne a, #55, r onde ; t anda wak t u i s t i r ahat mov a, det i k ; bi l a t i dak k e r onde c j ne a, #0, ol ah ; det i k bel um 0? k e ol ah mov det i k , #60 ; bi l a 0 i s t i r ahat s el es ai
mov meni t , #3 ; r es et k embal i agar k embal i k e r onde mov 46h, #0 ; nol k an l agi t anda i s t i r ahat
c l r p2. 7 ; buny i k an k embal i buz z er
l c al l t ampi l an_r onde ; t ampi l k an k embal i t ampi l an r onde r et
r onde:
mov a, det i k ; det i k bel um nol k e ol ah c j ne a, #0, c ac i ng
dec meni t ; s udah 0 k ur angi meni t mov det i k , #60
mov a, meni t
c j ne a, #0, c ac i ng ; meni t bel um 0 k e ol ah
c l r p2. 7 ; 1 r onde s el es ai bunny i k an buz z er mov 46h, #55 ; s et t anda i s t i r ahat
i nc r 5 ; r onde t ambah 1
c j ne r 5, #13, i s t i r ahat ; bi l a r onde 12 bl m ber ak hi r k e i s t i r ahat abi s 4:
r et i s t i r ahat :
l c al l t ampi l an_i s t i r ahat ; panggi l t ampi l an i s t i r ahat
mov det i k , #60 ; s et wak t u i s t i r ahat mov meni t , #1
l j mp abi s 4 ol ah:
dec det i k ; dec det i k
mov a, det i k ; ubah det i k menj adi des i mal mov b, #10
di v ab add a, #30h
mov 61h, a ; det i k pul uhan as c i i di 61h mov a, b
add a, #30h
mov 60h, a ; det i k s at uan as c i i di 60h mov buf f er , meni t ; pi ndah meni t k e buf f er dec buf f er ; k ur angi buf f er
mov a, buf f er add a, #30h
mov 65h, a ; dat a meni t as c i i di 65h mov 64h, #30h ; s pas i ( k os ong) as i i mov 63h, #3Ah ; t anda ' : '
mov 62h, #30h ; s pas i ( k os ong) as i i
mov r 1, #87H ; s et bar i s per t ama l c d di al amt 07h l c al l t ul i s _per i nt ah
mov r 0, #65h ; mul ai r 0 dar i al amt 65h mov r 3, #6 ; ada 6 pengur angan
ul ang:
mov a, @r 0 ; pi ndah dat a y ang di t unj uk di al mt R0 mov r 1, a
l c al l t ul i s _dat a ; t ampi l k an k e l c d
dj nz r 3, ul ang ; ul angi s ampai 6 dat a t er k i r i m k e l c d r et
3.2.2.5Program Eksternal 0
Berikut ini adalah potongan program untuk program eksternal 0, yaitu
untuk pengaktifan tombol PAUSE
paus e:
pus h ac c ; amank an ac c k e s p c l r p2. 7 ; buny i k an buz z er
j b s t ar , $ ; t unggu t ombol s t ar di t ek an s et b p2. 7
BAB IV
PENGAMATAN DAN PEMBAHASAN
Pada bab ini akan membahas tentang cara kerja alat, pengamatan tentang
waktu, penekanan tombol, dan buzzer. Adapun bentuk dari hasil akhir alat
tersebut dapat dilihat pada gambar 4.1
Tampak Depan :
Buzzer
LCD 2 X 16
Tombol PAUSE Tombol START
Tombol RESET
Tampak Belakang :
dihubungkan 220 Volt
4.1.Cara Kerja Alat
Berikut ini akan dijelaskan bagaimana cara kerja dari peralatan “Penampil
Waktu Pada Pertandingan Tinju” :
1.Proses kerja dari alat penampil waktu pada pertandingan ini diawali dengan
menghubungkan alat dengan catu daya..
2.Setelah menghubungkan alat dengan catu daya, maka pada penampil LCD
akan tertampil tulisan pada baris 1 “MULAI”, dan pada baris 2 akan muncul
tulisan “TEKAN START”. Dengan adanya pesan ini dimaksudkan bahwa
alat siap untuk digunakan yang dimulai dengan penekanan tombol Start.
MULAI
TEKAN START
Gambar 4.2. Tampilan awal LCD
3.Selain pada LCD tertampil tulisan ‘MULAI’ ‘TEKAN START’, setelah alat
dihubungkan ke catu daya buzzer juga akan berbunyi yang menandakan
bahwa pertandingan tinju akan dimulai. Bunyi buzzer akan berhenti berbunyi
apabila tombol start ditekan.
4.Setelah semua siap, maka tombol start ditekan yang digunakan untuk
memulai pertandingan tinju. Setelah tombol start ditekan, maka pada layar
LCD akan tertampil tulisan 03 : 00 pada baris pertama dan pada baris kedua
akan menampilkan tulisan RONDE01 yang berarti pertandingan sedang
berlangsung pada ronde 1 selama 3 menit.
Untuk tampilan waktu pertandingan ( yaitu pada baris pertama ) akan terus
03 : 00
RONDE01
Gambar 4.3. Tampilan setelah tombol start ditekan
5.Setelah pada layar LCD untuk baris pertama menunjukkan angka 00 : 00
maka buzzer akan berbunyi yang menandakan bahwa pertandingan tinju
pada ronde 1 telah selesai.
00 : 00
RONDE01
Gambar 4.4. Tampilan ronde 01 selesai
Kemudian tampilan pada LCD akan berubah, yang semula tampilannya
adalah ‘RONDE01’ pada baris kedua di LCD akan berubah menjadi tulisan
‘ISTIRAHAT’ sedangkan untuk baris pertama pada LCD juga akan berubah,
yang semula tampilannya adalah 00 : 00 maka akan berubah menjadi 01 : 00
yang menandakan bahwa waktu istirahat selama 1 menit
01 : 00
ISTIRAHAT
Gambar 4.5. Gambar tampilan waktu istirahat
6.Setelah waktu istirahat menunjukkan angka 00 : 00 , maka buzzer akan
berbunyi yang menandakan bahwa waktu istirahat telah selesai dan
pertandingan tinju dilanjutkan ke ronde berikutnya.
8.Setelah pertandingan tinju mencapai ronde keduabelas, maka pertandingan
tinju telah selesai dan kemudian akan muncul pada tampilan di LCD tulisan
‘GAMEOVER’ pada baris pertama dan tulisan ‘LAGI?TEKAN START’
pada baris kedua.
GAMEOVER
LAGI?TEKAN START
Gambar 4.6. Gambar tampilan selesai
9.Apabila ada salah satu petinju yang dianggap tidak dapat melanjutkan
pertandingan , maka kita tinggal menekan tombol pause. Karena jika tombol
pause ditekan maka pencacah waktu akan berhenti untuk sementara
sedangkan buzzer akan terus berbunyi sampai tombol start ditekan baru
berhenti.
4.2.Pengamatan Waktu
Untuk melihat apakah hasil dari perancangan perangkat lunak ( software )
itu sesuai dengan yang diinginkan dan juga agar dapat dilihat cara kerja dari alat
penampil waktu pada pertandingan tinju ini, maka dilakukan pengamatan terhadap
waktu.
Pengamatan waktu ini dilakukan dengan membandingkan antara waktu
pada alat penampil waktu terhadap waktu pada stop-watch (HP). Hal ini dilakukan
untuk mengetahui apakah waktu telah berjalan sesuai dengan yang diinginkan,
yaitu waktu akan berubah dalam setiap detiknya. Adapun untuk pengamatan
waktu ini dibedakan menjadi dua bagian, yaitu pengamatan waktu untuk setiap
4.2.1.Pengamatan Waktu Tiap Ronde
Di bawah akan dapat dilihat hasil dari pengambilan data untuk waktu
setiap rondenya dan dapat dilihat pada Tabel 4.1.
Tabel 4.1 Data pengamatan waktu tiap ronde
Waktu di
Stop-watch ( HP ) Waktu di alat Ronde
Nilai awal
Nilai akhir
Nilai awal
Nilai akhir
T0 T1 Selisih
( T0 – T1 )
Galat Error
1 00:00.00 03:00:03 03:00.00 00:00.00 03:00.03 03:00.00 00:00.03 0,017% 2 00:00.00 03:00:02 03:00.00 00:00.00 03:00.02 03:00.00 00:00.02 0,011%
3 00:00.00 03:00:00 03:00.00 00:00.00 03:00.00 03:00.00 00:00.00 0%
4 00:00.00 02:59:97 03:00.00 00:00.00 02:59.97 03:00.00 00:00.03 0,017% 5 00:00.00 02:59:98 03:00.00 00:00.00 02:59.98 03:00.00 00:00.02 0,011% 6 00:00.00 03:00:02 03:00.00 00:00.00 03:00.02 03:00.00 00:00.02 0,011% 7 00:00.00 02:59:96 03:00.00 00:00.00 02:59.96 03:00.00 00:00.04 0,022% 8 00:00.00 02:59:98 03:00.00 00:00.00 02:59.98 03:00.00 00:00.02 0,011% 9 00:00.00 03:00:01 03:00.0