Anda di halaman 1dari 200

Kalkulator Berbasis Mikrokontroler

TUGAS AKHIR
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

i
Calculator Based on Microcontroller

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

ii
iii
iv
v
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP

Kupersembahkan tugas akhir ini


kepada kedua orang tuaku
dan diriku sendiri

“ plan your work and work your plan ”

vi
KALKULATOR BERBASIS MIKROKONTROLER

Yakobus Priambodo
035114032

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

vii
CALCULATOR BASED ON MICROCONTROLLER
Yakobus Priambodo
035114032

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

viii
KATA PENGANTAR

Kuliah selesai, satu lagi langkah menuju tujuan hidup terlampaui.

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.

ix
7. Rekan-rekan TE ’03 khususnya Inggit Suminggit (alias Nobita), Denis si

batosai, Jo imut dan Om Rony makasih penghiburan dan solusinya.

8. Teman seperjuangan, Gigih alias Amoh yang selalu bimbingan bersama,

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

x
DAFTAR ISI

Halaman Judul ......................................................................................................... i


Lembar Pengesahan oleh Pembimbing ................................................................... iii
Lembar Pengesahan oleh Penguji ....... ................................................................... iv
Lembar Pernyataan Keaslian Karya ........................................................................ v
Halaman Persembahan dan Motto Hidup ............................................................... vi
INTISARI ................................................................................................................ vii
ABSTRACT ............................................................................................................ viii
Kata Pengantar ........................................................................................................ ix
Daftar Isi ................................................................................................................. xi
Daftar Gambar......................................................................................................... xvi
Daftar Tabel ............................................................................................................ xix
BAB I PENDAHULUAN ..................................................................................... 1
1.1 Latar Belakang Masalah ........................................................................ 1
1.2 Tujuan ................................................................................................... 2
1.3 Manfaat ................................................................................................. 2
1.4 Batasan Masalah ................................................................................... 3
1.5 Perumusan Masalah .............................................................................. 3
1.6 Metodologi Penelitian ...…………………………………………….... 4
1.7 Sistematika Penulisan ........................................................................... 4
BAB II DASAR TEORI ........................................................................................ 5
2.1 Kode Biner ............................................................................................ 5
2.2 Kode Heksadesimal …...……………………………………………... 6
2.3 Kode BCD .............…………………………………………………… 7
2.4 Algoritma Penambahan ...................………………………………….. 8
2.5 Algoritma Pengurangan ..................………………………………….. 8
2.6 Algoritma Perkalian …………………………………………………. 8

xi
2.7 Algoritma Pembagian .......................………………………………… 9
2.8 Algoritma Kuadrat ................................................................................ 11
2.9 Algoritma Akar Kuadrat ........………………………………………... 11
2.10 Bilangan 2’S Komplemen ..............………………………………… 12
2.11 Algoritma Bilangan Bertanda ............................................................ 12
2.12 Konversi Biner dan BCD ke Heksadesimal........................................ 13
2.13 Konversi Desimal ke Heksadesimal .................................................. 13
2.14 Thyristor ............................................................................................. 14
2.15 Matriks Keypad .................................................................................. 15
2.16 LCD .................................................................................................... 16
2.17 Mikrokontroler AT89S52 .................................................................. 17
2.17.1 Konfigurasi Pin Mikrokontroler AT89S52............................. 17
2.17.2 RAM Internal ......................................................................... 19
2.17.3 Flash PEROM ........................................................................ 20
2.17.4 PSW (Program Status Word) ................................................. 20
2.17.5 Rangkaian Osilator Mikrokontroler ....................................... 21
2.17.6 Rangkaian Reset Mikrokontroler ........................................... 22
BAB III PERANCANGAN ALAT ........................................................................ 23
3.1 Bentuk Fisik Kalkulator ...........………………………………………. 24
3.2 Rangkaian Matriks Keypad ................................................................... 24
3.3 Rangkaian LCD ..................................……………………………….. 27
3.4 Rangkaian Mikrokontroler AT89S52 ................................................... 27
3.4.1 Rangkaian Osilator Mikrokontroler AT89S52 ............................ 28
3.4.2 Rangkaian Reset Mikrokontroler AT89S52 ................................ 28
3.5 Rangkaian Pengunci ON/OFF .............................................................. 29
3.6 Pemograman Mikrokontroler ................................................................ 31
3.6.1 Subrutin Mode .............................................................................. 32
3.6.2 Subrutin Masukan Data 1 ............................................................. 33

xii
3.6.3 Subrutin Operator ......................................................................... 36
3.6.4 Subrutin Masukan Data 2 ............................................................. 38
3.6.5 Subrutin Hasil .............................................................................. 41
3.6.6 Subrutin Menampilkan Karakter ke LCD .................................... 42
3.6.7 Subrutin Penambahan .................................................................. 44
3.6.8 Subrutin Pengurangan .................................................................. 45
3.6.9 Subrutin Perkalian ........................................................................ 46
3.6.10 Subrutin Pembagian .................................................................. 47
3.6.11 Subrutin Kuadrat ....................................................................... 48
3.6.12 Subrutin Akar Kuadrat .............................................................. 49
3.6.13 Konversi Biner ke Heksadesimal .............................................. 50
3.6.14 Konversi BCD ke Heksadeimal ................................................ 51
3.6.15 Konversi Desimal ke Heksadesimal ......................................... 52
3.6.16 Algoritma Tampilan Bilangan Negatif ..................................... 53
BAB IV HASIL DAN PEMBAHASAN …………...…………………………… 55
4.1 Bentuk Fisik Kalkulator ……………………………………………… 55
4.2 Penggunaan Alat ……………………………………………………... 57
4.2.1 Pemilihan MODE Kalkulator ………………………………….. 59
4.2.2 Tampilan Bilangan Negatif …………………………………….. 62
4.2.3 Tampilan Sisa Perhitungan …………………………………….. 64
4.2.4 Tampilan Pesan ERROR! ……………………………………… 67
4.3 Data Pengamatan ……………………………………………………... 68
4.3.1 Konversi Heksadesimal ke Biner …………..…………………... 68
4.3.2 Konversi Biner ke Heksadesimal ………………………………. 69
4.3.3 Konversi Heksadesimal ke BCD ...……………………………... 71
4.3.4 Konversi BCD ke Heksadesimal …………………………...…... 72
4.3.5 Konversi Heksadesimal ke Desimal …………………………… 73
4.3.6 Konversi Desimal ke Heksadesimal …………………………… 74

xiii
4.3.7 Operasi Kuadrat ………………………………………………... 76
4.3.7.1 Operasi Kuadrat Mode Heksadesimal ……………...…... 76
4.3.7.2 Operasi Kuadrat Mode Biner ……………………..……. 77
4.3.7.3 Operasi Kuadrat Mode Desimal ………………………... 78
4.3.7.4 Operasi Kuadrat Mode BCD ………………………….... 79
4.3.8 Operasi Perkalian ………………………………………………. 81
4.3.8.1 Operasi Perkalian Mode Heksadesimal ………………... 81
4.3.8.2 Operasi Perkalian Mode Biner …………………………. 82
4.3.8.3 Operasi Perkalian Mode Desimal …………………........ 83
4.3.8.4 Operasi Perkalian Mode BCD …………………………. 84
4.3.9 Operasi Pembagian …………………………………………….. 85
4.3.9.1 Operasi Pembagian Mode Heksadesimal ………………. 86
4.3.9.2 Operasi Pembagian Mode Biner ……………………….. 86
4.3.9.3 Operasi Pembagian Mode Desimal …………………….. 87
4.3.9.4 Operasi Pembagian Mode BCD ………………………... 88
4.3.10 Operasi Penambahan ………………………………………….. 89
4.3.10.1 Operasi Penambahan Mode Heksadesimal ………........ 89
4.3.10.2 Operasi Penambahan Mode Biner …………………..… 90
4.3.10.3 Operasi Penambahan Mode Desimal ……………….… 91
4.3.10.4 Operasi Penambahan Mode BCD …………………….. 92
4.3.11 Operasi Pengurangan …………………………………………. 93
4.3.11.1 Operasi Pengurangan Mode Heksadesimal ………….... 93
4.3.11.2 Operasi Pengurangan Mode Biner ……………………. 95
4.3.11.3 Operasi Pengurangan Mode Desimal …………………. 96
4.3.11.4 Operasi Pengurangan Mode BCD …………………….. 97
4.3.12 Operasi Akar Kuadrat ………………………………………… 99
4.3.12.1 Operasi Akar Kuadrat Mode Heksadesimal …………... 99
4.3.12.2 Operasi Akar Kuadrat Mode Biner ………………........ 100

xiv
4.3.12.3 Operasi Akar Kuadrat Mode Desimal ………………… 101
4.3.12.4 Operasi Akar Kuadrat Mode BCD ……………………. 102
4.3.13 Perhitungan Berulang Kali ……………………………………. 103
4.3.14 Konversi Berulang Kali ………………………………………. 104
BAB V KESIMPULAN DAN SARAN …………………………………………. 106
5.1 Kesimpulan …………………………………………………………... 106
5.2 Saran …………………………………………………………………. 106
DAFTAR PUSTAKA ............................................................................................. 107
LAMPIRAN ............................................................................................................ 108

xv
DAFTAR GAMBAR

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

34
Gambar 3.8. Flowchart Subrutin Masukan Data 1 (lanjutan) .………….

Gambar 3.8. Flowchart Subrutin Masukan Data 1 (lanjutan) …...……... 35

Gambar 3.9. Flowchart Subrutin Operator ……....................................... 37

xvi
Gambar 3.10. Flowchart Subrutin Masukan Data 2 ………..................... 38

Gambar 3.10. Flowchart Subrutin Masukan Data 2 (lanjutan) ................ 39

Gambar 3.10. Flowchart Subrutin Masukan Data 2 (lanjutan) ……........ 40

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

xvii
Gambar 4.6. Tampilan hasil perhitungan ………………………………. 59

Gambar 4.7. Tampilan data yang akan dikonversi …………………...… 60

Gambar 4.8. Tampilan MODE …………………………………………. 60

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

xviii
DAFTAR TABEL

Halaman

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

xix
Tabel 4.9. Data operasi kuadrat bilangan biner ………………………... 77

Tabel 4.10. Data operasi kuadrat bilangan desimal ……………………. 78

Tabel 4.11.Data operasi kuadrat sandi BCD …………………………… 79

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

xx
Tabel 4.30. Data operasi akar kuadrat bilangan desimal ………………. 101

Tabel 4.31. Data operasi akar kuadrat sandi BCD ……………………... 102

Tabel 4.32. Data perhitungan berulang kali ……………………………. 103

Tabel 4.33. Data konversi berulang kali ………………………………..

xxi
BAB I

PENDAHULUAN

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]

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

3. Mempercepat dan memudahkan perhitungan bilangan biner, desimal,

heksadesimal dan BCD.


3

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 ?

3. Bagaimana mengolah data masukan dari keypad ?

4. Bagaimana menampilkan hasil perhitungan ke LCD ?


4

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

Berisi tentang kesimpulan dan saran dari penulis.


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 2n. Bit yang dikalikan

dengan 2n terbesar dinamakan MSB (Most Significant Bit) dan yang dikalikan

dengan 2n terkecil 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 23 + 0 x 22 + 1 x 21 + 0 x 20
= 8 + 0 + 2 + 0
= 10

5
6

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 Biner Heksadesimal

0000 0 1000 8

0001 1 1001 9

0010 2 1010 A

0011 3 1011 B

0100 4 1100 C

0101 5 1101 D

0110 6 1110 E

0111 7 1111 F

Kode heksadesimal digunakan untuk merepresentasikan 1 nibble (4 bit),

dimana 1 nibble diganti dengan 1 digit. Pada sistem komputer nilai 1 byte (8 bit)

diganti dengan 2 digit heksadesimal. [3]


7

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

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001
8

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.
3. Lakukan proses no. 2 sebanyak jumlah bit yang dihitung. [5]
9

Sebagai contoh :

3 0011 (H) Ket:


2 x Æ 0010 x (P) Æ = geser kanan

C S P
0 0 0 0 0 0 0 1 0 Geser kanan 1 kali
Æ 0 0 0 0 0 0 0 0 1 Tambahkan dengan S dengan H
Geser kanan 1 kali
0 0 0 1 1 +
0 0 0 1 1

Æ 0 0 0 0 1 1 0 0 0 Geser kanan 1 kali


Æ 0 0 0 0 0 1 1 0 0 Geser kanan 1 kali
Æ 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 H0 ke 0 dan tambahkan P kembali ke S,
jika tidak maka set H0 ke 1.
5. Lakukan proses no. 2 - 4 sebanyak jumlah bit yang dihitung. [5]
10

Sebagai contoh :

2 10 Æ 102 1010
2

C S H
Awal 0 0 0 0 0 1 0 1 0 Ket:
Subb = kurangkan
Å 0 0 0 0 1 0 1 0
Å = geser kiri
Subb 1 0 -
Set H0 1 1 1 1 1
1 0+
0 0 0 0 1 0 1 0 0
Å 0 0 0 1 0 1 0 0
Subb 1 0 -
Set H0 0 0 0 0 0

1 0 0 1

Å 0 0 0 0 1 0 0 1

Subb 1 0 -
Set H0 1 1 1 1 1
1 0+

0 0 0 0 1 0 0 1 0

Å 0 0 0 1 0 0 1 0

Subb 1 0 -
0 0 0 0 0 0 1 0 1

Sisa Hasil Bagi


11

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 :

1010 2 atau 10 (desimal)


12

Hasil awal 0 0
Set 1 0
Kuadratkan 0 1 0 0

Bandingkan 0 1 0 0 < 1 0 1 0

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.

Pada operasi perkalian dan pembagian tanda pada kedua bilangan disimpan

terlebih dahulu. Apabila hanya salah satu bilangan saja yang bertanda maka hasil

perhitungan diubah ke dalam bentuk 2’s komplemennya. Jika kedua buah bilangan

bertanda, hasilnya tidak perlu diubah ke dalam bentuk 2’s komplemennya. [5]
13

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]

1011012 Æ 0 0 1 0 1101

1 nibble 1 nibble
Æ 0.8 + 0.4 + 1.2 + 0.1 || 1.8 + 1.4 + 0.2 +1.1

2 D
1011012 Æ 2D16

2.13 Konversi Desimal ke Heksadesimal

Pengubahan desimal ke heksadesimal adalah dengan cara mengalikan tiap

angkan desimal dengan An , nilai n adalah urutan angka. Setelah dikalikan, hasilnya

ditambahkan semua. Sebagai contoh dapat dilihat pada proses pengubahan dibawah.

[7]

247910 Æ 2.A3 + 4.A2 + 7.A1 + 9.A0


Æ 7D0 + 190 + 46 + 9
247910 Æ 9AF16
14

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
A = ANODA
G K = KATODA
G = GATE
K

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.

Untuk membuat keadaan ON thyristor adalah dengan cara memberikan arus

pada kaki GATE sebesar IL (Latching Current). IL merupakan arus minimum yang

dibutuhkan agar thyristor ON. Sedangkan untuk membuat keadaan OFF adalah

dengan cara mengurangi besarnya arus pada kaki GATE sampai sebesar IH (Holding

Current). IH adalah arus minimum yang dibutuhkan agar thyristor OFF. [8]
15

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.

1 2 3

B1
4 5 6

B2
7 8 9

B3
* 0 #

B4

K1 K2 K3

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.

Pengecekan pada matriks keypad adalah dengan sistem pengecekan secara

berurutan (scanning). Sebagai contoh apabila ingin mengecek angka 1, maka terlebih

dahulu kolom K1 diberi logika ‘1’, lalu dilakukan pengecekan tiap baris. Apabila

baris B1 = ‘1’ artinya tombol 1 sedang ditekan. Pengecekan ini juga berlaku untuk

tombol yang lainnya dengan pengecekan baris dan kolom secara bergantian.
16

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
R /W 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.
VCC Catu daya LCD (+5V)
GND Ground (0V)
17

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.

Gambar 2.3. Konfigurasi pin Mikrokontroler AT89S52.


