Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Disusun oleh:
YAKOBUS PRIAMBODO
NIM: 035114032
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program
By:
YAKOBUS PRIAMBODO
Student Number: 035114032
ELECTRICAL ENGINEERING STUDY PROGRAM
ELECTRICAL ENGINEERING DEPARTMENT
SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
Kupersembahkan tugas akhir ini
kepada kedua orang tuaku
dan diriku sendiri
“ plan your work and work your plan ”
INTISARI
Kalkulator adalah alat untuk mempermudah dan mempercepat proses
perhitungan. Dewasa ini kalkukator sudah mendukung perhitungan bilangan desimal,
heksadesimal dan biner tetapi terbatas pada operasi perkalian, pembagian,
penambahan dan pengurangan. Untuk pengembangan teknologi dibuat kalkulator
berbasis mikrokontroler yang dapat mendukung perhitungan bilangan heksadesimal,
desimal, biner dan BCD untuk operasi kuadrat, akar kuadrat, perkalian, pembagian,
penjumlahan.
Unit masukan dari kalkulator adalah matriks keypad yang terdiri dari
tombol-tombol angka dan tombol-tombol-tombol-tombol operasi. Masukan ini akan diproses oleh unit
pengolah data. Pada bagian ini data masukan akan disimpan untuk kemudian dihitung
sesuai dengan operasi yang dipilih dan hasilnya akan ditampilkan. Algoritma
perhitungan yang digunakan adalah algoritma perhitungan dalam bentuk bit.
Pengolah data yang digunakan adalah mikrokontroler AT89S52 dan sebagai unit
penampilnya adalah LCD.
Kalkulator ini sudah dicoba dan dapat bekerja dengan baik. Kemampuan
maksimum kalkulator adalah 15 angka. Hasil perhitungan yang ditampilkan pada
LCD telah sesuai dengan hasil perhitungan teori dan kalkulator pembanding.
Kata kunci: kalkulator, aplikasi mikrokontroler
ABSTRACT
Calculator is a instrument to make easier and to speed up the calculation
process. At the present time the calculator support the hexadecimal, decimal and
binary code calculation but limited in multiplication, division, addition and
subtraction operation. To improve technology a calculator based on microcontroller
which can support the hexadecimal, decimal, binary and BCD code calculation for
the square, square root, multiplication, division, addition and subtraction operation.
The calculator input unit is a keypad which is consist of digit and operation
buttons. This input will be proceed by the data process unit. In this part the input data
will be saved and then calculate according to operator input and the result will be
displayed. The calculation algorithm which is use called bit form calculation
algorithm. The data process unit is an AT89S52 microcontroller and LCD as a
display unit.
This calculator has been tested and it works well. A calculator maximum
capacity is 15 digits. The calculation result which displayed on the LCD is
appropriate with the theory calculation and another calculator result.
Keywords: calculator, microcontroller application
Kemungkinan semakin luas. Satu lagi karya Tuhan tercipta melalui tangan – tangan
ulet dan jiwa pejuang.
Puji syukur dan terima kasih penulis panjatkan kepada Allah Bapa atas segala
kasih karunia-Nya sehingga tugas akhir dengan judul “Kalkulator Berbasis
Mikrokontroler” ini dapat diselesaikan dengan baik. Tugas akhir ini merupakan
salah satu syarat untuk memperoleh gelar Sarjana pada program studi Teknik Elektro
Universitas Sanata Dharma Yogyakarta.
Penulis ingin menghargai mereka yang telah memberikan sumbangsih baik
secara langsung maupun tidak, sehingga laporan ini dapat diselesaikan.
1.
Berkat yang melimpah dari Tuhan.
2.
Kedua orang tuaku tercinta Ignatius Sukiman dan Yuliana Sudiyati atas segala
doa dan aliran dana segar tiap bulannya.
3.
Bapak Martanto, S.T, M.T dosen pembimbing I yang telah banyak meluangkan
waktu untuk memberikan bimbingan dan saran. Penulis selalu ingat pesan
beliau ”ambil data sebanyak-sebanyaknya !”.
4.
Bapak Ir. Tjendro dosen pembimbing II yang selalu rela diganggu untuk
bimbingan walupun bukan jadwal bimbingannya.
5.
Mas Mardi, mas Sur dan mas Ucup atas perhatiannya dikala pusing dengan TA.
6.
Rekan-rekan lulusan Teknik Elektro USD, Merryana, S.T, Suryo, S.T dan
Sofian, S.T. Makasih ya atas saran dan “paksaan” untuk cepat-cepat lulus.
makasih atas tempat singgah untuk tidur sehabis bimbingan dan kepada adiknya
Veda (TI 05), makasih bantuannya buat box kalkulator.
9.
Kepada Andreas Marso Wibowo, S.T the hobbit and my annoying brother
makasih atas ”sindirannya” yang membuat semangat menyelesaikan skripsi.
10.
Kepada Thomas Ricky SeptifAnus, S.T yang selalu heboh dalam memberikan
saran. Pokoke Ngangkat Tenan !!.
11.
Teman-teman di Jakarta, Jublek, Puput, Dewi, Asri dan alm. Tri “Gembul”
Tuhan memberkati kalian semua. Untuk Ajenk “Tembem” makasih doa dan
pertanyaan tiap hari “kapan pulangnya?”. Tunggulah aku di Jakarta.
12.
Semua orang yang telah membantu dalam penyusunan karya tulis ini.
Penulis mengakui bahwa karya tulis ini masih jauh dari sempurna. Segala
kritik dan saran yang membangun akan penulis terima dengan senang hati.
Yogyakarta, Oktober 2007
Penulis
Lembar Pengesahan oleh Pembimbing ...
Lembar Pengesahan oleh Penguji ... ...
Lembar Pernyataan Keaslian Karya ...
Halaman Persembahan dan Motto Hidup ...
INTISARI ...
ABSTRACT ...
Kata Pengantar ...
Daftar Isi ...
Daftar Gambar...
Daftar Tabel ...
BAB I PENDAHULUAN ...
1.1 Latar Belakang Masalah ...
1.2 Tujuan ...
1.3 Manfaat ...
1.4 Batasan Masalah ...
1.5 Perumusan Masalah ...
1.6 Metodologi Penelitian ...………....
1.7 Sistematika Penulisan ...
BAB II DASAR TEORI ...
2.1
Kode Biner ...
2.2
Kode Heksadesimal …...………...
2.3
Kode BCD ...………
2.4
Algoritma Penambahan ...………..
2.5
Algoritma Pengurangan ...………..
2.6
Algoritma Perkalian ……….
2.11
Algoritma Bilangan Bertanda ...
2.12
Konversi Biner dan BCD ke Heksadesimal...
2.13
Konversi Desimal ke Heksadesimal ...
2.14
Thyristor ...
2.15
Matriks Keypad ...
2.16
LCD ...
2.17
Mikrokontroler AT89S52 ...
2.17.1
Konfigurasi Pin Mikrokontroler AT89S52...
2.17.2
RAM Internal ...
2.17.3
Flash PEROM ...
2.17.4
PSW (Program Status Word) ...
2.17.5
Rangkaian Osilator Mikrokontroler ...
2.17.6
Rangkaian Reset Mikrokontroler ...
BAB III PERANCANGAN ALAT ...
3.1
Bentuk Fisik Kalkulator ...……….
3.2
Rangkaian Matriks Keypad ...
3.3
Rangkaian LCD ...………..
3.4
Rangkaian Mikrokontroler AT89S52 ...
3.4.1
Rangkaian Osilator Mikrokontroler AT89S52 ...
3.4.2
Rangkaian Reset Mikrokontroler AT89S52 ...
3.5
Rangkaian Pengunci ON/OFF ...
3.6
Pemograman Mikrokontroler ...
3.6.1
Subrutin Mode ...
3.6.2
Subrutin Masukan Data 1 ...
3.6.7
Subrutin Penambahan ...
3.6.8
Subrutin Pengurangan ...
3.6.9
Subrutin Perkalian ...
3.6.10
Subrutin Pembagian ...
3.6.11
Subrutin Kuadrat ...
3.6.12
Subrutin Akar Kuadrat ...
3.6.13
Konversi Biner ke Heksadesimal ...
3.6.14
Konversi BCD ke Heksadeimal ...
3.6.15
Konversi Desimal ke Heksadesimal ...
3.6.16
Algoritma Tampilan Bilangan Negatif ...
BAB IV HASIL DAN PEMBAHASAN …………...………
4.1 Bentuk Fisik Kalkulator ………
4.2 Penggunaan Alat ………...
4.2.1 Pemilihan MODE Kalkulator ………..
4.2.2 Tampilan Bilangan Negatif ………..
4.2.3 Tampilan Sisa Perhitungan ………..
4.2.4 Tampilan Pesan ERROR! ………
4.3 Data Pengamatan ………...
4.3.1 Konversi Heksadesimal ke Biner …………..………...
4.3.2 Konversi Biner ke Heksadesimal ……….
4.3.3 Konversi Heksadesimal ke BCD ...………...
4.3.4 Konversi BCD ke Heksadesimal ………...…...
4.3.5 Konversi Heksadesimal ke Desimal ………
4.3.6 Konversi Desimal ke Heksadesimal ………
4.3.7.4 Operasi Kuadrat Mode BCD ………....
4.3.8 Operasi Perkalian ……….
4.3.8.1 Operasi Perkalian Mode Heksadesimal ………...
4.3.8.2 Operasi Perkalian Mode Biner ……….
4.3.8.3 Operasi Perkalian Mode Desimal ………...
4.3.8.4 Operasi Perkalian Mode BCD ……….
4.3.9 Operasi Pembagian ………..
4.3.9.1 Operasi Pembagian Mode Heksadesimal ……….
4.3.9.2 Operasi Pembagian Mode Biner ………..
4.3.9.3 Operasi Pembagian Mode Desimal ………..
4.3.9.4 Operasi Pembagian Mode BCD ………...
4.3.10 Operasi Penambahan ………..
4.3.10.1 Operasi Penambahan Mode Heksadesimal ………...
4.3.10.2 Operasi Penambahan Mode Biner ………..…
4.3.10.3 Operasi Penambahan Mode Desimal ……….…
4.3.10.4 Operasi Penambahan Mode BCD ………..
4.3.11 Operasi Pengurangan ……….
4.3.11.1 Operasi Pengurangan Mode Heksadesimal …………....
4.3.11.2 Operasi Pengurangan Mode Biner ……….
4.3.11.3 Operasi Pengurangan Mode Desimal ……….
4.3.11.4 Operasi Pengurangan Mode BCD ………..
4.3.12 Operasi Akar Kuadrat ………
4.3.12.1 Operasi Akar Kuadrat Mode Heksadesimal …………...
4.3.12.2 Operasi Akar Kuadrat Mode Biner ………...
BAB V KESIMPULAN DAN SARAN ……….
5.1 Kesimpulan ………...
5.2 Saran ……….
DAFTAR PUSTAKA ...
LAMPIRAN ...
106
106
106
107
108
Halaman
Gambar 2.1. Simbol Thyristor ………. ………
14
Gambar 2.2. Rangkaian Matriks Keypad ………...….……….
15
Gambar 2.3. Konfigurasi Pin Mikrokontroler AT89S52 ...………..
17
Gambar 2.4. Lokasi RAM Internal ………...……..………….
19
Gambar 2.5. Rangkaian Osilator Mikrokontroler ….………...
21
Gambar 2.6. Rangkaian Reset Mikrokontroler ……...……….
22
Gambar 3.1. Diagram Blok Kalkulator Berbasis Mikrokontroler ...……
23
Gambar 3.2. Perancangan Bentuk Fisik Kalkulator …...………..
24
Gambar 3.3. Konfigurasi Matriks Keypad ………..……….
25
Gambar 3.4. Konfigurasi Mikrokontroler, Keypad dan LCD …...……...
28
Gambar 3.5. Rangkaian Pengunci ON/OFF ………...
29
Gambar 3.6. Flowchart Program Utama ………...
31
Gambar 3.7. Flowchart Subrutin Mode ………...
32
Gambar 3.8. Flowchart Subrutin Masukan Data 1 ……….
33
Gambar 3.8. Flowchart Subrutin Masukan Data 1 (lanjutan) .………….
34
Gambar 3.8. Flowchart Subrutin Masukan Data 1 (lanjutan) …...……...
35
Gambar 3.9. Flowchart Subrutin Operator ……...
37
Gambar 3.11. Flowchart Subrutin Hasil ……….………….
41
Gambar 3.11. Flowchart Subrutin Hasil (lanjutan) ………..
42
Gambar 3.12. Subrutin Tampilan LCD ………...……….
43
Gambar 3.13. Subrutin Penambahan ……...……….
44
Gambar 3.14. Subrutin Pengurangan ……… ...
45
Gambar 3.15. Subrutin Perkalian ……….
46
Gambar 3.16. Subrutin Pembagian ……….……….
47
Gambar 3.17. Subrutin Kuadrat ……….………..
48
Gambar 3.18. Subrutin Akar Kuadrat ………...
49
Gambar 3.19. Konversi Biner ke Heksadesimal ……...………...
50
Gambar 3.20. Konversi BCD ke Heksadesimal ………..…….
51
Gambar 3.21. Konversi Desimal ke Heksadesimal ...…...………
52
Gambar 3.22. Tampilan Bilangan Negatif ………...
53
Gambar 4.1. Bentuk fisik kalkulator ……...……….
55
Gambar 4.2. Bagian dalam kalkulator ……….
56
Gambar 4.3. Tampilan awal setelah penekanan tombol ON ………
57
Gambar 4.4. Tampilan data masukan data pertama ……….
58
Gambar 4.5. Tampilan data masukan kedua ………
58
Gambar 4.9. Hasil konversi ke dalam sandi biner ………...
61
Gambar 4.10. Hasil konversi ke dalam bentuk desimal ………...
61
Gambar 4.11. Hasil konversi ke dalam bentuk BCD ...………
62
Gambar 4.12. Data positif yang akan diubah kedalam bentuk negatif …
63
Gambar 4.13. Tampilan negatif sandi heksedesimal ………...
63
Gambar 4.14 Tampilan negatif sandi biner ………..
63
Gambar 4.15 Tampilan negatif sandi desimal ……….
64
Gambar 4.16 Tampilan negatif sandi BCD ………. ………
64
Gambar 4.17 Data masukan pertama yang akan dibagi ………...
65
Gambar 4.18 Tampilan simbol operator pembagian ………
65
Gambar 4.19 Tampilan data pembagi ………..
66
Gambar 4.20 Tampilan hasil dan sisa pembagian ………
66
Gambar 4.21 Tampilan pesan ERROR! ………...
67
Tabel 2.1. Konversi biner dan heksadesimal ………….…….………….
6
Tabel 2.2. Pengodean desimal ke bentuk BCD ………...……….
7
Tabel 2.3. Pin-pin LCD dan fungsinya ………...……….
16
Tabel 2.4. Fungsi pin Mikrokontroler AT89S52 ………...………..
18
Tabel 2.5. Bit-bit penyusum PSW ………...………
20
Tabel 2.6. Pemilihan bank memori ………...………...
21
Tabel 3.1. Kombinasi baris dan kolom matriks keypad ………...
26
Tabel 3.2. Konfigurasi pin LCD dan mikrokontroler ………..…………
27
Tabel 3.3. Kode untuk masimg-masing Mode ……….
32
Tabel 3.4. Kode untuk masing-masing Operator ………...………..
36
Tabel 4.1. Data konversi heksadesimal ke biner ………..
68
Tabel 4.2. Data konversi biner ke heksadesimal ………..
70
Tabel 4.3. Data konversi desimal ke BCD ……...………
71
Tabel 4.4. Data konversi BCD ke desimal ………..…………
72
Tabel 4.5. Data konversi heksadesimal ke desimal …………...………..
73
Tabel 4.6. Data konversi desimal ke heksadesimal …………...………..
75
Tabel 4.8. Data operasi kuadrat bilangan heksadesimal ………..
76
Tabel 4.12. Data operasi perkalian bilangan heksadesimal ……….
81
Tabel 4.13. Data operasi perkalian bilangan biner ………...
82
Tabel 4.14. Data operasi perkalian bilangan desimal ………..
84
Tabel 4.15. Data operasi perkalian sandi BCD ………
85
Tabel 4.16. Data operasi pembagian bilangan heksadesimal …………...
86
Tabel 4.17. Data operasi pembagian bilangan biner ………
87
Tabel 4.18. Data operasi pembagian bilangan desimal ………
87
Tabel 4.19. Data operasi pembagian sandi BCD ……….
88
Tabel 4.20. Data operasi penambahan bilangan heksadesimal …………
89
Tabel 4.21. Data operasi penambahan bilangan biner ……….
90
Tabel 4.22. Data operasi penambahan bilangan desimal ……….
91
Tabel 4.23. Data operasi penambahan sandi BCD ………...
92
Tabel 4.24. Data operasi pengurangan bilangan heksadesimal ………...
94
Tabel 4.25. Data operasi pengurangan bilangan biner ……….
95
Tabel 4.26. Data operasi pengurangan bilangan desimal ……….
96
Tabel 4.27. Data operasi pengurangan sandi BCD ………..
98
Tabel 4.28. Data operasi akar kuadrat bilangan heksadesimal ...
99
Tabel 4.29. Data operasi akar kuadrat bilangan biner ………..
100
Tabel 4.33. Data konversi berulang kali ………..
1.1 Latar Belakang Masalah
Kalkulator adalah alat untuk menghitung dari perhitungan sederhana seperti
penjumlahan, pengurangan, perkalian dan pembagian sampai kepada kalkulator sains
yang dapat menghitung rumus matematika tertentu. Pada perkembangannya sekarang
ini, kalkulator sering dimasukkan sebagai fungsi tambahan daripada komputer,
handphone, bahkan sampai jam tangan. [1]
Pada umumnya, kalkulator digunakan untuk perhitungan bilangan desimal.
Namun saat ini ada kalkulator yang dapat digunakan untuk perhitungan bilangan
biner dan heksadesimal akan tetapi hanya pada operasi aritmatik perkalian,
pembagian, penjumlahan dan pengurangan. Sedangkan untuk bilangan BCD belum
ada kalkulator yang dapat digunakan untuk menghitung bilangan tersebut.
Bilangan biner merupakan sistem dasar yang dipakai dalam komputer dimana
terdapat 2 angka dasar 0 dan 1 (yang disebut bit) dan setiap bit
dikalikan dengan
angka dasar 2 dan pangkat sesuai dengan urutannya. Bilangan BCD (Binary-Coded
Decimal) atau lebih sering disebut kode BCD merupakan penggambaran 4 angka
bilangan biner, dimana setiap angka desimal diwakili oleh 4 bit. Pada bilangan
heksadesimal dibutuhkan 16 angka dasar 0 – 9 dan A – F, yang setiap angka
dikalikan dengan angka dasar 16 dengan pangkat sesuai urutannya. [2]
Melihat kenyataan terbatasnya operasi aritmatik bilangan biner, heksadesimal
dan BCD pada kalkulator, maka penulis membuat alat Kalkulator Berbasis
Mikrokontroler untuk perhitungan bilangan biner, desimal, heksadesimal dan BCD.
Alat ini dapat membantu pengguna dalam mempermudah dan mempercepat
perhitungan bilangan biner, heksadesimal dan BCD.
1.2 Tujuan
Tujuan penelitian ini, peneliti mempunyai beberapa tujuan yang ingin dicapai
yaitu:
1.
Memaparkan perancangan kalkulator sederhana bebasis mikrokontroler.
2.
Memaparkan perancangan algoritma komputasi pada operasi-operasi
aritmatik.
3.
Membuat perangkat keras berupa kalkulator.
4.
Membuat perangkat lunak yang dapat mengimplementasikan perancangan
algoritma komputasi.
1.3 Manfaat
Mengacu pada beberapa tujuan yang akan dicapai, diharapkan penelitian ini
dapat memberikan beberapa manfaat :
1.
Bagi penulis dapat menambah pengetahuan perancangan kalkulator
2.
Bagi pembaca dapat menjadi acuan untuk mengembangkan perancangan
algoritma arimatik yang lainnya.
1.4 Batasan Masalah
Batasan masalah pada alat yang dibuat yaitu:
1.
Operasi aritmatik yang digunakan adalah perkalian, pembagian, penjumlahan,
pengurangan, kuadrat dan akar kuadrat.
2.
Jumlah masukan dan hasil maksimum adalah 15 digit untuk tiap mode.
3.
Masukan dan hasil perhitungan adalah bilangan integer.
4.
Terdapat empat pilihan mode yaitu, mode biner ,heksadesimal ,desimal dan
BCD.
5.
Perhitungan berdasarkan urutan operator yang ditekan.
1.5 Perumusan Masalah
Kalkulator ini dibuat dengan menggunakan mikrokontroler. Mikrokontroler
akan mengolah data masukan dari keypad dan menampilkannya ke LCD. Agar dapat
bekerja, mikrokontroler harus diisi perangkat lunak
(software)
yang berisikan
algoritma-algoritma perhitungan.
Dari uraian tersebut, masalah yang didapat adalah :
1.
Bagaimana membuat algoritma untuk perhitungan ?
2.
Bagaimana mengimplementasikan algoritma arimatik untuk membuat
software bahasa assembly ?
1.6 Metodologi Peneltian
Penelitian dilakukan dengan perancangan perangkat keras dan perangkat
lunak, pengujian alat, pengambilan data, analisis data dan kesimpulan.
1.7 Sistematika Penulisan
Sistematika penulisan terdiri dari lima bab yaitu :
BAB I. PENDAHULUAN
Membahas tentang latar belakang masalah, tujuan, manfaat, batasan
masalah, perumusan masalah dan metodologi penelitian.
BAB II. DASAR TEORI
Membahas dasar teori yang mendukung penelitian, yaitu tentang bilangan
biner, heksadesimal dan BCD, Mikrokontroler AT89S52, matriks keypad
dan LCD.
BAB III. PERANCANGAN ALAT
Membahas tentang perancangan algoritma perhitungan, implementasi
algoritma ke dalam perangkat lunak
(software)
bahasa
assembly,
perancangan perangkat keras berupa konfigrasi mikrokontroler dengan
matriks keypad dan LCD.
BAB IV. PEMBAHASAN
Membahas pengamatan kerja, pengambilan data dan analisis data dari alat
yang dibuat.
BAB V. KESIMPULAN DAN SARAN
BAB II
DASAR TEORI
Kalkulator
berbasis
mikrokontroler dibuat untuk memudahkan dan
mempercepat perhitungan bilangan biner, heksadesimal dan BCD. Untuk
membangun sistem tersebut dibutuhkan rangkaian untuk memberikan nilai masukan
yang disusun oleh matriks keypad.
Data masukan tersebut kemudian diproses oleh
mikrokontroler dan hasilnya ditampilkan ke dalam modul LCD.
2.1 Kode Biner
Kode biner biasa disebut BIN merupakan bilangan yang digunakan dalam
sitem digital. Pada kode ini mempunyai basis 2 yang hanya menggunakan dua buah
bilangan dasar, 0 dan 1 yang disebut bit. Nilai 0 mewakili logika rendah sedangkan
nilai 1 mewakili logika tinggi.
Dalam penyandiannya setiap bit
dikalikan dengan angka dasar 2 dengan
pangkat sesuai urutannya. Sistem ini dinamakan power of two 2
n. Bit yang dikalikan
dengan 2
nterbesar dinamakan MSB (Most Significant Bit) dan yang dikalikan
dengan 2
nterkecil dinamakan LSB (Least Significant Bit). Sebagai contoh nilai biner
1010 mewakili nilai 10 bilangan desimal dengan perhitungan sebagai berikut. [2]
MSB
LSB
1010 = 1 x 2
3+ 0 x 2
2+ 1 x 2
1+ 0 x 2
0= 8 + 0 + 2 + 0
= 10
2.2 Kode Heksadesimal
Kode Heksadesimal biasa disebut HEX menggunakan basis 16 dan ditulis
dengan simbol 0 – 9 dan A – F. Sistem penyandiannya sama dengan kode biner hanya
saja angka dasar 2 diganti dengan 16. Nilai dapat dilihat pada tabel 2.1.
Tabel 2.1. Konversi biner dan heksadesimal.
Biner Heksadesimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
Biner Heksadesimal
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
2.3 Kode BCD
Pada sistem digital, angka desimal dikodekan tiap angkanya kedalam bentuk
biner.
Pengodean ini dinamakan Binary Coded Decimal (BCD). Setiap angka pada
sistem desimal dikodekan kedalam 4 bit,
hal ini dikarenakan pada sistem angka
desimal terdapat 10 angka yang harus dikodekan sehingga diperlukan minimal 4 bit
untuk setiap angkanya. Pengodean dari sistem desimal ke bentuk BCD dapat dilihat
pada tabel 2.2. [4]
Tabel 2.2. Pengodean desimal ke bentuk BCD.
Desimal BCD
2.4 Algoritma Penambahan
Penambahan menggunakan sistem penambahan tiap-tiap bit dengan
memperhitungkan bawaan (carry) dari perhitungan sebelumnya. Sebagai contoh. [5]
7
0 1 1 1
6 +
0 1 1 0 +
13
1 1 0 1
2.5 Algoritma Pengurangan
Pengurangan menggunakan sistem pengurangan tiap-tiap bit dengan
memperhitungkan bawaan (carry) dari perhitungan sebelumnya. Sebagai contoh. [5]
13
1 1 0 1
6 -
0 1 1 0 -
7
0 1 1 1
2.6 Algoritma Perkalian
Perkalian menggunakan sistem geser kanan dan tambahkan. Misal bilangan H
akan dikali dengan pengali P dan hasil perkalian awal S. Langkah-langkah yang harus
dilakukan :
1.
Set data awal S = 0
2.
Lihat bit
terakhir bilangan P jika 1, tambahkan S dengan H kemudian geser
kanan S dan P satu posisi bit dan jika 0 hanya geser kanan S dan P satu posisi
bit.
Sebagai contoh :
Ket:
3
0011 (H)
Æ
= geser kanan
2 x
Æ
0010 x (P)
C
S
P
0 0 0 0 0
0 0 1 Geser kanan 1 kali
Æ
0 0 0 0 0
0 0 0 Tambahkan dengan S dengan H
Geser
kanan
1
kali
1
0
0 0 0 1 1 +
0 0 0 1 1
Æ
0 0 0 0 1
1 0 0 Geser kanan 1 kali
Æ
0 0 0 0 0
1 1 0 Geser kanan 1 kali
0
0
Æ
0 0 0 0 0
0 1 1 0
Hasil
2.7 Algoritma Pembagian
Pembagian menggunakan metode pengurangan dan restoring dengan sistem
geser kiri dan kurangkan. Operasi ini berlaku untuk bilangan integer sehingga akan
muncul sisa bagi dari proses. Misal bilangan H akan dibagi dengan pembagi P dan
sisa pembagian S. Langkah-langkah yang harus dilakukan :
1.
Set data awal S = 0
2.
Geser kiri S dan H satu posisi bit
3.
Kurangkan P dari S dan tempatkan kembali hasil ke S
4.
Jika tanda (carry) S adalah 1 maka set H
0ke 0 dan tambahkan P kembali ke S,
jika tidak maka set H
0ke 1.
Sebagai contoh :
2
10
Æ
10
22
1010
C S
H
Ket:
Subb = kurangkan
Awal
0 0 0 0 0
1 0 1 0
Å
0 0 0 0 1
0 1 0
1
Å
= geser kiri
Subb
1 0 -
Set H
01 1 1 1 1
1 0 +
0 0 0 0 1
0 1 0
Å
0 0 0 1 0
1 0
0
0
Subb
1 0 -
Set H
00 0 0 0 0
1 0
0
Å
0 0 0 0 1
0
0
1
Subb
1 0 -
Set H
01 1 1 1 1
1 0 +
0 0 0 0 1
0
0
1
0
0
1
0
Å
0 0 0 1 0
Subb
1 0 -
0 0 0 0 0
0
1
0
1
2.8 Algoritma Kuadrat
Proses operasi kuadrat sama dengan operasi perkalian. Hanya saja pada
operasi kuadrat bilangan pengali P sama dengan bilangan yang akan dikali H.
Sebelum proses perkalian dimulai, terlebih dahulu bilangan H disalin ke bilangan P
kemudian kedua bilangan tersebut dikalikan.
2.9 Algoritma Akar Kuadrat
Operasi akar kuadrat menggunakan metode SAR (Succsessive Approximation
Register).
Metode ini berlaku pada bentuk biner atau heksadesimal, sehingga
bilangan yang akan dicari nilai akar kuadratnya harus diubah terlebih dahulu dalam
bentuk heksadesimal. Langkah-langkah yang harus dilakukan :
1.
Hitung jumlah bit yang akan dicari nilai akar kuadratnya (n)
2.
Set nilai awal hasil akar kuadrat (P) = 0
3.
Set MSB P = 1
4.
Kemudian kuadratkan P
5.
Bandingkan P dengan bilangan yang akan dicari akar kuadratnya (Q)
6.
Jika P < Q simpan nilai P, jika P > Q clear bit P
7.
Set bit berikutnya, kembali ke langkah 5 sampai P > Q
Sebagai contoh :
2
Hasil awal
0
0
1
0
Set
Kuadratkan
0 1 0 0
0 1 0 0
1
0
1
0
Bandingkan <
Set
1
1
Kuadratkan
1
0 0 1
Hasil akar kuadrat
2.10 Bilangan 2’s Komplemen
Bilangan 2’s komplemen merupakan representasi dari bilangan bertanda
bentuk biner. Sebagai contoh [6]
5
Æ
0101
1010 1’s komplemen
1 +
-5
Æ
1011 2’s komplemen
2.11 Algoritma Bilangan Bertanda
Untuk proses penambahan dan pengurangan bilangan bertanda menggunakan
fasilitas 2’s komplemen. Sebelum dilakukan operasi penambahan dan pengurangan
bilangan yang bertanda diubah ke dalam bentuk 2’s komplemennya.
2.12 Konversi Biner dan BCD ke Heksadesimal
Pengubahan
biner
dan BCD
ke heksadesimal pada dasarnya sama, karena
BCD juga merupakan sandi biner
yang digunakan untuk bilangan desimal.
Pengubahannya adalah dengan cara pengubahan tiap satu nibble. Bilangan
biner dan
BCD terlebih dahulu dipisahkan tiap nibble mulai dari LSB. Setelah dipisahkan tiap
bit dalan satu nibble dikalikan dengan bobot 8421 sesuai dengan urutannya kemudian
dijumlahkan. Sebagai contoh dapat dilihat pada proses pengubahan dibawah. [6]
101101
2Æ
0 0 1 0 1 1 0 1
1 nibble 1 nibble
Æ
0.8 + 0.4 + 1.2 + 0.1 || 1.8 + 1.4 + 0.2 +1.1
2
D
101101
2Æ
2D
162.13 Konversi Desimal ke Heksadesimal
Pengubahan desimal ke heksadesimal adalah dengan cara mengalikan tiap
angkan desimal dengan A
n, nilai n adalah urutan angka. Setelah dikalikan, hasilnya
ditambahkan semua. Sebagai contoh dapat dilihat pada proses pengubahan dibawah.
[7]
2.14 Thyristor
Thyristor adalah komponen semikonduktor yang biasa dioperasikan pada dua
keadaan. Pengoperasiannya berada pada kondisi dari tidak menghantarkan arus listrik
(nonconducting/OFF)
dan kondisi menghantarkan arus listrik (conducting/ON).
Simbol thyristor dapat dilihat pada gambar 2.1.
A
K
G
A = ANODA
K = KATODA
G = GATE
Gambar 2.1. Simbol thyristor.
Kaki GATE pada thyristor di desain untuk dapat mengendalikan keadaan ON
dan OFF. Apabila kaki GATE diberi tegangan, maka thyristor akan ON sampai kaki
GATE dimatikan. Agar dapat menghantarkan arus listrik, maka pada keadaan ON
besarnya beda potensial kaki ANODA harus lebih besar dari beda potensial kaki
KATODA.
2.15 Matriks Keypad
Kofigurasi matriks keypad terdiri dari tombol-tombol yang tersusun atas baris
dan kolom. Rangkaian matriks keypad sederhana dapat dilihat pada gambar 2.2.
2
3
4
5
6
7
1
8
9
*
0
#
B2
B3
B4
K1 K2 K3
B1
Gambar 2.2. Rangkaian matriks keypad
Penggunaan matriks keypad
bertujuan untuk menghemat jumlah port
yang
digunakan pada mikrokontroler. Pada gambar 2.2 adalah matriks keypad
4 x 3 yang
artinya terdiri dari 4 baris dan 3 kolom. Matriks keypad ini tersusun dari 12 tombol,
apabila tidak menggunakan konfigurasi matriks keypad
maka dibutuhkan 12 port
sedangkan dengan matriks keypad hanya menggunakan 7 port.
2.16 LCD
LCD
(Liquid Crystal Display) adalah suatu tampilan dari bahan cairan kristal
yang dioperasikan dengan menggunakan sisitem dot matriks. LCD dalam berbagai
aplikasi elektronik sering digunakan sebagai tampilan seperti jam digital, kalkulator,
telepon dan sebagainya.
Dimensi LCD yang akan digunakan dalam perancangan memiliki ukuran
2 x 16. Ukuran tersebut menandakan bahwa LCD memiliki layar tampilan yang
terdiri dari 2 baris dan 16 kolom. Total jumlah karakter yang dapat ditampilkan
adalah sebanyak 32 karakter dengan 16 karakter pada tiap baris dan masing-masing
karakter tersusun dari titik-titik (dot) yang memiliki ukuran 8 x 5 titik.
Pada penggunaan LCD ada beberapa pin yang penting. Pin-pin tersebut dapat
dilihat pada tabel 2.3.
Tabel 2.3. Pin-pin pada LCD dan fungsinya.
Pin Fungsi
D0….D7 I/O
data
E
Untuk mengaktifkan LCD, maka E diberi logika tinggi.
E = ‘1’
Æ
LCD aktif
W
R
/
Pemilihan instruksi baca dan tulis LCD
‘0’ = Tulis ke LCD
‘1’ = Baca dari LCD
RS Pemilih
register
‘0’ = register instruksi (write) dan address counter (read) aktif.
‘1’ = data register (write dan read) aktif.
2.17 Mikrokontroler AT89S52
Mikrokontroler AT89S52 adalah mikrokontroler buatan ATMEL.
Mikrokontroler 8 bit
ini sudah dilengkapi FPEROM (Flash Programmable and
Erasable Read Only Memory). FPEROM adalah ROM (Read Only Memory) yang
dapat dihapus dan ditulis kembali.
Fasilitas-fasilitas standar yang dimiliki Mikrokontroler AT89S52 adalah 8 KB
FPEROM, 256 byte
RAM
(Random Accsess Memory), 32 jalur I/O (input/output),
watchdog timer, dua data pointer, tiga 16-bit timer/counter, jalur komunikasi serial
full duplex dan osilator internal.
2.17.1 Konfigurasi Pin Mikrokontroler AT89S52
Mikrokontroler AT89S52 memiliki 40 pin dan ada beberapa pin yang
memiliki fungsi ganda. Konfigurasi pin Mikrokontroler AT89S52 dapat dilihat pada
gambar 2.3 dan fungsi pin dapat dilihat pada tabel 2.4.
Tabel 2.4. Fungsi pin Mikrokontroler AT89S52.
Pin Fungsi
VCC
Catu daya 4V – 5,5V
GND Ground
Port 0
8 bit jalur I/O dua arah
Port 1
8 bit jalur I/O dua arah
Fungsi alternatif :
P1.0 = T2 (Masukan untuk timer 2)
P1.1 = T2EX (Trigger timer 2)
P1.5 = MOSI (digunakan untuk ISP)
P1.6 = MISO (digunakan untuk ISP)
P1.7 = SCK (digunakan untuk ISP)
Port 2
8 bit jalur I/O dua arah
Port 3
8 bit jalur I/O dua arah
Fungsi alternatif :
P3.0 = RXD (masukan komunikasi serial)
P3.1 = TXD (keluaran komunikasi serial)
P3.2 =
INT
0
(interupsi ekternal 0)
P3.3 =
INT
1
(interupsi eksternal 1)
P3.4 = T0 (masukan timer 0)
P3.5 = T1 (masukan timer 1)
P3.6 = WR
P3.7 =
RD
RST
Mereset mikrokontroler apabila diberi logika ‘1’
selama 2 siklus mesin
EA
/VPP Harus diberi VCC apabila ingin menjalankan
program internal
XTAL1
Masukan osilator internal
2.17.2 RAM Internal
RAM Internal pada Mikrokontroler AT89S52 terdiri atas :
a.
Register Bank. Mikrokontroler memiliki 8 buah register yang terdiri atas R0
sampai dengan R7. Register ini dapat diubah dari bank 0 (default) ke bank 1,
bank 2 dan bank 3 dengan cara mengubah nilai RS0 dan RS1 pada register
PSW.
b.
Bit addressable RAM. RAM yang dapat diakses secara pengalamatan bit
terletak pada alamat 20H sampai 2FH.
c.
RAM serbaguna. RAM ini dapat diakses secara pengalamatan langsung dan
tak langsung terletak pada alamat 30H sampai 7FH. Lokasi RAM Internal
dapat dilihat pada gambar 2.4.
0 1 2 3 4 5 6 7 8 9 A
B C D E F
00
BANK 0 (default)
BANK 1
10
BANK 2
BANK 3
20
Bit Addressable RAM
30
:
:
:
:
F0
RAM Serbaguna
2.17.3 Flash PEROM
Mikrokontroler AT89S52 mempunyai 8 KB Flash PEROM yang dapat ditulis
dan dihapus. Flash PEROM berisikan instruksi-instruksi. Instruksi-instruksi ini akan
dieksekusi jika sistem di-reset. Bila pin EA/VPP berlogika ‘1’ maka mikrokontroler
aktif berdasarkan program yang ada di Flash
PEROM. Bila pin EA/VPP berlogika
‘0’ maka mikrokontroler aktif berdasarkan program yang ada di memori eksternal.
2.17.4 PSW (Program Status Word)
PSW (Program Status Word) berisikan bit-bit
status yang berkaitan dengan
kondisi CPU. PSW bersifat bit-adressable
artinya tiap-tipa bit
dapat dialamati
satu-persatu tanpa harus merubah satu kesatuan byte. Bit-bit penyusun PSW dapat dilihat
pada tabel 2.5.
Tabel 2.5. Bit-bit penyusun PSW
Posisi
PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
Bit
CY AC F0 RS1 RS0 OV - P
Keterangan :
CY =
Menerima
carry out dari bit 1 operasi aritmatik
AC =
Menerima
carry out dari bit 1 operasi penjumlahan
F0
= Status multiguna
RS1 =
Bit 1 pemilih bank register
RS0 =
Bit 0 pemilih bank register
OV
= Limpahan operasi aritmatik
PSW.1 = Didefinisikan pengguna
PSW dapat digunakan untuk memilih bank memory (Bank 0 – Bank 3).
Pemilihan dilakukan dengan mengatur bit RS0 dan bit RS1 menurut tabel 2.6.
Tabel 2.6. Pemilihan bank memory
Bit
RS0
Bit
RS1
Bank
Terpilih Alamat
0 0
Bank 0
00H – 07H
0 1
Bank 1
08H – 0FH
1 0
Bank 2
10H – 17H
1 1
Bank 3
18H – 1FH
2.17.5 Rangkaian Osilator Mikrokontroler
Pada
datasheet
dikatakan bahwa jika menggunakan osilator kristal, maka
kapasitor yang digunakan adalah 30 pF. Rangkaian osilator dapat dilihat pada
gambar 2.5.
2.17.6 Rangkaian Reset Mikrokotroler
Rangkaian reset digunakan untuk mereset program yang terdapat pada
mikrokontroler. Rangkain reset dapat dilihat pada gambar 2.6.
VCC
C
R
9
(RESET)
MIKROKONTROLERGambar 2.6. Rangkaian reset mikrokontroler
Pada gambar 2.6 apabila saklar tidak ditekan, pin reset pada mikrokontroler
akan mendapatkan logika rendah ‘0’. Sedangkan saat saklar ditekan pin akan
mendapatkan logiga tinggi ‘1’ dan akan mereset mikrokontoler. Lamanya waktu yang
dibutuhkan untuk mereset adalah dua siklus mesin dan memenuhi persamaan :
Perancangan sistem kalkulator berbasis mikrokontroler terdiri atas
perancangan perangkat keras dan perancangan perangkat lunak. Perancangan
perangkat keras memiliki tiga bagian utama yaitu unit masukan, unit pemroses data
dan unit keluaran. Unit masukan tersusun dari rangkaian matriks
keypad
, unit
pemroses adalah mikrokontroler, sedangkan unit keluaran adalah penampil LCD.
Perancangan perangkat lunak berupa
flowchart
program yang akan diisikan ke dalam
mikrokontroler. Secara umum diagram blok sistem dapat dilihat pada gambar 3.1.
KEYPAD
MIKROKONTROLER
LCD
Gambar 3.1. Diagram blok kalkulator berbasis mikrokontroler.
Pada bagian ini akan dijelaskan tentang perancangan bentuk fisik kakulator,
rangkaian matriks
keypad,
penggunaan pin-pin LCD, konfigurasi antara
mikrokontroler, matriks
keypad,
dan pin-pin LCD serta perancangan program
mikrokontroler berupa
flowchart-flowchart
program.
3.1 Bentuk Fisik Kalkulator
or adalah perancangan posisi
keypad
dan
LCD. P
Perancangan bentuk fisik kalkulat
erancangan bentuk fisik kalkulator dapat dilihat pada gambar 3.2.
Gambar 3.2 Perancangan bentuk fisik kalkulator
.2 Rangkaian Matriks Keypad
atriks
keypad
8 x 4 yang artinya
tersusu
3
Matriks
keypad
yang digunakan adalah m
n atas 8 baris dan 4 kolom.
Keypad
ini dihubungkan dengan
port
1 dan
port
3
mikrokontroler AT89S52, untuk barisnya terhubung dengan jalur P3.0 sampai P3.7.
Sedangkan kolomnya terhubung dengan jalur P1.0 sampai P1.3. Konfigurasi
Gambar 3.3. Konfigurasi matriks
keypad
Cara kerja dari matriks
keypad
adalah dengan sistem
scanning
tombol satu per
satu. Kolom 1 sampai dengan kolom 5 (P1.0 - P1.3) berfungsi sebagai keluaran
mikrokontroler. Sedangkan baris 1 sampai dengan baris 8 (P3.0 – P3.7) sebagai
masukan mikrokontroler. Keluaran mikrokontroler akan memberikan kondisi ‘1’ pada
setiap kolom
secara bergantian, sehingga apabila ada tombol yang ditekan maka baris
tersebut akan memiliki kondisi ‘1’ pula. Sebagai contoh apabila tombol ‘DEL’
ditekan maka baris 8 (P3.7) dan kolom 4 (P1.3) akan berkondisi ‘1’, demikian pula
untuk penekanan tombol-tombol lainnya. Kombinasi baris dan kolom matriks
keypad
Tabel 3.1. Kombinasi baris dan kolom matriks
keypad
P1.0 P1.1 P1.2 P1.3
P3.0
P3.1
P3.2
P3.3
P3.4 P3.5 P3.6
P3.7
0 1
0 0 0 0 0 0 0 0 0 0
1
1 1
0 0 0 0 0 0 0 0 0
1
0
4 1
0 0 0 0 0 0 0 0
1
0 0
7 1
0 0 0 0 0 0 0
1
0 0 0
D 1
0 0 0 0 0 0
1
0 0 0 0
A 1
0 0 0 0 0
1
0 0 0 0 0
1
0 0 0 0
1
0 0 0 0 0 0
1
0 0 0
1
0 0 0 0 0 0 0
0
1
0 0 0 0 0 0 0 0 0
1
2
0
1
0 0 0 0 0 0 0 0
1
0
5
0
1
0 0 0 0 0 0 0
1
0 0
8
0
1
0 0 0 0 0 0
1
0 0 0
E
0
1
0 0 0 0 0
1
0 0 0 0
B
0
1
0 0 0 0
1
0 0 0 0 0
CE
0
1
0 0 0
1
0 0 0 0 0 0
Å
0
1
0 0
1
0 0 0 0 0 0 0
+/-
0 0
1
0 0 0 0 0 0 0 0
1
3
0 0
1
0 0 0 0 0 0 0
1
0
6
0 0
1
0 0 0 0 0 0
1
0 0
9
0 0
1
0 0 0 0 0
1
0 0 0
F
0 0
1
0 0 0 0
1
0 0 0 0
C
0 0
1
0 0 0
1
0 0 0 0 0
x
20 0
1
0 0
1
0 0 0 0 0 0
Æ
0 0
1
0
1
0 0 0 0 0 0 0
=
0 0 0
1
0 0 0 0 0 0 0
1
DEL
0 0 0
1
0 0 0 0 0 0
1
0
-
0 0 0
1
0 0 0 0 0
1
0 0
+
0 0 0
1
0 0 0 0
1
0 0 0
÷
0 0 0
1
0 0 0
1
0 0 0 0
x
0 0 0
1
0 0
1
0 0 0 0 0
√
0 0 0
1
0
1
0 0 0 0 0 0
3.3 Rangkaian LCD
LCD yang digunakan harus dihubungkan dengan mikrokontroler, karena
pemberian instruksi LCD dilakukan oleh mikrokontroler. Pin-pin yang perlu
diperhatikan pada LCD adalah RS
(Register Select),
E
(Enable),
dan jalur I/O
(Input/Outpur)
data. Hubungan pin-pin LCD dan mikrokontroler dapat dilihat pada
tabel 3.2.
Tabel 3.2. Konfigurasi pin LCD dan mikrokontroler
Pin LCD
PORT Mikrokontroler
RS P0.6
E P0.7
D0 P2.0
D1 P2.1
D2 P2.2
D3 P2.3
D4 P2.4
D5 P2.5
D6 P2.6
D7 P2.7
3.4 Rangkaian Mikrokontroler AT89S52
Mikrokontroler digunakan sebagai pengolah data masukan dari
keypad
. Pada
perancangan akan digunakan Mikrokontroler AT89S52 keluaran dari ATMEL.
VCC VCC VCC U1 AT89C52 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/T2 P1.1/T2-EX 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 C3 10uF R1 10K XTAL 12 MHz C1 30pF C2 30pF RESET 1 2 LCD MODULE D0 D7 . . . . RS E VCC GND MATRIKS KEYPAD 8 x 4
BAR
IS
KO
LOM
Gambar 3.4. Konfigurasi mikrokontroler,
keypad
dan LCD
3.4.1 Rangkaian Osilator Mikrokontroler AT89S52
Osilator yang digunakan pada rangkaian mikrokontroler AT89S52 ini adalah
kristal 12 MHz. Hal ini untuk mendapatkan siklus mesin (
duty cycle)
sebesar 1 µs.
Berdasarkan
datasheet
disebutkan jika menggunakan kristal sebagai osilatornya,
maka kapasitor yang digunakan adalah sebesar 30 pF.
3.4.2 Rangkaian RESET Mikrokontroler AT89S52
Untuk dapat mereset mikrokontroler maka pin RESET harus diberi masukan
logika “1” selama dua siklus mesin saat osilator bekerja. Pada perancangan
digunakan siklus mesin sebesar 1 µs, sehingga waktu yang dibutuhkan untuk mereset
mikrokontroler adalah sebesar 2 µs. Berdasarkan persamaan 2.1 jika ditentukan nilai
3.5 Rangkaian Pengunci ON/OFF
Rangkaian pengunci ON/OFF berfungsi untuk menghubungkan dan memutus
catu daya ke rangkaian mikrokontroler. Pada perancangan ini, komponen pengunci
yang digunakan adalah thyristor MCR100. Rangkaian pengunci dapat dlihat pada
gambar 3.5.
VCC = 9V
LM7805 1 3 2 IN OUT GN D OFF 1 2 ON 1 2 R2 R1 MCR100 G K
A
Vout = 5V
Gambar 3.5. Rangkaian pengunci ON/OFF.
Besarnya tegangan di kaki GATE (V
G) yang diinginkan adalah 4,5V. Dengan
VCC sebesar 9V didapat nilai R1 dan R2
2
2
2
1
2
1
2
5
,
0
9
2
1
2
5
,
4
R
R
R
R
R
R
R
R
R
=
+
+
=
+
=
Besar arus pengunci I
Lagar thyristor ON yang dibutuhkan berdasarkan
datasheet
adalah 10mA sehingga besar nilai R1 dan R2 adalah
L
I
VCC
R
R
1
+
2
=
;
R1
=
R2
Ω
=
=
=
−
450
1
10
.
10
.
2
9
1
1
2
3
R
R
I
VCC
R
L
R1 = R2 = 450
Ω
(3)
Untuk menyesuaikan dengan nilai resistor yang ada di pasaran digunakan nilai R1
dan R2 sebesar 470
Ω
.
Untuk membuat thyristor ke keadaan OFF nilai arus I
Lharus dikurangi sampai
ke nilai arus I
H. Berdasarkan
datasheet
nilai I
Hyang dibutuhkan adalah lebih kecil
dari 5mA. Untuk mencapai kondisi ini arus pada kaki ANODA dan KATODA harus
dikurangi dengan cara menghubung singkat kedua kaki ini.
Penggunaan IC LM7805 adalah sebagai pembatas tegangan sebesar 5V. Hal
ini dikarenakan tegangan yang dibutuhkan oleh mikrokontroler adalah sebesar 4V
3.6 Pemograman Mikrokontroler
Program pada mikrokontroler digunakan untuk mengolah data masukan dari
matriks
keypad
kemudian menampilkannya pada LCD.
Pada perancangan ini, program dikelompokkan kedalam beberapa bagian
utama yang didalamnya terdiri dari subrutin-subrutin yang digunakan. Bagian-bagian
tersebut adalah Mode, Masukan Data 1, Operator, Masukan Data 2, Hasil dan
Tampilan LCD.
Flowchart
program utama dapat dilihat pada gambar 3.6.
START
CEK MODE
CEK MASUKAN DATA 1
CEK OPERATOR
CEK MASUKAN DATA 2
CEK HASIL
END
3.6.1 Subrutin Mode
Mode terdiri dari tiga jenis, BIN untuk biner, HEX untuk heksadesimal, DEC
untuk desimal dan BCD untuk BCD. Ketiga jenis tersebut diberi kode untuk
membedakan satu sama lain. Kode tersebut dapat dilihat pada tabel 3.3.
Flowchart
subrutin MODE dapat dilihat pada gambar 3.7.
Tabel 3.3. Kode untuk masing-masing Mode
MODE KODE
BIN 01H
HEX 02H
DEC 03H
BCD 04H
3.6.2 Subrutin Masukan Data 1
Data 1 merupakan data pertama yang disimpan untuk kemudian dihitung
dengan Data 2. Data 1 akan disimpan di RAM Internal, proses penyimpanannya
adalah dengan cara menyimpan data yang dimasukan pertama kali kemudian
menggeser alamat RAM yang ditempati. Setelah alamat RAM digeser, data masukan
berikutnya disimpan di alamat baru tersebut. Proses ini akan berlangsung terus
sampai jumlah data yang dibolehkan.
Flowchart
subrutin Masukan Data 1 dapat
dilihat pada gambar 3.8.
3.6.3 Subrutin Operator
Operator menunjukkan jenis operasi artimatik yang digunakan. Ada enam
macam operasi aritmatik yang dapat dipilih, perkalian, pembagian, penjumlahan,
pengurangan, kuadrat dan akar kuadrat.
Keenam operasi ini diberi kode untuk membedakan satu sama lain. Tujuan
pemberian kode-kode ini untuk memudahkan pengolahan data. Kode-kode ini akan
disimpan untuk kemudian dicek saat proses perhitungan data dimulai. Kode-kode
yang digunakan dapat dilihat pada tabel 3.4.
Flowchart
subrutin Operator dapat
dilihat pada gambar 3.9.
Tabel 3.4. Kode untuk masing-masing Operator
OPERATOR SIMBOL
KODE
Perkalian x
01H
Pembagian ÷
02H
Penjumlahan +
03H
Pengurangan -
04H
Kuadrat x
2--
3.6.4 Subrutin Masukan Data 2
Data 2 merupakan data yang dimasukan setelah operator. Proses penyimpanan
Data 2 sama halnya dengan penyimpanan Data 1 hanya saja alamat RAM Internal
yang digunakan berbeda.
Flowchart
subrutin Masukan Data 2 dapat dilihat pada
gambar 3.10
3.6.5 Subrutin Hasil
Pada subrutin Hasil, Data 1 dan Data 2 akan dihitung sesuai Operator yang
digunakan kemudian hasilnya ditampilkan ke LCD. Sebelum proses penghitungan
dimulai terlebih dahulu akan dicek mode yang digunakan. Apabila mode yang
digunakan biner dan BCD maka Data 1 dan Data 2 dikonversi ke dalam bentuk
heksadesimal. Hal ini diperlukan karena operasi aritmatik pada mikrokontroler
menggunakan bilangan heksadesimal.
Setelah konversi dikerjakan kemudian dilakukan pengecekan terhadap
operator yang digunakan baru kemudian dihitung dan hasilnya ditampilkan ke LCD.
Flowchart
subrutin Hasil dapat dilihat pada gambar 3.11.
Gambar 3.11.
Flowchart
subrutin HASIL (lanjutan)
3.6.6 Subrutin Menampilkan Karakter ke LCD
Penggunaan LCD adalah sebagai penampil. Untuk dapat menampilkan data,
LCD terlebih dahulu harus diberi insialisasi. Waktu inisialisasi dilakukan sekitar 15
mS setelah LCD diberikan tegangan VCC. Proses inisialisasi LCD terdiri dari tiga
Awal proses inisialisasi adalah dengan memberikan logika rendah pada
port
RS
(Register Select)
dan R/W
(Read/Write)
kemudian memberikan intruksi tentang
panjang data yang akan digunakan. Instruksi ini disebut
function set
yang bertujuan
agar LCD mengetahui batas instruksi yang dikirimkan berikutnya. Pada perancangan
ini digunakan panjang data sebesar 8 bit dengan cara memberikan data 3FH pada
LCD.
Kemudian LCD diberi instruksi
display ON/OFF control
yang berfungsi
mengaktifkan
display
dan
cursor
dengan memberikan data 0DH pada LCD
.
Instruksi
berikutnya adalah
entry mode set
yang berfungsi untuk pergerakan
cursor,
data 04H
untuk
geser kiri dan 06H untuk geser kanan
.
Setelah inisialisasi dilakukan yang berikutnya adalah menampilkan karakter
ke LCD. Untuk menampilkan karakter terlebih dahulu RS diberi logika tinggi (RS =
“1”) dan R/W diberi logika rendah (R/W = “0”). Pengiriman intruksi yang terakhir
adalah nilai data karakter yang akan ditampilkan.
Flowchart
tampilan LCD dapat
dilihat pada gambar 3.12.
3.6.7 Subrutin Penambahan
Subrutin penambahan merupakan
flowchart
implementasi algoritma yang
sudah dijelaskan di dalam dasar teori.
Flowchart
subrutin penambahan dapat dilihat
pada gambar 3.13.
3.6.8 Subrutin Pengurangan
Subrutin pengurangan merupakan
flowchart
implementasi algoritma yang
sudah dijelaskan di dalam dasar teori.
Flowchart
subrutin pengurangan dapat dilihat
pada gambar 3.14.
3.6.9 Subrutin Perkalian
Subrutin perkalian merupakan
flowchart
implementasi algoritma yang sudah
dijelaskan di dalam dasar teori.
Flowchart
subrutin perkalian dapat dilihat pada
gambar 3.15.
3.6.10 Subrutin Pembagian
Subrutin pembagian merupakan
flowchart
implementasi algoritma yang sudah
dijelaskan di dalam dasar teori. Untuk hasil pembagian akan ditampilkan pada baris
pertama LCD dan sisa pembagian pada baris kedua LCD.
Flowchart
subrutin
pembagian dapat dilihat pada gambar 3.16.
3.6.11 Subrutin Kuadrat
Subrutin kuadrat merupakan
flowchart
implementasi algoritma yang sudah
dijelaskan di dalam dasar teori.
Flowchart
subrutin kuadrat dapat dilihat pada gambar
3.17.
3.6.12 Subrutin Akar Kuadrat
Subrutin akar kuadrat merupakan
flowchart
implementasi algoritma yang
sudah dijelaskan di dalam dasar teori.
Flowchart
subrutin akar kuadrat dapat dilihat
pada gambar 3.18.
3.6.13 Konversi Biner ke Heksadesimal
Konversi biner ke heksadesimal merupakan
flowchart
implementasi algoritma
yang sudah dijelaskan di dalam dasar teori.
Flowchart
konversi biner ke
heksadesimal dapat dilihat pada gambar 3.19.
3.6.14 Konversi BCD ke Heksadesimal
Konversi BCD ke heksadesimal merupakan
flowchart
implementasi algoritma
yang sudah dijelaskan di dalam dasar teori.
Flowchart
konversi BCD ke
heksadesimal dapat dilihat pada gambar 3.20.
3.6.15 Konversi Desimal ke Heksadesimal
Konversi desimal ke heksadesimal merupakan
flowchart
implementasi
algoritma yang sudah dijelaskan di dalam dasar teori.
Flowchart
konversi desimal ke
heksadesimal dapat dilihat pada gambar 3.21.
3.6.16 Algoritma Tampilan Bilangan Negatif
Penampilan bilangan negatif berbeda dengan bilangan positif. Untuk bilangan
desimal dan BCD penampilan bilangan negaitfnya diberi tanda negatif (‘-‘) pada
LCD di baris satu sebelah kiri. Sedangkan untuk bilangan biner dan heksadesimal
penampilan bilangan negaitfnya diubah kedalam bentuk 2’s komplemennya.
.
Flowchart
tampilan bilangan negatif dapat dilihat pada gambar 3.22.
55
4.1 Bentuk Fisik Kalkulator
Bentuk fisik dari kalkulator yang dirancang ditunjukkan pada gambar 4.1.
Kalkulator yang dibuat terdiri dari
keypad
sebagai masukan dan LCD sebagai
keluaran. LCD berada pada posisi paling atas dan
keypad
dibawahnya. Pada
keypad
terdapat label angka-angka dan operator yang dapat dipilih sebagai masukan. Tombol
ON dan tombol OFF berada di sebelah kanan diantara LCD dan
keypad.
Bagian dalam kalkulator terdiri dari rangkaian mikrokontroler, rangkaian
pengunci ON/OFF dan batu baterai sebagai catu daya. Bagian dalam kalkulator dapat
dilihat pada gambar 4.2.
Gambar 4.2. Bagian dalam kalkulator.
Rangkaian mikrokontroler terdiri dari mikrokontroler AT89S52 sebagai unit
pemroses data, kristal sebagai osilator mikrokontroler, tombol reset dan pin-pin sisir
sebagai penghubung mikrokontroler ke LCD dan
keypad.
Sedangkan rangkaian
pegunci ON/OFF terdiri dari thyristor, IC Regulator LM7805 sebagai pembatas
tegangan 5V dan pin sisir penghubung rangkian dengan tombol ON/OFF. Batu
4.2 Penggunaan Alat
Penggunaan alat sandi heksadesimal dengan contoh penambahan F dengan 9
yang akan menghasilkan 18 dalam sandi heksadesimal sebagai berikut.
Langkah 1.
Pertama-tama yang harus dilakukan pengguna adalah menekan
tombol ON. Setelah tombol ON ditekan kondisi
default
adalah pada sandi
heksadesimal dengan tampilan seperti pada gambar 4.3.
Gambar 4.3. Tampilan awal setelah penekanan tombol ON.
Langkah 2.
Pengguna dapat memberi data masukan. Data masukan pertama
adalah F. Tampilan data masukan berada di sebelah kanan baris kedua dari LCD.
Tampilan seperti pada gambar 4.4.
Langkah 3.
Pemberian masukan operator yang akan digunakan. Operator
yang tersedia adalah kuadrat (x
2), akar kuadrat (
√
), perkalian (x), pembagian (÷),
penambahan (+), pengurangan (-) dan bilangan negatif (+/-). Pada pembahasan ini
operator yang digunakan adalah penambahan. Setelah penekanan tombol operator,
akan muncul simbol operator yang dipilih di sebelah kanan baris pertama LCD.
Tampilan operator seperti pada gambar 4.4 pada bagian yang diberi lingkaran.
Gambar 4.4. Tampilan simbol operator.
Langkah 4.
Memberikan masukan data kedua. Pada pembahasan, data
masukan kedua adalah 9. Setelah penekanan tombol 9, maka tampilan LCD seperti
pada gambar 4.5.
Langkah 5.
Untuk mengetahui hasil perhitungan adalah dengan menekan
tombol sama dengan (=). Setelah penekanan tombol sama dengan, simbolnya akan
muncul di sebelah kanan baris pertama LCD seperti pada gambar 4.6 yang diberi
tanda lingkaran garis putus-putus. Hasil perhitungan terletak di baris kedua LCD
seperti pada gambar 4.6 yang diberi tanda elips garis penuh.
Gambar 4.6. Tampilan hasil perhitungan.
4.2.1 Pemilihan MODE Kalkulator
Mode kalkulator adalah basis/sandi bilangan yang digunakan. Ada empat
basis bilangan yang dapat dipilih yaitu heksadesimal, biner, desimal dan BCD.
Informasi mengenai sandi yang digunakan terletak di bagian tengah baris pertama
LCD dengan tulisan simbol HEX untuk heksadesimal, BIN untuk biner, DEC untuk
desimal dan BCD untuk sandi BCD. Pembahasan mode kalkulator mengacu pada
proses konversi nilai 18 heksadesimal kedalam bentuk sandi biner, desimal dan BCD.
Langkah 1.
Beri masukan data awal. Sebagai contoh data awal yang akan
dikonversi adalah 18 heksadesimal (untuk selanjutnya nilai heksadesimal diberi tanda
H seperti 18H). Tampilan datanya seperti pada gambar 4.7.
Gambar 4.7. Tampilan data yang akan dikonversi.
Langkah 2.
Menekan tombol MODE. Setelah penekanan tombol MODE,
maka akan mucul tulisan MODE pada bagian tengah baris pertama LCD seperti pada
gambar 4.8.
Langkah 3.
Memilih MODE yang diinginkan. Pada pembahasan, konversi
yang pertama adalah ke dalam bentuk biner. Nilai 18H dalam bentuk binernya adalah
11000 biner (untuk selanjutnya sandi biner mengikuti format 11000
2). Tampilan data
hasil konversi seperti pada gambar 4.9.
Gambar 4.9. Hasil konversi ke dalam sandi biner.
Konversi berikutnya adalah kedalam bentuk desimal. Nilai 18H dalam bentuk
desimalnya adalah 24. Setelah melakukan langkah-langkah seperti diatas, maka
tampilan pada LCD seperti pada gambar 4.10.
Bentuk konversi yang terakhir adalah kedalam bentuk sandi BCD. Sandi BCD
adalah representasi sandi desimal kedalam bentuk biner. Nilai 24 desimal diubah
kedalam sandi BCD adalah 100100
BCD.Tampilan hasil konversi dapat dilihat pada
gambar 4.11.
4.11. Hasil konversi kedalam bentuk BCD.
4.2.2 Tampilan Bilangan Negatif
Representasi bilangan negatif untuk sandi heksadesimal adalah diubah
kedalam bentuk komplemen 16. Untuk sandi biner, bilangan negatifnya diubah
kedalam bentuk komplemen 2. Sedangkan untuk bilangan desimal dan sandi BCD,
representasi bilangan negatifnya adalah dengan diberi tanda negatif (-). Pembahasan
tampilan bilangan negatif mengacu pada pengubahan bilangan positif 9H.
Kondisi awal kalkulator berada pada sistem sandi heksadesimal dengan nilai
postif 9H seperti pada gambar 4.12. Untuk mengetahui nilai negatifnya, pengguna
harus menekan tombol +/-. Nilai negatif 9H adalah FFFFFFFFFFFFFFF7H. Setelah
Gambar 4.12. Data positif yang akan diubah kedalam bentuk negatifnya.
Gambar 4.13. Tampilan bilangan negatif sandi heksadesimal.
Nilai negatif 9H dalam bentuk biner adalah 1111111111110111
2.Untuk
mengubah kedalam sandi biner, terlebih dahulu harus dilakukan pengubahan mode
seperti yang dijelaskan sebelumnya. Tampilan negatif sandi biner dapat dilihat pada
gambar 4.14.
Sedangkan untuk bilangan desimal dan sandi BCD nilai negatifnya ditandai
dengan simbol “-“ di sebelah kiri baris pertama LCD. Tampilan bilangan negatif
desimal dapat dilihat pada gambar 4.15 dan tampilan bilangan negatif sandi BCD
pada gambar 4.16 simbol negatifnya adalah bagian yang diberi tanda lingkaran.
Gambar 4.15. Tampilan bilangan negatif sandi desimal.
Gambar 4.16. Tampilan bilangan negatif sandi BCD.
4.2.3 Tampilan Sisa Pembagian
antara 9H dengan 2H yang akan menghasilkan hasil pembagian 4H dengan sisa
pembagian 1H. Berikut adalah langkah-langkahnya.
Langkah 1.
Kondisi awal kalkulator berada pada sistem sandi heksadesimal
dengan nilai data masukan pertama adalah 9H seperti pada gambar 4.17.
Gambar 4.17. Data masukan pertama yang akan dibagi
Langkah 2.
Menekan tombol operator pembagian bagi (÷) dan pada tampilan
akan muncul simbol “÷” di sebelah kanan baris pertama LCD seperti pada gambar
4.18.
Langkah 3.
Memberikan data masukan kedua sebagai pembagi yaitu 2H.
Tampilannya seperti pada gambar 4.19.
Gambar 4.19. Tampilan data pembagi.
Langkah 4.
Untuk melihat hasil pembagian adalah dengan menekan tombol
sama dengan (“=”). Setelah penekanan tombol “=” maka akan muncul hasil
pembagiannya di LCD. Hasil pembagian terletak pada baris kedua LCD. Sedangkan
sisa pembagian terletak pada baris pertama LCD dengan ditandai tulisan “SISA = “
tampilan hasilnya terlihat pada gambar 4.20.
Gambar 4.20. Tampilan hasil dan sisa pembagian.
Apabila sisa pembagian adalah nol (0), tulisan “SISA = “ pada LCD baris
4.2.4 Tampilan Pesan ERROR!
Pada kalkulator ini jika proses perhitungan melebihi batas kemampuan
maksimum yang sudah ditetapkan atau pengguna salah memberi masukan maka akan
muncul tulisan “ERROR!” pada baris pertama LCD terlihat pada gambar 4.21. Ada
beberapa hal yang menyebabkan munculnya tulisan “ERROR!” yaitu
1.
Proses perhitungan da