METRONOM BERBASIS MIKROKONTROLER
AT 89S51
TUGAS AKHIR
Diajukan untuk memenuhi salah satu syarat
memperoleh gelar Sarjana Teknik
Program Studi Teknik Elektro
disusun oleh :
ARI WIBOWO
NIM : 025114035
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
METRONOME BASED ONAT 89S51
MICROCONTROLER
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
to Obtain the SARJANA TEKNIK Degree
in Electrical Engineering
by :
ARI WIBOWO
STUDENT NUMBER : 025114035
ELECTRICAL ENGINEERING DEPARTMENT
SCIENCE and TECHNOLOGY FACULTY
LEMBAR PERNYATAAN KEASLIAN KARYA
“Saya menyatakan dengan sesungguhnya bahwa tugas akhir yang saya tulis ini
tidak memuat karya atau bagian karya orang lain,
kecuali yang telah disebutkan dalam kutipan dan daftar pustaka,
sebagaimana layaknya karya ilmiah.”
Yogyakarta, 17 September 2007
MOTO DAN PERSEMBAHAN
Jenius adalah 1 % inspirasi dan 99 % keringat. Tidak ada yang
dapat menggantikan kerja keras. Keberuntungan adalah sesuatu
yang terjadi ketika kesempatan bertemu dengan kesiapan
.
Thomas A. Edison
Ketika satu pintu tertutup, pintu lain terbuka; namun terkadang
kita melihat dan menyesali pintu tertutup tersebut terlalu lama
hingga kita tidak melihat pintu lain yang telah terbuka. -
Alexander Graham Bell
Kupersembahkan Karya ini :
Untuk Ayah dan Ibuku tercinta
Untuk Segenap Keluargaku
Untuk Semua teman dan sahabatku
Terimakasih atas segala dukungan, kasih dan cinta yang selalu diberikan
INTISARI
Metronom merupakan alat untuk mengatur banyaknya ketukan tiap menit pada
komposisi suatu musik.Metronom yang biasanya dipakai adalah metronome mekanis
yang besar sehingga agak sulit untuk dibawa.Untuk itu akan dibuat metronom yang
berbasis mikrokontroler sehingga bentuk dan ukurannya menjadi lebih kecil.
Metronom berbasis mikrokontroler ini menggunakan lima buah tombol yaitu
tombol satuan,puluhan,ratusan,start dan reset selain itu juga menggunakan tiga buah
seven segment sebagai penampil dari banyaknya ketukan tiap menit(BPM).Ketika
tombol ditekan maka mikrokontroler akan mendiskripsikan tombol tersebut sebagai
tombol tertentu(satuan,puluhan atau ratusan) kemudian akan diolah untuk ditampilkan
pada seven segment dan digunakan untuk mengatur timer pada mikrokontroler yang
digunakan untuk membunyikan buzzer.
Pada tugas akhir ini,perangkat keras dapat menampilkan dan membunyikan
buzzer.Ketukan tiap menit yang dihasilkan berbeda dengan yang diinginkan.
Banyaknya ketukan tiap menit yang dihasilkan adalah antara 30 BPM sampai dengan
250 BPM.
ABSTRACT
Metronome is a device to producing number of the beats per minute at musical
composition. Musicians usually using the mechanical metronome that cannot easily
brought it any where. Solution of these problem is metronome based of
microcontroller to reduce the size and shape.
This metronome is used five push buttons .There are unity, tens, hundred ,start
and reset buttons. It used three digits seven segment to display number of beats per
minute(BPM). When the button pressed, microcontroller will describe that button as
specific button (unity , tens or hundred)then it will processed to displayed in seven
segments and to control microcontroller’s timer to sound the buzzer.
In these final project hardware displayed arranging beats per minute and
sounding buzzer .In spite of beat per minute is yielded are different with the project
plan because of the microcontroller unable to divide the number. The result of this
device can beats from 30 BPM up to 250 BPM
Key word :
metronome, AT 89s51 microcontroller application
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Allah Bapa disurga, yang telah
memberikan kasih karunia, anugerah, dan berkat-Nya, sehingga penulis dapat
menyelesaikan penulisan tugas akhir dengan baik.
Penulis menyadari bahwa dalam penulisan tugas akhir ini, penilis
mendapatkan banyak bantuan dan dorongan dari berbagai pihak. Oleh karena itu,
pada kesempatan ini perkenankanlah dengan segala kerendahan hati dan penuh
hormat, penulis mengucapkan terima kasih yang sebesar-besarnya kepada:
1.
Romo Ir. Greg. Heliarko SJ.,SS.,BST.,MA.,MSC Selaku Dekan Fakultas
Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
2.
Bapak A. Bayu Primawan, S.T., M.Eng selaku Ketua Jurusan Teknik
Elektro Universitas Sanata Dharma Yogyakarta dan selaku pembimbing II
yang membimbing dan mengarahkan dalam penyusunan tugas akhir ini.
3.
Bapak B. Djoko Untoro Suwarno,SSi,MT selaku pembimbing I atas segala
pemikiran dalam membimbing dan mengarahkan penulis dari awal hingga
akhir.
4.
Seluruh dosen di Fakultas Teknik Elektro yang tidak dapat di sebutkan
satu persatu, yang telah mendidik penulis untuk mengetahui lebih dalam
tentang Teknik Elektronika.
5.
Seluruh Staf Perpustakaan Universitas Sanata Dharma yang sudah
memberikan layanan dan bantuan selama proses pencarian referensi.
6.
Kedua orang tua penulis yang telah memberikan doa, dorongan moril
7.
Mbak Esti yang telah memberikan doa dan kesabaran karena ke-Betean
ku selama penyusunan tugas akhir ini.
8.
Bagas yang selalu mengganguku dalam pembuatan karya ini.
9.
Teman-teman teknik Elekro yang sudah membantu :
Alex,Rina,Andy’s,Ericdan lainya yang tidak dapat disebutkan satu persatu
10.
Teman-teman kost T-KIP : Briatma, Dedik, Agung Bawono, S.T, Dody
Prasetyo P, S.T terima kasih atas ide untuk timer mikronya
11.
Laboran teknik elektro : mas Suryono makasih sudah meminjamkan
computer dan downloader , mas Mardi untuk membantu cara memakai
oscilloscope digital, mas Broto yang membantu dalam pengambilan data.
12.
Kamar kecil 3 x 3 di Pomahan , di tempat ini kutulis semua pemikiran dan
harapan hidupku.
13.
Teman-teman mahasiswa jurusan Teknik Elekro dan semua pihak yang
tidak dapat disebutkan satu persatu atas setiap bantuannya.
Penulis menyadari bahwa masih banyak kelemahan dan kekurangan dari
penulisan tugas akhir ini. Oleh karena itu segala kritik dan saran yang bersifat
membangun sangat penulis harapkan.
Akhir kata penulis berharap agar skripsi ini dapat bermanfaat bagi
penulis maupun pembaca semuanya.
Yogyakarta,
26
Juli
2007
DAFTAR ISI
HALAMAN JUDUL ... i
HALAMAN PERSETUJUAN PEMBIMBING... iii
HALAMAN PENGESAHAN ... iv
PERNYATAAN KEASLIAN KARYA... v
MOTO DAN PERSEMBAHAN... vi
INTISARI... vii
ABSTRACT
... viii
KATA PENGANTAR
... ix
DAFTAR ISI
... xii
DAFTAR TABEL... xiv
DAFTAR GAMBAR ... xv
DAFTAR LAMPIRAN... xvii
BAB I. PENDAHULUAN... 1
1.1
Latar Belakang ... 1
1.2
Tujuan Penelitian ... 1
1.3
Manfaat Penelitian ... 2
1.4
Prumusan Masalah ... 2
1.5
Pembatasan Masalah... 2
BAB II. DASAR TEORI... 4
2.1
Komponen
Penyusun
Metronom ...
5
2.1.1 Mikrokontroler AT 89S51 ... 5
2.1.1.1
Organisasi
Memori...
6
2.1.1.2 Set Instruksi Mikrokontroler AT 89S51 ... 12
2.1.1.3
Pewaktu
CPU ...
19
2.1.1.4
Struktur
Interupsi ...
20
2.1.2 Seven Segment... 22
2.1.3 Pembagi Tegangan... 23
BAB III PERANCANGAN ... 24
3.1
Tombol ...
25
3.2
Mikrokontroler ...
26
3.2.1
Inisialisasi...
27
3.2.2 Cek Tombol... 29
3.2.3 Tampilkan Data (Beat Per Minute) ... 31
3.2.4 Pengatur Multiplier ... 33
3.2.4.1 Penjumlah Cacah Tombol... 34
3.2.4.2
Perkalian ...
34
3.2.5
Timer ...
37
3.2.6 Bunyikan Speaker ... 40
3.2.7
Reset ...
40
3.3
Display
...
40
BAB IV. HASIL PENGAMATAN DAN PEMBAHASAN... 24
4.1 Data Hasil Pengasmatan ... 24
4.1.1 Bentuk Gelombang Keluaran... 27
BAB V. Kesimpulan dan Saran... 32
5.1
Kesimpulan ...
32
5.2
Saran
...
32
DAFTAR PUSTAKA
DAFTAR TABEL
1.
Tabel 2.1 Banyaknya Ketukan yang Biasa Digunakan... 4
2.
Tabel 2.2 Daftar Instruksi Aritmetika ATMEL AT89S51... 15
3.
Tabel 2.3 Daftar Instruksi Logika... 16
4.
Tabel 2.4 Instruksi Transfer Data ATMEL AT89S51 ... 17
5.
Tabel 2.5 Instruksi-Instruksi Boolean... 17
6.
Tabel 2.6 Instruksi Lompatan Tak Bersyarat... 18
7.
Tabel 2.7 Instruksi Lompatan Bersyarat... 19
8.
Tabel 2.7 register IE... 21
9.
Tabel 2.8 Prioritas Interupsi... 22
10.
Tabel 3.1. Daftar Bilangan heksa untuk tampilan angka pada 7’segment 31
11.
Tabel 3.2 Tabel perhitungan nilai perkalian ... 35
12.
Tabel 3.2 Tabel perhitungan nilai perkalian pada mikrokontroler ... 36
13.
Tabel 4.1 Hasil pengamatan... 43
14.
Tabel 4.2 Perbandingan faktor perkalian……… 44
DAFTAR GAMBAR
1.
Gambar 2.1 Blok Diagram inti ATMEL AT89S51 ... 6
2.
Gambar 2.2 Alamat RAM
Internal
dan
Flash
PEROM ATMEL AT89S51... 7
3.
Gambar 2.3 Peta memori RAM
Internal
... 8
4.
Gambar 2.4 Peta memori SFR ATMEL AT89S51... 9
5.
Gambar 2.5 Program Status Word ... 10
6.
Gambar 2.6 Menghubungkan kristal sumber clock ... 20
7.
Gambar 2.7 Register Interrupt Enable ATMEL AT 89S51... 20
8.
Gambar 2.7 Rangkaian Pembagi Tegangan... 23
9.
Gambar 2.8 Lambang buzzer dengan diberi sumber tegangan... 24
10.
Gambar 3.1 Blok diagram metronome... 24
11.
Gambar 3.2 Blok diagram pemrogaman pada mikrokontroler ... 25
12.
Gambar 3.3 Letak tombol pada mikrokontroler ... 26
13.
Gambar 3.4 Diagram alir pemrograman mikrokontroler ... 27
14.
Gambar 3.5 Diagram alir routine cek tombol ... 30
15.
Gambar 3.6.Diagram alir
Routine
tampilkan data ... 32
16.
Gambar 3.7 Letak penampil
seven segment
pada mikrokontroler ... 33
17.
Gambar 3.8 Diagram blok dari pengatur multiplier... 33
18.
Gambar 3.9. Diagram alir routine adder ... 34
19.
Gambar 3.10 Diagram alir perkalian ... 37
20.
Gambar 3.11 Diagram alir timer ... 39
21.
Gambar 3.12 Konfigurasi tombol reset... 40
23.
Gambar 3.14 Rangkaian volume untuk
buzzer
... 42
24.
Gambar 4.1 Grafik periode ideal dengan pengamatan... 46
25.
Gambar 4.2 Bentuk gelombang output sebesar 1,9 detik ... 47
26.
Gambar 4.3 Bentuk gelombang output sebesar 1,7 detik ... 48
27.
Gambar 4.4 Bentuk gelombang output sebesar 1,4 detik ... 48
28.
Gambar 4.5 Bentuk gelombang output sebesar 1,2 detik ... 49
29.
Gambar 4.6 Bentuk gelombang output sebesar 0,960 detik ... 49
30.
Gambar 4.7 Bentuk gelombang output sebesar 0,720 detik ... 50
31.
Gambar 4.8 Bentuk gelombang output sebesar 0,480 detik ... 50
DAFTAR LAMPIRAN
BAB I
PENDAHULUAN
1.1 LATAR BELAKANG MASALAH
Metronom merupakan suatu alat yang menghasilkan suatu pulsa yang
dapat diatur, pada umumnya digunakan untuk membuat suatu ketukan yang standart
pada komposisi suatu musik.
Metronom yang biasa digunakan adalah metronom mekanis,ukuran
metronom ini besar dan berat sehingga akan sangat merepotkan apabila akan hendak
dibawa bepergian.Dengan metronom berbasis mikroprosessor ATMEL AT89S51
ukurannya menjadi lebih kecil dan menjadi lebih ringan.
1.2 TUJUAN dan MANFAAT
Tujuan penelitian ini, peneliti mempunyai beberapa tujuan yang ingin
dicapai, yaitu :
1.
Membuat peralatan yang dapat digunakan untuk mengatur banyaknya ketukan
tiap menit pada suatu komposisi musik.
1.3 Manfaat Penelitian
Mengacu pada beberapa tujuan yang akan dicapai, diharapkan peneliti
dapat memberikan beberapa manfaat :
1.
Mebuat metronome menjadi mudah dibawa bagi pengguna.
2.
Mempermudah penggunaan metronom bagi pengguna.
1.4 Perumusan Masalah
Mikrokontroler AT89S51 dipakai sebagai timer yang tergantung pada
tombol yang ditekan,apabila tombol ditekan maka akan terjadi penjumlahan ketukan
tiap menitnya.Hasil dari proses ditampilkan pada
seven segment
dan hasil suara
diperdengarkan melewati speaker.
Dari uraian tersebut maka masalah yang didapat adalah :
1.
Bagaimana membuat diagram alir .
2.
Bagaimana membuat perangkat lunak pada AT89S51 dengan bahasa asembler
dari perangkat lunak Pinacle.
3.
Bagaimana mengatur besarnya
delay timer
pada mikrokontroler.
4.
Bagaimana membuat rangkaian metronom berbasis mikrokontroler AT89S51.
1.5 Pembatasan Masalah
Pembatasan masalah ruang lingkup yang akan dieliti, diberikan batasan
pada alat yang dibuat, yaitu :
1.
Tombol yang digunakan hanya tiga yaitu untuk ratusan,puluhan dan satuan.
3.
Besar ketukan maksimal 200 ketukan per menit.
4.
Menggunakan tiga buah seven segmen sebagai penampil banyaknya ketukan .
5.
Menggunakan buzzer sebagai penghasil suara.
1.6 Sistematika Penulisan
Tugas akhir ini berdasarkan sumber buku dan
data sheet
. Sistematika penulisan
terdiri dari lima bab, yaitu :
Bab I membahas tentang pendahuluan yang berisi latar belakang, tujuan
penelitian, pembatasan masalah, perumusan masalah dan sistematika penulisan.
Bab II membahas tentang dasar teori yang mendukung penelitian yaitu tentang
metronom dan mikrokontroler AT89S51.
Bab III membahas tentang perancangan perangkat lunak berupa pemrograman
mikrokontroler dan perangkat keras.
Bab IV membahas tentang pengamatan kerja dari perangkat keras dan perangkat
lunak yang telah dibuat dan dibandingkan dengan perancangan.
BAB II
DASAR TEORI
Metronom merupakan alat penghasil pulsa yang mengatur dan menjaga
ketukan pada komposisi musik.Ketukan (tempo) dijaga supaya lagu yang dimainkan
selalu tetap temponya.Banyaknya ketukan dihitung dalam setiap menit (b
eats per
Minute
),besarnya antara 40 sampai dengan 200
beats per minute
Tabel 2.1 Banyaknya ketukan yang biasa digunakan pada komposisi musik.
(1)Tem po Mark ings Definit ion Beat s per m inut e
I t alian
set t ing t he t em po
grave very slow and solem n 40 bpm or slower
larghissim o ex t rem ely slow 40 bpm or slower
lent issim o
ex t rem ely slow , but not as slow as
larghissim o
adagissim o ex t rem ely slow , but slow er t han largo
largo broad, very slow and dignified 42- 66 bpm
larghet t o less slow t han largo 60- 66 bpm
largam ent e broadly
adagio slow , but not as slow as largo
58- 97 bpm ( som e sources suggest 66- 76 bpm )
adagiet t o slow , but less slow t han adagio
lent o slow 52- 108 bpm
lent am ent e slow ly
andant ino
a lit t le slow er t han andant e but som et im es a
lit t le fast er t han adagio
andant e m oving along - walk ing pace
56- 88 bpm ( som e sources suggest 76- 108 bpm )
con m ot o w it h m ovem ent , or a cert ain quick ness
m oderat o m oderat e speed
66- 126 bpm ( som e sources suggest 120- 168 bpm )
allegret t o pret t y liv ely
vivace quick and lively ~ 140 bpm
allegro quick , liv ely and bright 84- 144 bpm
Lanjutan Tabel 2.1 Banyaknya ketukan yang biasa digunakan pada komposisi musik.
(1)Tem po Mark ings Definit ion Beat s per m inut e
I t alian
set t ing t he t em po
prest o very quick 100- 152 bpm
allegrissim o very quick , bet ween pr est o and v ivacissim o
v ivacissim o very quick , fast er t han v iv ace
prest issim o very quick - as quick ly as possible
rapido rapid
v eloce w it h velocit y, speedily
Untuk menghitung waktu yang dibutuhkan pada tiap detiknya digunakan rumusan
sebagai berikut:
BPM
ik
T
(det
)
=
60
………(2.1)
T (detik) = waktu yang dibutuhkan untuk satu ketukan
60
= banyaknya detik dalam tiap menit.
BPM = Ketukan tiap menit (Beats Per Minute)
2.1
Komponen penyusun metronom ini dapat dijelaskan sebagai
berikut.
2.1.1 Mikrokontroller ATMEL AT89S51
Mikrokontroller merupakan terobosan teknologi miroprosessor
yang dibuat untuk memenuhi kebutuhan pasar dan teknologi baru, yaitu
teknologi semikonduktor dengan kandungan transistor yang lebih banyak
seperti komputer yang dapat menangani banyak pekerjaan, tetapi
Mikrokontroller
hanya dapat dipakai untuk satu macam aplikasi saja yang
disimpan di ROM. Besar RAM jauh lebih kecil dibandingkan dengan besar
ROM.
Mikrokontroller
ATMEL AT89S51 merupakan
Mikrokontroller
yang kompatibel dengan
Mikrokontroller
8051 buatan
Intel. Perintah-perintah yang digunakan pada Mikrokontroller ATMEL
AT89S51 dapat digunakan pula pada Mikrokontroller 8051. blok diagram
inti dari ATMEL AT89S51 dapat dilihat pada gambar 2.1 sebagai berikut.
Gambar 2.1 Blok Diagram inti ATMEL AT89S51
2.1.1.1 Organisasi Memory
Semua produk ATMEL memiliki ruang alamat memori data dan
program yang terpisah. Pemisahan penyimpanan memori data dan
program dapat diakses menggunakan metode pengaksesan alamat 8 bit.
Alamat RAM
Internal
dan
Flash
PEROM ATMEL ATMEL AT89S51
Gambar 2.2 Alamat RAM
Internal
dan
Flash
PEROM ATMEL
AT89S51
ATMEL AT89S51 mempunyai struktur memori yang terdiri atas :
1.
RAM
Internal
, memorinya sebesar 128
byte
yang biasanya
digunakan untuk menyimpan variabel atau data yang bersifat
sementara.
2.
Register Fungsi Khusus (
Special Function Register
), memori yang
memiliki fungsi khusus untuk menunjang kerja dari Mikrokontroller
tersebut, seperti :
Timer, Program Status Word
(PSW) dan lain-lain.
3.
Flash
PEROM, memori yang digunakan oleh Mikrokontroller untuk
menyimpan instruksi-instruksi ATMEL AT89S51.
Mikrokontroller ATMEL AT89S51 mempunyai struktur memori
yang terpisah antara RAM
Internal
dan
Flash
PEROM. RAM
Internal
dialamati oleh RAM
Address Register
(Register Alamat RAM)
sedangkan
Flash
PEROM dialamati oleh Program
Address Register
(Register Alamat Program). Ram
Internal
dan
Flash
PEROM waluapun
memiliki alamat memori yang sama yaitu 000H, namun secara fisik
kedua memori tersebut tidak saling berhubungan.
1)
RAM
Internal
a.
Register Bank, Mikrokontroller ini memiliki 8 buah register
yang terdiri atas R0 sampai dengan R7 dapat dibuah ke bank 1,
bank 2, bank 3 dengan cara mengubah kondisi nilai RS0 dan
RS1 pada register PSW.
b.
Bit
Addressable
RAM, RAM ini terletak dialamat 20H sampai
2FH yang dapat diakses secara pengalamatan bit sehingga
dapat mengerjakan fungsi-fungsi
boolean
.
c.
RAM keperluan umum, RAM ini dimulai dari alamat 30H
hingga 7F dan dapat diakses dengan pengalamatan langsung
dan tak langsung. Pengalamatan langsung dilakukan ketika
salah satu operan merupakan bilangan yang menunjukkan
lokasi yang dialamati.
Lokasi RAM
Internal
dapat dilihat pada gambar 2.3 dibawah
ini.
2)
Register Fungsi Khusus (
Special Function Register
)
AT 89S51 mempunyai 21
Special Function Register
yang terletak dialamat 80H sampai dengan FFH. Beberapa register
ini dapat dialamati secara bit. Gambar 2.4 menunjukkkan peta
Register Fungsi Khusus.
a.
Akumulator, register ini terletak dialamat E0H dan dapat
dialamati secara bit, akumulator digunakan untuk hampir
semua operasi logika dan aritmatika.
b.
Port, ATMEL AT89S51 mempunyai 4 buah port : yaitu Port 0,
Port 1, Port 2 dan Port 3 yang terletak dialamat 80H, 90H, A0H
dan B0H. Semua port tersebut dapat dialamati secara bit
sehinga dapat dilakukan perubahan salah satu pin port tersebut
tanpa mengganggu pin yang lain.
c.
PSW,
Program Status Word
atau PSW terletak dialamat D0H,
terdiri atas beberapa bit seperti terlihat pada gambar 2.5. PSW
berisi dari data bit hasil eksekusi program seperti hasil
aritmatika dan logika.
Gambar 2.5 Program Status Word
d.
Register B, register ini digunakan bersama akumulator untuk
proses aritmatik selain digunakan untuk register biasa dan dapat
dialamati secara bit.
e.
Stack
Pointer
, merupakan register 8 bit yang terletak dialamat
81H. Isi dari
stack
pointer
merupakan alamat dari data yang
disimpan di-
stack
. Proses yang berhubungan dengan
stack
ini
biasa dilakukan oleh instruksi-instruksi
Push, Pop, Acall
dll.
f.
Data
pointer
, data
pointer
atau DPTR merupakan register 16 bit
dan terletak pada alamat 82H untuk DPL dan 83H untuk DPH.
DPTR bisa digunakan untuk mengakses
source code
ataupun data
yang terletak di memori
external
.
g.
Register
Timer
, AT89S51 mempunyai dua buah, 16 bit
Timer/Counter
yaitu :
timer
0 dan
timer
1.
Timer
0 terletak
dialamat 84H untuk TL0 dan 8CH untuk TH0, sedangkan
Timer
h.
Register Port
Serial
, port ini merupakan
on chip serial port
yang
digunakan untuk melakukan komunikasi dengan peralatan yang
menggunakan
serial
port.
i.
Register interupsi, Mikrokontroller ini memiliki 5 buah interupsi
dengan dua level prioritas interupsi, interupsi secara otomatis
akan dimatikan bila sistem di-reset. Register yang behubungan
dengan interupsi adalah
Interrupt Enable Register
(IE) pada
alamat A8H dan Interupsi
Priority Register
(IP) pada alamat
B8H.
3)
Flash
PEROM
AT89S51 mempunyai 4 Kb
Flash
PEROM yang dapat
ditulis dan dihapus menggunakan sebuah perangkat
programmer
.
Program yang terdapat pada
Flash
PEROM akan dieksekusi jika
sistem di-reset, pin EA/VPP berlogika satu sehingga
Mikrokontroller aktif berdasarkan program yang ada di
Flash
PEROM, sedang bila berlogika nol maka Mikrokontroller aktif
berdasarkan program yang ada pada memori
external.
Pengalamatan data yang terdapat pada ATMEL AT89S51
mempunyai fasilitas yaitu :
Lock bit Protection
yang terdiri :
a.
Lock bit 1, instruksi MOVC yang dieksekusi dari memori
ekstenal untuk membaca sistem
Flash
PEROM tidak dapat
b.
Lock bit 2, isi
Flash
PEROM tidak dapat di-
verifi
oleh
programmer.
c.
Lock bit 3, akses ke memori
external
tidak dapat dilakukan.
2.1.1.2
Set Instruksi Mikrokontroller AT89S51
Semua anggota keluarga Mikrokontroller ATMEL
mengeksekusi set instruksi yang sama. Set instruksi ini telah
dioptimasi untuk aplikasi kontrol 8 bit, serta menyediakan berbagai
macam mode pengalamatan yang cepat untuk mengakses RAM
internal
dan RAM
external
.
a.
Mode-mode Pengalamatan
Mode-mode pengalamatan dapat dikelompokkan menjadi seperti
berikut ini :
1.)
Pengalamatan langsung (
direct Addressing
)
Dalam pengalamatan langsung operan-operan ditentukan
berdasarkan alamat 8 bit (1
byte
) dalam suatu instruksi. Hanya
RAM
internal
dan SFR yang dapat diakses secara langsung.
2.) Pengalamatan Tak Langsung (
Indirect Addressing
)
Dalam pengalamatan tak langsung instruksi menentukan suatu
register yang digunakan untuk menyimpan alamat operan. Baik
Register alamat untuk alamat-alamat 8 bit bisa menggunakan
stack
pointer
R1 atau R0 dari bank yang dipilih, sedangkan
untuk alamat 16 bit dapat menggunakan DPTR.
3.) Instruksi-Instruksi
Register
Bank-bank register yang masing-masing berisi R0-R7 dapat
diakses dengan menggunakan instruksi yang memiliki kode
operasi 3 bit. Pengaksesan dengan cara demikian dapat
menghemat penggunaan kode instruksi, karena tidak
menggunakan sebuah
byte
untuk alamat. Pada saat instruksi
tersebut dijalankan maka salah satu bank register yang telah
dipilih yang akan diakses.
4.)
Instruksi-instruksi register khusus
Beberapa instruksi hanya dikhususkan untuk suatu register
tertentu. Misalnya suatu instruksi yang hanya bekerja pada
akumulator saja, sehingga tidak memerlukan satu
byte
untuk
menunjukkan alamat akumulator tersebut. Instruksi mengacu
akumulator sebagai A akan dikodekan dengan
op-code
spesifikasi akumulator.
5.)
Konstanta segera (
Immediate constant
)
Nilai dari suatu konstanta dapat segera menyatu dengan
op-code
dalam memori program. Misalnya, instruksi : MOV
A,#50, yang akan menyimpan konstanta 50 (desimal) ke dalam
6.)
Pengalamatan Terindeks(
Indexed Addressing
)
Memori program hanya dapat diakses melalui pengalamatan
terindeks. Mode pengalamatan ini ditunjukkan untuk membaca
tabel tengok (
Look up table
) yang tersimpan dalam memori
program. Sebuah register 16 bit menunjuk ke awal atau dasar
tabel dan akumulator diset dengan angka indeks tabel yang
akan diakses. Alamat dari entri tabel memori program dibentuk
dengan menjumlahkan data akumulator dengan petunjuk ke
tabel. Tipe lain dari pengalamatan terindeks digunakan dalam
instruksi-instruksi “lompat bersyarat”. Dalam hal ini, alamat
tujuan dari instruksi lompat (
jump
) dihitung sebagai jumlah dari
petunjuk dasar dengan data ke akumulator.
b.
Instruksi Aritmatika
Tabel 2.2 memuat daftar instruksi-instruksi aritmatika
dan waktu instruksi. Jika sistem mengguakan frekuensi
clock
12 MHz, terlihat semua instruksi dilakukan selama 1 µs kecuali
INC DPTR. Perintah ini beroperasi pada petunjuk data
pointer
16 bit, sedangkan hasilnya adalah 16 bit alamat untuk memori
external
. Instruksi MUL AB digunakan untuk melakukan
perkalian antara akumulator dengan register B dan hasilnya
Tabel 2.2 Daftar Instruksi Aritmetika ATMEL AT89S51
c.
Instruksi Logika
Instruksi logika digunakan untuk melakukan operasi
boolean
(AND, OR, XOR dan NOT) pada suatu
byte
dan beroperasi pada
masing-masing bit. Jika suatu operasi ditunda karena interupsi,
dengan tidak menggunakan akumulator akan menghemat waktu yang
dibutuhkan untuk menyimpan isi akumulator ke dalam
stack
didalam
rutin pelayanan interupsi yang bersangkutan.
Instruksi putar atau
rotate
(RL A, RLC A dan lainnya) akan
menggeser isi akumulator 1 bit kekanan atau kekiri. Untuk putar
kekiri, bit MSB akan berputar ke kiri dan menggantikan posisi bit
Mnemonis Operasi Waktu Eksekusi (µd)
ADD A,<byte> A=A+<byte> 1
ADDC A,<byte> A=A+<byte>+C 1
SUBB A,<byte> A=A-<byte>-C 1
INC A A=A+1 1
INC<byte> <byte>=<byte>+1 1
INC DPTR DPTR=DPTR+1 2
DEC A A=A-1 1
DEC<byte> <byte>=<byte>-1 1
MUL AB B:A=BxA 4
DIV AB A=int[A/B]
B=mod[A/B]
4
LSB, dan bila berputar kekanan maka bit LSB akan menempati
posisi bit MSB.
Tabel 2.3 Daftar Instruksi Logika
Mnemonic Operasi Waktu Eksekusi
ANL A,<byte> A=A.and.<byte> 1
ANL <byte>,A <byte>=<byte>.and.A 1
ANL <byte>,#data <byte>=<byte>.and.#data 2
ORL A,<byte> A=A.or.<byte> 1
ORL <byte>,A <byte>=<byte>.or.A 1
ORL <byte>,#data <byte>=<byte>.or.#data 2
XRL A,<byte> A=A.xor.<byte> 1
XRL <byte>,A <byte>=<byte>.xor.A 1
XRL <byte>,#data <byte>=<byte>.xor.#data 2
CLR A A=00 H 1
CPL A A=.not.A 1
RL A Putar ACC kekiri 1 bit 1
RLC A Putar ACC kiri lewat carry 1
RR A Putar kanan ACC 1
RRC A Putar kanan ACC lewat carry 1
d.
Instruksi Transfer Data
Instruksi trasfer data dapat dibagi menjadi 2 macam yaitu
instruksi transfer data yang mengakses ruang memori
internal
dan
transfer data yang mengakases ruang memori
external
. Pengaksesan
16 bit. Pengeksekusian perintah trasnfer data tidak mempengaruhi
Program Status Word
.
Tabel 2.4 Instruksi Transfer Data ATMEL AT89S51
Mnemonic Operasi Waktu eks. (µd)
MOV A,<sumber> A=<sumber> 1
MOV <tujuan>,A <tujuan>=A 1
MOV <tjn>,<sbr> <tujuan>=<sumber> 2
MOV DPTR,#data16bit DPTR=konstanta 16 bit 2
PUSH <sumber> INC SP MOV “@SP”,<sumber> 2
POP <tujuan> MOV <tujuan>,”@SP”DEC SP 2
XCH A,<byte> Tukar data byte antara ACC dan <byte> 2
e.
Instruksi Boolean
Mikrokontroller ATMEL AT89S51 memiliki sebuah prosesor
boolean yang cukup lengkap. Tabel 2.5 memperlihatkan instruksi
boolean pada Mikrokontroller ATMEL AT89S51. Semua jalur port
merupakan bit yang dapat dialamati dan dapat dilakukan sebagai port
yang terpisah.
Tabel 2.5 Instruksi-Instruksi Boolean
Instruksi Fungsi Waktu eksekusi (µd)
ANL C,bit C=C.and.bit 2
ANL C,/bit C=C.and. .not. bit 2
ORL C,bit C=C .or. bit 2
ORL C,/bit C=C .or. not. bit 2
Instruksi Fungsi Waktu eksekusi (µd)
MOV bit,C Bit=C 2
CLR bit Bit=0 1
CLR C C=0 1
f.
Instruksi Lompat (
jump
)
Instruksi lompatan (
jump
) merupakan perintah yang digunakan
pada Mikrokontroller ATMEL AT89S51 untuk melakukan
perpindahan alamat perintah yang akan dieksekusi oleh CPU.
Instruksi lompatan ini dapat dibagi menjadi dua macam yaitu
instruksi lompatan tak bersyarat dan instruksi lompatan bersyarat.
Tabel 2.6 menunjukkan instruksi lompatan tak bersyarat pada
Mikrokontroller ATMEL AT89S51 dan pada tabel 2.7 menunjukkan
instruksi lompatan bersyarat.
Tabel 2.6 Instruksi Lompatan Tak Bersyarat
Instruksi Fungsi Waktu Eksekusi
JMP alamat Lompat ke alamat 2
JMP @A+DPTR Lompat ke A+DPTR 2
CALL alamat Panggil subrutin alamat 2
RET Kembali ke subrutin 2
Tabel 2.7 Instruksi Lompatan Bersyarat
Instruksi Fungsi Waktu Eksekusi (µd)
JZ rel Lompat jika A=0 2
JNZ rel Lompat jika A tidak 0 2
DJNZ <byte>,rel Lompat jika tidak 0 2
CJNE A,<byte>,rel Lompat jika A’<byte> 2
CJNE <byte>,#data,rel Lompat jika <byte>”#data 2
Semua instruksi bersyarat tersebut menentukan alamat tujuan
menggunakan metode
offset
relatif dan terbatas pada jarak lompatan antara
-128 hingga +127 dari istruksi lompatan tersebut.
2.1.1.3
Pewaktu CPU
Mikrokontroller ATMEL AT89S51 memiliki osilator yang
tersedia pada kemasan IC tersebut (
on chip
) sebagai sumber detak
(
clock
). Bila menggunakan kaki XTAL 1 dan XTAL 2 pada
Mikrokontroller ATMEL AT89S51 dihubungkan dengan sebuah
kristal keramik dan kapasitor yang dihubungkan ke
ground
. Gambar
2.6 menunjukkkan cara menghubungkan kristal sumber detak dengan
Mikrokontroller AT89S51. Besar kapasitor yang terhubung dengan
sumber detak tergantung dari jenis sumber detak yang dipasangkan.
Bila sumber clock berupa kristal maka besar kapasitor yang terpasang
adalah 30 pF ± 10 pF dan bila jenis keramik besar kapasitor yang
Gambar 2.6 Menghubungkan kristal sumber clock
2.1.1.4
Struktur Interupsi
Mikrokontroller ATMEL AT89S51 menyediakan 5 sumber
interupsi, yaitu : 2 interupsi
eksternal
, 2 interupsi pewaktu dan sebuah
interupsi
serial
. Setiap sumber interupsi dapat dimatikan dan
dihidupkan secara individual dengan cara meresetkan bit-bit IE dalam
SFR. Pada bit IE ini terkandung juga sebuah bit aktivasi interupsi
secara global. Gambar 2.7 menunjukkkan IE pada Mikrokontroller
ATMEL AT89S51.
Gambar 2.7 Register Interrupt Enable ATMEL AT 89S51
Fungsi-fungsi pin IE dapat dilihat pada tabel 2.7. Pin IE7
digunakan sebagai kontrol utama bagi interupsi-interupsi yang lain.
Bila pin ini bernilai 1 maka semua pin interupsi akan dapat digunakan
(
enable
), sedangkan bila bernilai 0 maka semua pin interupsi akan
tidak dapat digunakan (
Disable
).
Pin IE6 dan IE5 sebagai cadangan bagi pembuat
Mikrokontroller AT89S51 , sebagai cadangan masa depan. IE4
diinginkan interupsi menggunakan port
serial
pin IE4 ini harus diberi
nilai tinggi atau 1.
Pin IE3 dan IE1 digunakan untuk
timer
0 dan
timer
1, bila
timer
digunakan dan telah mencapai nilai yang diharapkan maka
interupsi ini akan bernilai tinggi atau 1.
Pin IE2 dan IE0 dipergunakan sebagai masukan interupsi
yang berasal dari luar, sebagai contoh pin ini dihubungkan dengan
saklar
external
.
Tabel 2.7 register IE
Simbol Posisi Fungsi
EA IE.7 Untuk mematikan dan menghidupkan seluruh
interupsi secara serentak.
- IE.6 Cadangan
- IE.5 Cadangan
ES IE.4 Bit aktivasi interupsi Port Serial
ET1 IE.3 Bit aktivasi interupsi timer 1 overflow
EX1 IE.2 Bit aktivasi interupsi external 1
ET0 IE.1 Bit aktivasi interupsi timer 0 overflow
EX0 IE.0 Bit aktivasi interupsi external 0
Sebuah interupsi yang berprioritas rendah dapat
diinterupsi oleh yang berprioritas lebih tinggi, sedangkan interupsi
dengan prioritas tinggi tidak dapat diinterupsi oleh prioritas yang
lebih rendah. Bila kedua prioritas muncul pada saat yang
yang mempunyai prioritas yang sama maka CPU akan melakukan
metode pengecekan secara kontinyu untuk menentukan interupsi
mana yang akan dilayani pertama kali. Prioritas interupsi dapat
dilihat pada tabel 2.8
Tabel 2.8 Prioritas Interupsi
Simbol Posisi Fungsi
- 1P.7 Cadangan
- IP.6 Cadangan
- IP.5 Cadangan
PS IP.4 Bit prioritas untuk Interupsi Port Serial
PT1 IP.3 Bit prioritas untuk Interupsi timer 1
PX1 IP.2 Bit prioritas untuk Interupsi external 1
PT0 IP.1 Bit prioritas untuk Interupsi timer 0
PX0 IP.0 Bit prioritas untuk Interupsi external 0
2.1.2 Seven Segment
Seven segment merupakan tampilan berupa LED yang disusun
membentuk sebuah angka 8.Arus masukan pada masing – masing LED adalah
sebesar 10mA.Sehingga jika menggunakan komponen ini harus dipasangai
pembatas arus.Pembatas arus yang sederhana adalah resistor,untuk menghitung
besarnya resistor ini digunakan hukum
Kirchhoff
arus yaitu:
R
Vcc
I
=
……….(2.2)
dengan : I = Arus yang mengalir (Ampere).
Vcc = Tegangan sumber (Volt).
2.1.3 Pembagi Tegangan
Rangkaian pembagi tegangan digunakan pada rangkaian
buzzer.Tegangan yang dibutuhkan pada buzzer antara 6 – 12 volt.Untuk dapat
merubah besarnya tegangan ini maka dibutuhkan rangkaian pembagi tegangan.
Rangkaian pembagi tegangan dibangun dari dua buah resistor yang
disusun secara seri.rangkaian pembagi tegangan seperti pada gambar 2.8
menggunakan hokum ohm sehingga besarnya tegangan pada masing masing
resistor adalah:
2
1
2
2
2
2
1
2
2
1
R
R
R
VCC
VR
R
I
VR
R
R
VCC
I
VR
VR
VCC
×
+
=
×
=
+
=
+
=
………(2.3)
VCC
1
2
R2 R1
2.1.4
Buzzer
Buzzer
merupakan sebuah alat yang menghasilkan bunyi (
tone
).Pada
buzzer
terdapat oscillator yang berfungsi untuk menghasilkan bunyi.untuk dapat
membunyikannya,buzzer diberi tegangan DC sesuai dengan besarnya tegangan
yang tewrtera pada labelnya,biasanya besarnya tegangan ini adalah 12 volt DC
LS2 BUZZER
1
2
BT1 12v
1
2
BAB III
PERANCANGAN ALAT
Pada metronom yang dirancang ini terdiri atas tiga bagian yaitu bagian
tombol,bagian mikrokontroler dan bagian
display seven segment
.Untuk lebih jelasnya
bagian – bagian tersebut disusun seperti pada gambar 3.1.
Gambar 3.1 Blok diagram metronom.
Mikrokontroler
digunakan sebagai pengatur jalannya alat ini,sehingga
pada mikrokontroler terdapat program yang mengatur tombol,pengatur tampilan,pengatur
Gambar 3.2 Blok diagram pemrogaman pada mikrokontroler.
3.1 Tombol
Tombol
merupakan
bagian
yang
mengendalikan banyaknya ketukan tiap
menit yang dihasilkan oleh mikrokontroler. Banyaknya tombol yang digunakan adalah
empat buah tombol yaitu tombol start,tombol satuan,tombol puluhan dan tombol
ratusan.Tombol start digunakan untuk memulai membunyikan
buzzer
.
Tombol satuan
akan mengatur banyaknya ketukan satuan dalam tiap menit,tombol puluhan mengatur
banyaknya jumlah ketukan puluhan dalam tiap menit dan tombol ratusan mengatur
banyaknya ketukan ratusan dalam setiap menitnya.
Tombol ini berada pada port 1 mikrokontroler.Port 1 pada mikrokontroler
digunakan karena pada port 1,port 2,port 3 didalamnya sudah ada resistor
pull-up
.Tombol
ratusan berada pada port 1.0 ,tombol puluhan berada pada port 1.1 ,dan tombol satuan
berada pada port 1.2. Tombol start berada pada port 1.3.Sedangkan tombol reset berada
5V SW1 RATUSAN 1 2 SW3 SATUAN 1 2 SW5 RESET 1 2 C1 30pF C2 30pF R23 10K SW2 PULUHAN 1 2 Y 1 12MHz 5V C3 10uF U3 AT89S51 9 18 19 20 29 30 31 40 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 GN D PSEN ALE/PROG EA/VPP VC C 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 SW4 START 1 2
Gambar 3.3 Letak tombol pada mikrokontroler.
3.2 Mikrokontroler
Mikrokontroler digunakan sebagai pengendali banyaknya ketukan tiap
menit yang didapatkan dari perintah masukkan dari tombol dan juga sebagai pengatur
penampil keluaran.Gambar 3.4 memperlihatkan blok diagram dari pemrograman pada
Gambar 3.4 Diagram alir pemrograman mikrokontroler.
3.2.1 Inisialisasi
Bagian ini berfungsi sebagai program yang mendefinisikan berbagai nilai
yang digunakan pada pemrograman mikrokontroler tersebut.Nilai tersebut antara lain
adalah nilai
timer
(pewaktu) sebesar 240 mili detik,port yang digunakan sebagai
masukkan maupun keluaran,alamat yang digunakan kemudian mode pewaktu yang
Timer 240 mili detik dipilih karena adanya keterbatasan pada
mikrokontroler.Periode yang akan dihasilkan oleh mikrokontroler berasal dari timer,timer
mikrokontroler sangat terbatas sampai dengan 65536 mili detik,sedangkan nilai maksimal
timer yang dibutuhkan adalah 2 detik sehingga dibutuhkan suatu
multiplier
(pengkali)
agar timer dapat mencapai nilai 2 detik.Mikrokontroler yang hanya bisa melakukan
pembagian pada pengatur multiplier dengan nilai terbesar FF heksadesimal (255 desimal)
sehingga jika nilai maksimal pembaginya adalah 200 desimal dan nilai maksimal
perkalian adalah 250 dengan asumsi nilai BPM =1 maka :
24
.
0
250
60
60
250
1
=
=
×
=
×
=
timer
timer
timer
BPM
Detik
Timer
BPM
Menit
Perkalian
………(2.1)
Port yang digunakan adalah port 1.0 sebagai masukan tombol ratusan,port
1.1 sebagai masukan tombol puluhan,port 1.2 sebagai masukan tombol satuan dan port
1.3 sebagai masukan tombol start.Selain itu pada inisialisasi juga menyatakan alamat
pengali berada pada alamat 39 heksadesimal,dan mode timer yang digunakan adalah
3.2.2 Cek Tombol
Cek tombol berfungsi sebagai pemeriksa keadaan apabila tombol
ditekan,selain itu juga berfungsi sebagai cacah tombol yaitu sebagai penghitung
banyaknya tombol yang ditekan.
Apabila ada tombol yang ditekan maka akan menuju
sub routine
cacah
tombol.Cacah tombol merupakan
subroutine
yang akan menghitung berapa kali masing
masing tombol yang ditekan.Tombol 1 dan 2 akan berubah nilainya dari 0 sampai dengan
9 kecuali pada tombol 3 nilai dari 0 sampai dengan 1.Apabila nilai dari tombol 1 dan 2
(tombol satuan dan tombol puluhan) sudah bernilai 10 maka nilai dari tombol tersebut
akan dirubah (
reset
) menjadi nilai 0 kembali.Hasil dari cacah tombol tersebut akan
disimpan pada alamat data 35h,36h dan 37h.
Pada routine cek tombol ini ada sub routine program delay.Delay
bertujuan supaya tidak terjadi bouncing pada saat penekanan tombol.
Bouncing
adalah
suatu kesalahan baca pada suatu alat yang disebabkan oleh ketidak stabilan suatu
masukkan.Ketidakstabilan suatu masukan sebagai contoh adalah apabila kita menekan
tombol satu kali tetapi system membacanya masukan beberapa kali,sehingga untuk
mengatasinya dibuatlah delay.Delay pada umumnya sebesar 50 mili detik,pada program
3.2.3 Tampilkan Data (Beat per Minute)
Bagian ini digunakan untuk menampilkan besarnya ketukan tiap menitnya.
Data yang ditampilkan adalah banyaknya ketukan tiap menitnya,data tersebut berupa
angka 0 sampai dengan 9 yang berasal dari cacah tombol pada
routine
cek tombol.
Penampil data menampilkan data ratusan ,puluhan dan satuan. Program akan
menampilkan data yang tersimpan kemudian dibaca dan dikirim pada port 0 untuk
tampilan satuan , port 2 untuk tampilan puluhan dan port 3 untuk tampilan ratusan.
Untuk menampilkan data ini digunakan
seven segment display
(7’S)
common anode
.Dengan demikian untuk menyalakannya diperlukan logika 0.Jika akan
ditampilkan angka 0 maka LED a,b,c,d,e dan f harus dinyalakan pada bit port 0 yang
terkait P0.0,P0.1,P0.2,P0.3,P0.4 dan P0.5,sehingga data yang terkirim adalah 11000000
atau C0h untuk lebih lengkapnya pada tabel 3.1
Tabel 3.1. Daftar bilangan heksa untuk tampilan angka pada 7’segment.
Tampilan P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 Heksadesimal
Angka dp g f e d c b A
0 1 1 0 0 0 0 0 0 C0
1 1 1 1 1 1 0 0 1 F9
2 1 0 1 0 0 1 0 0 A4
3 1 0 1 1 0 0 0 0 B0
4 1 0 0 1 1 0 0 1 99
5 1 0 0 1 0 0 1 0 92
6 1 0 0 0 0 0 1 0 82
7 1 1 1 1 1 0 0 0 F8
8 1 0 0 0 0 0 0 0 80
9 1 0 0 1 0 0 0 0 90
Untuk selanjutnya data diatas menjadi data
look up table
.Data
look up table
merupakan
data yang nantinya bias dipanggil untuk ditampilkan pada penampil.Data 1 dan Data 2
terdiri dari angka 0 sampai 9 atau C0 sampai 90,data 2 terdiri atas angka 0 dan 1 atau C0
R13 1k R14 1k R10 1k 5V C1 30pF C2 30pF R11 1k 5V R17 1k SW5 RESET 1 2 R23 10K O a b c d e f g U2 Ratusan 1 2 10 4 5 6 7 9 8 e d g c dot b a f VC C R19 1k R5 1k R3 1k R12 1k R4 1k R22 1k 5V O a b c d e f g U4 Puluhan 1 2 10 4 5 6 7 9 8 e d g c dot b a f VC C R8 1k U3 AT89S51 9 18 19 20 29 30 31 40 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 GN D PSEN ALE/PROG EA/VPP VC C 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 R21 1k R20 1k C3 10uF R15 1k R2 1k R7 1k O a b c d e f g U5 Satuan 1 2 10 4 5 6 7 9 8 e d g c dot b a f VC C Y 1 12MHz R16 1k R6 1k R9 1k R18 1k
Gambar 3.7 Letak penampil
seven segment
pada mikrokontroler
3.2.4 Pengatur Multiplier
Untuk mengatur banyaknya ketukan tiap menit yang berbeda – beda maka
waktu yang dibutuhkan untuk timer juga berbeda.Pengaturan waktu yang berbeda
ini dipengaruhi oleh tombol yang ditekan.Pengatur multiplier berisi sub routine
program penjumlah cacah tombol dan juga sub routine program pembagian.
Gambar 3.5 menjelaskan diagram blok dari pengatur multiplier ini.
3.2.4.1 Penjumlah Cacah Tombol
Penjumlah cacah tombol (
Adder
) berfungsi untuk menjumlahkan banyaknya
ketukan dari cacah tombol ratusan, tombol puluhan dan tombol ratusan.
Banyaknya ketukan berasal dari data pada
register
yang dipergunakan pada cacah
tombol yaitu
register
1 untuk cacah tombol satuan,
register
2 untuk cacah tombol
ratusan dan
register
3 untuk cacah tombol ratusan.
Adder
sebanding dengan
banyaknya ketukan tiap menit (Beat per Minute).
Gambar 3.9. Diagram alir routine adder.
dibagi lagi dengan besarnya timer pada mikrokontroler yang digunakan
sehingga didapatkan nilai perkalian. Nilai perkalian jika dikalikan dengan
timer akan sama dengan besar ketukan tiap menit. Perkalian digunakan
pada pengulangan timer agar tundaan waktunya bisa menjadi lebih panjang.
Tabel 3.2 Tabel perhitungan nilai perkalian.
BPM Periode (detik) Timer PERKALIAN
(60/BPM) 240 mili detik
Periode / Timer
30 2 0.24 8.33
35 1.714285714 0.24 7.14
40 1.5 0.24 6.25
45 1.333333333 0.24 5.56
50 1.2 0.24 5.00
55 1.090909091 0.24 4.55
60 1 0.24 4.17
65 0.923076923 0.24 3.85
70 0.857142857 0.24 3.57
75 0.8 0.24 3.33
80 0.75 0.24 3.13
85 0.705882353 0.24 2.94
90 0.666666667 0.24 2.78
95 0.631578947 0.24 2.63
100 0.6 0.24 2.50
105 0.571428571 0.24 2.38
110 0.545454545 0.24 2.27
115 0.52173913 0.24 2.17
120 0.5 0.24 2.08
125 0.48 0.24 2.00
130 0.461538462 0.24 1.92
135 0.444444444 0.24 1.85
140 0.428571429 0.24 1.79
145 0.413793103 0.24 1.72
150 0.4 0.24 1.67
155 0.387096774 0.24 1.61
160 0.375 0.24 1.56
165 0.363636364 0.24 1.52
170 0.352941176 0.24 1.47
175 0.342857143 0.24 1.43
180 0.333333333 0.24 1.39
185 0.324324324 0.24 1.35
190 0.315789474 0.24 1.32
195 0.307692308 0.24 1.28
Dari tabel diatas perhitungan untuk perkalian adalah :
BPM Perkalian Detik BPM Detik Perkalian Timer BPM Menit Perkalian 250 24 . 0 60 1 = × = × =Dengan:
BPM =
Beats Per Minute
(Ketukan tiap menit)
Karena disebabkan oleh terbatasnya mikokontroler AT 89S51,yaitu hanya
dapat melakukan intruksi arimetik yang terbatas pada bilangan
heksadesimal dan nilai maksimal adalah FF hex.Disebabkan oleh
keterbatasan ini maka perhitungan nilai berubah menjadi seperti dibawah
ini.
Tabel 3.2 Tabel perhitungan nilai perkalian pada mikrokontroler
BPM
Periode
(detik) Timer PERKALIAN PERKALIAN PERIODE
(60/BPM) 240 mili detik Periode / Timer pada mikrokontroler output mikrokontroler
30 2.00 0.24 8.33 8 1.92
35 1.71 0.24 7.14 7 1.68
40 1.50 0.24 6.25 6 1.44
45 1.33 0.24 5.56 5 1.2
50 1.20 0.24 5.00 5 1.2
55 1.09 0.24 4.55 4 0.96
60 1.00 0.24 4.17 4 0.96
65 0.92 0.24 3.85 3 0.72
70 0.86 0.24 3.57 3 0.72
75 0.80 0.24 3.33 3 0.72
80 0.75 0.24 3.13 3 0.72
85 0.71 0.24 2.94 2 0.48
90 0.67 0.24 2.78 2 0.48
95 0.63 0.24 2.63 2 0.48
100 0.60 0.24 2.50 2 0.48
105 0.57 0.24 2.38 2 0.48
BPM
Periode (detik) (60/BPM)
Timer 240 mili
detik
PERKALIAN Periode /
Timer
PERKALIAN pada mikrokontroler
PERIODE output mikrokontroler
130 0.46 0.24 1.92 1 0.24
135 0.44 0.24 1.85 1 0.24
140 0.43 0.24 1.79 1 0.24
145 0.41 0.24 1.72 1 0.24
150 0.40 0.24 1.67 1 0.24
155 0.39 0.24 1.61 1 0.24
160 0.38 0.24 1.56 1 0.24
165 0.36 0.24 1.52 1 0.24
170 0.35 0.24 1.47 1 0.24
175 0.34 0.24 1.43 1 0.24
180 0.33 0.24 1.39 1 0.24
185 0.32 0.24 1.35 1 0.24
190 0.32 0.24 1.32 1 0.24
195 0.31 0.24 1.28 1 0.24
200 0.30 0.24 1.25 1 0.24
3.2.5 Timer
Timer atau pewaktu merupakan inti dari program metronom ini.Mode
yang digunakan untuk program metronom ini adalah mode 1. Mode 1 dipilih karena
mempunyai tundaan maksimum 65536 µd. Tundaan yang dipergunakan untuk program
ini adalah bervariasi sesuai dengan yang diinginkan oleh pengguna. Karena tundaan pada
mikrokontroler terbatas yaitu sebesar 65536 µd,apabila timer untuk pengulangan adalah
sebesar 240000 µd,maka pada timer diatur tundaan sebesar 40000 µd sehingga akan
terjadi pengulangan sebesar 6 kali agar mencapai tundaan 240000 µd,jika tundaan sudah
mencapai 240000 µd maka yang terjadi selanjutnya adalah mengulangi hingga mencapai
tundaan yang diinginkan sesuai dengan perkalian pada tabel 3.2
Inti dari timer adalah
overflow flag
(flag limpahan).Limpahan terjadi saat
transisi dari FFFFh ke 0000h untuk demikian agar limpahan terjadi setiap 40000 µd
register
timer diisi dengan konstanta -20000,sehingga TL0 dan TH0 masing – masing
menyimpan 20000 µd yaitu untuk LOW 20000 µd dan HIGH 20000 µd,kemudian
menunggu hingga di-nol-kan secara manual begitu juga dengan timer 0 dimatikan secara
manual proses ini akan berulan hingga 6 kali kemudian akan diulang lagi sesuai dengan
yang diinginkan seperti pada tabel 3.2 Pada perancangan ini timer akan hidup jika tombol
3.2.6 Bunyikan speaker
Pada bagian ini berfungsi untuk membuat speaker bekerja.Speaker bekerja
apabila diberi sumber tegangan,dalam hal ini speaker yang digunakan adalah buzzer.Jika
pada saat sebelum bekerja port 1.7 bernilai “1” maka apabila buzzer dibunyikan maka
port 1.7 harus bernilai “0” sehingga yang terjadi adalah mengkomplemenkan port 1.7.
3.2.7
Reset
Gambar 3.9 menunjukkan konfigurasi tombol reset. Reset akan aktif bila pin RST
diberikan logika
high
selama 2 µs.
C2 30pF C4 30pF SW5 RESET 4 2 5V R23 10K 5V 5V U3 AT89S51 9 18 19 20 29 30 31 40 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 GN D PSEN ALE/PROG EA/VPP VC C 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 Y 1 12MHz C3 10uF
Gambar 3.12 Konfigurasi tombol reset
3.3Display
Display
atau tampilan menggunakan 3 buah
seven segment
.Setiap
seven
segment
terdiri atas 7 buah dioda led yang disusun membentuk angka.8.Arus yang
mengalir pada masing –masing led maksimal adalah 10 mA sehingga dibutuhkan resistor
untuk membatasi arus yang mengalir pada masing-masing led tersebut.
Besarnya nilai resistor dihitungh menggunakan rumus seperti dibawah:
Ω
=
=
=
500
10
5
R
mA
R
I
Vcc
R
……….(2.2)
Dengan:
R = Resistor (ohm)
Vcc = Sumber Tegangan (Volt)
I = Arus yang mengalir (Ampere)
Supaya nilai resistor tersebut sesuai dengan yang ada dipasaran maka nilai
resistor tersebut diganti dengan 470 ohm.
O
a
b
c
d
e
f
g
U2
1
2
10
4
5
6
7
9
8
e
d
g
c
dot
b
a
f
VC
C
R6 500
R7 500
R4 500
R5 500
R8 500
R3 500
R2 500
3.4 Volume
Pengaturan volume suara adalah sama dengan pengaturan amplitudo.
Pengaturan amplitudo suara yang akan dihasilkan oleh
buzzer
menggunakan rangkaian
pembagi tegangan..
Besarnya tegangan pada buzzer adalah 6 – 9 volt.Rangkaian pembagi
tegangan dapat dibangun dari sebuah potensiometer seperti gambar 3.11.Untuk mencari
besarnya nilai resistor 24 terlebih dahulu ditentukan nilai potensiometer yaitu sebesar 10k
ohm dan tegangan sumber sebesar 9 volt sehingga :
Kohm
R
Kohm
R
Rpot
R
Rpot
R
R
R
Rpot
R
R
Rpot
R
R
Rpot
R
R
Rpot
R
R
Rpot
R
Vsumber
Vbuzzer
100
24
50
2
24
.
2
24
.
2
24
.
2
24
.
3
24
.
2
.
2
24
3
24
2
24
3
24
6
24
9
24
24
9
6
24
24
=
×
=
=
=
−
+
=
⋅
+
=
⋅
+
=
⋅
+
⋅
=
+
⋅
=
……….(2.3)
VCC LS1 BUZZER 1 2 R1 POT 10K 1 3 2 R24 100KBAB IV
HASIL PENGAMATAN DAN PEMBAHASAN
Bab ini membahas perihal pengamatan atas rancangan metronom berbasis
mikrokontroler AT89S51. Pengujian ini berupa berupa pengujian perioda yang dihasilkan
oleh perangkat keras.Pengujian, pengamatan dan pengambilan data dengan menggunakan
osiloskop digital.Pengujian periode digunakan sebab hal ini yang akan menggatur
banyaknya ketukan tiap menitnya.
4.1 Data Hasil Pengamatan
Pengamatan akan dilakukan nilai input BPM setiap kelipatan 5 mulai 30 BPM
sampai dengan 200 BPM dan mengamati hasil BPM yang terjadi serta periode sinyal
dengan oscilloscope.Masing – masing sinyal diamati sebanyak 3 kali.Hasil pengamatan
seperti terdapat pada tabel 4.1
Tabel 4.1 Hasil pengamatan
BPM
Periode (detik)
Periode (detik)
BPM
Galat(%)
yang diinginkan
perhitungan
Rerata Pengamatan
yang terjadi
30 2.00
1.91 31.41
4.50
35 1.71
1.69 35.50
1.42
40 1.50
1.45 41.38
3.33
45 1.33
1.2 50.00
10.00
50 1.20
1.2 50.00
0.00
55 1.09
0.97 61.86
11.08
60 1.00
0.97 61.86
3.00
65 0.92
0.72 83.33
22.00
70 0.86
0.72 83.33
16.00
75 0.80
0.72 83.33
10.00
80 0.75
0.72 83.33
4.00
85 0.71
0.48 125
32.00
90 0.67
0.48 125
28.00
95 0.63
0.48 125
24.00
100 0.60
0.48 125
20.00
105 0.57
0.48 125
16.00
110 0.55
0.48 125
12.00
115 0.52
0.48 125
8.00
Lanjutan Tabel 4.1 Hasil pengamatan
BPM
Periode (detik)
Periode (detik)
BPM
Galat(%)
yang diinginkan
perhitungan
Rerata Pengamatan
yang terjadi
125 0.48
0.48 125
0.00
130 0.46
0.24 250
48.00
135 0.44
0.24 250
46.00
140 0.43
0.24 250
44.00
145 0.41
0.24 250
42.00
150 0.40
0.24 250
40.00
155 0.39
0.24 250
38.00
160 0.38
0.24 250
36.00
165 0.36
0.24 250
34.00
170 0.35
0.24 250
32.00
175 0.34
0.24 250
30.00
180 0.33
0.24 250
28.00
185 0.32
0.24 250
26.00
190 0.32
0.24 250
24.00
195 0.31
0.24 250
22.00
200 0.30
0.24 250
20.00
Dari tabel 4.1 terjadi kesalahan (
error
) pada semua data hal ini disebabkan karena
ketidakmampuan mikrokontroler dalam menjalankan sub program pembagian.Sub
program pembagian digunakan untuk mencari faktor perkalian.Kesalahan ini dapat
dinalisis seperti pada table 4.2,nilai factor perkalian dihitung menggunakan persamaan
2.1.
Tabel 4.2 Perbandingan faktor perkalian
BPM Faktor Perkalian Faktor Perkalian BPM
Berdasar Perhitungan yang digunakan mikrokontroler yang terjadi
30 8.33 8 31.25
35 7.14 7 35.71
40 6.25 6 41.67
45 5.56 5 50.00
50 5 5 50.00
Lanjutan Tabel 4.2 Perbandingan faktor perkalian
BPM Faktor Perkalian Faktor Perkalian BPM
Berdasar Perhitungan yang digunakan mikrokontroler yang terjadi
65 3.85 3 83.33
70 3.57 3 83.33
75 3.33 3 83.33
80 3.13 3 83.33
85 2.94 2 125
90 2.78 2 125
95 2.63 2 125
100 2.5 2 125
105 2.38 2 125
110 2.27 2 125
115 2.17 2 125
120 2.08 2 125
125 2 2 125
135 1.85 1 250
140 1.79 1 250
145 1.72 1 250
150 1.67 1 250
155 1.61 1 250
160 1.56 1 250
165 1.52 1 250
170 1.47 1 250
175 1.43 1 250
180 1.39 1 250
185 1.35 1 250
190 1.32 1 250
195 1.28 1 250
200 1.25 1 250
Pada table 4.2 ,hasil pembagian pada mikrokontroler hanya menampilkan angka
di depan koma saja atau dapat dikatakan sisa pembagian tersebut tidak
ditampilkan.Karena tidak ditampilkannya angka sisa pembagian maka faktor perkalian
Berdasar atas hasil pengamatan seperti pada tabel 4.1, maka hasil ketukan tiap
menit yang masih bisa dikategorikan sebagai tempo andante (60BPM) adalah pada input
sebesar 60 BPM.Sedangkan untuk tempo moderato (66 - 126 BPM) pada input 65 BPM –
80 BPM.Kemudian tempo allegro (120BPM) diwakili oleh input 120 BPM.
Dari tabel 4.1 dapat dibuat grafik
error
seperti pada gambar 4.1. Dari gambar 4.1
terlihat bahwa
error
periode terjadi paling besar pada 130 BPM.
Error
ini terjadi karena
faktor perkalian yang tidak tepat .Periode yang tidak tepat inilah yang menyebabkan
perbedaan jumlah ketukan tiap menit dengan yang diinginkan.
0.00 10.00 20.00 30.00 40.00 50.00 60.00
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
BPM
E
R
RO
R (
%
)
Gambar 4.1 Grafik error
Dengan kesalahan (error) yang terjadi seperti pada gambar 4.1 maka untuk
memperbaikinya dipakai look up table.Kesalahan pada sub program pembagian untuk
mendapatkan faktor perkalian menghasilkan kesalahan yang menyebabkan hasil ketukan
tiap menit berbeda dengan yang diinginkan.Untuk memperbaiki kesalahan tersebut sub
program pembagian diganti dengan sub program look up table sehingga dapat
menghasilkan ketukan tiap menit yang sesuai.Sebagai contoh jika ketukan yang
diinginkan adalah sebesar 30 ketukan tiap menit maka dengan melihat tabel pada
4.1.1 Bentuk Gelombang Keluaran
Bentuk gelombang keluaran pada perangkat keras ini berupa gelombang
kotak.Gelombang keluaran ini berasal dari timer mikrokontroler,mikrokontroler akan
mengeluarkan sinyal
high
atau
low
,sinyal
high
inilah yang akan menyalakan
buzzer
.Besarnya periode dipengaruhi oleh banyaknya ketukan tiap menit(BPM) yang
diinginkan oleh pengguna.
Gambar 4.2 merupakan gambar periode sebesar 1.9 detik,periode ini
dihasilkan oleh perangkat keras untuk ketukan 30BPM.
Gambar 4.2 Bentuk gelombang output sebesar 1,9 detik.
Gambar 4.3 menyatakan bentuk gelombang untuk periode sebesar 1,7
detik.Periode ini terjadi untuk banyaknya ketukan 35 BPM,periode ini dihasilkan dari
Gambar 4.3 Bentuk gelombang output sebesar 1,7 detik.
Gambar 4.4 memperlihatkan bentuk gelombang sebesar 1,4 detik,yang dihasilkan
oleh banyaknya ketukan sebesar 40 BPM, periode ini dihasilkan dari pengulangan timer
sebanyak 6 kali dari 6,25 yang diinginkan.
Gambar 4.5 Bentuk gelombang output sebesar 1,2 detik.
Gambar 4.5 memperlihatkan periode sebesar 1,2 detik,periode ini dihasilkan oleh
45 BPM sampai dengan 50 BPM,periode yang dihasilkan dari pengulangan 5 dari 5,56
dan 5 kali pengulangan.
Gambar 4.6 Bentuk gelombang output sebesar 0,960 detik.
Gambar 4.6 dihasilkan oleh banyaknya ketukan sebesar 55 BPM dan 60
BPM,periode merupakan hasil pengulangan dari timer sebanyak 4 kali dari 4,55 dan 4,17
Gambar 4.7 adalah gambar dari periode sebesar 0,72 detik yang dihasilkan oleh
pengulangan timer sebanyak 3 kali dari yang diinginkan yaitu sebesar 3,13 sampai 3,85,
periode ini dihasilkan oleh 65 BPM sampai 80 BPM.
Gambar 4.7 Bentuk gelombang output sebesar 0,720 detik.
Gambar 4.8 adalah gambar dari periode sebesar 0,48 detik pada saat banyaknya
ketukan 85 BPM sampai 125 BPM,periode ini dihasilkan oleh pengulangan dari timer
Gambar 4.9 merupakan gambar periode yang dihasilkan oleh ketukan sebanyak
130 BPM sampai 199 BPM,banyaknya