18

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 = INT1 (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
XTAL2 Keluaran osilator internal, apabila menggunakan
osilator eksternal pin tidak dihubungkan (No
Connect)
19

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

:
: RAM Serbaguna
:
:

F0

Gambar 2.4. Lokasi RAM Internal


20

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
P = Paritas genap akumulator, menjaga agar di akumulator selalu genap
21

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.

Gambar 2.5. Rangkaian osilator mikrokontroler.


22

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
MIKROKONTROLER

9
(RESET)
R

Gambar 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 :

T=RxC (2.1)
BAB III
PERANCANGAN ALAT

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.

23
24

3.1 Bentuk Fisik Kalkulator

Perancangan bentuk fisik kalkulator adalah perancangan posisi keypad dan

LCD. Perancangan bentuk fisik kalkulator dapat dilihat pada gambar 3.2.

Gambar 3.2 Perancangan bentuk fisik kalkulator

3.2 Rangkaian Matriks Keypad

Matriks keypad yang digunakan adalah matriks keypad 8 x 4 yang artinya

tersusun 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

rangkaian matriks keypad dapat dilihat pada gambar 3.3.


25

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

yang digunakan dapat dilihat pada tabel 3.1.


26

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
x2 0 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
MODE 0 0 0 1 1 0 0 0 0 0 0 0
27

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.

Mikrokontroler ini menghubungkan antara keypad dan LCD. Konfigurasinya dapat

dilihat pada gambar 3.4.


28

VCC

U1

40
39 1

VCC
P0.0/AD0 P1.0/T2

KOLOM
38 2
37 P0.1/AD1 P1.1/T2-EX 3
36 P0.2/AD2 P1.2 4
35 P0.3/AD3 P1.3 5
VCC 34 P0.4/AD4 P1.4 6
33 P0.5/AD5 P1.5 7
32 P0.6/AD6 P1.6 8
MATRIKS KEYPAD
P0.7/AD7 P1.7 8 x 4
VCC RS E D0 21 10
22 P2.0/A8 P3.0/RXD 11
. 23 P2.1/A9 P3.1/TXD 12
24 P2.2/A10 P3.2/INTO 13

BARIS
.
LCD . 25 P2.3/A11 P3.3/INT1 14
MODULE . 26 P2.4/A12 P3.4/TO 15
27 P2.5/A13 P3.5/T1 16
28 P2.6/A14 P3.6/WR 17
D7 P2.7/A15 P3.7/RD
GND
29
C1 PSEN 30 VCC
19 ALE/PROG
18 XTAL1 31

GND
XTAL2 EA/VPP

1
9 RESET
30pF XTAL RST
C3
C2

20
12 MHz AT89C52 10uF

2
30pF R1
10K

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

kapasitor sebesar 10 µF didapat nilai resistor sebesar 10 KΩ.


29

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 OFF

1 2

MCR100 LM7805
A K 1
IN OUT
3 Vout = 5V

GND
G

R1
2

ON

1 2

R2

Gambar 3.5. Rangkaian pengunci ON/OFF.

Besarnya tegangan di kaki GATE (VG) yang diinginkan adalah 4,5V. Dengan

VCC sebesar 9V didapat nilai R1 dan R2

R2
4,5 = 9
R1 + R 2
R2
0,5 =
R1 + R 2
R1 + R 2 = 2 R 2

R1 = R2 (2)
30

Besar arus pengunci IL agar thyristor ON yang dibutuhkan berdasarkan

datasheet adalah 10mA sehingga besar nilai R1 dan R2 adalah

VCC
R1 + R 2 = ; R1 = R2
IL

VCC
2 R1 =
IL
9
R1 =
2.10.10 −3
R1 = 450Ω

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 IL harus dikurangi sampai

ke nilai arus IH. Berdasarkan datasheet nilai IH yang 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 -

5,5V.
31

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

Gambar 3.6. Flowchart program utama


32

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

Gambar 3.7. Flowchart subrutin Mode


33

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.

Gambar 3.8. Flowchart subrutin Masukan Data 1


34

Gambar 3.8. Flowchart subrutin Masukan Data 1 (lanjutan)


35

Gambar 3.8. Flowchart subrutin Masukan Data 1 (lanjutan)


36

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 x2 --

Akar Kuadrat √ --
37

Gambar 3.9. Flowchart subrutin Operator


38

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

Gambar 3.10. Flowchart subrutin Masukan Data 2


39

Gambar 3.10. Flowchart subrutin Masukan Data 2 (lanjutan)


40

Gambar 3.10. Flowchart subrutin Masukan Data 2 (lanjutan)


41

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


42

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
instruksi, function set, display ON/OFF control dan entry mode set.
43

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.

Gambar 3.12. Subrutin tampilan LCD


44

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.

Gambar 3.13. Subrutin penambahan


45

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.

Gambar 3.14. Subrutin pengurangan


46

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.

Gambar 3.15. Subrutin perkalian


47

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.

Gambar 3.16. Subrutin pembagian.


48

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.

Gambar 3.17. Subrutin kuadrat


49

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.

Gambar 3.18. Subrutin akar kuadrat


50

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.

Gambar 3.19. Konversi biner ke heksadesimal


51

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.

Gambar 3.20. Konversi BCD ke heksadesimal


52

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.

Gambar 3.21. Konversi desimal ke heksadesimal


53

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.

3.22. Tampilan bilangan negatif


54

3.22. Tampilan bilangan negatif (lanjutan)


BAB IV

HASIL DAN PEMBAHASAN

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.

Gambar 4.1. Bentuk fisik kalkulator.

55
56

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

baterai yang digunakan adalah batu baterai dengan tegangan 9V.


57

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.

Gambar 4.4. Tampilan data masukan pertama.


58

Langkah 3. Pemberian masukan operator yang akan digunakan. Operator

yang tersedia adalah kuadrat (x2), 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.

Gambar 4.5. Tampilan data masukan kedua.


59

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.

Berikut langkah-langkah pemilihan MODE kalkulator.


60

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.

Gambar 4.8. Tampilan MODE.


61

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

Gambar 4.10. Hasil konversi kedalam bentuk desimal.


62

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 100100BCD. 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

penekanan tombol +/- maka tampilan akan seperti pada gambar 4.13.
63

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

Gambar 4.14. Tampilan bilangan negatif sandi biner.


64

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

Kalkulator yang dibuat tidak mendukung untuk operasi bilangan floating

point, maka dalam proses pembagian akan ditampilkan hasil dan sisa pembagiannya.

Pembahasan mengenai tampilan sisa pembagian mengacu pada contoh pembagian


65

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.

Gambar 4.18. Tampilan simbol operator pembagian.


66

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

pertama akan tetap ada dengan format “SISA = 0”.


67

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 data melebihi kemampuan batas maksimum kalkulator.


2. Proses konversi bilangan melebihi kemampuan batas maksimum kalkulator.
3. Nilai bilangan dibagi dengan nol (0).
4. Nilai bilangan negatif diakarkan.
5. Pemberian nilai masukan 1010 sampai 1111 pada sistem sandi BCD.

Gambar 4.21. Tampilan pesan ERROR!.

Mengenai batas-batas kemampuan kalkulator akan dibahas pada pembahasan

selanjutnya. Apabila muncul pesan “ERROR!” maka hanya ada satu tombol yang

dapat ditekan yaitu tombol “C”. Setelah penekanan tombol “C”, kalkulator dapat

digunakan kembali.
68

4.3 Data Pengamatan

Pengujian terhadap alat yang dibuat dilakukan dengan cara membandingkan

hasil perhitungan alat dengan dengan hasil dari kalkulator pembanding. Kalkulator

pembanding yang digunakan adalah aplikasi kalkulator yang tersedia pada komputer.

4.3.1 Konversi Heksadesimal ke Biner

Pengambilan data konversi heksadesimal ke biner dilakukan dengan cara

memberikan masukan data saat kalkulator berada pada mode heksadesimal (HEX)

kemudian mengubah modenya ke bentuk biner (BIN). Data konversi heksadesimal ke

biner dapat dilihat pada tabel 4.1.

Tabel 4.1. Data konversi heksadesimal ke biner.


Masukan Hasil Keluaran
No
HEX Kalkulator Pembanding Tampilan LCD
1 3 11 11
2 9 1001 1001
3 982 1001 1000 0010 1001 1000 0010
4 1234 1 0010 0011 0100 1 0010 0011 0100
5 F 1111 1111
6 FF 1111 1111 1111 1111
7 FFF 1111 1111 1111 1111 1111 1111
8 1FFF 1 1111 1111 1111 1 1111 1111 1111
9 4FFF 100 1111 1111 1111 100 1111 1111 1111
10 7FFF 111 1111 1111 1111 111 1111 1111 1111
11 8000 1000 0000 0000 0000 ERROR!
12 8001 1000 0000 0000 0001 ERROR!
13 FFFF 1111 1111 1111 1111 ERROR!
14 10000 1 0000 0000 0000 0000 ERROR!
1 0010 0011 0100 0101 0110
15 123456789ABCDEF 0111 1000 1001 1010 1011 ERROR!
1100 1101 1110 1111
69

Pada tabel 4.1 pengujian dilakukan dengan cara memberi masukan pada mode

HEX kemudian mengubahnya ke mode BIN. Hasil konversi pemberian masukan

sampai 4 angka heksadesimal 7FFFH sesuai dengan hasil kalkulator pembanding dan

dapat ditampilkan hasilnya pada mode BIN karena jumlah angka hasil konversinya

tidak lebih dari 15 angka.

Saat pemberian masukan 4 angka heksadesimal 8000H, hasil pada LCD

menampilkan pesan ERROR!. Hal ini karena hasil konversi 8000H, dapat dilihat

pada hasil kalkulator pembanding adalah 1000 0000 0000 00002 sudah melebihi dari

15 angka. Pemberian masukan lebih dari 7FFFH akan menampilkan pesan ERROR!

karena hasil konversi ke mode binernya sudah lebih dari 15 angka.

Nilai masukan maksimum untuk konversi mode HEX ke mode BIN adalah

7FFFH dengan hasil konversi 111 1111 1111 11112. Pesan ERROR! pada LCD akan

muncul apabila hasil konversi melebihi 15 angka.

4.3.2 Konversi Biner ke Heksadesimal

Pengambilan data konversi biner ke heksadesimal sama dengan proses

pengambilan data sebelumnya. Kondisi awal kalkulator berada pada mode biner

kemudian diberi masukan dan diubah ke mode heksadesimal. Pengambilan data

berhenti sampai nilai 111 1111 1111 11112 karena nilai ini adalah batas maksimum
70

masukan data untuk mode biner. Data konversi biner ke heksadesimal dapat dilihat

pada tabel 4.2.

Tabel 4.2. Data konversi biner ke heksadesimal.


No Masukan Hasil Tampilan LCD
BIN Kalkulator Pembanding HEX
1 11 3 3
2 1001 9 9
3 1001 1000 0010 982 982
4 1 0010 0011 0100 1234 1234
5 1010 1011 1100 1101 ABCD ABCD
6 1111 F F
7 1111 1111 FF FF
8 1111 1111 1111 FFF FFF
9 1 1111 1111 1111 1FFF 1FFF
10 10 1111 1111 1111 2FFF 2FFF
11 11 1111 1111 1111 3FFF 3FFF
12 100 1111 1111 1111 4FFF 4FFF
13 101 1111 1111 1111 5FFF 5FFF
14 110 1111 1111 1111 6FFF 6FFF
15 111 1111 1111 1111 7FFF 7FFF

Dari tabel 4.2 pemberian masukan pada mode biner sampai batas masukan

maksimum masukannya 15 angka yaitu 111 1111 1111 11112 hasil konversi ke mode

heksadesimalnya sesuai dengan kalkukator pembanding dan dapat ditampilkan di

LCD mode heksadesimal yaitu 7FFFH. Hal ini karena hasil konversi tidak melebihi

dari 15 angka.

Pada konversi mode biner ke mode heksadesimal, pemberian masukan

maksimumnya adalah 111 1111 1111 11112 dan hasil konversi ke mode heksadesimal

tidak akan memunculkan pesan ERROR! karena hasil konversi tidak lebih dari 15

angka.
71

4.3.3 Konversi Heksadesimal ke BCD

Pengambilan data konversi heksadesimal ke BCD sama dengan proses

pengambilan data sebelumnya. Kondisi awal kalkulator berada pada mode

heksadesimal kemudian diberi masukan dan diubah ke mode BCD. Pada

pengambilan data ini kalkulator pembanding diganti dengan perhitungan secara teori

karena kalkulator pembanding yang digunakan tidak mendukung perhitungan

konversi kedalam bentuk sandi BCD. Data konversi heksadesimal ke biner dapat

dilihat pada tabel 4.3.

Tabel 4.3. Data konversi heksadesimal ke BCD.


Masukan Tampilan LCD
No Perhitungan Teori
HEX BCD
1 3 11 11
2 9 1001 1001
3 10 1 0110 1 0110
4 63 1001 1001 1001 1001
5 1F3D 111 1001 1001 0111 111 1001 1001 0111
6 1F3E 111 1001 1001 1000 111 1001 1001 1000
7 1F3F 111 1001 1001 1001 111 1001 1001 1001
8 1F40 1000 0000 0000 0000 ERROR!
9 1F41 1000 0000 0000 0001 ERROR!
10 1F42 1000 0000 0000 0010 ERROR!

Pada tabel 4.3 pemberian masukan sampai 4 angka heksadesimal 1F3FH hasil

konversi ke mode BCD sesuai dengan hasil kalkulator pembanding dan dapat

ditampilkan di LCD. Hal ini karena hasil konversi 1F3FH ke mode BCD adalah 111

1001 1001 1001BCD tidak lebih dari 15 angka.

Saat pemberian masukan lebih 1F40H pada LCD muncul pesan ERROR!. Hal

ini karena hasil konversi 1F40H ke mode BCD yaitu 1000 0000 0000 0000BCD sudah
72

lebih dari 15 angka. Pemberian masukan lebih dari 1F3FH pada konversi mode

heksadesimal ke mode BCD akan muncul pesan ERROR! karena hasil konversinya

sudah lebih dari 15 angka.

Nilai masukan maksimum pada konversi mode heksadesimal ke mode BCD

adalah 1F3FH. Pesan ERROR! akan muncul apabila hasil konversi sudah melebihi 15

angka.

4.3.4 Konversi BCD ke Heksadesimal

Pengambilan data konversi BCD ke heksadesimal sama dengan proses

pengambilan data sebelumnya. Kondisi awal kalkulator berada pada mode BCD

kemudian diberi masukan dan diubah ke bentuk heksadesimal. Pengambilan data

berhenti sampai nilai 111 1001 1001 1001BCD karena nilai ini adalah batas maksimum

masukan mode BCD. Data konversi BCD ke heksadesimal pada tabel 4.4.

Tabel 4.4. Data konversi BCD ke heksadesimal.


Masukan Tampilan LCD
No Perhitungan Teori
BCD HEX
1 11 3 3
2 110 6 6
3 1001 9 9
4 111 1001 1001 0111 1F3D 1F3D
5 111 1001 1001 1000 1F3E 1F3E
6 111 1001 1001 1001 1F3F 1F3F
7 1010 -- ERROR!
8 1011 -- ERROR!
9 1100 -- ERROR!
10 1111 -- ERROR!
73

Pada tabel 4.4 pemberian masukan maksimum 15 angka pada mode BCD

yaitu 111 1001 1001 1001BCD hasil konversi mode BCD ke heksadesimal sesuai

dengan hasi perhitungan teori dan dapat ditampilkan pada LCD. Hal ini karena hasil

konversi 111 1001 1001 1001BCD ke mode heksadesimal adalah 1F3FH tidak lebih

dari 15 angka.

Pesan ERROR! pada LCD akan muncul apabila pemberian masukan 1010,

1011, 1100, 1101, 1110 atau 1111 pada konversi mode BCD ke mode heksadesimal.

Hal ini karena nilai tertinggi sandi BCD adalah 1001.

4.3.5 Konversi Heksadesimal ke Desimal

Pengambilan data konversi heksadesimal ke desimal dilakukan dengan cara

memberikan masukan maksimum kalkulator mode DEC (desimal) kemudian

mengubah modenya ke heksadesimal. Data konversi heksadesimal ke desimal dapat

dilihat pada tabel 4.5.

Tabel 4.5. Data konversi heksadesimal ke desimal.


Masukan Hasil Tampilan LCD
No
HEX Kalkulator Pembanding DEC
1 6 6 6
2 FF 255 255
3 2500 9472 9472
4 2136E 130646 130646
5 38D7EA4C67FFD 999999999999997 999999999999997
6 38D7EA4C67FFE 999999999999998 999999999999998
7 38D7EA4C67FFF 999999999999999 999999999999999
8 38D7EA4C68000 1000000000000000 ERROR!
9 38D7EA4C68001 1000000000000001 ERROR!
10 FFFFFFFFFFFFFFF 1152921504606846975 ERROR!
74

Pada tabel 4.5 pengujian dilakukan dengan cara memberi masukan mode

heksadesimal kemudian mengubah niali masukan ke mode desimal. Pemberian

masukan mode heksadesimal sampai nilai 38D7EA4C67FFFH hasil konversinya ke

mode desimal sesuai dengan kalkulator pembanding dan dapat ditampilkan di LCD.

Hal ini karena hasil konversi 38D7EA4C67FFFH ke mode desimal yaitu

999999999999999 tidak lebih dari 15 angka.

Saat pemberian masukan 38D7EA4C68000H, pada LCD muncul pesan

ERROR!. Hal ini karena hasil konversi 38D7EA4C68000H ke mode desimal, dapat

dilihat pada hasil kalkulator pembanding adalah 1000000000000000 sudah lebih dari

15 angka. Pemberian masukan lebih dari 38D7EA4C67FFFH akan muncul pesan

ERROR! pada LCD karena hasil konversi ke mode desimalnya sudah lebih dari 15

angka.

Nilai masukan maksimum konversi mode heksadesimal ke mode desimal

adalah 38D7EA4C67FFFH. Pesan ERROR! akan muncul di LCD apabila hasil

konversi lebih dari 15 angka.

4.3.6 Konversi Desimal ke Heksadesimal

Pengambilan data konversi desimal ke heksadesimal dilakukan dengan cara

memberikan masukan data kalkulator mode desimal kemudian mengubah ke mode

heksadesimal. Pengambilan data berhenti pada nilai 999999999999999 karena ini


75

adalah nilai maksimum masukan data dalam mode DEC. Data konversi heksadesimal

ke biner dapat dilihat pada tabel 4.6.

Tabel 4.6. Data konversi desimal ke heksadesimal.


Masukan Kalkulator Pembanding Tampilan LCD
No.
DEC HEX HEX
1 9 9 9
2 99 63 63
3 999 3E7 3E7
4 9999 270F 270F
5 99999 1869F 1869F
6 999999 F423F F423F
7 9999999 98967F 98967F
8 99999999 5F5E0FF 5F5E0FF
9 999999999 3B9AC9FF 3B9AC9FF
10 9999999999 2540BE3FF 2540BE3FF
11 99999999999 174876E7FF 174876E7FF
12 999999999999 E8D4A50FFF E8D4A50FFF
13 9999999999999 9184E729FFF 9184E729FFF
14 99999999999999 5AF3107A3FFF 5AF3107A3FFF
15 999999999999999 38D7EA4C67FFF 38D7EA4C67FFF

Dari tabel 4.2 pemberian masukan pada mode desimal sampai batas masukan

maksimum masukannya 15 angka yaitu 999999999999999 hasil konversi ke mode

heksadesimalnya sesuai dengan kalkukator pembanding dan dapat ditampilkan di

LCD mode heksadesimal yaitu 38D7EA4C67FFFH. Hal ini karena hasil konversi

tidak melebihi dari 15 angka.

Pada konversi mode biner ke mode heksadesimal, masukan maksimumnya

adalah 999999999999999 dan hasil konversi ke mode heksadesimal tidak akan

memunculkan pesan ERROR! karena hasil konversi tidak lebih dari 15 angka.
76

4.3.7 Operasi Kuadrat

Pengujian terhadap operasi kuadrat dilakukan dengan memberi nilai masukan,

kemudian mencari hasil kuadratnya. Pengujian ini dilakukan terhadap keempat mode

yang tersedia yaitu mode HEX, mode BIN, mode DEC dan mode BCD.

4.3.7.1 Operasi Kuadrat Mode Heksadesimal

Pengambilan data operasi kuadrat mode heksadesimal dilakukan dengan cara

memeberi masukan kemudian mengkuadratkannya. Data operasi kuadrat mode

heksadesimal pada tabel 4.8.

Tabel 4.8. Data operasi kuadrat mode heksadesimal.


Keluaran
No Masukan Hasil Kalkulator Pembanding
Tampilan LCD
1 4 10 10
2 12 144 144
3 -20 400 400
4 -33 A29 A29
5 -4A 1564 1564
6 15D 1DBC9 1DBC9
7 238A 4EF0664 4EF0664
8 789CF 38D3813561 38D3813561
9 3FFFFFFA FFFFFFD00000024 FFFFFFD00000024
10 3FFFFFFB FFFFFFD80000019 FFFFFFD80000019
11 3FFFFFFC FFFFFFE00000010 FFFFFFE00000010
12 3FFFFFFD FFFFFFE80000009 FFFFFFE80000009
13 3FFFFFFE FFFFFFF00000004 FFFFFFF00000004
14 3FFFFFFF FFFFFFF80000001 FFFFFFF80000001
15 40000000 1000000000000000 ERROR!
16 40000001 1000000080000001 ERROR!
17 40000002 1000000100000004 ERROR!
18 40000003 1000000180000009 ERROR!
19 40000004 1000000200000010 ERROR!
20 FFFFFFFFFFFFFFF E000000000000001 ERROR!
77

Pada tabel 4.8 pengambilan data dengan tujuan untuk mencari batas masukan

maksimum operasi kuadrat mode HEX. Dari data tersebut dapat diketahui bahwa

batas masukan maksimumnya adalah pada nilai 3FFFFFFFH. Pemberian nilai

masukan lebih dari 3FFFFFFFH akan muncul pesan ERROR! pada LCD karena hasil

kuadratnya sudah lebih dari 15 angka.

4.3.7.2 Operasi Kuadrat Mode Biner

Pengambilan data operasi kuadrat mode biner dilakukan dengan cara

memeberi masukan kemudian mengkuadratkannya. Data operasi kuadrat mode biner

dapat dilihat pada tabel 4.9.

Tabel 4.9. Data operasi kuadrat mode biner.


Keluaran
No Masukan Hasil Kalkulator Pembanding
Tampilan LCD
1 11 0011 1010 0010 1001 1010 0010 1001
2 1001 1010 101 1100 1010 0100 101 1100 1010 0100
3 1010 1010 111 0000 1110 0100 111 0000 1110 0100
4 -10 100 100
5 -100 1000 1000
6 -1001 101 0001 101 0001
7 1011 0000 111 1001 0000 0000 111 1001 0000 0000
8 1011 0001 111 1010 0110 0001 111 1010 0110 0001
9 1011 0010 111 1011 1100 0100 111 1011 1100 0100
10 1011 0011 111 1110 1001 0000 111 1110 1001 0000
11 1011 0100 111 1110 1001 0000 111 1110 1001 0000
12 1011 0101 111 1111 1111 1001 111 1111 1111 1001
13 1011 0110 1000 0001 0110 0100 ERROR!
14 1011 0111 1000 0010 1101 0001 ERROR!
15 1 0000 0000 1 0000 0000 0000 0000 ERROR!
78

Pada tabel 4.9 pemberian masukan sampai 8 angka biner 1011 01012 hasil

kuadratnya sesuai dengan kalkulator pembanding dan dapat ditampilkan di LCD. Hal

ini karena hasil kuadrat 1011 01012 adalah 111 1111 1111 10012 tidak lebih 15 angka.

Saat pemberian masukan 1011 01102 hasil kuadratnya muncul pesan ERROR!

pada LCD. Hal ini karena hasil kuadrat 1011 01102, dapat dilihat pada hasil

kalkulator pembanding adalah 1000 0001 0110 01002 sudah lebih dari 15 angka.

Nilai masukan maksimum operasi kuadrat mode biner adalah 1011 01102.

Pesan ERROR! akan muncul di LCD apabila hasil kuadrat lebih dari 15 angka.

4.3.7.3 Operasi Kuadrat Mode Desimal

Pengambilan data operasi kuadrat mode desimal dilakukan dengan cara

memeberi masukan kemudian mengkuadratkannya. Data operasi kuadrat mode

desimal dapat dilihat pada tabel 4.10.

Tabel 4.10. Data operasi kuadrat mode desimal.


Keluaran
No Masukan Hasil Kalkulator Pembanding
Tampilan LCD
1 4567 20857489 20857489
2 99999 9999800001 9999800001
3 100000 10000000000 10000000000
4 -2 4 4
5 -4 16 16
6 31622775 999999898700625 999999898700625
7 31622776 999999961946176 999999961946176
8 31622777 1000000025191729 ERROR!
9 31622778 1000000088437284 ERROR!
10 999999999999999 999999999999998000000000000001 ERROR!
79

Pada tabel 4.10 pemberian masukan sampai 8 angka desimal 31622776 hasil

kuadratnya sesuai dengan kalkulator pembanding dan dapat ditampilkan di LCD. Hal

ini karena hasil kuadrat 31622776 adalah 999999961946176 tidak lebih 15 angka.

Saat pemberian masukan 31622777 hasil kuadratnya muncul pesan ERROR!

pada LCD. Hal ini karena hasil kuadrat 31622777, dapat dilihat pada hasil kalkulator

pembanding adalah 1000000025191729 sudah lebih dari 15 angka.

Nilai masukan maksimum operasi kuadrat mode desimal adalah 31622776,

Hasil kuadrat dengan nilai masukan lebih dari 31622776 akan menyebabkan

munculnya oesan ERROR! pada LCD. Pesan ERROR! akan muncul di LCD apabila

hasil kuadrat lebih dari 15 angka.

4.3.7.4 Operasi Kuadrat Mode BCD

Pengambilan data operasi kuadrat mode desimal dilakukan dengan cara

memeberi masukan kemudian mengkuadratkannya. Hasil kalkulator pembanding

diganti dengan perhitungan sacara teori karena kalkulator pembanding yang

digunakan tidak mendukung operasi mode BCD. Data operasi kuadrat sandi BCD

dapat dilihat pada tabel 4.11.

Tabel 4.11. Data operasi kuadrat sandi BCD.


Keluaran
No Masukan Hasil Perhitungan Teori
Tampilan LCD
1 1 0000 1 0000 0000 1 0000 0000
2 10 0101 110 0010 0101 110 0010 0101
3 111 0000 100 1001 0000 0000 100 1001 0000 0000
4 -10 100 100
80

5 -100 1 0110 1 0110


6 1000 0101 111 0010 0010 0101 111 0010 0010 0101
7 1000 0110 111 0011 1001 0110 111 0011 1001 0110
8 1000 0111 111 0101 0110 1001 111 0101 0110 1001
9 1000 1000 111 0111 0100 0100 111 0111 0100 0100
10 1000 1001 111 1001 0010 0001 111 1001 0010 0001
11 1001 0000 1000 0001 0000 0000 ERROR!
12 1001 0001 1000 0010 1000 0001 ERROR!
13 1010 -- ERROR!
14 1011 -- ERROR!
15 1100 -- ERROR!

Pada tabel 4.11 pemberian masukan sampai 8 angka BCD 1000 1001BCD hasil

kuadratnya sesuai dengan kalkulator pembanding dan dapat ditampilkan di LCD. Hal

ini karena hasil kuadrat 10001001BCD adalah 111 1001 0010 0001BCD tidak lebih 15

angka.

Saat pemberian masukan 1001 0000BCD hasil kuadratnya muncul pesan

ERROR! pada LCD. Hal ini karena hasil kuadrat 1001 0000BCD, dapat dilihat pada

hasil perhitungan teori adalah 1000 0001 0000 0000BCD sudah lebih dari 15 angka.

Pesan ERROR juga akan muncul apabila pemberian masukan 1010 sampai 1111

karena nilai tertinggi sandi BCD adalah 1001BCD.

Nilai masukan maksimum operasi kuadrat mode BCD adalah 1001 0000BCD,

Hasil kuadrat dengan nilai masukan lebih dari 1001 0000BCD akan menyebabkan

munculnya pesan ERROR! pada LCD. Pesan ERROR! akan muncul di LCD apabila

hasil kuadrat lebih dari 15 angka dan pemberian masukan 1010, 1011, 1100, 1101,

1110 dan 1111.


81

4.3.8 Operasi Perkalian

Pengujian terhadap operasi perkalian dilakukan dengan memberi dua nilai

masukan, kemudian mengalikannya. Pengujian ini dilakukan terhadap keempat mode

yang tersedia yaitu mode HEX, mode BIN, mode DEC dan mode BCD.

4.3.8.1 Operasi Perkalian Mode Heksadesimal

Pengujian operasi perkalian bertujuan unruk mengetahui keluaran maksimum

dari kalkulator. Data operasi perkalian mode heksadesimal pada tabel 4.12.

Tabel 4.12. Data operasi perkalian mode heksadesimal.


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 4x2 8 8
2 3x3 9 9
3 15 x 2 2A 2A
4 3C x 12B 4614 4614
5 123F x FF 122CC1 122CC1
6 FFFFFFFFFFFFF x 1 FFFFFFFFFFFFF FFFFFFFFFFFFF
7 FFFFFFFFFFFFF x 2 1FFFFFFFFFFFFE 1FFFFFFFFFFFFE
8 FFFFFFFFFFFFF x 3 2FFFFFFFFFFFFD 2FFFFFFFFFFFFD
9 4 x FFFFFFFFFFFFF 3FFFFFFFFFFFFC 3FFFFFFFFFFFFC
10 5 x FFFFFFFFFFFFF 4FFFFFFFFFFFFB 4FFFFFFFFFFFFB
11 F x FFFFFFFFFFFFF EFFFFFFFFFFFF1 EFFFFFFFFFFFF1
12 10 x FFFFFFFFFFFFF FFFFFFFFFFFFF0 FFFFFFFFFFFFF0
13 11 x FFFFFFFFFFFFF 10FFFFFFFFFFFEF ERROR!
14 12 x FFFFFFFFFFFFF 11FFFFFFFFFFFEE ERROR!
15 13 x FFFFFFFFFFFFF 12FFFFFFFFFFFED ERROR!
16 (-4) x 2 FFFFFFFFFFFFFFF8 FFFFFFFFFFFFFFF8
17 (-3C) x 12B FFFFFFFFFFFFB9EC FFFFFFFFFFFFB9EC
18 (-123F) x FF FFFFFFFFFFEDD33F FFFFFFFFFFEDD33F
19 4 x (-2) FFFFFFFFFFFFFFF8 FFFFFFFFFFFFFFF8
20 3C x (-12B) FFFFFFFFFFFFB9EC FFFFFFFFFFFFB9EC
82

Pada tabel 4.12 data No. 1 sampai No. 12 hasil perkalian sesuai dengan hasil

kalkulator pembanding dan dapat ditampilkan di LCD karena hasil perkaliannya tidak

lebih dari 15 angka. Sedangkan data No. 13 sampai No. 15 muncul pesan ERROR!

pada LCD karena hasil perkaliannya sudah lebih dari 15 angka. Pesan ERROR! akan

mucul apabila hasi perkalian mode heksadesimal lebih dari 15 angka.

Untuk data No. 16 sampai No. 20 jumlah angkanya adalah 16 angka, karena

ini adalah perkalian dengan hasil bilangan negatif. Pada tampilan bilangan negatif

untuk mode heksadesimal angka FH paling kiri adalah penunjuk bilangan negatif

untuk membedakan dengan bilangan positif.

4.3.8.2 Operasi Perkalian Mode Biner

Pengujian operasi perkalian bertujuan unruk mengetahui keluaran maksimum

dari kalkulator. Data operasi perkalian mode heksadesimal pada tabel 4.13.

Tabel 4.13. Data operasi perkalian mode biner.


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 100 x 10 1000 1000
2 111100 x 101110 1010 1100 1000 1010 1100 1000
3 10000 x 11001110 1100 1110 0000 1100 1110 0000
4 111111111111111 x 1 111 1111 1111 1111 111 1111 1111 1111
5 111111111111111 x 10 1111 1111 1111 1110 1111 1111 1111 1110
6 11111111111111 x 1 11 1111 1111 1111 11 1111 1111 1111
7 11111111111111 x 10 111 1111 1111 1110 111 1111 1111 1110
8 11 x 11111111111111 1011 1111 1111 1101 1011 1111 1111 1101
9 100 x 11111111111111 1111 1111 1111 1100 1111 1111 1111 1100
10 11111111111111 x 10 111 1111 1111 1110 111 1111 1111 1110
11 11 x 11111111111111 1011 1111 1111 1101 1011 1111 1111 1101
12 100 x 11111111111111 1111 1111 1111 1100 1111 1111 1111 1100
83

13 101 x 11111111111111 1 0011 1111 1111 1011 ERROR!


14 110 x 11111111111111 1 0111 1111 1111 1010 ERROR!
15 111 x 11111111111111 1 1011 1111 1111 1001 ERROR!
16 (-100) x 10 1111 1111 1111 1000 1111 1111 1111 1000
17 (-111100) x 101110 1111 0101 0011 1000 1111 0101 0011 1000
18 (-10000) x 11001110 1111 0011 0010 0000 1111 0011 0010 0000
19 100 x (-10) 1111 1111 1111 1000 1111 1111 1111 1000
20 111100 x (-101110) 1111 0101 0011 1000 1111 0101 0011 1000

Pada tabel 4.13 data No. 1 sampai No. 12 hasil perkalian sesuai dengan hasil

kalkulator pembanding dan dapat ditampilkan di LCD karena hasil perkaliannya tidak

lebih dari 15 angka. Sedangkan data No. 13 sampai No. 15 muncul pesan ERROR!

pada LCD karena hasil perkaliannya sudah lebih dari 15 angka. Pesan ERROR! akan

mucul apabila hasi perkalian mode biner lebih dari 15 angka.

Untuk data No. 16 sampai No. 20 jumlah angkanya adalah 16 angka, karena

ini adalah perkalian dengan hasil bilangan negatif. Pada tampilan bilangan negatif

untuk mode heksadesimal angka 12 paling kiri adalah penunjuk bilangan negatif

untuk membedakan dengan bilangan positif.

4.3.8.3 Operasi Perkalian Mode Desimal

Pengujian operasi perkalian bertujuan unruk mengetahui keluaran maksimum

dari kalkulator dengan cara memberi dua masukan nilai kemudian mengalikannya.

Data operasi perkalian mode desimal pada tabel 4.14.


84

Tabel 4.14. Data operasi perkalian mode desimal


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 2x4 8 8
2 123 x 45 5535 5535
3 12 x 9999 119988 119988
4 99999999999999 x 5 499999999999995 499999999999995
5 6 x 99999999999999 599999999999994 599999999999994
6 7 x 99999999999999 699999999999993 699999999999993
7 9 x 99999999999999 899999999999991 899999999999991
8 10 x 99999999999999 999999999999990 999999999999990
9 11 x 99999999999999 1099999999999989 ERROR!
10 12 x 99999999999999 1199999999999988 ERROR!

Pada tabel 4.14 data No. 1 sampai No. 8 hasil perkalian sesuai dengan hasil

kalkulator pembanding dan dapat ditampilkan di LCD karena hasil perkaliannya tidak

lebih dari 15 angka. Sedangkan data No. 9 sampai No. 10 muncul pesan ERROR!

pada LCD karena hasil perkaliannya sudah lebih dari 15 angka. Pesan ERROR! akan

mucul apabila hasil perkalian mode desimal lebih dari 15 angka.

4.3.8.4 Operasi Perkalian Mode BCD

Pengujian operasi perkalian bertujuan unruk mengetahui keluaran maksimum

dari kalkulator. Hasil kalkulator pembading diganti dengan perhitungan teori karena

tidak mendukung operasi dalam mode BCD. Data operasi perkalian mode BCD pada

tabel 4.15.
85

Tabel 4.15. Data operasi perkalian mode BCD.

Hasil Perhitungan Keluaran


No Masukan
Teori Tampilan LCD
1 110 x 10 1 0010 1 0010
2 10 0101 x 101 1 0010 0101 1 0010 0101
3 1 0010 0011 x 111 1000 0110 0001 1000 0110 0001
4 1000100010001 x 100 100 0100 0100 0100 100 0100 0100 0100
5 1000100010001 x 101 101 0101 0101 0101 101 0101 0101 0101
6 1000100010001 x 110 110 0110 0110 0110 110 0110 0110 0110
7 111 x 1000100010001 111 0111 0111 0111 111 0111 0111 0111
8 1000 x 1000100010001 1000 1000 1000 1000 1000 1000 1000 1000
9 111100110011001 x 10 1 0101 1001 1001 1000 ERROR!
10 10000 x 1000100010001 1 0001 0001 0001 0000 ERROR!

Pada tabel 4.14 data No. 1 sampai No. 8 hasil perkalian sesuai dengan hasil

perhitungan teori dan dapat ditampilkan di LCD karena hasil perkaliannya tidak lebih

dari 15 angka. Sedangkan data No. 9 sampai No. 10 muncul pesan ERROR! pada

LCD karena hasil perkaliannya sudah lebih dari 15 angka. Pesan ERROR! akan

mucul apabila hasil perkalian mode BCD lebih dari 15 angka.

4.3.9 Operasi Pembagian

Pengambilan data operasi pembagian bertujuan untuk mengetahui kebenaran

hasil perhitungan dari alat yang dibuat. Nilai sisa bagi pada kalkulator pembanding

diperoleh dengan cara mengalikan hasil bagi dengan pembagi kemudian bilangan

yang dibagi dikurangi dengan hasil perkalian tadi. Pengujian dilakukan terhadap

keempat mode yang tersedia.


86

4.3.9.1 Operasi Pembagian Mode Heksadesimal

Pengambilan data operasi pembagian mode heksadesimal dilakukan untuk

mengetahui kebenaran hasil perhitungan dari alat. Data operasi pembagian mode

heksadesimal dapat dilihat pada tabel 4.16.

Tabel 4.16. Data operasi pembagian mode heksadesimal.


Hasil Kalkulator Keluaran
No Masukan Pembanding Tampilan LCD
Hasil Sisa Hasil Sisa
1 FFFFFF ÷ FF 10101 0 10101 0
2 4614 ÷ 3C 12B 0 12B 0
3 987D ÷ 365 2C 321 2C 321
4 58AB ÷ CE 6E 27 6E 27
5 3 ÷ 18 0 3 0 3
6 (-FFFFFF) ÷ FF FFFFEFEFF 0 FFFFEFEFF 0
7 (-4614) ÷ 3C FFFFFFED5 0 FFFFFFED5 0
8 (-122CC1) ÷ (-123F) FF 0 FF 0
9 (-58AB) ÷ (-CE) 6E 27 6E 27
10 (-987D) ÷ (-365) 2C 321 2C 321

Dari tabel 4.16 hasil operasi pembagian mode heksadesimal tidak akan

muncul pesan ERROR! karena hasil pembagiannya tidak pernah lebih dari 15 angka.

4.3.9.2 Operasi Pembagian Mode Biner

Pengambilan data operasi pembagian mode biner dilakukan untuk mengetahui

kebenaran hasil perhitungan dari alat. Sisa pembagian pada mode ini berupa mode

biner. Data operasi pembagian mode biner pada tabel 4.17.


87

Tabel 4.17. Data operasi pembagian mode biner.


Hasil Kalkulator Keluaran
No Masukan Pembanding Tampilan LCD
Hasil Sisa Hasil Sisa
1 10000 ÷ 100 100 0 100 0
2 1001 ÷ 11 11 0 11 0
3 1110100 ÷ 110 10011 10 10011 10
4 1000 ÷ 11 10 10 10 10
5 1000 ÷ (-11) 1111111110 10 1111111110 10
6 (-10000) ÷ (-100) 100 0 100 0
7 (-1001) ÷ (-11) 11 0 11 0
8 (-10100010) ÷ (-10) 1010001 0 1010001 0
9 (-1110100) ÷ (-110) 10011 10 10011 10
10 (-1000) ÷ (-11) 10 10 10 10

Dari tabel 4.17 hasil operasi pembagian mode biner tidak akan muncul pesan

ERROR! karena hasil pembagiannya tidak pernah lebih dari 15 angka.

4.3.9.3 Operasi Pembagian Mode Desimal

Pengambilan data operasi pembagian mode desimal dilakukan secara acak

untuk mengetahui kebenaran hasil perhitungan dari alat. Sisa pembagian pada mode

ini berupa mode desimal. Data operasi pembagian mode desimal pada tabel 4.18.

Tabel 4.18. Data operasi pembagian mode desimal.

Hasil Kalkulator Keluaran


No Masukan Pembanding Tampilan LCD
Hasil Sisa Hasil Sisa
1 999999 ÷ 33 30303 0 30303 0
2 5648 ÷ 2 2824 0 2824 0
3 37 ÷ 4 9 1 9 1
4 2007 ÷ 10 200 7 200 7
5 3 ÷ 29 0 3 0 3
6 (-999999) ÷ 33 -30303 0 -30303 0
88

7 (-5648) ÷ 2 -2824 0 -2824 0


8 (-227148) ÷ 23 -9876 0 -9876 0
9 (-37) ÷ 4 -9 1 -9 1
10 (-2007) ÷ 10 -200 7 -200 7

Dari tabel 4.18 hasil operasi pembagian mode desimal tidak akan muncul

pesan ERROR! karena hasil pembagiannya tidak pernah lebih dari 15 angka.

4.3.9.4 Operasi Pembagian Mode BCD

Pengambilan data operasi pembagian mode BCD dilakukan untuk mengetahui

kebenaran hasil perhitungan dari alat. Hasil dari kalkulator pembanding digantikan

dengan perhitungan teori, karena kalkulator pembanding yang digunakan tidak

mendukung perhitungan dalam mode BCD. Data operasi pembagian mode BCD

dapat dilihat pada tabel 4.19.

Tabel. 4.19. Data operasi pembagian mode BCD.


Hasil Keluaran
No Masukan Perhitungan Teori Tampilan LCD
Hasil Sisa Hasil Sisa
1 1110010 ÷ 1001 1000 0 1000 0
2 10010010 ÷ 10 1000110 0 1000110 0
3 10000001 ÷ 100 100000 1 100000 1
4 1000 ÷ 11 10 10 10 10
5 100 ÷ 100110 0 100 0 100
6 (-1110010) ÷ 1001 -1000 0 -1000 0
7 (-10010010) ÷ 10 -1000110 0 -1000110 0
8 (-100101) ÷ 101 -101 0 -101 0
9 (-10000001) ÷ 100 -100000 1 -100000 1
10 (-1000) ÷ 11 -10 10 -10 10
89

Dari tabel 4.19 hasil operasi pembagian mode biner tidak akan muncul pesan

ERROR! karena hasil pembagiannya tidak pernah lebih dari 15 angka.

4.3.10 Operasi Penambahan

Pengambilan data operasi penambahan bertujuan untuk mengetahui hasil

penambahan maksimal yang masih bisa ditampilkan oleh alat. Pengujian dilakukan

pada keempat mode yang tersedia.

4.3.10.1 Operasi Penambahan Mode Heksadesimal

Pengambilan data operasi penambahan dilakukan dengan memberi dua buah

masukan kemudian menambahkannya. Data operasi penambahan mode heksadesimal

pada tabel 4.20.

Tabel 4.20. Data operasi penambahan mode heksadesimal.


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 78CD + 123 79F0 79F0
2 55 + 689 6DE 6DE
3 12B + 3E 169 169
4 FFFFFFFFFFFFFF + 1 100000000000000 100000000000000
5 FFFFFFFFFFFFFE + 1 FFFFFFFFFFFFFF FFFFFFFFFFFFFF
6 FFFFFFFFFFFFFD + 1 FFFFFFFFFFFFFE FFFFFFFFFFFFFE
7 FFFFFFFFFFFFFC + 1 FFFFFFFFFFFFFD FFFFFFFFFFFFFD
8 FFFFFFFFFFFFFB + 1 FFFFFFFFFFFFFC FFFFFFFFFFFFFC
9 FFFFFFFFFFFFFA + 1 FFFFFFFFFFFFFB FFFFFFFFFFFFFB
10 FFFFFFFFFFFFFFF + 1 1000000000000000 ERROR!
11 (-12B) + 3E FFFFFFFFFFFFFF13 FFFFFFFFFFFFFF13
12 (-78CD) + 123 FFFFFFFFFFFF8856 FFFFFFFFFFFF8856
13 (-78CD) + (-123) FFFFFFFFFFFF8610 FFFFFFFFFFFF8610
14 (-55) + (-689) FFFFFFFFFFFFF922 FFFFFFFFFFFFF922
15 (-12B) + (-3E) FFFFFFFFFFFFFE97 FFFFFFFFFFFFFE97
90

Dari tabel 4.20 data No. 1 sampai No. 9 tidak muncul pesan ERROR! pada

LCD karena hasil penambahannya tidak lebih dari 15 angka. Sedangkan pada data

No. 10 muncul pesan ERROR! pada LCD karena hasil penambahannya sudah lebih

dari 15 angka. Pesan ERROR! akan muncul pada LCD apabila hasil penambahan

mode heksadesimal lebih dari 15 angka.

Pada data No11 sampai data No 15 jumlah angka hasil penambahannya 16

angka karena hasil penambahannya adalah bilangan negatif. Angka FH paling kiri

pada mode heksadsimal adalah penunjuk bilangan negatif.

4.3.10.2 Operasi Penambahan Mode Biner

Pengambilan data operasi penambahan dilakukan dengan memberi dua buah

masukan kemudian menambahkannya. Data operasi penambahan mode biner pada

tabel 4.21.

Tabel 4.21. Data operasi penambahan mode biner.


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 10110 + 1010 10 0000 10 0000
2 1110101 + 1100 1000 0001 1000 0001
3 11001101 + 111 1101 0100 1101 0100
4 1110101 + 1100 1000 0001 1000 0001
5 111111111111110 + 1 111 1111 1111 1111 111 1111 1111 1111
6 111111111111101 + 1 111 1111 1111 1110 111 1111 1111 1110
7 111111111111100 + 1 111 1111 1111 1101 111 1111 1111 1101
8 111111111111011 + 1 111 1111 1111 1100 111 1111 1111 1100
9 111111111111110 + 10 1000 0000 0000 0000 ERROR!
10 111111111111101 + 11 1000 0000 0000 0000 ERROR!
11 (-1110101) + 1100 1111 1111 1001 0111 1111 1111 1001 0111
12 (-11001101) + 111 1111 1111 0011 1010 1111 1111 0011 1010
91

13 (-10110) + (-1010) 1111 1111 1110 0000 1111 1111 1110 0000
14 (-1110101) + (-1100) 1111 1111 0111 1111 1111 1111 0111 1111
15 (-11001101) + (-111) 1111 1111 0010 1100 1111 1111 0010 1100

Dari tabel 4.21 data No. 1 sampai No. 8 tidak muncul pesan ERROR! pada

LCD karena hasil penambahannya tidak lebih dari 15 angka. Sedangkan pada data

No. 9 sampai No. 10 muncul pesan ERROR! pada LCD karena hasil penambahannya

sudah lebih dari 15 angka. Pesan ERROR! akan muncul pada LCD apabila hasil

penambahan mode biner lebih dari 15 angka.

Pada data No11 sampai data No 15 jumlah angka hasil penambahannya 16

angka karena hasil penambahannya adalah bilangan negatif. Angka 12 paling kiri

pada mode biner adalah penunjuk bilangan negatif.

4.3.10.3 Operasi Penambahan Mode Desimal

Pengambilan data operasi penambahan dilakukan dengan memberi dua buah

masukan kemudian menambahkannya. Data operasi penambahan mode desimal pada

tabel 4.22.

Tabel 4.22. Data operasi penambahan mode desimal.


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 35 + 24 59 59
2 9865 + 124 9989 9989
3 69874 + 2007 71881 71881
4 999999999999996 + 1 999999999999997 999999999999997
5 999999999999995 + 1 999999999999996 999999999999996
6 999999999999998 + 2 1000000000000000 ERROR!
7 999999999999997 + 3 1000000000000000 ERROR!
92

8 (-35) + (-24) -59 -59


9 (-9865) + (-124) -9989 -9989
10 (-69874) + (-2007) -71881 -71881

Dari tabel 4.22 data No. 1 sampai No. 5 tidak muncul pesan ERROR! pada

LCD karena hasil penambahannya tidak lebih dari 15 angka. Sedangkan pada data

No. 6 sampai No. 7 muncul pesan ERROR! pada LCD karena hasil penambahannya

sudah lebih dari 15 angka. Pesan ERROR! akan muncul pada LCD apabila hasil

penambahan mode desimal lebih dari 15 angka.

Pada data No. 8 sampai data No. 10 jumlah angka hasil penambahannya

adalah bilangan negatif yang ditandai dengan karakter “-“ pada tampilan LCD.

4.3.10.4 Operasi Penambahan Mode BCD

Pengambilan data operasi penambahan dilakukan dengan memberi dua buah

masukan kemudian menambahkannya. Hasil kalkulator pembanding diganti dengan

perhitungan teori karena kalkulator pembanding yang digunakan tidak mendukung

perhitungan mode BCD. Data operasi penambahan mode BCD pada tabel 4.23.

Tabel 4.23. Data operasi penambahan mode BCD.


Hasil Perhitungan Keluaran
No Masukan
Teori Tampilan LCD
1 1110110 + 1000 1000 0100 1000 0100
2 100101 + 10010 11 0111 11 0111
3 1000 + 10 1 0000 1 0000
4 111 1001 1001 1000 + 1 111 1001 1001 1001 111 1001 1001 1001
5 111 1001 1001 0111 + 1 111 1001 1001 1000 111 1001 1001 1000
6 111 1001 1001 0110 + 1 111 1001 1001 0111 111 1001 1001 0111
7 111 1001 1001 1001 + 1 1000 0000 0000 0000 ERROR!
93

8 (-1110110) + 1000 -110 1000 -110 1000


9 (-100101) + 10010 -1 0011 -1 0011
10 (-1000) + 10 -110 -110

Dari tabel 4.22 data No. 1 sampai No. 6 tidak muncul pesan ERROR! pada

LCD karena hasil penambahannya tidak lebih dari 15 angka. Sedangkan pada data

No. 7 muncul pesan ERROR! pada LCD karena hasil penambahannya sudah lebih

dari 15 angka. Pesan ERROR! akan muncul pada LCD apabila hasil penambahan

mode BCD lebih dari 15 angka.

Pada data No. 8 sampai data No. 10 jumlah angka hasil penambahannya

adalah bilangan negatif yang ditandai dengan karakter “-“ pada tampilan LCD.

4.3.11 Operasi Pengurangan

Pengambilan data operasi pengurangan bertujuan untuk mengetahui

kebenaran hasil perhitungan dari alat yang dibuat dengan membandingkan dari hasil

perhitungan kalkulator pembanding. Pengujian dilakukan terhadap keempat mode

yang tersedia.

4.3.11.1 Operasi Pengurangan Mode Heksadesimal

Pengambilan data operasi pengurangan mode heksadesimal dilakukan untuk

mengetahui kebenaran hasil perhitungan dari alat. Data operasi pengurangan mode

heksadesimal dapat dilihat pada tabel 4.24.


94

Tabel 4.24. Data operasi pengurangan mode heksadesimal.


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 58FFF – 1235 57DCA 57DCA
2 12DB3 – 564 1284F 1284F
3 25 – 10 15 15
4 58FFF – (-1235) 5A234 5A234
5 12DB3 – (-564) 13317 13317
6 25 – (-10) 35 35
7 89 – (-CA2) D2B D2B
8 10 – (-19) 29 29
9 89 – CA2 FFFFFFFFFFFFF3E7 FFFFFFFFFFFFF3E7
10 10 – 19 FFFFFFFFFFFFFFF7 FFFFFFFFFFFFFFF7
11 (-58FFF) – 1235 FFFFFFFFFFA5DCC FFFFFFFFFFA5DCC
12 (-12DB3) – 564 FFFFFFFFFFECCE9 FFFFFFFFFFECCE9
13 (-25) – 10 FFFFFFFFFFFFFCB FFFFFFFFFFFFFCB
14 (-89) – CA2 FFFFFFFFFFFF2D5 FFFFFFFFFFFF2D5
15 (-10) – 19 FFFFFFFFFFFFFD7 FFFFFFFFFFFFFD7
16 (-58FFF) – (-1235) FFFFFFFFFFFA8236 FFFFFFFFFFFA8236
17 (-12DB3) – (-564) FFFFFFFFFFFED7B1 FFFFFFFFFFFED7B1
18 (-25) – (-10) FFFFFFFFFFFFFFEB FFFFFFFFFFFFFFEB
19 FFFFFFFFFFFFFFF – (- 1) 1000000000000000 ERROR!
20 FFFFFFFFFFFFFFF – (- 2) 1000000000000001 ERROR!

Pada tabel 4.24 data No. 1 sampai No. 8 hasil pengurangannya sesuai dengan

kalkulator pembanding dan tidak muncul pesan ERROR! pada LCD. Hal ini karena

hasil pengurangannya tidak lebih dari 15 angka.

Data No. 9 sampai No. 18 jumlah angka tampilan LCD adalah 16 angka

karena hasil pengurangannya adalah bilangan negatif. Angka FH paling kiri pada

tampilang heksadesiamal adalah penunjuk bilangan negatif.

Pada data No. 19 dan No. 20 muncul pesan ERROR! pada LCD karena saat

pemberian masukan FFFFFFFFFFFFFFF – (- 1) proses perhitungan yang terjadi


95

adalah FFFFFFFFFFFFFFF + 1, dengan hasil perhitungan 1000000000000000H.

Hasil perhitungan ini sudah melebihi dari 15 angka positif sehingga muncul pesan

ERROR! pada LCD. Pesan ERROR! pada LCD akan muncul saat hasil perhitungan

positf lebih dari 15 angka.

4.3.11.2 Operasi Pengurangan Mode Biner

Pengambilan data operasi pengurangan mode biner dilakukan untuk

mengetahui kebenaran hasil perhitungan dari alat. Data operasi pengurangan mode

biner dapat dilihat pada tabel 4.25.

Tabel 4.25. Data operasi prngurangan mode biner


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 1110101 – 100011 1010010 1010010
2 1100 – 110 110 110
3 1001 – 11 111 111
4 1110101 – (-100011) 10011000 10011000
5 1100 – (-110) 10010 10010
6 1001 – (-11) 1100 1100
7 10100 – (-10000) 100100 100100
8 101 – (-1010) 1111 1111
9 100 – 10000 1111111111110100 1111111111110100
10 101 – 1010 1111111111111011 1111111111111011
11 (-1110101) – 100011 1111111101101000 1111111101101000
12 (-1100) – 110 1111111111101110 1111111111101110
13 (-1001) – 11 1111111111110100 1111111111110100
14 (-10100) – 10000 1111111111011100 1111111111011100
15 (-101) – 1010 1111111111110001 1111111111110001
16 (-1110101) – (-100011) 1111111110101110 1111111110101110
17 (-1100) – (-110) 1111111111111010 1111111111111010
18 (-1001) – (-11) 1111111111111001 1111111111111001
19 111111111111111 - (-1) 1000 0000 0000 0000 ERROR!
20 111111111111111 - (-10) 1000 0000 0000 0001 ERROR!
96

Pada tabel 4.25 data No. 1 sampai No. 8 hasil pengurangannya sesuai dengan

kalkulator pembanding dan tidak muncul pesan ERROR! pada LCD. Hal ini karena

hasil pengurangannya tidak lebih dari 15 angka.

Data No. 9 sampai No. 18 jumlah angka tampilan LCD adalah 16 angka

karena hasil pengurangannya adalah bilangan negatif. Angka FH paling kiri pada

tampilang heksadesiamal adalah penunjuk bilangan negatif.

Pada data No. 19 dan No. 20 muncul pesan ERROR! pada LCD karena saat

pemberian masukan 111111111111111 - (-1) proses perhitungan yang terjadi adalah

111111111111111 + 1, dengan hasil perhitungan 10000000000000002. Hasil

perhitungan ini sudah melebihi dari 15 angka positif sehingga muncul pesan ERROR!

pada LCD. Pesan ERROR! pada LCD akan muncul saat hasil perhitungan positf lebih

dari 15 angka.

4.3.11.3 Operasi Pengurangan Mode Desimal

Pengambilan data operasi pengurangan mode desimal dilakukan secara acak

untuk mengetahui kebenaran hasil perhitungan dari alat. Data operasi pengurangan

mode desimal dapat dilihat pada tabel 4.26.

Tabel 4.26. Data operasi pengurangan mode desimal.


Hasil Kalkulator Keluaran
No Masukan
Pembanding Tampilan LCD
1 95486 – 654 94832 94832
2 587 – 23 564 564
3 25 – 5 20 20
4 32 – 99 -67 -67
97

5 3 – 12 -9 -9
6 (-95486) – 654 -96140 -96140
7 (-587) – 23 -610 -610
8 (-25) – 5 -30 -30
9 999999999999998 – (-2) 1000000000000000 ERROR!
10 999999999999999 – (-3) 1000000000000002 ERROR!

Pada tabel 4.26 data No. 1 sampai No. 8 hasil pengurangannya sesuai dengan

kalkulator pembanding dan tidak muncul pesan ERROR! pada LCD. Hal ini karena

hasil pengurangannya tidak lebih dari 15 angka. Tampilan bilangan negatif pada

mode desimal ditandai dengan karakter “-“ pada tampilan LCD.

Pada data No. 9 dan No. 10 muncul pesan ERROR! pada LCD karena saat

pemberian masukan 999999999999998 – (-2) proses perhitungan yang terjadi adalah

999999999999998 + 2, dengan hasil perhitungan 1000000000000000. Hasil

perhitungan ini sudah melebihi dari 15 angka positif sehingga muncul pesan ERROR!

pada LCD. Pesan ERROR! pada LCD akan muncul saat hasil perhitungan positf lebih

dari 15 angka.

4.3.11.3 Operasi Pengurangan Mode BCD

Nilai maksimal pada mode BCD mengacu pada pembahasan sebelumnya.

Pengambilan data operasi pengurangan mode BCD dilakukan secara acak untuk

mengetahui kebenaran hasil perhitungan dari alat. Data operasi pengurangan mode

BCD dapat dilihat pada tabel 4.27.


98

Tabel 4.27. Data operasi pengurangan mode BCD.


Hasil Perhitungan Keluaran
No Masukan
Teori Tampilan LCD
1 1111001 – 1000 111 0001 111 0001
2 100101 – 11 10 0010 10 0010
3 1001 – 101 100 100
4 10010 – 100101 -11 -11
5 11 – 10000 -111 -111
6 (-1111001) – 1000 1000 0111 1000 0111
7 (-100101) – 11 101 0000 101 0000
8 (-1001) – 101 1 0100 1 0100
9 111 1001 1001 1001 – (-1) 1000 0000 0000 0000 ERROR!
10 111 1001 1001 1001 – (-10) 1000 0000 0000 0001 ERROR!

Pada tabel 4.27 data No. 1 sampai No. 8 hasil pengurangannya sesuai dengan

kalkulator pembanding dan tidak muncul pesan ERROR! pada LCD. Hal ini karena

hasil pengurangannya tidak lebih dari 15 angka. Tampilan bilangan negatif pada

mode BCD ditandai dengan karakter “-“ pada tampilan LCD.

Pada data No. 9 dan No. 10 muncul pesan ERROR! pada LCD karena saat

pemberian masukan 111 1001 1001 1001 – (-1) proses perhitungan yang terjadi

adalah 111 1001 1001 1001 + 1, dengan hasil perhitungan 1000000000000000BCD.

Hasil perhitungan ini sudah melebihi dari 15 angka positif sehingga muncul pesan

ERROR! pada LCD. Pesan ERROR! pada LCD akan muncul saat hasil perhitungan

positf lebih dari 15 angka.


99

4.3.12 Operasi Akar Kuadrat

Pengambilan data pada operasi akar kuadrat bertujuan untuk mengetahui

kebenaran hasil perhitungan dari alat yang dibuat dengan membandingkan hasil

kalkulator pembanding.

4.3.12.1 Operasi Akar Kuadrat Mode Heksadesimal

Untuk menghitung nilai akar kuadrat mode heksadesimal, pada kalkulator

pembanding nilai heksadesimal di konversi terlebih dahulu ke dalam bentuk desimal

kemudian dihitung nilai akarnya. Hal ini dikarenakan kalkulator pembanding yang

digunakan tidak mendukung untuk perhitungan akar kuadrat mode heksadesimal.

Nilai akar yang diambil hanya nilai integer. Data operasi akar kuadrat mode

heksadesimal pada tabel 4.28.

Tabel 4.28. Data operasi akar kuadrat mode heksadesimal


No Masukan Hasil Kalkulator Pembanding Keluaran Tampilan LCD
1 √7 2 2
2 √9 3 3
3 √10 4 4
4 √18 4 4
5 √48 8 8
6 √100 10 10
7 √10000 100 100
8 √1000000 1000 1000
9 √789A AF AF
10 √2007 5A 5A
11 √FFFF FF FF
12 √FFFFF 3FF 3FF
13 √FFFFFF FFF FFF
14 √(-48) -- ERROR!
15 √(-100) -- ERROR!
100

Pada tabel 4.28 hasil kuadrat masukan nilai positif sesuai dengan hasil

kalkulator pembanding dan tidak muncul pesan ERROR! karena hasil kuadratnya

tidak pernah lebih dari 15 angka.

Pesan ERROR! akan muncul apabila masukan nilai negatif diakarkan, karena

nilai negatif tidak memiliki hasil akar kuadrat.

4.3.12.2 Operasi Akar Kuadrat Mode Biner

Untuk menghitung nilai akar kuadrat mode biner, pada kalkulator pembanding

nilai biner di konversi terlebih dahulu ke dalam bentuk desimal kemudian dihitung

nilai akarnya. Hal ini dikarenakan kalkulator pembanding yang digunakan tidak

mendukung untuk perhitungan akar kuadrat mode biner. Nilai akar yang diambil

hanya nilai integer. Data operasi akar kuadrat mode biner pada tabel 4.29.

Tabel 4.29. Data operasi akar kuadrat mode biner.

Hasil Keluaran
No Masukan
Kalkulator Pembanding Tampilan LCD
1 √111 10 10
2 √1001 11 11
3 √10000 100 100
4 √11000 100 100
5 √1001000 1000 1000
6 √1100010101 11100 11100
7 √1100100001 11100 11100
8 √10000000000 100000 100000
9 √10000010000 100000 100000
10 √110010101010101 10100001 10100001
11 √110011001100110 10100001 10100001
12 √111111111111001 10110101 10110101
13 √111111111111111 10110101 10110101
14 √(-1001000) -- ERROR!
15 √(-1100010101) -- ERROR!
101

Pada tabel 4.29 hasil kuadrat masukan nilai positif sesuai dengan hasil

kalkulator pembanding dan tidak muncul pesan ERROR! karena hasil kuadratnya

tidak pernah lebih dari 15 angka.

Pesan ERROR! akan muncul apabila masukan nilai negatif diakarkan, karena

nilai negatif tidak memiliki hasil akar kuadrat.

4.3.12.3 Operasi Akar Kuadrat Mode Desimal

Pengujian terhadap kebenaran hasil perhitungan alat dilakukan dengan cara

membandingkannya dengan hasil perhitungan kalkulator pembanding. Data operasi

akar kuadrat mode desimal pada tabel 4.30.

Tabel 4.30. Data operasi akar kuadrat mode desimal.


No Masukan Hasil Kalkulator Pembanding Keluaran Tampilan LCD
1 √4 2 2
2 √9 3 3
3 √20 4 4
4 √36 6 6
5 √70 8 8
6 √81 9 9
7 √987 31 31
8 √100 10 10
9 √10000 100 100
10 √1999999 1414 1414
11 √8999999 2999 2999
12 √9000000 3000 3000
13 √9999999 3126 3126
14 √ (-987) 31 31
15 √ (-100) 10 10
102

Pada tabel 4.30 hasil kuadrat masukan nilai positif sesuai dengan hasil

kalkulator pembanding dan tidak muncul pesan ERROR! karena hasil kuadratnya

tidak pernah lebih dari 15 angka.

Pesan ERROR! akan muncul apabila masukan nilai negatif diakarkan, karena

nilai negatif tidak memiliki hasil akar kuadrat.

4.3.12.4 Operasi Akar Kuadrat Mode BCD

Untuk menghitung nilai akar kuadrat mode BCD, pada kalkulator pembanding

nilai BCD di konversi terlebih dahulu ke dalam bentuk desimal kemudian dihitung

nilai akarnya. Hal ini dikarenakan kalkulator pembanding yang digunakan tidak

mendukung untuk perhitungan akar kuadrat mode BCD. Nilai akar yang diambil

hanya nilai integer. Data operasi akar kuadrat mode BCD pada tabel 4.31.

Tabel 4.31. Data operasi akar kuadrat mode BCD.

Hasil Keluaran
No Masukan
Kalkulator Pembanding Tampilan LCD
1 √1001 11 11
2 √100000 100 100
3 √110110 110 110
4 √1110000 1000 1000
5 √10000001 1001 1001
6 √10011001 1001 1001
7 √100000000 10000 10000
8 √100010000 10000 10000
9 √100110000 10001 10001
10 √100110011001 110001 110001
11 √1000000000000 110001 110001
12 √111100101010000 10001001 10001001
13 √111100110011001 10001001 10001001
14 √(-10011001) 1001 1001
15 √(-100000000) 10000 10000
103

Pada tabel 4.31 hasil kuadrat masukan nilai positif sesuai dengan hasil

kalkulator pembanding dan tidak muncul pesan ERROR! karena hasil kuadratnya

tidak pernah lebih dari 15 angka. Pesan ERROR! akan muncul apabila masukan nilai

negatif diakarkan, karena nilai negatif tidak memiliki hasil akar kuadrat.

4.3.13 Perhitungan Berulang Kali

Perhitungan berulang kali adalah pengujian alat dengan diberi masukan yang

menggunakan lebih dari satu jenis operator dan diakhiri dengan tombol sama dengan.

Sebagai contoh 9 x 2 – 7 = 11 desimal. Data perhitungan berulang kali dapat dilihat

pada tabel 4.32.

Tabel 4.32. Data perhitungan berulang kali.


Hasil Keluaran
Masukan
Kalkulator Pembanding Tampilan LCD
25 + 30 – A 4B 4B
2F x 9 ÷ 2 D3 D3
HEX

252 x 20 ÷ 2 + 3 5593 5593


9–1x5÷3 8 D
30 + 5 x 2 – 7 33 63
101 x 100 ÷ 10 1010 1010
1001 + 110 - 1010 101 101
BIN

1002 x 11 + 101 -10 110011 110011


1010 + 11 x 111 11111 1011011
MODE

1111 – 1011 ÷ 10 1010 10


78 + 6 - 25 59 59
12 x 2 ÷ 3 8 8
DEC

9x2–7 11 11
9 + 12 x 5 69 105
105 – 24 x 3 + 1 34 244
10101 + 100 – 111 10010 10010
1001 x 101 ÷ 110 111 111
BCD

1112 x 10 + 110 – 1 100000011 100000011


110 + 100 x 11 11000 110000
1001 - 101 ÷ 1000 1 1
104

Dari tabel 4.32 pada bagian yang dicetak miring, hasil perhitungan alat

berbeda dengan kalkulator pembanding. Hal ini disebabkan karena perhitungan pada

alat adalah berdasarkan urutan operator yang ditekan. Sebagai contoh jika diberi

masukan 9 + 12 x 5, maka yang dihitung terlebih dahulu adalah 9 + 12 = 21

kemudian perhitungan 21 x 5 = 105.

Sedangkan pada kalkulator pembanding menggunakan prioritas operator

dengan urutan eksekusi kuadrat, akar kuadrat, kali, bagi, tambah dan kurang. Sebagai

contoh dengan masukan 9 + 12 x 5, maka yang dihitung terlebih dahulu adalah nilai

12 x 5 = 60 kemudian 60 + 9 = 69. Inilah yang menyebabkan perbedaan hasil

perhitungan sehingga mucul kesalahan perhitungan pada alat yang dibuat.

Masukan kalkutor maksimum adalah 15 karakter. Saat pemberian masukan

karakter yang ke-16 maka program akan berhenti melakukan proses scanning keypad.

Program scanning keypad dapat dilihat pada lampiran listing program hal 2 bagian

Subrutin scanning keypad 8 x 4.

4.3.14 Konversi Berulang Kali

Konversi berulang kali adalah pengujian alat dengan memberi masukan

kemudian mengubah data masukan ke mode yang berbeda berulang kali secara

berurutan. Sebagai contoh nilai 9H akan diubah ke mode biner menghasilkan 10012

kemudian diubah ke mode desimal menghasilkan nilai 9 dan yang terakhir diubah ke

mode BCD menghasilkan 1001BCD. Data konversi berulang kali pada tabel 4.33.
4.33. Data konversi berulang kali.
Masukan Urutan Mode Konversi
No Mode BIN DEC BCD
HEX
1 9 1001 9 1001
2 4F 100 1111 79 111 1001
3 -9 1111 1111 1111 0111 65527 ERROR!
4 -4F 1111 1111 1011 0001 65457 ERROR!
Urutan Mode Konversi
BIN BCD DEC
5 9 1001 1001 9
6 4F 100 1111 111 1001 79
7 -9 1111 1111 1111 0111 ERROR! --
8 -4F 1111 1111 1011 0001 ERROR! --
Urutan Mode Konversi
DEC BCD BIN
9 9 9 1001 1001
10 4F 79 111 1001 100 1111
11 -9 -9 1001 1001
12 -4F -79 111 1001 100 1111
Urutan Mode Konversi
DEC BIN BCD
13 9 9 1001 1001
14 4F 79 100 1111 111 1001
15 -9 -9 1111 1111 1111 0111 ERROR!
16 -4F -79 1111 1111 1011 0001 ERROR!
Urutan Mode Konversi
BCD BIN DEC
17 9 1001 1001 9
18 4F 111 1001 100 1111 79
19 -9 -1001 1001 9
20 -4F -111 1001 100 1111 79

Dari tabel 4.33 proses konversi data ke ketiga mode yang berbeda secara

berurutan untuk bilangan positif tidak ditemukan adanya kesalahan. Sedangkan

untuk bilangan negatif terdapat kesalahan saat proses konversi lebih dari satu kali.

Hal ini disebabkan data pada register penyimpan kode negatif hilang karena

pergeseran stack pointer saat kembali dari subrutin tampilan LCD.


BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pembahasan dapat ditarik beberapa kesimpulan berikut:

1. Masukan dan keluaran maksimum adalah 15 digit.

2. Pesan ERROR akan muncul di LCD apabila hasil perhitungan lebih dari 15

digit.

3. Masukan maksimum konversi mode heksadesimal ke mode biner adalah

7FFFH, masukan maksimum konversi mode heksadesimal ke mode BCD

adalah 1F3FH dan masukan maksimum konversi mode heksadesimal ke mode

desimal adalah 38D7EA4C67FFFH.

4. Proses perhitungan berdasarkan urutan penekanan operator.

5. Proses konversi bilangan negatif hanya dapat satu kali pengubahan mode

5.2 Saran

1. Proses perhitungan menggunakan prioritas operator kuadrat, akar kuadrat,

perkalian, pembagian, penambahan dan pengurangan.

2. Dalam pembuatan program dilakukan pemindahan alamat stack pointer ke

alamat yang tidak mengganggu eksekusi program.

106
DAFTAR PUSTAKA

[1] http\\www.wikipedia.com\artikel\kalkulator.html (dibuat pada 29 Desember 2006


dan diakses pada 16 Mei 2007)
[2] Blocher, Richard. Dasar Elektronika. Penerbit Andi. Yogyakarta. 2003
[3] http\\www.wikipedia.com\article\hexadecimal.html (dibuat pada 16 Maret 2007
dan diakses pada 16 Mei 2007)
[4] Brown, Stephen dan Zvonko Vranesic. Fundamental of Digital Logic with Verilog
design. McGrawhill. Singapore. 2004
[5] Hamacher, Carl dan Zvonko Vranesic dan Safwat Zaky. Organisasi Komputer
Edisi 5. Penerbit Andi Yogyakarta. 2004
[6] Malvino, Albert Paul dan Donald P. Leach. Prinsip-prinsip dan Penerapan
Digital. Penerbit Erlangga. Jakarta. 2004
[7] Morris, Robert L dan John R. Miller. Designing with TTL Integrated Circuit.
Texas Instrument Electronics. Texas.1981
[8] Rashid, Muhammad H. Power Electronic Circuit, Devices and Application.
Prentice Hall. Florida. 2004
[9] Malik, M. Ibnu. Belajar Mikrokontroler AT89S8252. Penerbit Gava Media.
Yogyakarta. 2003
[10] Putra, Agfianto Eko. Belajar Mikrokontroler AT89C51/52/55 (Teori dan
Aplikasi). Penerbit Gava Media. Yogyakarta. 2004

107
LAMPIRAN 1
RANGKAIAN KALKULATOR
BERBASIS MIKROKONTROLER
Rangkaian Kalkulator Berbasis Mikrokontroler
LAMPIRAN 2

LISTING PROGRAM
1 0000 ;================================================
2 0000 ; Program Kalkulator Berbasis Mikrokontroler
3 0000 ;================================================
5 0000 LCD_RS bit P0.6
6 0000 LCD_E bit P0.7
7 0000 Data_LCD equ P2
8 0000 ;
9 0000 Kolom equ P1
10 0000 Baris equ P3
11 0000 Baris1 bit P3.0
12 0000 Baris2 bit P3.1
13 0000 Baris3 bit P3.2
14 0000 Baris4 bit P3.3
15 0000 Baris5 bit P3.4
16 0000 Baris6 bit P3.5
17 0000 Baris7 bit P3.6
18 0000 Baris8 bit P3.7
19 0000 Kolom1 bit P1.0
20 0000 Kolom2 bit P1.1
21 0000 Kolom3 bit P1.2
22 0000 Kolom4 bit P1.3
23 0000 ;
24 0000 Kode_BIN equ #01H
25 0000 Kode_HEX equ #02H
26 0000 Kode_DEC equ #03H
27 0000 Kode_BCD equ #04H
28 0000 Data_Operator equ 2BH
29 0000 Data_Negatif equ 2FH
30 0000 Terima_atas equ 30H
31 0000 Terima_bawah equ 40H
32 0000 Key_Data equ 20H
33 0000 Data_Hasil equ 21H
35 0000 Data_1_Temp equ 50H
36 0000 Data_2_Temp equ 60H
37 0000 Data_1 equ 70H
38 0000 Data_2 equ 80H
39 0000 Hasil equ 090H
40 0000 Sisa equ 0A0H
41 0000 Jml_Byte equ #8
43 0000 org 00H
45 0000 mov sp,#08H
47 0003 ;================================================
48 0003 ; Inisilisasi LCD
49 0003 ;================================================
50 0003 Inist_LCD:
51 0003 lcall LTunda
52 0006 lcall LTunda
53 0009 mov A,#03FH ;Fuction set 8 bit
54 000B lcall Write_inst
55 000E lcall Write_inst
56 0011 lcall LTunda
57 0014 mov A,#03H ;Cursor home
58 0016 lcall Write_inst
59 0019 mov A,#0DH ;Display ON, cursor OFF, bilnk O
60 001B lcall Write_inst
61 001E mov A,#06H ;increment, no display shift
62 0020 lcall Write_inst
63 0023 mov A,#01H ;display clear
64 0025 lcall Write_inst
65 0028 mov A,#80H ;cursor pada posisi awal
66 002A lcall Write_inst
67 002D mov A,#0CH ; cursor OFF, blink OFF
68 002F lcall Write_inst
70 0032 ;================================================
71 0032 ; MAIN PROGRAM
72 0032 ;================================================
74 0032 Start:
75 0032 mov R7,#Kode_HEX
76 0034 mov R0,#Terima_atas
77 0036 mov DPTR,#Judul4 ;Tampilan awal = Mode Hex
78 0039 lcall Pindah_RAM
79 003C lcall Baris_atas
80 003F lcall LTunda
81 0042 mov R0,#Terima_bawah
82 0044 mov Data_Negatif,#0
83 0047 acall Tampilan_C

1
86 0049 Next_Data:
87 0049 mov (Key_Data+2),#Data_2_Temp ;Masukan Data 2
88 004C mov (Key_Data+6),#(Data_2_Temp+15)
89 004F mov (Key_Data+7),#Data_2
90 0052 mov Data_Operator,(Data_Operator+1)
91 0055 lcall Hapus_Karakter
92 0058 sjmp Scan
94 005A ;================================================
95 005A Hitung:
96 005A acall Cek_Mode_Hitung
98 005C mov R0,#(Data_1_Temp+15) ;Menggabungkan data satuan
99 005E mov R1,#(Data_1_Temp+14)
100 0060 acall Gabung_Data
101 0062 mov R0,#(Data_2_Temp+15)
102 0064 mov R1,#(Data_2_Temp+14)
103 0066 acall Gabung_Data
105 0068 mov R0,#(Data_1_Temp+15) ;Simpan data bentuk satuannya
106 006A mov R1,#Data_1
107 006C acall Simpan_Data
108 006E mov R0,#(Data_2_Temp+15)
109 0070 mov R1,#Data_2
110 0072 acall Simpan_Data
111 0074 ;=================================================
112 0074 acall Cek_Operator
113 0076 acall Cek_Mode_Tampilan
114 0078 mov R0,#Data_1_Temp
115 007A acall Cek_Spasi
116 007C mov R0,#Data_2_Temp
117 007E acall Cek_Spasi
118 0080 mov R0,#Data_1_Temp
119 0082 mov R1,#Terima_bawah
120 0084 acall Copy_Data
121 0086 lcall Baris_bawah
122 0089 mov A,Data_Operator
123 008B cjne A,#02H,Tidak_Sisa
124 008E lcall Tampilan_Sisa
126 0091 Tidak_Sisa:
127 0091 acall Cek_Mode_Akhir
128 0093 acall Copy_D2T_D1T
129 0095 mov A,Data_Hasil ;Cek apakah "=" ditekan ?
130 0097 cjne A,#0FFH,Next_Data
131 009A mov Data_Operator,#00H
132 009D mov (Data_Operator+1),#00H
133 00A0 mov Data_Hasil,#00H
134 00A3 sjmp Next_Data
137 00A5 ;================================================
138 00A5 ; Subrutin Scanning keypad 8 x 4
139 00A5 ;================================================
140 00A5 Scan:
141 00A5 mov 29H,#15 ;Maksimum 15 data
142 00A8 Loop_Scan:
143 00A8 ajmp Cek_Mode
144 00AA Loop_Scan_2:
145 00AA mov sp,#08H
146 00AD mov A,Key_Data
147 00AF mov R0,#(Terima_bawah+15)
148 00B1 mov R1,(Key_Data+2)
149 00B3 add A,#30H ;Ubah ke bentuk ASCII
150 00B5 mov @R0,A
151 00B6 acall Pindah_Data_Temp
152 00B8 lcall Baris_bawah
153 00BB acall Pindah_TB
154 00BD djnz 29H,Loop_Scan
155 00C0 ljmp Operator_2
157 00C3 ;================================================
158 00C3 ; Subrutin Pindah Data ke Data_Temp
159 00C3 ;================================================
160 00C3 Pindah_Data_Temp:
161 00C3 mov R0,#Terima_bawah
162 00C5 mov R3,#16
163 00C7 Loop_Data_Temp:
164 00C7 clr C
165 00C8 mov A,@R0 ;R0 = Alamat data asal
166 00C9 subb A,#30H
167 00CB jc Tidak_Kurang_30H
168 00CD Cek_Huruf: ;Cek apakah masukan Huruf ?

2
169 00CD clr C
170 00CE subb A,#0AH
171 00D0 jnc Lebih_Besar_9
172 00D2 add A,#0AH
173 00D4 Loop_Data_Temp_2:
174 00D4 mov @R1,A
175 00D5 inc R0
176 00D6 inc R1
177 00D7 djnz R3,Loop_Data_Temp
178 00D9 ret
180 00DA Tidak_Kurang_30H:
181 00DA clr C
182 00DB add A,#10H
183 00DD sjmp Cek_Huruf
185 00DF Lebih_Besar_9:
186 00DF clr C
187 00E0 add A,#03H
188 00E2 sjmp Loop_Data_Temp_2
190 00E4 ;================================================
191 00E4 ; Subrutin pindah data ke Terima_bawah
192 00E4 ;================================================
193 00E4 Pindah_TB:
194 00E4 push 01H
195 00E6 mov R3,#15
196 00E8 mov R0,#(Terima_bawah)
197 00EA mov R1,#(Terima_bawah+1)
198 00EC Loop_Pindah_TB:
199 00EC mov A,@R1
200 00ED mov @R0,A
201 00EE inc R0
202 00EF inc R1
203 00F0 djnz R3,Loop_Pindah_TB
204 00F2 pop 01H
205 00F4 ret
207 00F5 ;================================================
208 00F5 ; Tunggu tombol dilepas
209 00F5 ;================================================
210 00F5 Tunggu_tombol_dilepas:
211 00F5 jnb Baris1,$
212 00F8 jnb Baris2,$
213 00FB jnb Baris3,$
214 00FE jnb Baris4,$
215 0101 jnb Baris5,$
216 0104 jnb Baris6,$
217 0107 jnb Baris7,$
218 010A jnb Baris8,$
219 010D Reset_Keypad:
220 010D setb Kolom1
221 010F setb Kolom2
222 0111 setb Kolom3
223 0113 setb Kolom4
224 0115 ret
226 0116 ;================================================
227 0116 ; KEYPAD 8 x 4
228 0116 ;================================================
230 0116 ;================================================
231 0116 ; Subrutin MODE
232 0116 ;================================================
234 0116 Mode:
235 0116 acall Reset_Keypad
236 0118 mov R0,#(Data_2_Temp+15)
237 011A mov R1,#(Data_2_Temp+14)
238 011C acall Gabung_Data
239 011E mov R0,#(Data_2_Temp+15)
240 0120 mov R1,#Data_1
241 0122 acall Simpan_Data
243 0124 BCD:
244 0124 clr Kolom4
245 0126 jb Baris2,BIN
246 0129 acall Tunggu_tombol_dilepas
247 012B mov R7,#Kode_BCD ;Simpan kode BCD
248 012D mov (Data_Negatif-2),Data_Negatif
249 0130 acall Cek_Mode_Tampilan
250 0132 push 30H
251 0134 mov R0,#Terima_atas
252 0136 mov DPTR,#Judul2 ; Tampilkan BCD

3
253 0139 lcall Pindah_RAM
254 013C pop 30H
255 013E lcall Baris_atas
256 0141 acall Ubah_Mode
257 0143 acall Loop_Tampilan_C
258 0145 acall Cek_Mode_Akhir
259 0147 setb Kolom4
260 0149 ret
261 014A BIN:
262 014A jb Baris3,HEX
263 014D acall Tunggu_tombol_dilepas
264 014F mov R7,#Kode_BIN ;Simpan kode BIN
265 0151 mov (Data_Negatif-2),Data_Negatif
266 0154 acall Cek_Mode_Tampilan
267 0156 mov R0,#Terima_atas
268 0158 mov DPTR,#Judul3 ; Tampilkan BIN
269 015B lcall Pindah_RAM
270 015E lcall Baris_atas
271 0161 acall Ubah_Mode
272 0163 acall Loop_Tampilan_C
273 0165 acall Cek_Mode_Akhir
274 0167 setb Kolom4
275 0169 ret
276 016A HEX:
277 016A jb Baris4,DEC
278 016D acall Tunggu_tombol_dilepas
279 016F mov R7,#Kode_HEX ;Simpan kode HEX
280 0171 mov (Data_Negatif-2),Data_Negatif
281 0174 acall Cek_Mode_Tampilan
282 0176 mov R0,#Terima_atas
283 0178 mov DPTR,#Judul4 ; Tampilkan HEX
284 017B lcall Pindah_RAM
285 017E lcall Baris_atas
286 0181 acall Ubah_Mode
287 0183 acall Cek_Mode_Akhir
288 0185 lcall Hapus_Temp
289 0188 setb Kolom4
290 018A ret
291 018B DEC:
292 018B jb Baris5,BCD
293 018E acall Tunggu_tombol_dilepas
294 0190 mov R7,#Kode_DEC ;Simpan kode DEC
295 0192 mov (Data_Negatif-2),Data_Negatif
296 0195 acall Cek_Mode_Tampilan
297 0197 push 30H
298 0199 mov R0,#Terima_atas
299 019B mov DPTR,#Judul5 ; Tampilkan DEC
300 019E lcall Pindah_RAM
301 01A1 pop 30H
302 01A3 lcall Baris_atas
303 01A6 acall Ubah_Mode
304 01A8 lcall Hapus_Temp
305 01AB setb Kolom4
306 01AD ret
308 01AE Ubah_Mode:
309 01AE mov R0,#Data_1_Temp
310 01B0 acall Cek_Spasi
311 01B2 mov R0,#Data_1_Temp
312 01B4 mov R1,#Terima_bawah
313 01B6 acall Copy_Data
314 01B8 lcall Baris_bawah
315 01BB ret
318 01BC ;================================================
319 01BC ; Scanning Keypad Mode Hex
320 01BC ;================================================
321 01BC Hex_Key:
322 01BC Huruf_A: ;Huruf A (41H = 30 +11)
323 01BC acall Reset_Keypad
324 01BE clr Kolom1
325 01C0 jb Baris3,Huruf_D
326 01C3 lcall LTunda
327 01C6 acall Tunggu_tombol_dilepas
328 01C8 acall Cek_Mode_Awal
329 01CA mov Key_Data,#11H
330 01CD setb Kolom1
331 01CF ajmp Loop_Scan_2

4
332 01D1 Huruf_D: ;Huruf D (44H = 30 + 14)
333 01D1 jb Baris4,Huruf_B
334 01D4 lcall LTunda
335 01D7 acall Tunggu_tombol_dilepas
336 01D9 acall Cek_Mode_Awal
337 01DB mov Key_Data,#14H
338 01DE setb Kolom1
339 01E0 ajmp Loop_Scan_2
340 01E2 Huruf_B:
341 01E2 acall Reset_Keypad
342 01E4 clr Kolom2 ;Huruf B (42H = 30 + 12)
343 01E6 jb Baris3,Huruf_E
344 01E9 lcall LTunda
345 01EC acall Tunggu_tombol_dilepas
346 01EE acall Cek_Mode_Awal
347 01F0 mov Key_Data,#12H
348 01F3 setb Kolom2
349 01F5 ajmp Loop_Scan_2
350 01F7 Huruf_E: ;Huruf E (45H = 30 +15)
351 01F7 jb Baris4,Huruf_C
352 01FA lcall LTunda
353 01FD acall Tunggu_tombol_dilepas
354 01FF acall Cek_Mode_Awal
355 0201 mov Key_Data,#15H
356 0204 setb Kolom2
357 0206 ajmp Loop_Scan_2
358 0208 Huruf_C: ;Huruf_C (43H = 30 + 13)
359 0208 acall Reset_Keypad
360 020A clr Kolom3
361 020C jb Baris3,Huruf_F
362 020F lcall LTunda
363 0212 acall Tunggu_tombol_dilepas
364 0214 acall Cek_Mode_Awal
365 0216 mov Key_Data,#13H
366 0219 setb Kolom3
367 021B ajmp Loop_Scan_2
368 021D Huruf_F: ;Huruf F (46H = 30 + 16)
369 021D jb Baris4,Angka_7
370 0220 lcall LTunda
371 0223 acall Tunggu_tombol_dilepas
372 0225 acall Cek_Mode_Awal
373 0227 mov Key_Data,#16H
374 022A setb Kolom3
375 022C ajmp Loop_Scan_2
376 022E Dec_Key:
377 022E Angka_7: ;Angka 7 (37H = 30 + 7)
378 022E acall Reset_Keypad
379 0230 clr Kolom1
380 0232 jb Baris5,Angka_4
381 0235 lcall LTunda
382 0238 acall Tunggu_tombol_dilepas
383 023A acall Cek_Mode_Awal
384 023C mov Key_Data,#7H
385 023F setb Kolom1
386 0241 ajmp Loop_Scan_2
387 0243 Angka_4: ;Angka_4 (34H = 30 + 4)
388 0243 jb Baris6,Angka_8
389 0246 lcall LTunda
390 0249 acall Tunggu_tombol_dilepas
391 024B acall Cek_Mode_Awal
392 024D mov Key_Data,#4H
393 0250 setb Kolom1
394 0252 ajmp Loop_Scan_2
395 0254 Angka_8: ;Angka_8 (38H = 30 + 8)
396 0254 acall Reset_Keypad
397 0256 clr Kolom2
398 0258 jb Baris5,Angka_5
399 025B lcall LTunda
400 025E acall Tunggu_tombol_dilepas
401 0260 acall Cek_Mode_Awal
402 0262 mov Key_Data,#8H
403 0265 setb Kolom2
404 0267 ajmp Loop_Scan_2
405 0269 Angka_5: ;Angka_5 (35H = 30 + 5)
406 0269 jb Baris6,Angka_2
407 026C lcall LTunda

5
408 026F acall Tunggu_tombol_dilepas
409 0271 acall Cek_Mode_Awal
410 0273 mov Key_Data,#5H
411 0276 setb Kolom2
412 0278 ajmp Loop_Scan_2
413 027A Angka_2: ;Angka_2 (32H = 30 + 2)
414 027A jb Baris7,Angka_9
415 027D lcall LTunda
416 0280 acall Tunggu_tombol_dilepas
417 0282 acall Cek_Mode_Awal
418 0284 mov Key_Data,#2H
419 0287 setb Kolom2
420 0289 ajmp Loop_Scan_2
421 028B Angka_9: ;Angka_9 (39H = 30 + 9)
422 028B acall Reset_Keypad
423 028D clr Kolom3
424 028F jb Baris5,Angka_6
425 0292 lcall LTunda
426 0295 acall Tunggu_tombol_dilepas
427 0297 acall Cek_Mode_Awal
428 0299 mov Key_Data,#9H
429 029C setb Kolom3
430 029E ajmp Loop_Scan_2
431 02A0 Angka_6: ;Angka_6 (36H = 30 + 6)
432 02A0 jb Baris6,Angka_3
433 02A3 lcall LTunda
434 02A6 acall Tunggu_tombol_dilepas
435 02A8 mov Key_Data,#6H
436 02AB setb Kolom3
437 02AD ajmp Loop_Scan_2
438 02AF Angka_3: ;Angka_3 (33H = 30 + 3)
439 02AF jb Baris7,Angka_1
440 02B2 lcall LTunda
441 02B5 acall Tunggu_tombol_dilepas
442 02B7 acall Cek_Mode_Awal
443 02B9 mov Key_Data,#3H
444 02BC setb Kolom3
445 02BE ajmp Loop_Scan_2
446 02C0 Bin_Key:
447 02C0 Angka_1: ;Angka_1 (31H = 30 + 1)
448 02C0 acall Reset_Keypad
449 02C2 clr Kolom1
450 02C4 jb Baris7,Angka_0
451 02C7 lcall LTunda
452 02CA acall Tunggu_tombol_dilepas
453 02CC acall Cek_Mode_Awal
454 02CE mov Key_Data,#1H
455 02D1 setb Kolom1
456 02D3 ajmp Loop_Scan_2
457 02D5 Angka_0: ;Angka_0 (30H = 30 + 0)
458 02D5 jb Baris8,Operator
459 02D8 lcall LTunda
460 02DB acall Tunggu_tombol_dilepas
461 02DD acall Cek_Mode_Awal
462 02DF mov Key_Data,#0H
463 02E2 setb Kolom1
464 02E4 ajmp Loop_Scan_2
465 02E6 Operator:
466 02E6 Key_Mode:
467 02E6 acall Reset_Keypad
468 02E8 clr Kolom4
469 02EA jb Baris1,Key_Akar
470 02ED acall Tunggu_tombol_dilepas
471 02EF acall Cek_Mode_Awal
472 02F1 mov R0,#Terima_atas
473 02F3 mov DPTR,#Judul1 ; tampilkan MODE
474 02F6 lcall Pindah_RAM
475 02F9 lcall Baris_atas
476 02FC acall Cek_Mode_Hitung
477 02FE acall Mode
478 0300 setb Kolom4
479 0302 ajmp Next_Data
480 0304 Key_Akar:
481 0304 jb Baris2,Key_Kali
482 0307 acall Tunggu_tombol_dilepas
483 0309 mov sp,#08H

6
484 030C mov A,Data_Negatif
485 030E cjne A,#00H,Gak_Bisa_Akar
486 0311 acall Cek_Mode_Awal
487 0313 mov (Terima_atas+14),#0E8H ;Simbol Akar (E8H)
488 0316 lcall Baris_atas
489 0319 lcall Akar
490 031C cjne R7,#3H,Key_Akar_BD
491 031F mov R0,#Sisa
492 0321 mov R1,#Data_2_Temp
493 0323 lcall Copy_Data
494 0326 Key_Akar_BD:
495 0326 acall Cek_Mode_Akhir
496 0328 setb Kolom4
497 032A ajmp Next_Data
499 032C Gak_Bisa_Akar:
500 032C ljmp Sistem_Error
502 032F Key_Kali: ;Kode Kali = 1
503 032F jb Baris3,Key_Bagi
504 0332 acall Tunggu_tombol_dilepas
505 0334 acall Cek_Mode_Awal
506 0336 mov (Terima_atas+14),#078H ;Simbol Kali (78H)
507 0339 lcall Baris_atas
508 033C mov (Data_Operator+1),#1H ;Simpan Kode Kali
509 033F mov A,Data_Operator
510 0341 cjne A,#00H,Proses
511 0344 acall Copy_D2T_D1T
512 0346 mov (Data_Negatif-1),Data_Negatif
513 0349 mov Data_Negatif,#00H
514 034C setb Kolom4
515 034E ajmp Next_Data
516 0350 Key_Bagi: ;Kode Bagi = 2
517 0350 jb Baris4,Key_Tambah
518 0353 acall Tunggu_tombol_dilepas
519 0355 acall Cek_Mode_Awal
520 0357 mov (Terima_atas+14),#0FDH ;Simbol Bagi (FDH)
521 035A lcall Baris_atas
522 035D mov (Data_Operator+1),#2H ;Simpan Kode Bagi
523 0360 mov A,Data_Operator
524 0362 cjne A,#00H,Proses
525 0365 acall Copy_D2T_D1T
526 0367 mov (Data_Negatif-1),Data_Negatif
527 036A mov Data_Negatif,#00H
528 036D setb Kolom4
529 036F ajmp Next_Data
530 0371 Key_Tambah: ;Kode Tambah = 3
531 0371 jb Baris5,Key_Kurang
532 0374 acall Tunggu_tombol_dilepas
533 0376 acall Cek_Mode_Awal
534 0378 mov (Terima_atas+14),#02BH ;Simbol Tambah (2BH)
535 037B lcall Baris_atas
536 037E mov (Data_Operator+1),#3H ;Simpan Kode Tambah
537 0381 mov A,Data_Operator
538 0383 cjne A,#00H,Proses
539 0386 acall Copy_D2T_D1T
540 0388 mov (Data_Negatif-1),Data_Negatif
541 038B mov Data_Negatif,#00H
542 038E setb Kolom4
543 0390 ajmp Next_Data
544 0392 Key_Kurang: ;Kode Kurang = 4
545 0392 jb Baris6,Key_DEL
546 0395 acall Tunggu_tombol_dilepas
547 0397 acall Cek_Mode_Awal
548 0399 mov (Terima_atas+14),#0B0H ;Simbol Kurang (B0H)
549 039C lcall Baris_atas
550 039F mov (Data_Operator+1),#4H ;Simpan Kode Kurang
551 03A2 mov A,Data_Operator
552 03A4 cjne A,#00H,Proses
553 03A7 acall Copy_D2T_D1T
554 03A9 mov (Data_Negatif-1),Data_Negatif
555 03AC mov Data_Negatif,#00H
556 03AF setb Kolom4
557 03B1 ajmp Next_Data
559 03B3 Proses:
560 03B3 ajmp Hitung
562 03B5 Key_DEL:
563 03B5 jb Baris7,Key_Hasil

7
564 03B8 lcall LTunda
565 03BB acall Tunggu_tombol_dilepas
566 03BD acall Cek_Mode_Awal
567 03BF acall Tampilan_DEL
568 03C1 setb Kolom4
569 03C3 ajmp Cek_Mode
570 03C5 Key_Hasil:
571 03C5 jb Baris8,Key_C
572 03C8 acall Tunggu_tombol_dilepas
573 03CA acall Cek_Mode_Awal
574 03CC mov (Terima_atas+14),#03DH ;Simbol "=" (3DH)
575 03CF lcall Baris_atas
576 03D2 mov Data_Hasil,#0FFH
577 03D5 setb Kolom4
578 03D7 mov A,Data_Operator
579 03D9 cjne A,#00H,Calculate
580 03DC ajmp Next_Data
581 03DE Key_C:
582 03DE acall Reset_Keypad
583 03E0 clr Kolom1
584 03E2 jb Baris1,Key_CE
585 03E5 lcall LTunda
586 03E8 acall Tunggu_tombol_dilepas
587 03EA acall Tampilan_C
588 03EC setb Kolom1
589 03EE ajmp Next_Data
590 03F0 Key_CE:
591 03F0 jb Baris2,Key_Kuadrat
592 03F3 lcall LTunda
593 03F6 acall Tunggu_tombol_dilepas
594 03F8 acall Tampilan_CE
595 03FA setb Kolom1
596 03FC ajmp Next_Data
597 03FE Key_Kuadrat:
598 03FE acall Reset_Keypad
599 0400 clr Kolom3
600 0402 jb Baris2,Key_Tanda
601 0405 acall Tunggu_tombol_dilepas
602 0407 mov sp,#08H
603 040A acall Cek_Mode_Awal
604 040C lcall Kuadrat
605 040F cjne R7,#3H,Key_Kuadrat_BD
606 0412 mov R0,#Sisa
607 0414 mov R1,#Data_2_Temp
608 0416 lcall Copy_Data
609 0419 Key_Kuadrat_BD:
610 0419 acall Cek_Mode_Akhir
611 041B setb Kolom3
612 041D ajmp Next_Data
613 041F Key_Tanda:
614 041F jb Baris8,Loop_Operator
615 0422 lcall LTunda
616 0425 acall Tunggu_tombol_dilepas
617 0427 mov sp,#08H
618 042A mov A,Data_Negatif
619 042C cpl A
620 042D mov Data_Negatif,A
621 042F acall Cek_Mode_Awal
622 0431 acall Bilangan_Negatif
623 0433 setb Kolom3
624 0435 ajmp Next_Data
626 0437 Loop_Operator:
627 0437 ajmp Cek_Mode
629 0439 Calculate:
630 0439 ajmp Hitung
634 043B ;================================================
635 043B ; Subrutin Bilangan Negatif
636 043B ;================================================
637 043B Bilangan_Negatif:
638 043B clr C
639 043C mov A,#02H
640 043E subb A,R7
641 043F jc Bil_Dec ;Cek apakah Mode Dec atau BCD
643 0441 push 2EH
644 0443 mov R0,#Data_1_Temp
645 0445 mov R1,#0B0H

8
646 0447 acall Copy_Data
647 0449 acall Cek_Mode_Hitung
648 044B mov R0,#(Data_2_Temp+15) ;Menggabungkan data satuan
649 044D mov R1,#(Data_2_Temp+14)
650 044F acall Gabung_Data
651 0451 mov R0,#(Data_2_Temp+15)
652 0453 mov R1,#Data_1
653 0455 acall Simpan_Data
655 0457 mov (Data_Negatif-2),(Data_Negatif)
656 045A acall Cek_Mode_Tampilan
657 045C mov R0,#Data_1_Temp
658 045E acall Cek_Spasi
659 0460 mov R0,#Data_1_Temp
660 0462 mov R1,#Terima_bawah
661 0464 acall Copy_Data
662 0466 lcall Baris_bawah
663 0469 acall Cek_Mode_Akhir
664 046B mov R0,#0B0H
665 046D mov R1,#Data_1_Temp
666 046F acall Copy_Data
667 0471 mov R0,#0B0H
668 0473 acall Hapus_Nilai
669 0475 pop 2EH
670 0477 ret
672 0478 Bil_Dec:
673 0478 mov A,Data_Negatif
674 047A cjne A,#0FFH,Hapus_Tanda ;Cek sudah ada tanda negatif?
675 047D mov Terima_atas,#0B0H
676 0480 lcall Baris_atas
677 0483 ret
679 0484 Hapus_Tanda:
680 0484 mov Terima_atas,#20H
681 0487 lcall Baris_atas
682 048A ret
684 048B ;================================================
685 048B ; Subrutin Cek Mode Keypad
686 048B ;================================================
687 048B Cek_Mode:
688 048B cjne R7,#01H,Cek_Mode_Hex
689 048E ajmp Bin_Key
690 0490 Cek_Mode_Hex:
691 0490 cjne R7,#02H,Cek_Mode_Dec
692 0493 ajmp Hex_Key
693 0495 Cek_Mode_Dec:
694 0495 cjne R7,#03H,Cek_Mode_BCD
695 0498 ajmp Dec_Key
696 049A Cek_Mode_BCD:
697 049A cjne R7,#04H,Cek_Mode
698 049D ajmp Bin_Key
700 049F ;================================================
701 049F ; Subrutin Cek Mode Awal
702 049F ;================================================
703 049F Cek_Mode_Awal:
704 049F cjne R7,#01H,Cek_Mode_Hex_Awal
705 04A2 mov R0,#Terima_atas
706 04A4 mov DPTR,#Judul3
707 04A7 lcall Pindah_RAM
708 04AA lcall Baris_atas
709 04AD ret
710 04AE Cek_Mode_Hex_Awal:
711 04AE cjne R7,#02H,Cek_Mode_Dec_Awal
712 04B1 mov R0,#Terima_atas
713 04B3 mov DPTR,#Judul4
714 04B6 lcall Pindah_RAM
715 04B9 lcall Baris_atas
716 04BC ret
717 04BD Cek_Mode_Dec_Awal:
718 04BD cjne R7,#03H,Cek_Mode_BCD_Awal
719 04C0 mov R0,#Terima_atas
720 04C2 mov DPTR,#Judul5
721 04C5 lcall Pindah_RAM
722 04C8 lcall Baris_atas
723 04CB ret
724 04CC Cek_Mode_BCD_Awal:
725 04CC cjne R7,#04H,Cek_Mode_Awal
726 04CF mov R0,#Terima_atas

9
727 04D1 mov DPTR,#Judul2
728 04D4 lcall Pindah_RAM
729 04D7 lcall Baris_atas
730 04DA ret
732 04DB ;================================================
733 04DB ; Subrutin Cek Mode Akhir
734 04DB ;================================================
735 04DB Cek_Mode_Akhir:
736 04DB cjne R7,#01H,Cek_Mode_Hex_Akhir
737 04DE mov R0,#(Data_Negatif-2)
738 04E0 cjne @R0,#0FFH,BIN_Akhir
739 04E3 mov R0,#Data_1
740 04E5 acall Negatifkan
742 04E7 mov R0,#(Data_1_Temp)
743 04E9 acall Hapus_Nilai
744 04EB mov R0,#Data_1
745 04ED mov R1,#(Data_1_Temp+15)
746 04EF acall Pisah_Data
747 04F1 mov R0,#(Data_1_Temp+15)
748 04F3 mov R1,#0CFH
749 04F5 lcall Tampilan_Bin
751 04F8 BIN_Akhir:
752 04F8 mov R0,#0C0H
753 04FA mov R1,#Data_2_Temp
754 04FC mov R2,#16
755 04FE Loop_BIN:
756 04FE clr C
757 04FF mov A,@R0
758 0500 subb A,#30H
759 0502 mov @R1,A
760 0503 inc R0
761 0504 inc R1
762 0505 djnz R2,Loop_BIN
763 0507 mov R0,#0C0H
764 0509 acall Hapus_Nilai
765 050B mov R0,#Data_1_Temp
766 050D acall Hapus_Nilai
767 050F lcall Hapus_Temp
768 0512 mov (Data_Negatif),(Data_Negatif-2)
769 0515 mov (Data_Negatif-1),#00H
770 0518 mov (Data_Negatif-2),#00H
771 051B ret
772 051C Cek_Mode_Hex_Akhir:
773 051C cjne R7,#02H,Cek_Mode_Dec_Akhir
774 051F mov R0,#Data_1_Temp
775 0521 acall Hapus_Nilai
776 0523 mov R0,#Data_2_Temp
777 0525 acall Hapus_Nilai
778 0527 mov R0,#(Data_Negatif-2)
779 0529 cjne @R0,#0FFH,Cek_Mode_Hex_Akhir_2
780 052C mov R0,#Data_1
781 052E acall Negatifkan
782 0530 Cek_Mode_Hex_Akhir_2:
783 0530 mov R0,#Data_1
784 0532 mov R1,#(Data_2_Temp+15)
785 0534 acall Pisah_Data
786 0536 lcall Hapus_Temp
787 0539 mov (Data_Negatif),(Data_Negatif-2)
788 053C mov (Data_Negatif-1),#00H
789 053F mov (Data_Negatif-2),#00H
790 0542 ret
791 0543 Cek_Mode_Dec_Akhir:
792 0543 cjne R7,#03H,Cek_Mode_BCD_Akhir
793 0546 mov R0,#Data_1_Temp
794 0548 acall Hapus_Nilai
795 054A lcall Hapus_Temp
796 054D ret
797 054E Cek_Mode_BCD_Akhir:
798 054E cjne R7,#04H,Cek_Mode_Akhir
799 0551 acall BIN_Akhir
800 0553 ret
803 0554 ;================================================
804 0554 ; Subrutin Cek Mode Hitung
805 0554 ;================================================
806 0554 Cek_Mode_Hitung:
807 0554 cjne R7,#01H,Cek_Mode_Hex_Hitung

10
808 0557 mov Key_Data,#(Data_1_Temp+15)
809 055A lcall Konv_Bin_Hex
810 055D mov Key_Data,#(Data_2_Temp+15)
811 0560 lcall Konv_Bin_Hex
812 0563 ret
813 0564 Cek_Mode_Hex_Hitung:
814 0564 cjne R7,#02H,Cek_Mode_Dec_Hitung
815 0567 ret
816 0568 Cek_Mode_Dec_Hitung:
817 0568 cjne R7,#03H,Cek_Mode_BCD_Hitung
818 056B mov R0,#Terima_atas
819 056D acall Hapus_Nilai
820 056F mov Terima_atas,(Data_1_Temp+15)
821 0572 mov (Key_Data+4),#(Data_1_Temp+14)
822 0575 lcall Konv_Dec_Hex
823 0578 mov R0,#Terima_atas
824 057A acall Hapus_Nilai
825 057C mov Terima_atas,(Data_2_Temp+15)
826 057F mov (Key_Data+4),#(Data_2_Temp+14)
827 0582 lcall Konv_Dec_Hex
828 0585 ret
829 0586 Cek_Mode_BCD_Hitung:
830 0586 cjne R7,#04H,Cek_Mode_Hitung
831 0589 mov Key_Data,#(Data_1_Temp+15)
832 058C lcall Konv_BCD_Hex
833 058F mov R0,#Terima_atas
834 0591 acall Hapus_Nilai
835 0593 mov Terima_atas,(Data_1_Temp+15)
836 0596 mov (Key_Data+4),#(Data_1_Temp+14)
837 0599 lcall Konv_Dec_Hex
839 059C mov Key_Data,#(Data_2_Temp+15)
840 059F lcall Konv_BCD_Hex
841 05A2 mov R0,#Terima_atas
842 05A4 acall Hapus_Nilai
843 05A6 mov Terima_atas,(Data_2_Temp+15)
844 05A9 mov (Key_Data+4),#(Data_2_Temp+14)
845 05AC lcall Konv_Dec_Hex
846 05AF ret
848 05B0 ;================================================
849 05B0 ; Subrutin Cek Mode Tampilan
850 05B0 ;================================================
851 05B0 Cek_Mode_Tampilan: ;Data diletakkan di Data_1
852 05B0 mov R0,#Data_1_Temp
853 05B2 acall Hapus_Nilai
854 05B4 mov R0,#Data_2_Temp
855 05B6 acall Hapus_Nilai
856 05B8 lcall Hapus_Karakter
858 05BB ljmp Cek_Mode_Max
859 05BE mov R0,#Data_1_Temp
860 05C0 acall Hapus_Nilai
861 05C2 mov R0,#Data_2_Temp
862 05C4 acall Hapus_Nilai
864 05C6 Belum_Max:
865 05C6 cjne R7,#01H,Cek_Mode_Hex_Tampilan
866 05C9 mov R0,#(Data_Negatif-2)
867 05CB cjne @R0,#0FFH,Cek_Mode_Bin_Tampilan_2
868 05CE mov R0,#Data_1
869 05D0 acall Negatifkan
870 05D2 Cek_Mode_Bin_Tampilan_2:
871 05D2 mov R0,#Data_1
872 05D4 mov R1,#(Data_1_Temp+15)
873 05D6 acall Pisah_Data
874 05D8 mov R0,#(Data_1_Temp+15)
875 05DA mov R1,#0CFH
876 05DC lcall Tampilan_Bin
877 05DF mov R0,#0C0H
878 05E1 mov R1,#Data_1_Temp
879 05E3 acall Copy_Data
881 05E5 mov A,Data_Operator
882 05E7 cjne A,#02H,Tmpl_Bin_End
883 05EA mov R0,#Sisa
884 05EC mov R1,#(Data_2_Temp+15)
885 05EE acall Pisah_Data
886 05F0 mov R0,#(Data_2_Temp+15)
887 05F2 mov R1,#0DFH
888 05F4 lcall Tampilan_Bin

11
889 05F7 mov R0,#0D0H
890 05F9 mov R1,#Data_2_Temp
891 05FB acall Copy_Data
893 05FD Tmpl_Bin_End:
894 05FD ret
896 05FE Cek_Mode_Hex_Tampilan:
897 05FE cjne R7,#02H,Cek_Mode_Dec_Tampilan
898 0601 mov R0,#(Data_Negatif-2)
899 0603 cjne @R0,#0FFH,Cek_Mode_Hex_Tampilan_2
900 0606 mov R0,#Data_1
901 0608 acall Negatifkan
902 060A Cek_Mode_Hex_Tampilan_2:
903 060A acall Tampilan_Hex
904 060C ret
906 060D Cek_Mode_Dec_Tampilan:
907 060D cjne R7,#03H,Cek_Mode_BCD_Tampilan
908 0610 acall Tampilan_Dec
909 0612 mov R0,#(Data_Negatif-2)
910 0614 cjne @R0,#0FFH,Cek_Mode_Dec_Tampilan_2
911 0617 push 3EH
912 0619 push 3FH
913 061B acall Cek_Mode_Dec_Awal
914 061D pop 3FH
915 061F pop 3EH
916 0621 mov Terima_atas,#0B0H
917 0624 lcall Baris_atas
918 0627 mov (Data_Negatif),(Data_Negatif-2)
919 062A mov (Data_Negatif-1),#00H
920 062D mov (Data_Negatif-2),#00H
921 0630 Cek_Mode_Dec_Tampilan_2:
922 0630 ret
924 0631 Cek_Mode_BCD_Tampilan:
925 0631 cjne R7,#04H,Ulang_Cek_Mode_Tampilan
926 0634 lcall Tampilan_BCD
927 0637 mov R0,#0C0H
928 0639 mov R1,#Data_1_Temp
929 063B acall Copy_Data
930 063D mov R0,#(Data_Negatif-2)
931 063F cjne @R0,#0FFH,Cek_Mode_BCD_Tampilan_2
932 0642 push 3EH
933 0644 push 3FH
934 0646 acall Cek_Mode_BCD_Awal
935 0648 pop 3FH
936 064A pop 3EH
937 064C mov Terima_atas,#0B0H
938 064F lcall Baris_atas
939 0652 mov (Data_Negatif),(Data_Negatif-2)
940 0655 mov (Data_Negatif-1),#00H
941 0658 mov (Data_Negatif-2),#00H
942 065B Cek_Mode_BCD_Tampilan_2:
943 065B ret
945 065C Ulang_Cek_Mode_Tampilan:
946 065C ajmp Cek_Mode_Tampilan
948 065E ;================================================
949 065E ; Subrutin Cek Operator
950 065E ;================================================
951 065E Cek_Operator:
952 065E mov A,Data_Operator
953 0660 cjne A,#01H,Cek_Operator_Bagi
954 0663 lcall Perkalian
955 0666 acall Copy_Hasil_Data1
956 0668 acall Operasi_Bil_Dec_3
957 066A ret
958 066B Cek_Operator_Bagi:
959 066B cjne A,#02H,Cek_Operator_Tambah
960 066E mov R0,#Data_2
961 0670 mov R2,#Jml_Byte
962 0672 Cek_Operator_Bagi_Nol:
963 0672 cjne @R0,#00H,Bukan_Nol
964 0675 inc R0
965 0676 djnz R2,Cek_Operator_Bagi_Nol
966 0678 ljmp Sistem_Error
967 067B Bukan_Nol:
968 067B lcall Pembagian
969 067E clr C
970 067F mov A,#02H

12
971 0681 subb A,R7
972 0682 jnc Cek_Operator_Bagi_2 ;Cek apakah Mode Dec atau BCD
973 0684 mov R0,#Sisa
974 0686 mov R1,#(Terima_atas+15)
975 0688 mov R2,#2
976 068A Bagi_Dec:
977 068A mov A,@R0
978 068B mov @R1,A
979 068C inc R0
980 068D dec R1
981 068E djnz R2,Bagi_Dec
982 0690 Cek_Operator_Bagi_2:
983 0690 acall Copy_Hasil_Data1
984 0692 acall Copy_Sisa_Data2
985 0694 acall Operasi_Bil_Dec_3
986 0696 ret
987 0697 Cek_Operator_Tambah:
988 0697 sjmp Operasi_Bil_Dec ;Cek apakah Mode Dec atau BCD
989 0699 Cek_Operator_Tambah_2:
990 0699 mov A,Data_Operator
991 069B mov R0,#Data_1
992 069D mov R1,#Data_2
993 069F cjne A,#03H,Cek_Operator_Kurang
994 06A2 lcall Penambahan
995 06A5 mov R0,#(Data_1+7)
996 06A7 cjne @R0,#0FFH,Cek_Operator_Tambah_3
997 06AA mov R0,#Data_1
998 06AC acall Negatifkan
999 06AE mov (Data_Negatif-2),#0FFH
1000 06B1 Cek_Operator_Tambah_3:
1001 06B1 ret
1002 06B2 Cek_Operator_Kurang:
1003 06B2 mov R0,#Data_1
1004 06B4 mov R1,#Data_2
1005 06B6 cjne A,#04H,Cek_Operator
1006 06B9 lcall Pengurangan
1007 06BC mov R0,#(Data_1+7)
1008 06BE cjne @R0,#0FFH,Cek_Operator_Kurang_2
1009 06C1 mov R0,#Data_1
1010 06C3 acall Negatifkan
1011 06C5 mov (Data_Negatif-2),#0FFH
1012 06C8 Cek_Operator_Kurang_2:
1013 06C8 ret
1015 06C9 Operasi_Bil_Dec:
1016 06C9 mov A,(Data_Negatif-1)
1017 06CB cjne A,#0FFH,Operasi_Bil_Dec_2
1018 06CE mov R0,#Data_1
1019 06D0 acall Negatifkan
1020 06D2 Operasi_Bil_Dec_2:
1021 06D2 mov A,(Data_Negatif)
1022 06D4 cjne A,#0FFH,Cek_Operator_Tambah_2
1023 06D7 mov R0,#Data_2
1024 06D9 acall Negatifkan
1025 06DB sjmp Cek_Operator_Tambah_2
1027 06DD Operasi_Bil_Dec_3:
1028 06DD mov A,Data_Negatif
1029 06DF xrl A,(Data_Negatif-1)
1030 06E1 mov (Data_Negatif-2),A
1031 06E3 ret
1033 06E4 Negatifkan:
1034 06E4 push 00H
1035 06E6 mov R2,#8
1036 06E8 Loop_Negatifkan:
1037 06E8 mov A,@R0
1038 06E9 cpl A
1039 06EA mov @R0,A
1040 06EB inc R0
1041 06EC djnz R2,Loop_Negatifkan
1042 06EE pop 00H
1043 06F0 mov A,#1H
1044 06F2 add A,@R0
1045 06F3 mov @R0,A
1046 06F4 ret
1048 06F5 ;================================================
1049 06F5 ; Subrutin Cek Karakter Spasi
1050 06F5 ;================================================

13
1051 06F5 Cek_Spasi:
1052 06F5 mov R2,#15
1053 06F7 Loop_Cek_Spasi:
1054 06F7 cjne @R0,#30H,Bukan_Spasi
1055 06FA mov @R0,#20H
1056 06FC inc R0
1057 06FD djnz R2,Loop_Cek_Spasi
1058 06FF ret
1060 0700 Bukan_Spasi:
1061 0700 ret
1063 0701 ;================================================
1064 0701 ; Subrutin Gabung Data
1065 0701 ;================================================
1066 0701 Gabung_Data:
1067 0701 mov R3,#8
1068 0703 Loop_Gabung_Data:
1069 0703 clr A
1070 0704 xch A,@R1
1071 0705 swap A
1072 0706 add A,@R0
1073 0707 mov @R0,A
1074 0708 dec R0
1075 0709 dec R0
1076 070A dec R1
1077 070B dec R1
1078 070C djnz R3,Loop_Gabung_Data
1079 070E ret
1081 070F ;================================================
1082 070F ; Subrutin Simpan Data
1083 070F ;================================================
1084 070F Simpan_Data:
1085 070F mov R3,#8
1086 0711 Loop_Simpan_Data:
1087 0711 mov A,@R0
1088 0712 mov @R1,A
1089 0713 dec R0
1090 0714 dec R0
1091 0715 inc R1
1092 0716 djnz R3,Loop_Simpan_Data
1093 0718 ret
1095 0719 ;================================================
1096 0719 ; Subrutin Hapus nilai
1097 0719 ;================================================
1098 0719 Hapus_Nilai:
1099 0719 mov R2,#16 ;Ada 16 data
1100 071B Loop_Hapus_Nilai:
1101 071B mov @R0,#0 ;Alamat yang ingin dihapus
1102 071D inc R0
1103 071E djnz R2,Loop_Hapus_Nilai
1104 0720 ret
1106 0721 ;================================================
1107 0721 ; Subrutin Pisah Data
1108 0721 ;================================================
1109 0721 Pisah_Data:
1110 0721 mov R2,#8 ;Ada 8 byte
1111 0723 Loop_Pisah_Data:
1112 0723 mov A,@R0 ;R0 = Alamat asal data
1113 0724 xchd A,@R1 ;R1 = Alamat tujuan data
1114 0725 swap A
1115 0726 dec R1
1116 0727 inc R0
1117 0728 mov @R1,A
1118 0729 dec R1
1119 072A djnz R2,Loop_Pisah_Data
1120 072C ret
1122 072D ;================================================
1123 072D ; Subrutin Copy Hasil Ke Data_1
1124 072D ;================================================
1125 072D Copy_Hasil_Data1:
1126 072D mov R0,#Hasil
1127 072F mov R1,#Data_1
1128 0731 acall Copy_Data
1129 0733 ret
1131 0734 ;================================================
1132 0734 ; Subrutin Copy Sisa Ke Data_2
1133 0734 ;================================================

14
1134 0734 Copy_Sisa_Data2:
1135 0734 mov R0,#Sisa
1136 0736 mov R1,#Data_2
1137 0738 acall Copy_Data
1138 073A ret
1140 073B ;================================================
1141 073B ; Subrutin Copy Sisa Ke Data_2
1142 073B ;================================================
1143 073B Copy_D2T_D1T:
1144 073B mov R0,#Data_2_Temp
1145 073D mov R1,#Data_1_Temp
1146 073F acall Copy_Data
1147 0741 ret
1149 0742 ;================================================
1150 0742 ; Subrutin Copy Data
1151 0742 ;================================================
1152 0742 Copy_Data:
1153 0742 mov R3,#15 ;Ada 15 data
1154 0744 Loop_Copy_Data:
1155 0744 mov A,@R0 ;R0 = Alamat asal data
1156 0745 mov @R1,A ;R1 = Alamat tujuan data
1157 0746 inc R0
1158 0747 inc R1
1159 0748 djnz R3,Loop_Copy_Data
1160 074A ret
1162 074B ;================================================
1163 074B ; Subrutin Tampilan Tombol C
1164 074B ;================================================
1165 074B Tampilan_C:
1166 074B mov R0,#Terima_bawah
1167 074D mov DPTR,#Judul6
1168 0750 lcall Pindah_RAM
1169 0753 lcall Baris_bawah
1170 0756 acall Cek_Mode_Awal
1171 0758 Loop_Tampilan_C:
1172 0758 mov R0,#Data_1_Temp
1173 075A acall Hapus_Nilai
1174 075C mov R0,#Data_2_Temp
1175 075E acall Hapus_Nilai
1176 0760 mov R0,#Data_1
1177 0762 acall Hapus_Nilai
1178 0764 mov R0,#Data_2
1179 0766 acall Hapus_Nilai
1180 0768 mov R0,#Hasil
1181 076A acall Hapus_Nilai
1182 076C mov R0,#Sisa
1183 076E acall Hapus_Nilai
1184 0770 mov Data_Operator,#00H
1185 0773 mov (Data_Operator+1),#00H
1186 0776 mov Data_Negatif,#00H
1187 0779 mov (Data_Negatif-1),#00H
1188 077C mov (Data_Negatif-2),#00H
1189 077F mov Data_Hasil,#00H
1190 0782 mov R0,#0D0H
1191 0784 acall Hapus_Nilai
1192 0786 ret
1194 0787 ;================================================
1195 0787 ; Subrutin Tampilan Tombol CE
1196 0787 ;================================================
1197 0787 Tampilan_CE:
1198 0787 mov R0,#Terima_bawah
1199 0789 mov DPTR,#Judul6 ;Tampikan ' 0'
1200 078C lcall Pindah_RAM
1201 078F lcall Baris_bawah
1202 0792 acall Cek_Mode_Awal
1203 0794 Loop_Tampilan_CE:
1204 0794 mov R0,#Data_2_Temp
1205 0796 acall Hapus_Nilai
1206 0798 mov R0,#Data_1
1207 079A acall Hapus_Nilai
1208 079C mov R0,#Data_2
1209 079E acall Hapus_Nilai
1210 07A0 mov R0,#Hasil
1211 07A2 acall Hapus_Nilai
1212 07A4 mov R0,#Sisa
1213 07A6 acall Hapus_Nilai

15
1214 07A8 clr Data_Negatif
1215 07AA ret
1217 07AB ;================================================
1218 07AB ; Subrutin Tampilan Tombol DEL
1219 07AB ;================================================
1220 07AB Tampilan_DEL:
1221 07AB mov R0,#(Terima_bawah+13)
1222 07AD mov R1,#(Terima_bawah+15)
1223 07AF mov R2,#13
1224 07B1 Loop_Tampilan_DEL:
1225 07B1 mov A,@R0
1226 07B2 mov @R1,A
1227 07B3 dec R0
1228 07B4 dec R1
1229 07B5 djnz R2,Loop_Tampilan_DEL
1230 07B7 lcall Baris_bawah
1231 07BA mov R1,(Key_Data+2)
1232 07BC acall Pindah_Data_Temp
1233 07BE acall Pindah_TB
1234 07C0 ret
1236 07C1 ;================================================
1237 07C1 ; Subrutin Tampilan Hex
1238 07C1 ;================================================
1239 07C1 Tampilan_Hex:
1240 07C1 mov R0,#Data_1
1241 07C3 mov R1,#(Data_1_Temp+15)
1242 07C5 acall Pisah_Data
1243 07C7 mov R0,#(Data_1_Temp+15)
1244 07C9 mov R2,#16
1245 07CB mov R3,#2
1246 07CD Loop_Tampilan_Hex:
1247 07CD clr C
1248 07CE mov A,@R0
1249 07CF subb A,#0AH
1250 07D1 jnc Nilai_Huruf ;Cek apakah huruf ?
1251 07D3 add A,#03AH
1252 07D5 mov @R0,A
1253 07D6 dec R0
1254 07D7 clr C
1255 07D8 djnz R2,Loop_Tampilan_Hex
1256 07DA djnz R3,Tampilan_Hex_2
1257 07DC ret
1259 07DD Nilai_Huruf:
1260 07DD clr C
1261 07DE add A,#41H
1262 07E0 mov @R0,A
1263 07E1 dec R0
1264 07E2 djnz R2,Loop_Tampilan_Hex
1265 07E4 djnz R3,Tampilan_Hex_2
1266 07E6 ret
1268 07E7 Tampilan_Hex_2:
1269 07E7 mov R0,#Sisa
1270 07E9 mov R1,#(Data_2_Temp+15)
1271 07EB acall Pisah_Data
1272 07ED mov R0,#(Data_2_Temp+15)
1273 07EF mov R2,#16
1274 07F1 sjmp Loop_Tampilan_Hex
1276 07F3 ;================================================
1277 07F3 ; Subrutin Tampilan Dec
1278 07F3 ;================================================
1279 07F3 Tampilan_Dec:
1280 07F3 lcall Konv_Hex_Dec
1281 07F6 mov R0,#Data_1_Temp
1282 07F8 mov R1,#Data_2_Temp
1283 07FA lcall Copy_Data
1284 07FD Tampilan_Dec_2:
1285 07FD mov R0,#(Data_1_Temp+15)
1286 07FF mov R3,#16
1287 0801 Loop_Tampilan_Dec:
1288 0801 clr A
1289 0802 mov A,#30H
1290 0804 add A,@R0
1291 0805 mov @R0,A
1292 0806 dec R0
1293 0807 djnz R3,Loop_Tampilan_Dec
1294 0809 ret

16
1296 080A ;================================================
1297 080A ; Subrutin Tampilan BCD
1298 080A ;================================================
1299 080A Tampilan_BCD:
1300 080A lcall Konv_Hex_Dec
1301 080D mov R0,#(Data_1_Temp+15)
1302 080F mov R1,#0CFH
1303 0811 acall Loop_Tampilan_Bin
1304 0813 ret
1306 0814 ;================================================
1307 0814 ; Subrutin Tampilan Bin
1308 0814 ;================================================
1309 0814 Tampilan_Bin:
1311 0814 Loop_Tampilan_Bin:
1313 0814 mov R2,#4
1314 0816 Tampilan_Bin0: ;Bin 0 = 0000
1315 0816 cjne @R0,#0,Tampilan_Bin1
1316 0819 mov DPTR,#Bin0
1317 081C lcall LCD_Bin
1318 081F dec R0
1319 0820 djnz R2,Tampilan_Bin0
1320 0822 ret
1321 0823 Tampilan_Bin1: ;Bin 1 = 0001
1322 0823 cjne @R0,#1,Tampilan_Bin2
1323 0826 mov DPTR,#Bin1
1324 0829 lcall LCD_Bin
1325 082C dec R0
1326 082D djnz R2,Tampilan_Bin0
1327 082F ret
1328 0830 Tampilan_Bin2: ;Bin 2 = 0010
1329 0830 cjne @R0,#2,Tampilan_Bin3
1330 0833 mov DPTR,#Bin2
1331 0836 lcall LCD_Bin
1332 0839 dec R0
1333 083A djnz R2,Tampilan_Bin0
1334 083C ret
1335 083D Tampilan_Bin3: ;Bin 3 = 0011
1336 083D cjne @R0,#3,Tampilan_Bin4
1337 0840 mov DPTR,#Bin3
1338 0843 lcall LCD_Bin
1339 0846 dec R0
1340 0847 djnz R2,Tampilan_Bin0
1341 0849 ret
1342 084A Tampilan_Bin4: ;Bin 4 = 0100
1343 084A cjne @R0,#4,Tampilan_Bin5
1344 084D mov DPTR,#Bin4
1345 0850 lcall LCD_Bin
1346 0853 dec R0
1347 0854 djnz R2,Tampilan_Bin0
1348 0856 ret
1349 0857 Tampilan_Bin5: ;Bin 5 = 0101
1350 0857 cjne @R0,#5,Tampilan_Bin6
1351 085A mov DPTR,#Bin5
1352 085D lcall LCD_Bin
1353 0860 dec R0
1354 0861 djnz R2,Tampilan_Bin0
1355 0863 ret
1356 0864 Tampilan_Bin6: ;Bin 6 = 0110
1357 0864 cjne @R0,#6,Tampilan_Bin7
1358 0867 mov DPTR,#Bin6
1359 086A lcall LCD_Bin
1360 086D dec R0
1361 086E djnz R2,Tampilan_Bin0
1362 0870 ret
1363 0871 Tampilan_Bin7: ;Bin 7 = 0111
1364 0871 cjne @R0,#7,Tampilan_Bin8
1365 0874 mov DPTR,#Bin7
1366 0877 lcall LCD_Bin
1367 087A dec R0
1368 087B djnz R2,Tampilan_Bin0
1369 087D ret
1370 087E Tampilan_Bin8: ;Bin 8 = 1000
1371 087E cjne @R0,#8,Tampilan_Bin9
1372 0881 mov DPTR,#Bin8
1373 0884 lcall LCD_Bin
1374 0887 dec R0

17
1375 0888 djnz R2,Tampilan_Bin0
1376 088A ret
1377 088B Tampilan_Bin9: ;Bin 9 = 1001
1378 088B cjne @R0,#9,Tampilan_BinA
1379 088E mov DPTR,#Bin9
1380 0891 lcall LCD_Bin
1381 0894 dec R0
1382 0895 djnz R2,Ulang_Tampilan_Bin
1383 0897 ret
1384 0898 Tampilan_BinA: ;Bin A = 1010
1385 0898 cjne @R0,#0AH,Tampilan_BinB
1386 089B mov DPTR,#BinA
1387 089E lcall LCD_Bin
1388 08A1 dec R0
1389 08A2 djnz R2,Ulang_Tampilan_Bin
1390 08A4 ret
1391 08A5 Tampilan_BinB: ;Bin B = 1011
1392 08A5 cjne @R0,#0BH,Tampilan_BinC
1393 08A8 mov DPTR,#BinB
1394 08AB lcall LCD_Bin
1395 08AE dec R0
1396 08AF djnz R2,Ulang_Tampilan_Bin
1397 08B1 ret
1398 08B2 Tampilan_BinC: ;Bin C = 1100
1399 08B2 cjne @R0,#0CH,Tampilan_BinD
1400 08B5 mov DPTR,#BinC
1401 08B8 lcall LCD_Bin
1402 08BB dec R0
1403 08BC djnz R2,Ulang_Tampilan_Bin
1404 08BE ret
1405 08BF Tampilan_BinD: ;Bin D = 1101
1406 08BF cjne @R0,#0DH,Tampilan_BinE
1407 08C2 mov DPTR,#BinD
1408 08C5 lcall LCD_Bin
1409 08C8 dec R0
1410 08C9 djnz R2,Ulang_Tampilan_Bin
1411 08CB ret
1412 08CC Tampilan_BinE: ;Bin E = 1110
1413 08CC cjne @R0,#0EH,Tampilan_BinF
1414 08CF mov DPTR,#BinE
1415 08D2 lcall LCD_Bin
1416 08D5 dec R0
1417 08D6 djnz R2,Ulang_Tampilan_Bin
1418 08D8 ret
1419 08D9 Tampilan_BinF: ;Bin F = 1111
1420 08D9 cjne @R0,#0FH,Ulang_Tampilan_Bin
1421 08DC mov DPTR,#BinF
1422 08DF lcall LCD_Bin
1423 08E2 dec R0
1424 08E3 djnz R2,Ulang_Tampilan_Bin
1425 08E5 ret
1427 08E6 Ulang_Tampilan_Bin:
1428 08E6 ljmp Tampilan_Bin0
1430 08E9 LCD_Bin:
1431 08E9 mov R3,#4
1432 08EB Loop_LCD_Bin:
1433 08EB clr A
1434 08EC movc A,@A+DPTR
1435 08ED mov @R1,A
1436 08EE inc DPTR
1437 08EF dec R1
1438 08F0 djnz R3,Loop_LCD_Bin
1439 08F2 ret
1441 08F3 ;================================================
1442 08F3 ; Subrutin Tampilan Sisa Perhitungan
1443 08F3 ;================================================
1444 08F3 Tampilan_Sisa:
1445 08F3 clr C
1446 08F4 mov A,#02H
1447 08F6 subb A,R7
1448 08F7 jnc Tampilan_Sisa_2 ;Cek apakah Mode Dec atau BCD
1449 08F9 push 3EH
1450 08FB push 3FH
1451 08FD Tampilan_Sisa_2:
1452 08FD mov R0,#Terima_atas
1453 08FF mov DPTR,#Judul8

18
1454 0902 lcall Pindah_RAM
1456 0905 clr C
1457 0906 mov A,#02H
1458 0908 subb A,R7
1459 0909 jc Tampilan_Sisa_Dec ;Cek apakah Mode Dec atau BCD
1461 090B mov R0,#(Data_2_Temp+15)
1462 090D mov R1,#(Terima_atas+15)
1463 090F mov R2,#6
1464 0911 Loop_Tampilan_Sisa:
1465 0911 mov A,@R0
1466 0912 mov @R1,A
1467 0913 dec R0
1468 0914 dec R1
1469 0915 djnz R2,Loop_Tampilan_Sisa
1470 0917 sjmp Loop_Tampilan_Sisa_2
1472 0919 Tampilan_Sisa_Dec:
1473 0919 pop 3FH
1474 091B pop 3EH
1475 091D mov A,Data_Negatif
1476 091F cjne A,#0FFH,Tampilan_Sisa_Dec_2
1477 0922 mov Terima_atas,#0B0H
1479 0925 Tampilan_Sisa_Dec_2:
1480 0925 clr A
1481 0926 mov R0,#(Terima_atas+15)
1482 0928 xch A,@R0
1483 0929 xchd A,@R0
1484 092A swap A
1485 092B dec R0
1486 092C mov @R0,A
1487 092D mov R0,#(Terima_atas+15)
1488 092F mov R2,#6
1489 0931 Loop_Tampilan_Sisa_Dec:
1490 0931 mov A,#30H
1491 0933 add A,@R0
1492 0934 mov @R0,A
1493 0935 dec R0
1494 0936 djnz R2,Loop_Tampilan_Sisa_Dec
1495 0938 mov R0,#(Terima_atas+14)
1496 093A cjne @R0,#30H,Loop_Tampilan_Sisa_2
1497 093D mov @R0,#20H
1498 093F Loop_Tampilan_Sisa_2:
1499 093F lcall Baris_atas
1500 0942 ret
1502 0943 ;================================================
1503 0943 ; Subrutin Konversi Biner ke Hex
1504 0943 ;================================================
1505 0943 Konv_Bin_Hex:
1506 0943 mov R0,Key_Data
1507 0945 mov R3,#4 ;Ada 4 nibble
1508 0947 Loop_Konv_Bin_Hex:
1509 0947 mov A,@R0 ;Kalikan dengan bobot tiap nibble 8421
1510 0948 mov B,#01H
1511 094B mul AB
1512 094C mov @R0,A
1513 094D dec R0
1515 094E mov A,@R0
1516 094F mov B,#02H
1517 0952 mul AB
1518 0953 mov @R0,A
1519 0954 dec R0
1521 0955 mov A,@R0
1522 0956 mov B,#04H
1523 0959 mul AB
1524 095A mov @R0,A
1525 095B dec R0
1527 095C mov A,@R0
1528 095D mov B,#08H
1529 0960 mul AB
1530 0961 mov @R0,A
1531 0962 dec R0
1532 0963 djnz R3,Loop_Konv_Bin_Hex
1534 0965 mov R0,Key_Data
1535 0967 mov R1,Key_Data
1536 0969 dec R0
1537 096A mov R2,#4
1538 096C mov R3,#3

19
1539 096E sjmp Loop_Tambahkan
1540 0970 Tambahkan:
1541 0970 clr A
1542 0971 mov R3,#4
1543 0973 Loop_Tambahkan:
1544 0973 clr A
1545 0974 xch A,@R0
1546 0975 add A,@R1
1547 0976 mov @R1,A
1548 0977 dec R0
1549 0978 djnz R3,Loop_Tambahkan
1550 097A dec R1
1551 097B djnz R2,Tambahkan
1552 097D ret
1554 097E ;================================================
1555 097E ; Subrutin Konversi BCD ke Hex
1556 097E ;================================================
1557 097E Konv_BCD_Hex:
1558 097E lcall Konv_Bin_Hex
1559 0981 mov R1,Key_Data
1560 0983 mov R2,#4
1561 0985 Loop_Konv_BCD_Hex:
1562 0985 clr A
1563 0986 clr C
1564 0987 mov A,#09H ;Cek apakah melebihi 9 ?
1565 0989 subb A,@R1
1566 098A jnc Loop_Konv_BCD_Hex_2
1567 098C lcall Sistem_Error
1568 098F ret
1570 0990 Loop_Konv_BCD_Hex_2:
1571 0990 dec R1
1572 0991 djnz R2,Loop_Konv_BCD_Hex
1573 0993 ret
1575 0994 ;================================================
1576 0994 ; Subrutin Menampilkan Pesan ERROR!
1577 0994 ;================================================
1578 0994 Sistem_Error:
1579 0994 mov R0,#Terima_atas
1580 0996 mov DPTR,#Judul7 ;Tampilkan pesan 'ERROR!'
1581 0999 lcall Pindah_RAM
1582 099C lcall Baris_atas
1583 099F mov R0,#Terima_bawah
1584 09A1 mov DPTR,#Judul6 ;Tampilan awal ' 0'
1585 09A4 lcall Pindah_RAM
1586 09A7 lcall Baris_bawah
1588 09AA Loop_Sistem_Error:
1589 09AA lcall Reset_Keypad
1590 09AD clr Kolom1
1591 09AF jb Baris1,Loop_Sistem_Error
1592 09B2 lcall LTunda
1593 09B5 lcall Tunggu_tombol_dilepas
1594 09B8 lcall Cek_Mode_Awal
1595 09BB lcall Loop_Tampilan_C
1596 09BE setb Kolom1
1597 09C0 ljmp Next_Data
1599 09C3 ;================================================
1600 09C3 ; Subrutin Konversi Desimal ke Hex
1601 09C3 ;================================================
1602 09C3 Konv_Dec_Hex:
1603 09C3 mov R0,(Key_Data+4)
1604 09C5 mov R1,#Data_1
1605 09C7 mov R5,#15
1606 09C9 mov (Key_Data+3),#1
1607 09CC Loop_Konv_Dec_Hex:
1608 09CC push 00H
1609 09CE mov R0,#Data_1
1610 09D0 lcall Hapus_Nilai
1611 09D3 pop 00H
1613 09D5 mov A,@R0
1614 09D6 mov @R1,A
1615 09D7 mov R4,(Key_Data+3)
1616 09D9 lcall Kalikan_A
1617 09DC dec R0
1618 09DD inc (Key_Data+3)
1620 09DF push 00H
1621 09E1 push 01H

20
1622 09E3 mov R0,#Terima_atas
1623 09E5 mov R1,#Hasil
1624 09E7 lcall Penambahan
1625 09EA pop 01H
1626 09EC pop 00H
1628 09EE djnz R5,Loop_Konv_Dec_Hex
1629 09F0 clr C
1630 09F1 mov A,(Key_Data+4)
1631 09F3 subb A,#14
1632 09F5 mov R0,A
1633 09F6 lcall Hapus_Nilai
1634 09F9 mov R0,#Terima_atas
1635 09FB mov R1,(Key_Data+4)
1636 09FD inc R1
1637 09FE lcall Pisah_Data
1638 0A01 ret
1640 0A02 Kalikan_A:
1641 0A02 clr C
1642 0A03 clr A
1643 0A04 push 00H
1644 0A06 push 01H
1645 0A08 Loop_Kalikan_A:
1646 0A08 mov R0,#Hasil
1647 0A0A lcall Hapus_Nilai
1648 0A0D mov R1,#Data_2
1649 0A0F mov @R1,#0AH
1650 0A11 lcall Perkalian
1651 0A14 lcall Copy_Hasil_Data1
1652 0A17 djnz R4,Loop_Kalikan_A
1653 0A19 pop 01H
1654 0A1B pop 00H
1655 0A1D ret
1657 0A1E ;================================================
1658 0A1E ; Subrutin Konversi Heksadesimal ke Desimal
1659 0A1E ;================================================
1660 0A1E Konv_Hex_Dec:
1661 0A1E mov R0,#Data_1_Temp
1662 0A20 lcall Hapus_Nilai
1663 0A23 mov R0,#Data_2_Temp
1664 0A25 lcall Hapus_Nilai
1665 0A28 mov R0,#Hasil
1666 0A2A lcall Hapus_Nilai
1667 0A2D mov R0,#Sisa
1668 0A2F lcall Hapus_Nilai
1669 0A32 mov R4,#15
1670 0A34 mov (Key_Data+5),#(Data_1_Temp+15)
1671 0A37 Loop_Konv_Hex_Dec:
1672 0A37 mov R0,#Data_1
1673 0A39 mov R1,#Data_2
1674 0A3B mov @R1,#0AH
1675 0A3D lcall Pembagian
1676 0A40 mov R0,#Sisa
1677 0A42 mov R1,(Key_Data+5)
1678 0A44 mov A,@R0
1679 0A45 mov @R1,A
1680 0A46 dec (Key_Data+5)
1682 0A48 lcall Copy_Hasil_Data1
1683 0A4B mov R0,#Data_1
1684 0A4D mov R1,#Data_2
1685 0A4F mov @R1,#0AH
1686 0A51 lcall Pengurangan
1687 0A54 jnc Konversi_Lagi
1688 0A56 sjmp Konversi_Selesai
1690 0A58 Konversi_Lagi:
1691 0A58 lcall Copy_Hasil_Data1
1692 0A5B mov R0,#Hasil
1693 0A5D lcall Hapus_Nilai
1694 0A60 mov R0,#Sisa
1695 0A62 lcall Hapus_Nilai
1696 0A65 djnz R4,Loop_Konv_Hex_Dec
1697 0A67 ret
1699 0A68 Konversi_Selesai:
1700 0A68 mov R0,#Hasil
1701 0A6A mov R1,(Key_Data+5)
1702 0A6C mov A,@R0
1703 0A6D mov @R1,A

21
1704 0A6E ret
1708 0A6F ;================================================
1709 0A6F ; Subrutin Kuadrat
1710 0A6F ;================================================
1711 0A6F Kuadrat:
1712 0A6F mov Data_Negatif,#00H
1713 0A72 mov (Data_Negatif-1),#00H
1714 0A75 mov (Data_Negatif-2),#00H
1715 0A78 lcall Cek_Mode_Hitung
1717 0A7B mov R0,#(Data_2_Temp+15) ;Menggabungkan data satuan
1718 0A7D mov R1,#(Data_2_Temp+14)
1719 0A7F lcall Gabung_Data
1720 0A82 mov R0,#(Data_2_Temp+15)
1721 0A84 mov R1,#Data_1
1722 0A86 lcall Simpan_Data
1723 0A89 mov R0,#Data_1
1724 0A8B mov R1,#Data_2
1725 0A8D lcall Copy_Data ;Copy data -> Data 1 = Data 2
1727 0A90 lcall Perkalian
1728 0A93 lcall Copy_Hasil_Data1
1729 0A96 ;--------------------------------------------------------------------
1730 0A96 lcall Cek_Mode_Tampilan
1731 0A99 cjne R7,#3H,Kuadrat_Bukan_Dec
1732 0A9C mov R0,#Data_2_Temp
1733 0A9E mov R1,#Sisa
1734 0AA0 lcall Copy_Data
1735 0AA3 Kuadrat_Bukan_Dec:
1736 0AA3 mov R0,#Data_1_Temp
1737 0AA5 lcall Cek_Spasi
1738 0AA8 mov R0,#Data_2_Temp
1739 0AAA lcall Cek_Spasi
1740 0AAD mov R0,#Data_1_Temp
1741 0AAF mov R1,#Terima_bawah
1742 0AB1 lcall Copy_Data
1743 0AB4 lcall Baris_bawah
1744 0AB7 ;---------------------------------------------------------------------
1745 0AB7 mov R0,#Data_1_Temp
1746 0AB9 lcall Hapus_Nilai
1747 0ABC mov R0,#Data_2_Temp
1748 0ABE lcall Hapus_Nilai
1749 0AC1 ret
1751 0AC2 ;================================================
1752 0AC2 ; Subrutin Perkalian
1753 0AC2 ;================================================
1754 0AC2 Perkalian:
1755 0AC2 mov R3,#Jml_Byte*8
1756 0AC4 Loop_Perkalian:
1757 0AC4 clr C
1758 0AC5 mov R0,#Data_2+Jml_Byte-1
1759 0AC7 mov R2,#Jml_Byte
1760 0AC9 GeserKanan:
1761 0AC9 mov A,@R0
1762 0ACA rrc A
1763 0ACB mov @R0,A
1764 0ACC dec R0
1765 0ACD djnz R2,GeserKanan
1766 0ACF jnc Jangan_Ditambah
1767 0AD1 mov R0,#Hasil
1768 0AD3 mov R1,#Data_1
1769 0AD5 lcall Penambahan
1771 0AD8 Jangan_Ditambah:
1772 0AD8 clr C
1773 0AD9 mov R0,#Data_1
1774 0ADB lcall GeserKiri
1775 0ADE djnz R3,Loop_Perkalian
1776 0AE0 ret
1778 0AE1 ;================================================
1779 0AE1 ; Subrutin Penambahan
1780 0AE1 ;================================================
1781 0AE1 Penambahan:
1782 0AE1 clr C
1783 0AE2 mov R2,#Jml_Byte
1784 0AE4 Loop_Penambahan:
1785 0AE4 mov A,@R0
1786 0AE5 addc A,@R1
1787 0AE6 mov @R0,A

22
1788 0AE7 inc R0
1789 0AE8 inc R1
1790 0AE9 djnz R2,Loop_Penambahan
1791 0AEB ret
1793 0AEC ;================================================
1794 0AEC ; Subrutin Pembagian
1795 0AEC ;================================================
1796 0AEC Pembagian:
1797 0AEC mov R3,#Jml_Byte*8
1798 0AEE Loop_Pembagian:
1799 0AEE clr C
1800 0AEF mov R0,#Data_1
1801 0AF1 lcall GeserKiri
1802 0AF4 mov R0,#Sisa
1803 0AF6 lcall GeserKiri
1804 0AF9 mov R0,#Sisa
1805 0AFB mov R1,#Data_2
1806 0AFD lcall Perbandingan
1807 0B00 jc Jangan_Dikurangi
1808 0B02 mov R0,#Sisa
1809 0B04 mov R1,#Data_2
1810 0B06 lcall Pengurangan
1812 0B09 Jangan_Dikurangi:
1813 0B09 cpl C
1814 0B0A mov R0,#Hasil
1815 0B0C lcall GeserKiri
1816 0B0F djnz R3,Loop_Pembagian
1817 0B11 ret
1819 0B12 GeserKiri:
1820 0B12 mov R2,#Jml_Byte
1821 0B14 Loop_GeserKiri:
1822 0B14 mov A,@R0
1823 0B15 rlc A
1824 0B16 mov @R0,A
1825 0B17 inc R0
1826 0B18 djnz R2,Loop_GeserKiri
1827 0B1A ret
1829 0B1B Perbandingan:
1830 0B1B clr C
1831 0B1C mov R2,#Jml_Byte
1832 0B1E Loop_Perbandingan:
1833 0B1E mov A,@R0
1834 0B1F subb A,@R1
1835 0B20 inc R0
1836 0B21 inc R1
1837 0B22 djnz R2,Loop_Perbandingan
1838 0B24 ret
1840 0B25 ;================================================
1841 0B25 ; Subrutin Pengurangan
1842 0B25 ;================================================
1843 0B25 Pengurangan:
1844 0B25 clr C
1845 0B26 mov R2,#Jml_Byte
1846 0B28 Loop_Pengurangan:
1847 0B28 mov A,@R0
1848 0B29 subb A,@R1
1849 0B2A mov @R0,A
1850 0B2B inc R0
1851 0B2C inc R1
1852 0B2D djnz R2,Loop_Pengurangan
1853 0B2F ret
1855 0B30 ;================================================
1856 0B30 ; Subrutin Hapus Karakter
1857 0B30 ;================================================
1858 0B30 Hapus_Karakter:
1859 0B30 mov R0,#Terima_bawah
1860 0B32 mov R3,#15 ;Ada 15 Karakter
1861 0B34 Loop_Hapus_Karakter:
1862 0B34 mov @R0,#20H
1863 0B36 inc R0
1864 0B37 djnz R3,Loop_Hapus_Karakter
1865 0B39 ret
1867 0B3A ;================================================
1868 0B3A ; Subrutin pindah data dptr ke RAM
1869 0B3A ;================================================
1870 0B3A Pindah_RAM:

23
1871 0B3A mov R3,#16 ;Memindahkan 16 karakter
1872 0B3C Loop_Pindah_RAM:
1873 0B3C clr A
1874 0B3D movc A,@A+DPTR
1875 0B3E mov @R0,A
1876 0B3F inc DPTR
1877 0B40 inc R0
1878 0B41 djnz R3,Loop_Pindah_RAM
1879 0B43 ret
1881 0B44 ;================================================
1882 0B44 ; Subrutin menuliskan judul di baris atas
1883 0B44 ;================================================
1884 0B44 Baris_atas:
1885 0B44 mov A,#80H
1886 0B46 acall Write_inst
1887 0B48 mov R0,#Terima_atas
1888 0B4A mov R3,#16 ;ada 16 karakter
1889 0B4C Write_1:
1890 0B4C clr A
1891 0B4D mov A,@R0
1892 0B4E Send:
1893 0B4E lcall Write_data
1894 0B51 inc R0
1895 0B52 djnz R3,Write_1
1896 0B54 ret
1898 0B55 ;================================================
1899 0B55 ; Subrutin menuliskan judul di baris bawah
1900 0B55 ;================================================
1901 0B55 Baris_bawah:
1902 0B55 mov A,#0C0H ;pindah ke baris bawah
1903 0B57 acall Write_inst
1904 0B59 acall Write_inst
1905 0B5B lcall LTunda
1906 0B5E mov A,#0CH ;display ON, cursor OFF, blink OFF
1907 0B60 acall Write_inst
1908 0B62 mov R3,#16 ;ada 16 karakter
1909 0B64 mov R0,#Terima_bawah
1910 0B66 acall Write_1
1911 0B68 ret
1913 0B69 ;================================================
1914 0B69 ; Subrutin Menulis instruksi ke LCD
1915 0B69 ;================================================
1916 0B69 Write_inst:
1917 0B69 clr LCD_RS
1918 0B6B setb LCD_E
1919 0B6D mov Data_LCD,A
1920 0B6F clr LCD_E
1921 0B71 setb LCD_E
1922 0B73 lcall LTunda
1923 0B76 ret
1925 0B77 ;================================================
1926 0B77 ; Subrutin menulis data ke LCD
1927 0B77 ;================================================
1928 0B77 Write_data:
1929 0B77 setb LCD_RS
1930 0B79 setb LCD_E
1931 0B7B mov Data_LCD,A
1932 0B7D clr LCD_E
1933 0B7F setb LCD_E
1934 0B81 lcall LTunda
1935 0B84 ret
1937 0B85 ;================================================
1938 0B85 ; Tunda 5 ms
1939 0B85 ;================================================
1940 0B85 LTunda:
1941 0B85 mov R4,#10
1942 0B87 Tunda1:
1943 0B87 mov R5,#250
1944 0B89 djnz R5,$ ;(2 x 250) + 1 ~ 0,5 ms
1945 0B8B djnz R4,Ltunda ;(0,5 x 10) + 5 ~ 5 ms
1946 0B8D ret

24
1958 0B96 ;================================================
1959 0B96 ; Subrutin Akar
1960 0B96 ;================================================
1961 0B96 Akar:
1962 0B96 lcall Cek_Mode_Hitung
1964 0B99 mov R0,#Terima_atas
1965 0B9B lcall Hapus_Nilai
1966 0B9E mov R0,#Terima_bawah
1967 0BA0 lcall Hapus_Nilai
1969 0BA3 mov R0,#(Data_2_Temp+15) ;Menggabungkan data satuan
1970 0BA5 mov R1,#(Data_2_Temp+14)
1971 0BA7 lcall Gabung_Data
1972 0BAA mov R0,#(Data_2_Temp+15)
1973 0BAC mov R1,#Data_1
1974 0BAE lcall Simpan_Data
1975 0BB1 mov R0,#Data_1
1976 0BB3 mov R1,#Terima_atas
1977 0BB5 lcall Copy_Data
1979 0BB8 Tambahkan_Iterasi:
1980 0BB8 lcall Hapus_Temp
1981 0BBB mov R0,#Terima_bawah
1982 0BBD mov R1,#Data_1
1983 0BBF lcall Copy_Data
1984 0BC2 mov R0,#Data_1
1985 0BC4 mov R1,#Data_2
1986 0BC6 mov @R1,#01H
1987 0BC8 Loop_Tambahkan_Iterasi:
1988 0BC8 lcall Penambahan
1990 0BCB mov R0,#Data_1
1991 0BCD mov R1,#Terima_bawah
1992 0BCF lcall Copy_Data
1993 0BD2 mov R0,#Data_1
1994 0BD4 mov R1,#Data_2
1995 0BD6 lcall Copy_Data
1996 0BD9 lcall Perkalian
1998 0BDC mov R0,#Hasil
1999 0BDE mov R1,#Data_2
2000 0BE0 lcall Copy_Data
2001 0BE3 mov R0,#Terima_atas
2002 0BE5 mov R1,#Data_1
2003 0BE7 lcall Copy_Data
2005 0BEA mov R0,#Data_1
2006 0BEC mov R1,#Data_2
2007 0BEE lcall Pengurangan
2008 0BF1 jnc Tambahkan_Iterasi
2009 0BF3 acall Hapus_Temp
2010 0BF5 mov R0,#Terima_bawah
2011 0BF7 mov R1,#Data_1
2012 0BF9 lcall Copy_Data
2013 0BFC mov R0,#Data_1
2014 0BFE mov R1,#Data_2
2015 0C00 mov @R1,#01H
2016 0C02 lcall Pengurangan
2018 0C05 lcall Cek_Mode_Tampilan
2019 0C08 cjne R7,#3H,Akar_Bukan_Dec
2020 0C0B mov R0,#Data_2_Temp
2021 0C0D mov R1,#Sisa
2022 0C0F lcall Copy_Data
2023 0C12 Akar_Bukan_Dec:
2024 0C12 mov R0,#Data_1_Temp
2025 0C14 lcall Cek_Spasi
2026 0C17 mov R0,#Data_2_Temp
2027 0C19 lcall Cek_Spasi
2028 0C1C mov R0,#Data_1_Temp
2029 0C1E mov R1,#Terima_bawah
2030 0C20 lcall Copy_Data
2031 0C23 lcall Baris_bawah
2032 0C26 mov R0,#Data_1_Temp
2033 0C28 lcall Hapus_Nilai
2034 0C2B mov R0,#Data_2_Temp
2035 0C2D lcall Hapus_Nilai
2036 0C30 ret

25
2038 0C31 Hapus_Temp:
2039 0C31 mov R0,#Data_1
2040 0C33 lcall Hapus_Nilai
2041 0C36 mov R0,#Data_2
2042 0C38 lcall Hapus_Nilai
2043 0C3B mov R0,#Hasil
2044 0C3D lcall Hapus_Nilai
2045 0C40 mov R0,#Sisa
2046 0C42 lcall Hapus_Nilai
2047 0C45 ret
2049 0C46 ;================================================
2050 0C46 ; Subrutin Operator Apabila data sudah maks
2051 0C46 ;================================================
2052 0C46 Operator_2:
2053 0C46 Key_Mode_2:
2054 0C46 lcall Reset_Keypad
2055 0C49 clr Kolom4
2056 0C4B jb Baris1,Key_Akar_2
2057 0C4E lcall Tunggu_tombol_dilepas
2058 0C51 lcall Cek_Mode_Awal
2059 0C54 mov R0,#Terima_atas
2060 0C56 mov DPTR,#Judul1 ; tampilkan MODE
2061 0C59 lcall Pindah_RAM
2062 0C5C lcall Baris_atas
2063 0C5F lcall Cek_Mode_Hitung
2064 0C62 lcall Mode
2065 0C65 setb Kolom4
2066 0C67 ljmp Next_Data
2067 0C6A Key_Akar_2:
2068 0C6A jb Baris2,Key_Kali_2
2069 0C6D lcall Tunggu_tombol_dilepas
2070 0C70 mov sp,#08H
2071 0C73 mov A,Data_Negatif
2072 0C75 cjne A,#00H,Gak_Bisa_Akar_2
2073 0C78 lcall Cek_Mode_Awal
2074 0C7B mov (Terima_atas+14),#0E8H ;Simbol Kali (E8H)
2075 0C7E lcall Baris_atas
2076 0C81 lcall Akar
2077 0C84 cjne R7,#3H,Key_Akar_2BD
2078 0C87 mov R0,#Sisa
2079 0C89 mov R1,#Data_2_Temp
2080 0C8B lcall Copy_Data
2081 0C8E Key_Akar_2BD:
2082 0C8E lcall Cek_Mode_Akhir
2083 0C91 setb Kolom4
2084 0C93 ljmp Next_Data
2086 0C96 Gak_Bisa_Akar_2:
2087 0C96 ljmp Sistem_Error
2089 0C99 Key_Kali_2: ;Kode Kali = 1
2090 0C99 jb Baris3,Key_Bagi_2
2091 0C9C lcall Tunggu_tombol_dilepas
2092 0C9F lcall Cek_Mode_Awal
2093 0CA2 mov (Terima_atas+14),#078H ;Simbol Kali (78H)
2094 0CA5 lcall Baris_atas
2095 0CA8 mov (Data_Operator+1),#1H
2096 0CAB mov A,Data_Operator ;Simpan Kode Kali
2097 0CAD cjne A,#00H,Proses_2
2098 0CB0 lcall Copy_D2T_D1T
2099 0CB3 mov (Data_Negatif-1),Data_Negatif
2100 0CB6 mov Data_Negatif,#00H
2101 0CB9 setb Kolom4
2102 0CBB ljmp Next_Data
2103 0CBE Key_Bagi_2: ;Kode Bagi = 2
2104 0CBE jb Baris4,Key_Tambah_2
2105 0CC1 lcall Tunggu_tombol_dilepas
2106 0CC4 lcall Cek_Mode_Awal
2107 0CC7 mov (Terima_atas+14),#0FDH ;Simbol Bagi (FDH)
2108 0CCA lcall Baris_atas
2109 0CCD mov (Data_Operator+1),#2H ;Simpan Kode Bagi
2110 0CD0 mov A,Data_Operator
2111 0CD2 cjne A,#00H,Proses_2
2112 0CD5 lcall Copy_D2T_D1T
2113 0CD8 mov (Data_Negatif-1),Data_Negatif
2114 0CDB mov Data_Negatif,#00H
2115 0CDE setb Kolom4
2116 0CE0 ljmp Next_Data

26
2117 0CE3 Key_Tambah_2: ;Kode Tambah = 3
2118 0CE3 jb Baris5,Key_Kurang_2
2119 0CE6 lcall Tunggu_tombol_dilepas
2120 0CE9 lcall Cek_Mode_Awal
2121 0CEC mov (Terima_atas+14),#02BH ;Simbol Tambah (2BH)
2122 0CEF lcall Baris_atas
2123 0CF2 mov (Data_Operator+1),#3H ;Simpan Kode Bagi
2124 0CF5 mov A,Data_Operator
2125 0CF7 cjne A,#00H,Proses_2
2126 0CFA lcall Copy_D2T_D1T
2127 0CFD mov (Data_Negatif-1),Data_Negatif
2128 0D00 mov Data_Negatif,#00H
2129 0D03 setb Kolom4
2130 0D05 ljmp Next_Data
2131 0D08 Key_Kurang_2: ;Kode Kurang = 4
2132 0D08 jb Baris6,Key_Hasil_2
2133 0D0B lcall Tunggu_tombol_dilepas
2134 0D0E lcall Cek_Mode_Awal
2135 0D11 mov (Terima_atas+14),#0B0H ;Simbol Kurang (B0H)
2136 0D14 lcall Baris_atas
2137 0D17 mov (Data_Operator+1),#4H ;Simpan Kode Bagi
2138 0D1A mov A,Data_Operator
2139 0D1C cjne A,#00H,Proses_2
2140 0D1F lcall Copy_D2T_D1T
2141 0D22 mov (Data_Negatif-1),Data_Negatif
2142 0D25 mov Data_Negatif,#00H
2143 0D28 setb Kolom4
2144 0D2A ljmp Next_Data
2146 0D2D Proses_2:
2147 0D2D ljmp Hitung
2149 0D30 Key_Hasil_2:
2150 0D30 jb Baris8,Key_C_2
2151 0D33 lcall Tunggu_tombol_dilepas
2152 0D36 lcall Cek_Mode_Awal
2153 0D39 mov (Terima_atas+14),#03DH ;Simbol "=" (3DH)
2154 0D3C lcall Baris_atas
2155 0D3F mov Data_Hasil,#0FFH
2156 0D42 setb Kolom4
2157 0D44 mov A,Data_Operator
2158 0D46 cjne A,#00H,Calculate_2
2159 0D49 ljmp Next_Data
2160 0D4C Key_C_2:
2161 0D4C lcall Reset_Keypad
2162 0D4F clr Kolom1
2163 0D51 jb Baris1,Key_CE_2
2164 0D54 lcall LTunda
2165 0D57 lcall Tunggu_tombol_dilepas
2166 0D5A lcall Tampilan_C
2167 0D5D setb Kolom1
2168 0D5F ljmp Next_Data
2169 0D62 Key_CE_2:
2170 0D62 jb Baris2,Key_Kuadrat_2
2171 0D65 lcall LTunda
2172 0D68 lcall Tunggu_tombol_dilepas
2173 0D6B lcall Tampilan_CE
2174 0D6E setb Kolom2
2175 0D70 ljmp Next_Data
2176 0D73 Key_Kuadrat_2:
2177 0D73 lcall Reset_Keypad
2178 0D76 clr Kolom3
2179 0D78 jb Baris2,Key_Tanda_2
2180 0D7B lcall Tunggu_tombol_dilepas
2181 0D7E mov sp,#08H
2182 0D81 lcall Cek_Mode_Awal
2183 0D84 lcall Kuadrat
2184 0D87 cjne R7,#3H,Key_Kuadrat_2BD
2185 0D8A mov R0,#Sisa
2186 0D8C mov R1,#Data_2_Temp
2187 0D8E lcall Copy_Data
2188 0D91 Key_Kuadrat_2BD:
2189 0D91 lcall Cek_Mode_Akhir
2190 0D94 setb Kolom3
2191 0D96 ljmp Next_Data
2192 0D99 Key_Tanda_2:
2193 0D99 jb Baris8,Loop_Operator_2
2194 0D9C lcall LTunda

27
2195 0D9F lcall Tunggu_tombol_dilepas
2196 0DA2 mov sp,#08H
2197 0DA5 mov A,Data_Negatif
2198 0DA7 cpl A
2199 0DA8 mov Data_Negatif,A
2200 0DAA lcall Cek_Mode_Awal
2201 0DAD lcall Bilangan_Negatif
2202 0DB0 setb Kolom3
2203 0DB2 ljmp Next_Data
2205 0DB5 Loop_Operator_2:
2206 0DB5 ajmp Operator_2
2208 0DB7 Calculate_2:
2209 0DB7 ljmp Hitung
2211 0DBA ;================================================
2212 0DBA ; Subrutin Pengecekan kemampuan masimal
2213 0DBA ;================================================
2214 0DBA Cek_Mode_Max:
2215 0DBA mov R0,#Data_1
2216 0DBC mov R1,#Data_2_Temp
2217 0DBE lcall Copy_Data
2218 0DC1 cjne R7,#01H,Cek_Mode_Hex_Max
2224 0DCC mov R0,#Data_2 ;Cek apakah melebihi
2225 0DCE mov @R0,#00H ;kemampuan Biner max
2226 0DD0 inc R0 ;Bin max = 7FFFH
2227 0DD1 mov @R0,#80H
2228 0DD3 acall Cek_Max_2
2229 0DD5 ljmp Belum_Max
2231 0DD8 Cek_Mode_Hex_Max:
2232 0DD8 cjne R7,#02H,Cek_Mode_Dec_Max ;Cek apakah melebihi
2233 0DDB mov R0,#Data_2 ;kemampuan Hex max
2234 0DDD lcall Hapus_Nilai ;Hex max = FFFFFFFFFFFFFFFH
2235 0DE0 mov R0,#(Data_2+7)
2236 0DE2 mov @R0,#10H
2237 0DE4 acall Cek_Max_2
2238 0DE6 ljmp Belum_Max
2240 0DE9 Cek_Mode_Dec_Max:
2241 0DE9 cjne R7,#03H,Cek_Mode_BCD_Max ;Cek apakah melebihi
2242 0DEC mov R0,#Data_2 ;kemampuan Dec max
2243 0DEE mov @R0,#00H ;Dec max = 99999999999999
2244 0DF0 inc R0 ; = 38D7EA4C67FFFH
2245 0DF1 mov @R0,#80H
2246 0DF3 inc R0
2247 0DF4 mov @R0,#0C6H
2248 0DF6 inc R0
2249 0DF7 mov @R0,#0A4H
2250 0DF9 inc R0
2251 0DFA mov @R0,#7EH
2252 0DFC inc R0
2253 0DFD mov @R0,#8DH
2254 0DFF inc R0
2255 0E00 mov @R0,#03H
2256 0E02 inc R0
2257 0E03 acall Cek_Max_2
2258 0E05 ljmp Belum_Max
2260 0E08 Cek_Mode_BCD_Max:
2261 0E08 cjne R7,#04H,Cek_Mode_Max
2262 0E0B mov R0,#Data_2 ;Cek apakah melebihi
2263 0E0D mov @R0,#40H ;kemampuan BCD max
2264 0E0F inc R0 ;BCD max = 1F3F = 7999
2265 0E10 mov @R0,#01FH
2266 0E12 acall Cek_Max_2
2267 0E14 ljmp Belum_Max
2269 0E17 Cek_Max_2:
2270 0E17 mov R0,#Data_1
2271 0E19 mov R1,#Data_2
2272 0E1B lcall Pengurangan
2273 0E1E jnc Over_Load_2
2274 0E20 mov R0,#Data_2_Temp
2275 0E22 mov R1,#Data_1
2276 0E24 lcall Copy_Data
2277 0E27 mov R0,#Data_2_Temp

28
2278 0E29 call Hapus_Nilai
2279 0E2C mov R0,#Data_2
2280 0E2E call Hapus_Nilai
2281 0E31 ret
2283 0E32 Over_Load_2:
2284 0E32 ljmp Sistem_Error
2286 0E35 Tdk_Over_Load:
2287 0E35 ljmp Belum_Max
2289 0E38 ;================================================
2290 0E38 ; Data Tampilan LCD
2291 0E38 ;================================================
2292 0E38 Judul: DB ' KALKULATOR '
2293 0E48 Judul1: DB ' MODE '
2294 0E58 Judul2: DB ' BCD '
2295 0E68 Judul3: DB ' BIN '
2296 0E79 Judul4: DB ' HEX '
2297 0E89 Judul5: DB ' DEC '
2298 0E99 Judul6: DB ' 0'
2299 0EA9 Judul7: DB ' ERROR! '
2300 0EB9 Judul8: DB ' SISA = '
2301 0EC9 Bin0: DB '0000'
2302 0ECD Bin1: DB '1000'
2303 0ED1 Bin2: DB '0100'
2304 0ED5 Bin3: DB '1100'
2305 0ED9 Bin4: DB '0010'
2306 0EDD Bin5: DB '1010'
2307 0EE1 Bin6: DB '0110'
2308 0EE5 Bin7: DB '1110'
2309 0EE9 Bin8: DB '0001'
2310 0EED Bin9: DB '1001'
2311 0EF1 BinA: DB '0101'
2312 0EF5 BinB: DB '1101'
2313 0EF9 BinC: DB '0011'
2314 0EFD BinD: DB '1011'
2315 0F01 BinE: DB '0111'
2316 0F05 BinF: DB '1111'

29
LAMPIRAN 3

DATASHEET
MCR100 Series
Preferred Device

Sensitive Gate
Silicon Controlled Rectifiers
Reverse Blocking Thyristors
PNPN devices designed for high volume, line-powered consumer http://onsemi.com
applications such as relay and lamp drivers, small motor controls, gate
drivers for larger thyristors, and sensing and detection circuits.
Supplied in an inexpensive plastic TO-226AA package which is SCRs
readily adaptable for use in automatic insertion equipment. 0.8 A RMS
Features
100 thru 600 V
• Sensitive Gate Allows Triggering by Microcontrollers and Other
Logic Circuits
• Blocking Voltage to 600 V G

• On−State Current Rating of 0.8 Amperes RMS at 80°C A K

• High Surge Current Capability − 10 A


• Minimum and Maximum Values of IGT, VGT and IH Specified
for Ease of Design
• Immunity to dV/dt − 20 V/sec Minimum at 110°C MARKING
• Glass-Passivated Surface for Reliability and Uniformity
DIAGRAM

• Pb−Free Packages are Available*


MCR
100−x
AYWW

1 TO−92 (TO−226)
2 CASE 029
3
STYLE 10

x = Specific Device Code


A = Assembly Location
Y = Year
WW = Work Week

PIN ASSIGNMENT
1 Cathode
2 Gate
3 Anode

ORDERING INFORMATION
See detailed ordering and shipping information in the package
dimensions section on page 2 of this data sheet.

Preferred devices are recommended choices for future use


and best overall value.

*For additional information on our Pb−Free strategy and soldering details, please
download the ON Semiconductor Soldering and Mounting Techniques
Reference Manual, SOLDERRM/D.

 Semiconductor Components Industries, LLC, 2005 1 Publication Order Number:


January, 2005 − Rev. 6 MCR100/D
MCR100 Series

ORDERING INFORMATION
Device Package Code Shipping†
MCR100−003
MCR100−004
5000 Units / Bulk
MCR100−006
MCR100−008
MCR100−3RL
TO 92 (TO
TO−92 (TO−226)
226)
MCR100−6RL 2000 Units / Tape & Reel
MCR100−6RLRA
MCR100−6RLRM
2000 Units / Tape & Ammunition Box
MCR100−6ZL1
MCR100−8RL 2000 Units / Tape & Reel
MCR100−003G
MCR100−006G 5000 Units / Bulk
MCR100−008G
MCR100−3RLG
TO−92
TO 92 (TO
(TO−226)
226) 2000 Units / Tubes
MCR100−6RLG
(Pb−Free)
MCR100−6RLRAG 2000 Units / Tape & Reel
MCR100−6RLRMG
2000 Units / Tape & Ammunition Box
MCR100−6ZL1G
MCR100−8RLG 2000 Units / Tape & Reel
†For information on tape and reel specifications, including part orientation and tape sizes, please refer to our Tape and Reel Packaging
Specifications Brochure, BRD8011/D.

MAXIMUM RATINGS (TJ = 25°C unless otherwise noted)


Rating Symbol Value Unit
Peak Repetitive Off−State Voltage (Note 1) VDRM, V
(TJ = 40 to 110°C, Sine Wave, 50 to 60 Hz; Gate Open) VRRM
MCR100−3 100
MCR100−4 200
MCR100−6 400
MCR100−8 600
On-State RMS Current, (TC = 80°C) 180° Conduction Angles IT(RMS) 0.8 A
Peak Non-Repetitive Surge Current, (1/2 Cycle, Sine Wave, 60 Hz, TJ = 25°C) ITSM 10 A
Circuit Fusing Consideration, (t = 8.3 ms) I2t 0.415 A2s
Forward Peak Gate Power, (TA = 25°C, Pulse Width  1.0 s) PGM 0.1 W

Forward Average Gate Power, (TA = 25°C, t = 8.3 ms) PG(AV) 0.10 W

Forward Peak Gate Current, (TA = 25°C, Pulse Width  1.0 s) IGM 1.0 A

Reverse Peak Gate Voltage, (TA = 25°C, Pulse Width  1.0 s) VGRM 5.0 V

Operating Junction Temperature Range @ Rate VRRM and VDRM TJ −40 to 110 °C
Storage Temperature Range Tstg −40 to 150 °C
Maximum ratings are those values beyond which device damage can occur. Maximum ratings applied to the device are individual stress limit
values (not normal operating conditions) and are not valid simultaneously. If these limits are exceeded, device functional operation is not implied,
damage may occur and reliability may be affected.
1. VDRM and VRRM for all types can be applied on a continuous basis. Ratings apply for zero or negative gate voltage; however, positive gate
voltage shall not be applied concurrent with negative potential on the anode. Blocking voltages shall not be tested with a constant current
source such that the voltage ratings of the devices are exceeded.

http://onsemi.com
2
MCR100 Series

THERMAL CHARACTERISTICS
Characteristic Symbol Max Unit
Thermal Resistance,Junction−to−Case RJC 75 °C/W
Junction−to−Ambient RJA 200
Lead Solder Temperature TL 260 °C
(1/16″ from case, 10 secs max)

ELECTRICAL CHARACTERISTICS (TC = 25°C unless otherwise noted)


Characteristic Symbol Min Typ Max Unit
OFF CHARACTERISTICS
Peak Repetitive Forward or Reverse Blocking Current (Note 2) IDRM, IRRM A
TC = 25°C − − 10
(VD = Rated VDRM and VRRM; RGK = 1 k) TC = 110°C − − 100
ON CHARACTERISTICS
Peak Forward On−State Voltage* VTM − − 1.7 V
(ITM = 1.0 A Peak @ TA = 25°C)
Gate Trigger Current (Continuous dc) (Note 3) TC = 25°C IGT − 40 200 A
(VAK = 7.0 Vdc, RL = 100 )
Holding Current(2) TC = 25°C IH − 0.5 5.0 mA
(VAK = 7.0 Vdc, Initiating Current = 20 mA) TC = −40°C − − 10
Latch Current TC = 25°C IL − 0.6 10 mA
(VAK = 7.0 V, Ig = 200 A) TC = −40°C − − 15
Gate Trigger Voltage (Continuous dc) (Note 3) TC = 25°C VGT − 0.62 0.8 V
(VAK = 7.0 Vdc, RL = 100 ) TC = −40°C − − 1.2

DYNAMIC CHARACTERISTICS
Critical Rate of Rise of Off−State Voltage dV/dt 20 35 − V/s
(VD = Rated VDRM, Exponential Waveform, RGK = 1000 ,TJ = 110°C)
Critical Rate of Rise of On−State Current di/dt − − 50 A/s
(IPK = 20 A; Pw = 10 sec; diG/dt = 1 A/sec, Igt = 20 mA)
*Indicates Pulse Test: Pulse Width ≤ 1.0 ms, Duty Cycle ≤ 1%.
2. RGK = 1000  included in measurement.
3. Does not include RGK in measurement.

Voltage Current Characteristic of SCR


+ Current
Anode +

Symbol Parameter VTM


VDRM Peak Repetitive Off State Forward Voltage
on state
IDRM Peak Forward Blocking Current
IRRM at VRRM IH
VRRM Peak Repetitive Off State Reverse Voltage
IRRM Peak Reverse Blocking Current
VTM Peak on State Voltage + Voltage
IH Holding Current Reverse Blocking Region IDRM at VDRM
(off state) Forward Blocking Region
(off state)
Reverse Avalanche Region
Anode −

http://onsemi.com
3
MCR100 Series

100 1.0
90 0.9

GATE TRIGGER VOLTAGE (VOLTS)


GATE TRIGGER CURRENT (  A)

80
0.8
70
0.7
60
0.6
50
0.5
40
30 0.4

20 0.3
10 0.2
−40 −25 −10 5 20 35 50 65 80 95 110 −40 −25 −10 5 20 35 50 65 80 95 110
TJ, JUNCTION TEMPERATURE (°C) TJ, JUNCTION TEMPERATURE (°C)

Figure 1. Typical Gate Trigger Current versus Figure 2. Typical Gate Trigger Voltage versus
Junction Temperature Junction Temperature

1000 1000
LATCHING CURRENT (  A)
HOLDING CURRENT ( A)

100 100

10 10
−40 −25 −10 5 20 35 50 65 80 95 110 −40 −25 −10 5 20 35 50 65 80 95 110
TJ, JUNCTION TEMPERATURE (°C) TJ, JUNCTION TEMPERATURE (°C)

Figure 3. Typical Holding Current versus Figure 4. Typical Latching Current versus
Junction Temperature Junction Temperature
TC, MAXIMUM ALLOWABLE CASE TEMPERATURE ( °C)

I T, INSTANTANEOUS ON−STATE CURRENT (AMPS)

120 10
MAXIMUM @ TJ = 25°C
110
MAXIMUM @ TJ = 110°C
100

90
DC
80 1

70 180°
60

50
30° 60° 90° 120°
40 0.1
0 0.1 0.2 0.3 0.4 0.5 0.5 0.8 1.1 1.4 1.7 2.0 2.3 2.6 2.9 3.2 3.5
IT(RMS), RMS ON-STATE CURRENT (AMPS) VT, INSTANTANEOUS ON-STATE VOLTAGE (VOLTS)

Figure 5. Typical RMS Current Derating Figure 6. Typical On−State Characteristics

http://onsemi.com
4
MCR100 Series

TO−92 EIA RADIAL TAPE IN FAN FOLD BOX OR ON REEL


H2A H2A
H2B H2B

W2
H4 H5
T1
L1
H1
W1 W
L T

F1 T2
F2
P2 P2 D

P1
P

Figure 7. Device Positioning on Tape

Specification
Inches Millimeter
Symbol Item Min Max Min Max
D Tape Feedhole Diameter 0.1496 0.1653 3.8 4.2
D2 Component Lead Thickness Dimension 0.015 0.020 0.38 0.51
F1, F2 Component Lead Pitch 0.0945 0.110 2.4 2.8
H Bottom of Component to Seating Plane .059 .156 1.5 4.0
H1 Feedhole Location 0.3346 0.3741 8.5 9.5
H2A Deflection Left or Right 0 0.039 0 1.0
H2B Deflection Front or Rear 0 0.051 0 1.0
H4 Feedhole to Bottom of Component 0.7086 0.768 18 19.5
H5 Feedhole to Seating Plane 0.610 0.649 15.5 16.5
L Defective Unit Clipped Dimension 0.3346 0.433 8.5 11
L1 Lead Wire Enclosure 0.09842 — 2.5 —
P Feedhole Pitch 0.4921 0.5079 12.5 12.9
P1 Feedhole Center to Center Lead 0.2342 0.2658 5.95 6.75
P2 First Lead Spacing Dimension 0.1397 0.1556 3.55 3.95
T Adhesive Tape Thickness 0.06 0.08 0.15 0.20
T1 Overall Taped Package Thickness — 0.0567 — 1.44
T2 Carrier Strip Thickness 0.014 0.027 0.35 0.65
W Carrier Strip Width 0.6889 0.7481 17.5 19
W1 Adhesive Tape Width 0.2165 0.2841 5.5 6.3
W2 Adhesive Tape Position .0059 0.01968 .15 0.5
NOTES:
1. Maximum alignment deviation between leads not to be greater than 0.2 mm.
2. Defective components shall be clipped from the carrier tape such that the remaining protrusion (L) does not exceed a maximum of 11 mm.
3. Component lead to tape adhesion must meet the pull test requirements.
4. Maximum non−cumulative variation between tape feed holes shall not exceed 1 mm in 20 pitches.
5. Holddown tape not to extend beyond the edge(s) of carrier tape and there shall be no exposure of adhesive.
6. No more than 1 consecutive missing component is permitted.
7. A tape trailer and leader, having at least three feed holes is required before the first and after the last component.
8. Splices will not interfere with the sprocket feed holes.

http://onsemi.com
5
MCR100 Series

PACKAGE DIMENSIONS

TO−92 (TO−226)
CASE 029−11
ISSUE AL

NOTES:
1. DIMENSIONING AND TOLERANCING PER ANSI
A B Y14.5M, 1982.
2. CONTROLLING DIMENSION: INCH.
3. CONTOUR OF PACKAGE BEYOND DIMENSION R
IS UNCONTROLLED.
R 4. LEAD DIMENSION IS UNCONTROLLED IN P AND
BEYOND DIMENSION K MINIMUM.
P
L INCHES MILLIMETERS
SEATING DIM MIN MAX MIN MAX
PLANE K A 0.175 0.205 4.45 5.20
B 0.170 0.210 4.32 5.33
C 0.125 0.165 3.18 4.19
D 0.016 0.021 0.407 0.533
G 0.045 0.055 1.15 1.39
X X D H 0.095 0.105 2.42 2.66
G J 0.015 0.020 0.39 0.50
K 0.500 −−− 12.70 −−−
H J L 0.250 −−− 6.35 −−−
N 0.080 0.105 2.04 2.66
V C P −−− 0.100 −−− 2.54
R 0.115 −−− 2.93 −−−
SECTION X−X V 0.135 −−− 3.43 −−−
1 N
STYLE 10:
N PIN 1. CATHODE
2. GATE
3. ANODE

ON Semiconductor and are registered trademarks of Semiconductor Components Industries, LLC (SCILLC). SCILLC reserves the right to make changes without further notice
to any products herein. SCILLC makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does SCILLC assume any liability
arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation special, consequential or incidental damages.
“Typical” parameters which may be provided in SCILLC data sheets and/or specifications can and do vary in different applications and actual performance may vary over time. All
operating parameters, including “Typicals” must be validated for each customer application by customer’s technical experts. SCILLC does not convey any license under its patent rights
nor the rights of others. SCILLC products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, or other applications
intended to support or sustain life, or for any other application in which the failure of the SCILLC product could create a situation where personal injury or death may occur. Should
Buyer purchase or use SCILLC products for any such unintended or unauthorized application, Buyer shall indemnify and hold SCILLC and its officers, employees, subsidiaries, affiliates,
and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death
associated with such unintended or unauthorized use, even if such claim alleges that SCILLC was negligent regarding the design or manufacture of the part. SCILLC is an Equal
Opportunity/Affirmative Action Employer. This literature is subject to all applicable copyright laws and is not for resale in any manner.

PUBLICATION ORDERING INFORMATION


LITERATURE FULFILLMENT: N. American Technical Support: 800−282−9855 Toll Free ON Semiconductor Website: http://onsemi.com
Literature Distribution Center for ON Semiconductor USA/Canada
P.O. Box 61312, Phoenix, Arizona 85082−1312 USA Order Literature: http://www.onsemi.com/litorder
Phone: 480−829−7710 or 800−344−3860 Toll Free USA/Canada Japan: ON Semiconductor, Japan Customer Focus Center
Fax: 480−829−7709 or 800−344−3867 Toll Free USA/Canada 2−9−1 Kamimeguro, Meguro−ku, Tokyo, Japan 153−0051 For additional information, please contact your
Email: orderlit@onsemi.com Phone: 81−3−5773−3850 local Sales Representative.

http://onsemi.com MCR100/D
6
This datasheet has been download from:

www.datasheetcatalog.com

Datasheets for electronics components.


DATA IMAGE CORPORATION

LCD Module Specification

ITEM NO.: GM24644SR-01

Table of Contents

1. COVER & CONTENTS 1


2. RECORD OF REVISION 2
3. GENERAL SPECIFICATIONS 3
4. ABSOLUTE MAXIMUM RATINGS 4
5. ELECTRICAL CHARACTERISTICS 5
6. ELECTRO-OPTICAL CHARACTERISTIC 5
7. TIMING CHARACTERISTICS 7
8. PIN CONNECTIONS 8
9. POWER SUPPLY 8
10. BLOCK DIAGRAM 9
11. QUALITY ASSURANCE 15
12. LOT NUMBERING SYSTEM 19
13. LCM NUMBERING SYSTEM 19
14. PRECAUTIONS IN USE LCM 20
15 OUTLINE DRAWING 21

Approved by Checked by Checked by Checked by Drawn by

QC. Div Pro. Div R&D. Div.


Final Revision: Sheet Code: Issued Date: Total Page:

C 2000/1/26 21

Ver: C Page: 1 / 21
2. RECORD OF REVISION

Rev Date Item Page Comment


Change PCB REV:B for Add RT1
B JAN/11/00 10 9
3.3K Thermistor.
Change “Definition of applicable
11.2.2 16 Zones”, A=Display Area and, B=Non-
Display area
Change the measurement of
C JAN/26/00 “Inspection Parameters”
1. Black or white spots
11.2.3 17
2. Scratch, Substances
3. Air Bubbles (Between glass and
polarizer)

Ver: C Page: 2 / 21
3. GENERAL SPECIFICATION

Display Format : 240 (W) × 64 (H) dots

Dots Size : 0.41 (W) × 0.41 (H) mm

View Area : 112 (W) × 32 (H) mm

General Dimensions : 149 (W) × 56 (H) × 9.5 (T) mm Max.

Weight : 90 g max.

LCD Type : V STN Gray STN Yellow FSTN

Polarizer mode : V Reflective Transflective

Transmissive Negative

View Angle : V 6 O’ clock 12 O’ clock Others

Backlight : LED EL CCFL

Backlight Color : Yellow green Amber Blue Green

White Others

Controller / Driver : T6963C


Temperature Range : V Normal Wide Temperature
Operating 0 to 50°C Operating -20 to 70°C
Storage -10 to 60°C Storage -30 to 80°C

Ver: C Page: 3 / 21
4. ABSOLUTE MAXIMUM RATINGS
4.1 ELECTRICAL ABSOLUTE MAXIMUM RATINGS
VSS= 0V, Ta = 25°C
Item Symbol Min. Max. Unit

Supply Voltage
VDD-VSS 0 7 V
(Logic)

Supply Voltage
VDD-VEE 0 25 V
(LCD Driver)

Input Voltage VI VSS VDD V


Operating Temperature TOP 0 50 °C
Storage Temperature TSTG -10 60 °C

4.2 ENVIRONMENTAL ABSOLUTE MAXIMUM RATINGS


Operating Storage
Item Comment
(Min.) Max.) (Min.) (Max.)
Ambient Temp 0 50 -10 60 Note (1)
Humidity Note (2) Note(2) Without Condensation
Vibration -- 4.9M/S2 -- 19.6M/S2 XYZ Direction
2 2
Shock -- 29.4M/S -- 490M/S XYZ Direction

