RANCANG BANGUN KALKULATOR DIGITAL OPERASI KALI DAN BAGI BERBASIS MIKROKONTROLER AT89C51

 RANCANG BANGUN KALKULATOR DIGITAL OPERASI KALI DAN BAGI BERBASIS MIKROKONTROLER AT89C51


Kelompok 3 - RE 2D

Deva Kristiano Wibowo 1 , Muhammad Ady Pasha 2 , Robiatu Salamah  , Wahyu Indra Saputra 4






            E-mail :  deva.43424306@mhs.polines.ac.id ,  2  pasha.43424314@mhs.polines.ac.id  ,
  amah.43424324@mhs.polines.ac.id  ,  4  wahyu.43424325@mhs.polines.ac.id


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

A black rectangular object with white text

AI-generated content may be incorrect.

                           

    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

PPT

https://www.canva.com/design/DAG6T6Fqjbk/m1U-vjnGlV1eqITWTpFLsw/edit?utm_content=DAG6T6Fqjbk&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton

Video


Komentar

Postingan populer dari blog ini

AIR TEMPERATURE SWITCHING AND MONITORING SYSTEM DENGAN MENGGUNAKAN SENSOR LM35 BERBASIS ATMEGA 16

SISTEM LAMPU LALU LINTAS PERTIGAAN BERBASIS AT89s51 DENGAN SENSOR INFRAMERAH