RANCANG BANGUN KALKULATOR DIGITAL OPERASI KALI DAN BAGI BERBASIS MIKROKONTROLER AT89C51
RANCANG BANGUN KALKULATOR DIGITAL OPERASI KALI DAN BAGI BERBASIS MIKROKONTROLER AT89C51
Program Studi Teknologi Rekayasa Elektronika Politeknik Negeri Semarang
Jl. Prof.Sudarto,Tembalang, Kec. Tembalang, Kota Semarang, Jawa Tengah 50275
Telp. (024) 7472396 , Situs web: www.polines.ac.id , Email: sekretariat@polines.ac.id
Abstract
Basic arithmetic calculations such as multiplication and division are frequently required in learning activities and daily applications, thus requiring a practical, fast, and accurate supporting tool. This study designs and implements a digital calculator based on the AT89C51 microcontroller capable of performing basic arithmetic operations, particularly multiplication and division. The system utilizes a 4×3 keypad as the input interface for entering numbers and operators, and a 16×2 LCD as the output interface for displaying calculation processes and results.
The AT89C51 microcontroller functions as the main control unit, reading keypad inputs through a row and column scanning process and processing data using assembly language programming according to the selected arithmetic operation. The calculation results are then displayed on the LCD in real time. System testing was conducted through simulation using EdSim51, and the results show that the calculator can correctly detect inputs, accurately process arithmetic operations, and display stable calculation results. Therefore, this digital calculator can serve as an effective learning media for understanding microcontroller systems, assembly language programming, and simple embedded system applications.
Keywords: digital calculator, AT89C51 microcontroller, 4×3 keypad, 16×2 LCD.
Abstrak
Perhitungan aritmatika dasar seperti perkalian dan pembagian masih sering dilakukan dalam kegiatan pembelajaran maupun kebutuhan sehari-hari, sehingga diperlukan suatu alat bantu yang praktis, cepat, dan akurat. Penelitian ini merancang dan mengimplementasikan kalkulator digital berbasis mikrokontroler AT89C51 yang mampu melakukan operasi aritmatika dasar, khususnya perkalian dan pembagian. Sistem dirancang menggunakan keypad 4×3 sebagai media input untuk memasukkan angka dan operator, serta LCD 16×2 sebagai media output untuk menampilkan proses dan hasil perhitungan.
Mikrokontroler AT89C51 berperan sebagai pusat pengendali yang membaca input dari keypad melalui proses scanning baris dan kolom, kemudian mengolah data menggunakan bahasa pemrograman assembly sesuai operasi yang dipilih pengguna. Hasil perhitungan selanjutnya ditampilkan pada LCD secara real time. Pengujian sistem dilakukan melalui simulasi menggunakan perangkat lunak EdSim51 dan menunjukkan bahwa kalkulator dapat menerima input dengan baik, memproses operasi aritmatika secara akurat, serta menampilkan hasil perhitungan secara stabil. Dengan demikian, kalkulator digital ini dapat digunakan sebagai media pembelajaran untuk memahami konsep mikrokontroler, pemrograman assembly, serta sistem tertanam sederhana.
Kata kunci: kalkulator digital, mikrokontroler AT89C51, keypad 4×3, LCD 16×2.
BAB I
PENDAHULUAN
1.1 Latar
Belakang
Dalam kehidupan
sehari-hari, aktivitas perhitungan angka sering dilakukan, baik dalam kegiatan
belajar, pekerjaan, maupun kebutuhan sederhana di rumah. Perhitungan seperti
penjumlahan, pengurangan, perkalian, dan pembagian kerap dilakukan secara
berulang, sehingga membutuhkan alat bantu yang cepat, praktis, dan akurat.
Seiring berkembangnya
teknologi, kalkulator tidak lagi hanya dibuat dari rangkaian konvensional,
tetapi dapat dirancang menggunakan mikrokontroler yang lebih fleksibel dan
mudah dikembangkan. Dengan menggunakan mikrokontroler, sistem kalkulator dapat
dibuat lebih terstruktur serta menjadi media pembelajaran yang baik untuk
memahami konsep pemrosesan data digital dan sistem tertanam.
Mikrokontroler 8051 dipilih karena memiliki arsitektur yang sederhana, mudah diprogram, dan dilengkapi dengan fitur input/output yang memadai. Pada perancangan ini, kalkulator digital memanfaatkan mikrokontroler AT89C51 dan dilengkapi dengan keypad 4x3 sebagai media input untuk memasukkan angka dan operator, serta LCD 16x2 sebagai media output untuk menampilkan hasil perhitungan. Sistem bekerja dengan menerima input dari pengguna, menyimpan angka dan operator ke dalam register internal, kemudian melakukan proses perhitungan sesuai operasi yang dipilih. Dengan adanya kalkulator digital sederhana ini, pengguna dapat melakukan perhitungan aritmatika dasar secara lebih mudah dan efisien.
1.2 Rumusan Masalah
Berdasarkan latar belakang tersebut, rumusan masalah yang dapat disusun antara lain sebagai berikut:
1. Bagaimana merancang sistem kalkulator digital berbasis mikrokontroler AT89C51 yang mampu melakukan operasi aritmatika dasar seperti penjumlahan, pengurangan, perkalian, dan pembagian secara akurat?
2. Bagaimana merancang kalkulator berbasis mikrokontroler AT89C51 yang mampu membaca input keypad 4x3, memproses operasi aritmatika dasar secara akurat, menampilkan hasil pada LCD 16x2, serta siap menerima input baru tanpa reset manual?
3. Bagaimana memastikan sistem kalkulator yang dirancang dapat bekerja secara stabil, responsif, dan mudah dioperasikan dalam penggunaan sehari-hari?
1.3 Tujuan
Adapun tujuan dari penelitian ini adalah sebagai berikut:
1. Merancang kalkulator digital berbasis mikrokontroler AT89C51 yang mampu melakukan operasi aritmatika dasar, yaitu penjumlahan, pengurangan, perkalian, dan pembagian.
2. Mengimplementasikan penggunaan keypad 4x3 sebagai media input dan LCD 16x2 sebagai media output untuk memudahkan interaksi pengguna dalam melakukan perhitungan.
3. Meningkatkan pemahaman dan keterampilan dalam penerapan mikrokontroler AT89C51 pada sistem elektronik sederhana yang dapat digunakan sebagai alat bantu dalam kegiatan pembelajaran maupun kebutuhan sehari-hari.
BAB II
TINJAUAN PUSTAKA
2.1 Komponen Utama
1. IC AT89C51
AT89C51 adalah sebuah mikrokomputer CMOS 8-bit berdaya rendah dan berkinerja tinggi yang dilengkapi dengan 4 KB memori Flash yang dapat diprogram dan dihapus (PEROM). Perangkat ini diproduksi menggunakan teknologi memori nonvolatile berdensitas tinggi milik Atmel dan kompatibel dengan set instruksi serta konfigurasi pin standar industri MCS-51. Memori Flash yang terintegrasi pada chip memungkinkan memori program diprogram ulang secara in-system atau menggunakan programmer memori nonvolatile konvensional. Dengan menggabungkan CPU 8-bit yang serbaguna dan memori Flash dalam satu chip monolitik, AT89C51 dari Atmel merupakan mikrokomputer yang kuat, fleksibel, dan hemat biaya, sehingga sangat cocok digunakan untuk berbagai aplikasi kontrol tertanam (embedded control).
2. Keypad
Keypad adalah bagian penting dari suatu perangkat elektronika yang membutuhkan interaksi manusia. Keypad berfungsi sebagai interface antara perangkat (mesin) elektronik dengan manusia atau dikenal dengan istilah HMI (Human Machine Interface). Matrix keypad 4×3 merupakan salah satu contoh keypad yang dapat digunakan untuk berkomunikasi antara manusia dengan mikrokontroler. Konfigurasi keypad dengan susunan bentuk matrix ini bertujuan untuk penghematan port mikrokontroler karena jumlah key (tombol) yang dibutuhkan banyak pada suatu sistem dengan mikrokontroler. Dalam project ini, keypad menjadi tombol untuk menginput dan mengoperasikan angka didalam kalkulator sesuai dengan operasi hitung yang diinginkan. Konstruksi matrix keypad dengan ukuran 4×3 untuk mikrokontroler dapat dibuat seperti pada gambar berikut:
3. LCD
LCD (Liquid Crystal Display) adalah suatu jenis media tampilan yang menggunakan kristal cair sebagai penampil utama. LCD (Liquid Crystal Display) bisa menampilkan suatu gambar/karakter dikarenakan terdapat banyak sekali titik cahaya (piksel) yang terdiri dari satu buah kristal cair sebagai titik cahaya. Walau disebut sebagai titik cahaya, namun Kristal cair ini tidak memancarkan cahaya sendiri. LCD 16x2 dapat menampilkan sebanyak 32 karakter yang terdiri dari 2 baris dan tiap baris dapat menampilkan 16 karakter. Dalam project ini, LCD menjadi output kalkulator digital untuk menampilkan hasil operasi hitung yang telah dilakukan.
BAB III
PERANCANGAN ALAT
3.1
Daftar Alat dan Bahan
Adapun komponen yang digunakan adalah sebagai berikut:
1. Mikrokontroler AT89C51
2. LCD 16X2
3. Keypad 4×3
3.2
Cara Kerja
Sistem
kalkulator sederhana berbasis AT89C51 bekerja dengan mengandalkan keypad
sebagai sumber masukan utama dan LCD 16×2 sebagai media keluaran.
Mikrokontroler AT89C51 secara terus-menerus melakukan pemindaian baris dan
kolom keypad untuk mendeteksi tombol yang ditekan oleh pengguna. Setiap tombol
yang terdeteksi akan diterjemahkan menjadi data berupa angka dalam aritmatika.
Data
masukan tersebut kemudian diolah oleh mikrokontroler untuk menentukan angka
pertama, operator, dan angka kedua. Setiap input yang diterima langsung
ditampilkan pada LCD menggunakan rutin pengiriman karakter, sementara posisi
penulisan karakter diatur agar tampilan sesuai dengan urutan masukan. Setelah
pengguna menekan tombol sama dengan (=), mikrokontroler menentukan jenis
operasi aritmatika yang dipilih, yaitu penjumlahan, pengurangan, perkalian,
atau pembagian.
Proses
perhitungan dilakukan menggunakan register internal mikrokontroler, kemudian
hasil perhitungan disimpan dan ditampilkan pada LCD dalam format angka. Setelah
hasil ditampilkan, sistem akan menghapus tampilan dan data yang tersimpan, lalu
kembali ke kondisi awal untuk menunggu masukan berikutnya. Dengan demikian,
sistem dapat bekerja secara berulang sebagai kalkulator sederhana berbasis
mikrokontroler AT89C51 yang mampu menerima input dari keypad dan menampilkan
hasil perhitungan pada LCD.
3.3
Diagram Blok
3.4
Flowchart
3.5
Gambar Rangkaian
3.6
Assembly Program
RS equ P1.3
EN equ P1.2
org 0000h
LJMP START
org 0003h
INT_TEMP0:
MOV A, 70h
CALL INCREMENT_CURSOR
ACALL SUM
CLR IE0
MOV R0, #0Ch
MOV A, #50h
ADD A, R0
MOV R0, A
MOV A, @R0
ACALL CONTINUECODE
org 0013h
INT_TEMP1:
MOV A, 70h
CALL INCREMENT_CURSOR
ACALL SUBTRACT
CLR IE0
MOV R0, #0Dh
MOV A, #50h
ADD A, R0
MOV R0, A
MOV A, @R0
ACALL CONTINUECODE
org 0080h
START:
MOV R4, #0h
MOV R5, #0h
MOV R6, #0h
MOV 40H, #'/'
MOV 41H, #'='
MOV 42H, #'*'
MOV 43H, #'9'
MOV 44H, #'8'
MOV 45H, #'7'
MOV 46H, #'6'
MOV 47H, #'5'
MOV 48H, #'4'
MOV 49H, #'3'
MOV 4AH, #'2'
MOV 4BH, #'1'
MOV 4CH, #'+'
MOV 4DH, #'-'
MOV 50H, #'/'
MOV 51H, #'='
MOV 52H, #'*'
MOV 53H, #9
MOV 54H, #8
MOV 55H, #7
MOV 56H, #6
MOV 57H, #5
MOV 58H, #4
MOV 59H, #3
MOV 5AH, #2
MOV 5BH, #1
MAIN:
MOV 70h, #0h
ACALL lcd_init
ROTINA:
CLR F0
SETB EA
SETB EX0
SETB EX1
SETB IT0
SETB IT1
ACALL leituraTeclado
CJNE R0, #01h, GO_ON
ACALL EQUAL_CONTA
GO_ON:
JNB F0, ROTINA
MOV A, 70h
ACALL posicionaCursor
MOV A, R4
JNZ SETSECOND_REGISTER
MOV A, R5
JNZ VALIDARCONTA
SETFIRST_REGISTER:
MOV A, #50h
ADD A, R0
MOV R0, A
MOV A, @R0
MOV R5, A
CONTINUECODE:
MOV A, R0
MOV B, #50h
SUBB A, B
MOV R0, A
MOV A, #40h
ADD A, R0
MOV R0, A
MOV A, @R0
ACALL sendCharacter
ACALL delay
JMP ROTINA
EQUAL_CONTA:
MOV A, R4
MOV B, #078h
SUBB A, B
JZ OP_MULTIPLY
MOV A, R4
MOV B, #02Fh
SUBB A, B
INC A
JZ OP_DIVIDE
MOV A, R4
MOV B, #02Dh
SUBB A, B
INC A
JZ OP_SUBTRACT
MOV A, R4
MOV B, #02Bh
SUBB A, B
INC A
JZ OP_SUM
RET
SETSECOND_REGISTER:
MOV A, #50h
ADD A, R0
MOV R0, A
MOV A, @R0
MOV R6, A
ACALL CONTINUECODE
VALIDARCONTA:
MOV A, R0
JZ DIVIDE
MOV B, #2h
SUBB A, B
JZ MULTIPLY
ACALL ROTINA
DIVIDE:
MOV R4, #'/'
MOV R0, #0h
MOV A, #50h
ADD A, R0
MOV R0, A
MOV A, @R0
ACALL CONTINUECODE
MULTIPLY:
MOV R4, #'x'
MOV R0, #2h
MOV A, #50h
ADD A, R0
MOV R0, A
MOV A, @R0
ACALL CONTINUECODE
SHOW_RESULT:
MOV A, 70h
ACALL posicionaCursor
mov A, #'='
ACALL sendCharacter
MOV A, R3
MOV B, #10
DIV AB
ADD A, #30h
ACALL sendCharacter
MOV A,B
ADD A, #30h
ACALL sendCharacter
ACALL delay
RET
OP_DIVIDE:
mov A, R5
mov B, R6
div AB
mov R3, A
ACALL SHOW_RESULT
ACALL LONG_DELAY
ACALL CLEAR_ALL
OP_MULTIPLY:
mov A, R5
mov B, R6
mul AB
mov R3, A
ACALL SHOW_RESULT
ACALL LONG_DELAY
ACALL CLEAR_ALL
OP_SUM:
mov A, R5
mov B, R6
add A, B
mov R3, A
ACALL SHOW_RESULT
ACALL LONG_DELAY
ACALL CLEAR_ALL
OP_SUBTRACT:
mov A, R5
mov B, R6
subb A, B
inc A
mov R3, A
ACALL SHOW_RESULT
ACALL LONG_DELAY
ACALL CLEAR_ALL
SUBTRACT:
MOV R4, #'-'
RETI
SUM:
MOV R4, #'+'
RETI
leituraTeclado:
MOV R0, #0
MOV P0, #0FFh
CLR P0.0
CALL colScan
JB F0, finish
SETB P0.0
CLR P0.1
CALL colScan
JB F0, finish
SETB P0.1
CLR P0.2
CALL colScan
JB F0, finish
SETB P0.2
CLR P0.3
CALL colScan
JB F0, finish
finish:
RET
colScan:
JNB P0.4, gotKey
INC R0
JNB P0.5, gotKey
INC R0
JNB P0.6, gotKey
INC R0
RET
gotKey:
SETB F0
CALL INCREMENT_CURSOR
RET
INCREMENT_CURSOR:
mov A, #0Eh
INC 70h
CALL delay
CJNE A, 70h, finish
mov 70h, #40h
RET
lcd_init:
CLR RS
CLR P1.7
CLR P1.6
SETB P1.5
CLR P1.4
SETB EN
CLR EN
CALL delay
SETB EN
CLR EN
SETB P1.7
SETB EN
CLR EN
CALL delay
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
SETB EN
CLR EN
SETB P1.6
SETB P1.5
SETB EN
CLR EN
CALL delay
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
SETB EN
CLR EN
SETB P1.7
SETB P1.6
SETB P1.5
SETB P1.4
SETB EN
CLR EN
CALL delay
RET
sendCharacter:
SETB RS
MOV C, ACC.7
MOV P1.7, C
MOV C, ACC.6
MOV P1.6, C
MOV C, ACC.5
MOV P1.5, C
MOV C, ACC.4
MOV P1.4, C
SETB EN
CLR EN
MOV C, ACC.3
MOV P1.7, C
MOV C, ACC.2
MOV P1.6, C
MOV C, ACC.1
MOV P1.5, C
MOV C, ACC.0
MOV P1.4, C
SETB EN
CLR EN
CALL delay
RET
posicionaCursor:
CLR RS
SETB P1.7
MOV C, ACC.6
MOV P1.6, C
MOV C, ACC.5
MOV P1.5, C
MOV C, ACC.4
MOV P1.4, C
SETB EN
CLR EN
MOV C, ACC.3
MOV P1.7, C
MOV C, ACC.2
MOV P1.6, C
MOV C, ACC.1
MOV P1.5, C
MOV C, ACC.0
MOV P1.4, C
SETB EN
CLR EN
CALL delay
CALL delay
RET
retornaCursor:
CLR RS
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
SETB EN
CLR EN
CLR P1.7
CLR P1.6
SETB P1.5
SETB P1.4
SETB EN
CLR EN
CALL delay
RET
clearDisplay:
CLR RS
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
SETB EN
CLR EN
CLR P1.7
CLR P1.6
CLR P1.5
SETB P1.4
SETB EN
CLR EN
CALL delay
RET
delay:
MOV R7, #50
DJNZ R7, $
RET
CLEAR_ALL:
MOV R2, #0h
MOV R3, #0h
MOV R4, #0h
MOV R5, #0h
MOV R6, #0h
MOV 70h, #0h
ACALL clearDisplay
CLR A
MOV R0, #127
ACALL CLEAR_RAM
CLEAR_RAM:
MOV @R0, A
DJNZ R0,CLEAR_RAM
LJMP START
LONG_DELAY:
MOV R7, #255
DJNZ R7, $
MOV R7, #255
DJNZ R7, $
MOV R7, #255
DJNZ R7, $
MOV R7, #255
DJNZ R7, $
RET
BAB
IV
HASIL DAN PEMBAHASAN
4.1
Hasil Implementasi Sistem
Setelah dilakukan perancangan rangkaian dan pembuatan program, kalkulator digital berbasis mikrokontroler AT89C51 berhasil dijalankan dan diuji melalui simulasi Edsim51. Hasil simulasi menunjukkan bahwa sistem dapat bekerja sesuai dengan rancangan dan perencanaan awal, mulai dari proses input keypad hingga pemberian output berupa tampilan LCD.
4.2
Pengujian Pembacaan Keypad
Pengujian
keypad pada sistem kalkulator dilakukan dengan menekan setiap tombol angka dan
operator untuk memastikan seluruh input dapat diterima dengan baik oleh
mikrokontroler. Berdasarkan hasil pengujian, metode pembacaan keypad
menggunakan teknik scanning baris dan kolom dapat berfungsi dengan baik,
sehingga setiap tombol yang ditekan dapat dikenali dan diproses sesuai dengan
fungsinya pada kalkulator.
Selain
itu, penggunaan delay dalam program berperan untuk mengurangi kesalahan
pembacaan akibat pantulan mekanik tombol (debounce). Dengan adanya delay
tersebut, input angka maupun operasi aritmatika yang dimasukkan menjadi lebih
stabil dan tidak terjadi pembacaan ganda, sehingga hasil perhitungan pada
kalkulator dapat ditampilkan dengan benar.
4.3
Pengujian Tampilan LCD
LCD
16×2 digunakan sebagai media untuk menampilkan informasi kepada pengguna pada
sistem kalkulator. Berdasarkan hasil pengujian, LCD mampu menampilkan karakter
angka, operator, serta hasil perhitungan dengan jelas sesuai dengan proses yang
sedang berjalan, seperti tampilan awal sistem, input angka dan operasi
aritmatika, serta hasil akhir perhitungan.
4.4. Pembahasan Hasil Pengujian
Berdasarkan seluruh hasil pengujian yang telah dilakukan, dapat disimpulkan bahwa sistem kalkulator berbasis mikrokontroler 8051 telah berfungsi dengan baik. Integrasi antara perangkat keras dan perangkat lunak berjalan sesuai dengan perancangan yang telah dibuat. Mikrokontroler 8051 mampu membaca input dari keypad, memproses operasi aritmatika yang diberikan, serta mengendalikan tampilan output melalui LCD 16×2.
BAB V
KESIMPULAN
Berdasarkan hasil perancangan, implementasi, dan pengujian yang telah dilakukan, dapat disimpulkan bahwa kalkulator digital berbasis mikrokontroler AT89C51 berhasil dirancang dan berfungsi dengan baik. Sistem mampu menerima input dari keypad 4×3, memproses operasi aritmatika dasar, serta menampilkan hasil perhitungan secara jelas melalui LCD 16×2. Integrasi antara perangkat keras dan perangkat lunak berjalan sesuai dengan perencanaan, sehingga alat ini dapat digunakan sebagai media pembelajaran maupun aplikasi sederhana untuk memahami prinsip kerja sistem tertanam berbasis mikrokontroler.
DAFTAR PUSTAKA
Priambodo, Y. (2005). Kalkulator Berbasis Mikrokontroler. Yogyakarta: Universitas Sanata Dharma.
Atmel Corporation. (2014). AT89C51 8-bit Microcontroller with 4K Bytes Flash Datasheet. Atmel Corporation.
Mazidi, M. A., Mazidi, J. G., & McKinlay, R. D. (2011). The 8051 Microcontroller and Embedded Systems: Using Assembly and C. Pearson Education.
gmostofabd. (2020). AT89C51 Basic Calculator Assembly Program and Proteus Simulation.GitHub Repository.Diakses dari https://github.com/gmostofabd/AT89C51_Basic_Calculator_Assembly_Proteus
Lampiran
Komentar
Posting Komentar