Note(1) Ta = 0°C : 50Hr Max.


Note(2) Ta ≤ 40°C : 90% RH Max.
Ta ≥ 40°C : Absolute humidity must be lower than the humidity
of 90% RH at 40°C.

Ver: C Page: 4 / 21
5. ELECTRICAL CHARACTERISTICS
Item Symbol Condition Min. Typ. Max. Unit
Supply Voltage
VDD-VSS 4.5 5.0 5.5 V
(Logic)
0°C 12.5 13 13.5
Supply Voltage
VDD-VO 25°C 11.3 12.0 12.6 V
(LCD)
50°C 10.5 11.0 11.5

VIH VSS-2.2 -- VDD


Input Voltage -- V
VIL 0 -- 0.8
Logic Supply IDD -- 9.8 -- mA
VDD-VSS=5V
Current IEE -- 0.06 -- mA

6. ELECTRO-OPTICAL CHARACTERISTICS
ITEM Symbol Condition Min. Typ. Max. Unit Ref.

0°C 470 650 800


Rise Time Tr ms
25°C 187 198 206
Note (1)
0°C 450 500 750
Fall Time Tf ms
25°C 142 146 154

Contrast CR 25°C -- 2.5 -- Note (3)

θ1~θ2 25°C & -- 30 --


View Angle Note (2)
∅1, ∅2 CR≥3 -- 30 --

Frame Frequency Ff 25°C -- 70 -- Hz


Note (1) & (2) : See next page
Note (3) : Contrast ratio is defined under the following condition:

CR= Brightness of non-selected condition


Brightness of selected condition

( a ). Temperature ---------- 25°C


( b ). Frame frequency ---- 70Hz
( c ). Viewing angle -------- θ= 0°, ∅ = 0°
( d ). Operating voltage --- 12.0V

Ver: C Page: 5 / 21
Note (1) Response time is measured as the shortest period of time possible
between the change in state of an LCD segment as demonstrated below:

+Vop

1/f F

-Vop

90%
100%
10%

tr tf

Condition:
( a ) . Temperature ---------------25°C
( b ) . Frame frequency --------- 70Hz
( c ) . View Angle ----------------- θ = 0°, ∅=0°
( d ) . Operating voltage -------- 12.0V

Note (2) Definition of View Angle

Top – Bottom direction Right -- Left direction

Top
∅2 ∅1
θ1

θ2

Bottom Left Right

Ver: C Page: 6 / 21
7. TIMING CHARACTERISTICS

£ S
»witching Characteristics (2)
Bus Timing

C/D

tCDS tCDH

CE

tCE,tRD,tWR

RD, WR

tDS
D0toD7
(WRITE)
tDH
D0toD7
(READ)
tACC tOH

TEST CONDITIONS (Unless otherwise noted. VDD = 5.0V±10%, VSS = 0V, Ta = -20 to
75¢ J)
ITEM SYMBOL TEST CONDITIONS MIN MAX UNIT
C / D Set-up Time tCDS -- 100 -- ns

C / D Hold Time tCDH -- 10 -- ns

CE, RD, WR Pulse Width tCE, tRD, tWR -- 80 -- ns

Data Set-up Time tDS -- 80 -- ns

Data Hold Time tDH -- 40 -- ns

Access Time tACC -- -- 150 ns

Output Hold Time tOH -- 10 50 ns

Rev:C Page: 7 /21


8. PIN CONNECTIONS
Pin Symbol Function
1 VSS Ground ( 0 V )
2 FGND Frame Ground (Connect to Bezel)
3 NC No Connection
4 VDD Power Supply (+5V)
5 /RD Data Read
6 /WR Data Write
7 C/D Command / Data
8 /CE Chip Enable
9 /RESET IC Reset
10 PWM Pulse Width Modulation for LCD Contrast Control.
11 DB1
12 DB0
13 DB3
14 DB2
Data Bus Line
15 DB5
16 DB4
17 DB7
18 DB6
19 NC No Connection
20 FS Font size Select, L = 8 × 8, H = 8 × 6

9. POWER SUPPLY

VDD

+5V

LCM
VSS

PWM
LCD Contrast Control

Rev:C Page: 8 /21


10. BLOCK DIAGRAM

DB0 64 Com
Common Driver LCD PANEL
DB7 CONNTROLLER X1 240X64 DOTS
LSI
/RD T6963C
/CE 240 Seg
C/D
/RESET Segment Driver
FS X3
/WR

8K SRAM

VDD, VSS
Thermistor
RT1:3.3K

SCI7661 VLCD
DC to DC

PWM

Rev:C Page: 9 /21


• Flowchart of communications with MPU
(1) Status Read
A status check must be performed before data is read or written.
Status check
The Status of T6963C can be read from the data lines.
RD L
WR H
CE L
C/D H
D0 to D7 Status word
The T6963C status word format is as follows:
MSB LSB
STA7 STA6 STA5 STA4 STA3 STA2 STA1 STA0
D7 D6 D5 D4 D3 D2 D1 D0

STA0 Check command execution capability 0 : Disable 1 : Enable


STA1 Check data read / write capability 0 : Disable 1 : Enable
STA2 Check Auto mode data read capability 0 : Disable 1 : Enable
STA3 Check Auto mode data write capability 0 : Disable 1 : Enable
STA4 Not used
STA5 Check controller operation capability 0 : Disable 1 : Enable
Error flag. Used for Screen Peek and Screen copy
STA6 0 : No error 1 : Error
commands.
STA7 Check the blink condition 0 : Display off 1 : Normal display
(Note 1) It is necessary to check STA0 and STA1 at the same time.
There is a possibility of erroneous operation due to a hardware interrupt.
(Note 2) For most modes STA0 / STA1 are used as a status check.
(Note 3) STA2 and STA3 are valid in Auto mode; STA0 and STA1 are invalid.

Status checking flow


a) b)
STATUS AUTO MODE STATUS

(*1)
STA0=1
STA1=1
(*1) STAT2=1 (Read)
NO or
NO
STAT3=1 (Write)
YES
YES

RETURN RETURN

(Note 4) When using the MSB = 0 command, a Status Read must be performed.
If a status check is not carried out, the T6963C cannot operate normally, even after a delay time.
The hardware interrupt occurs during the address calculation period (at the end of each line).
If a MSB = 0 command is sent to the T6963C during this period, the T6963C enters Wait status.
If a status check is not carried out in this state before the next command is sent, there is the
Possibility that the command or data will not be received.

Rev:C Page: 10 /21


(2) Setting data
When using the T6963C, first set the data, then set the command.
Procedure for sending a command
a) The case of 1 data b) The case of 2 data

Send Command Send Command

Status check Status check STA0, 1

STA0, 1

Data write
Data write

Status check
Status check

Data write

Command write

Status check

END

Command write

END

(Note) When sending more than two data, the last datum (or last two data) is valid.

Rev:C Page: 11 /21


COMMAND DEFINITIONS
COMMAND CODE D1 D2 FUNCTION
00100001 X address Y address Set Cursor Pointer
REGISTERS SETTING 00100010 Data 00H Set Offset Register
00100100 Low address High address Set Address Pointer
01000000 Low address High address Set Text Home Address
01000001 Columns 00H Set Text Area
SET CONTROL WORD
01000010 Low address High address Set Graphic Home Address
01000011 Columns 00H Set Graphic Area
1000X000 ¡ X ¡ X OR mode
1000X001 ¡ X ¡ X EXOR mode
1000X011 ¡ X ¡ X AND mode
MODE SET ¡ X ¡ X
1000X100 Text Attribute mode
10000XXX ¡ X ¡ X Internal CG ROM mode
10001XXX ¡ X ¡ X External CG RAM mode

10010000 ¡ X ¡ X Display off


1001XX10 ¡ X ¡ X Cursor on, blink off
1001 XX11 ¡ X ¡ X Cursor on, blink on
DISPLAY MODE
100101 XX ¡ X ¡ X Text on, graphic off
100110 XX ¡ X ¡ X Text off, graphic on
100111 XX ¡ X ¡ X Text on, graphic on
10100000 ¡ X ¡ X 1- line cursor
10100001 ¡ X ¡ X 2- line cursor
10100010 ¡ X ¡ X 3- line cursor
CURSOR PATTERN 10100011 ¡ X ¡ X 4- line cursor
SELECT 10100100 ¡ X ¡ X 5- line cursor
10100101 ¡ X ¡ X 6- line cursor
10100110 ¡ X ¡ X 7- line cursor
10100111 ¡ X ¡ X 8- line cursor
10110000 ¡ X ¡ X Set Data Auto Write
DATA AUTO READ / ¡ X ¡ X
10110001 Set Data Auto Read
WRITE
10110010 ¡ X ¡ X Auto Reset
11000000 Data ¡ X Data Write and Increment ADP
11000001 ¡ X ¡ X Data Read and Increment ADP
11000010 Data ¡ X Data Write and Decrement ADP
DATA READ / WRITE ¡ X
11000011 ¡ X Data Read and Decrement ADP
11000100 Data ¡ X Data Write and Nonvariable ADP
11000101 ¡ X ¡ X Data Read and Nonvariable ADP
SCREEN PEEK 11100000 ¡ X ¡ X Screen Peek
SCREEN COPY 11101000 Screen Copy
11110XXX ¡ X ¡ X Bit Reset
11111XXX ¡ X ¡ X Bit Set
1111X000 ¡ X ¡ X Bit 0 (LSB)
1111X001 ¡ X ¡ X Bit 1
1111X010 ¡ X ¡ X Bit 2
BIT SET / RESET
1111X011 ¡ X ¡ X Bit 3
1111X100 ¡ X ¡ X Bit 4
1111X101 ¡ X ¡ X Bit 5
1111X110 ¡ X ¡ X Bit 6
1111X111 ¡ X ¡ X Bit 7 (MSB)
X : invalid

Rev:C Page: 12 /21


£ »
Setting registers

CODE HEX. FUNCTION D1 D2


00100001 21H SET CURSOR POINTER X ADRS Y ADRS
00100010 22H SET OFFSET REGISTER DATA 00H
00100100 24H SET ADDRESS POINTER LOW ADRS HIGH ADRS

(1) Set Cursor Pointer


The position of the cursor is specified by X ADRS and Y ADRS. The cursor position can only be
moved by this command. Data read / write from the MPU never changes the cursor pointer.
X ADRS and Y ADRS are specified as follows.
X ADRS 00H to 4FH (lower 7 bits are valid)
Y ADRS 00H to 1FH (lower 5 bits are valid)

a) Single – Scan b) Dual – Scan


X ADRS 00 to 4FH X ADRS 00 to 4FH

Y ADRS 00H to 0FH


Y ADRS 00H to 0FH Upper screen

Y ADRS 00H to 1FH


Lower screen

(2) Set Offset Register


The offset register is used to determine the external character generator RAM area.
The T6963C has a 16-bit address bus as follows:

MSB LSB
ad15 ad14 ad13 ad12 ad11 ad10 ad9 ad8 ad7 ad6 ad5 ad4 ad3 ad2 ad1 ad0

Offset Register Data Character Code Line Scan

Rev:C Page: 13 /21


CHARACTER CODE MAP
ROM code 0101

Rev:C Page: 14 /21


11. QUALITY ASSURANCE
11.1 Test Condition
11.1.1 Temperature and Humidity(Ambient Temperature)
Temperature : 20 ± 5°C
Humidity : 65 ± 5%

11.1.2 Operation
Unless specified otherwise, test will be conducted with LCM in operation.

11.1.3 Container
Unless specified otherwise, vibration test will be conducted on module only.

11.1.4 Test Frequency


Single cycle.

11.1.5 Test Method

No. Parameter Conditions Regulations


1 High Temperature Operating 50 ± 2 °C Note 3
2 Low Temperature Operating 0 ± 2 °C Note 3
3 High Temperature Storage 60 ± 2 °C Note 3
4 Low Temperature Storage -10 ± 2 °C Note 3
Vibration Test Total fixed amplitude : 1.5mm Note 3
(Non-operation state) Vibration Frequency : 10 ~ 55Hz
5
One cycle 60 seconds to 3 directions
of X.Y.Z. for each 15 minutes
Damp Proof Test 40°C ± 2°C, 90~95%RH, 96h Note 1,2
6
(Non-operation state)
Shock Test To be measured after dropping from Note 3
7 (Non-operation state) 60cm high once concrete surface in
packing state
Note 1: Returned under normal temperature and humidity for 4 hrs.
Note 2: No dew condensation to be observed.
Note 3: No change on display and in operation under the test condition

Rev:C Page: 15 /21


11.2 Inspection condition
11.2.1 Inspection conditions

The LCD shall be inspected under 40W white fluorescent light.

45°

11.2.2 Definition of applicable Zones

B
LCD
A
BEZEL

PCB

A : Display Area
B : Non-Display Area

Rev:C Page: 16
/21
11.2.3 Inspection Parameters

No. Parameter Criteria

1 Black or White spots

Zone Acceptable Class


number AQL
Of
Level
Dimension A B Defects
D < 0.15 ∗ ∗
0.15≤ D ≤ 0.2 4 4
Minor 2.5
0.2 ≤ D ≤ 0.25 2 2
D ≤ 0.3 0 1
D = (Long + Short) / 2 * : Disregard

2 Scratch, Substances

Zone Acceptable Class


AQL
number Of
Level
X (mm) Y(mm) A B Defects
∗ 0.04 ≥ W ∗ ∗
3.0 ≥ L 0.06 ≥ W 4 4
Minor 2.5
2.0 ≥ L 0.08 ≥ W 2 3
 0.1 < W 0 1
X : Length Y : Width ∗ : Disregard

Total defects should not exceed 4/module

3 Air Bubbles
(between glass
& polarizer)
Zone Acceptable Class
AQL
number of
Level
Dimension A B Defects
D ≤ 0.15 ∗ ∗
0.15 < D ≤ 0.25 2 ∗ Minor 2.5
0.25 < D 0 1
∗ : Disregard

Total defects shall not excess 3/module.

Rev:C Page: 17 /21


(1) Pixel shape (with Dent)
0.152

(2) Pixel shape ( with Projection)

Should not be connected to


next pixel

0.152
4 Uniformity of Pixel
(3) Pin hole
X

Y
( X + Y )/2 ≤ 0.02mm

(Less than 0.1 mm is no counted)

(4) Deformation

X ( X + Y ) / 2 ≤ 0.3mm

Y
Total acceptable number : 1/pixel, 5/cell

Rev:C Page: 18 /21


12. LOT NUMBERING SYSTEM

9 7 4 2

Production week number

Production year

13. LCM NUMBERING SYSTEM

GM 24644 S R 01

VERSION :01

MODE
M – transmissive R – Reflective
Nil – transflective N - Negative

LCD type
S – STN Gray
S1– STN Yellow
N – TN

Series code
24644– Dot number =240 x 64 dots, 4th Type
Model type
CM – Character Module
GM – Graphic Module
CXM – Custom Character Module
GXM – Custom Graphic Module

Rev:C Page: 19 /21


14. PRECAUTION FOR USING LCM
1. LIQUID CRYSTAL DISPLAY (LCD) (5) The normal static prevention measures should be
LCD is made up of glass, organic sealant, organic fluid, and observed for work clothes and working benches; for the
polymer based polarizers. The following precautions should latter conductive (rubber) mat is recommended.
be taken when handing, (6). Since dry air is inductive to static, a relative
(1). Keep the temperature within range of use and storage. humidity of 50-60% is recommended.
Excessive temperature and humidity could cause
polarization degredation, polarizer peel off or bubble. 2.3 Soldering
(2). Do not contact the exposed polarizers with anything (1). Solder only to the I/O terminals.
harder than an HB pencil lead. To clean dust off the (2). Use only soldering irons with proper grounding
display surface, wipe gently with cotton, chamois or other and no leakage.
soft material soaked in petroleum benzin. (3). Soldering temperature : 280°C ± 10°C
(3). Wipe off saliva or water drops immediately. Contact (4). Soldering time: 3 to 4 sec.
with water over a long period of time may cause polarizer (5). Use eutectic solder with resin flux fill.
deformation or color fading, while an active LCD with (6). If flux is used, the LCD surface should be covered
water condensation on its surface will cause corrosion of to avoid flux spatters. Flux residue should be removed
ITO electrodes. after wards.
(4). Glass can be easily chipped or cracked from rough
handling, especially at corners and edges. 2.4 Operation
(5). Do not drive LCD with DC voltage. (1). The viewing angle can be adjusted by varying the
LCD driving voltage V0.
2. Liquid Crystal Display Modules (2). Driving voltage should be kept within specified
2.1 Mechanical Considerations range; excess voltage shortens display life.
LCM are assembled and adjusted with a high degree of (3). Response time increases with decrease in
precision. Avoid excessive shocks and do not make any temperature.
alterations or modifications. The following should be noted. (4). Display may turn black or dark blue at
(1). Do not tamper in any way with the tabs on the metal temperatures above its operational range; this is
frame. (however not pressing on the viewing area) may cause
(2). Do not modify the PCB by drilling extra holes, the segments to appear “fractured”.
changing its outline, moving its components or modifying (5). Mechanical disturbance during operation (such as
its pattern. pressing on the viewing area) may cause the segments to
(3). Do not touch the elastomer connector, especially appear “fractured”.
insert an backlight panel (for example, EL).
(4). When mounting a LCM make sure that the PCB is not 2.5 Storage
under any stress such as bending or twisting . Elastomer If any fluid leaks out of a damaged glass cell, wash off
contacts are very delicate and missing pixels could result any human part that comes into contact with soap and
from slight dislocation of any of the elements. water. Never swallow the fluid. The toxicity is extremely
(5). Avoid pressing on the metal bezel, otherwise the low but caution should be exercised at all the time.
elastomer connector could be deformed and lose contact,
resulting in missing pixels. 2.6 Limited Warranty
Unless otherwise agreed between DATA IMAGE and
2.2. Static Electricity customer, DATA IMAGE will replace or repair any of its
LCM contains CMOS LSI’s and the same precaution for LCD and LCM which is found to be defective
such devices should apply, namely electrically and visually when inspected in accordance
(1). The operator should be grounded whenever he/she with DATA IMAGE acceptance standards, for a period
comes into contact with the module. Never touch any of the on one year from date of shipment. Confirmation of such
conductive parts such as the LSI pads, the copper leads on date shall be based on freight documents. The
the PCB and the interface terminals with any parts of the warranty liability of DATA IMAGE is limited to repair
human body. and/or replacement on the terms set forth above. DATA
(2). The modules should be kept in antistatic bags or other IMAGE will not responsible for any subsequent or
containers resistant to static for storage. consequential events.
(3). Only properly grounded soldering irons should be
used.
(4). If an electric screwdriver is used, it should be well
grounded and shielded from commutator sparks.
Rev:C Page: 20 /21
15 OUTLINE DRAWING

Rev:C Page: 21 /21

Anda mungkin juga menyukai