KALKULATOR SEDERHANA MENGGUNAKAN KEYPAD

 KALKULATOR SEDERHANA MENGGUNAKAN KEYPAD

Jurusan Teknik Elektro Program Studi Teknik Elektronika

Politeknik Negeri Seamarang 

 

Disusun Oleh:

Amelia Putri Paramitha
Hendy Frizal I.S
Puput Novianti
Rafa Krisna Mughni A.


1.1. Pengertian 

Kalkulator adalah alat yang sangat penting dalam kehidupan sehari-hari untuk melakukan perhitungan matematika dengan cepat dan akurat. Dalam dunia teknologi, perangkat seperti kalkulator memberikan dasar untuk memahami interaksi antara perangkat keras dan perangkat lunak. Pembuatan kalkulator berbasis keypad adalah salah satu proyek yang memungkinkan penerapan langsung konsep-konsep tersebut, sekaligus memberikan pemahaman mendalam mengenai pengolahan input dan output.


1.2 Latar Belakang

Perangkat kalkulator sederhana ini menggunakan keypad sebagai alat input data dan layar untuk menampilkan hasil perhitungan. Melalui proyek ini, pengembang dapat memahami cara kerja perangkat keras seperti mikrokontroler, keypad, dan modul layar, serta bagaimana perangkat ini berkomunikasi menggunakan kode program.  

Proyek kalkulator berbasis keypad memberikan pengalaman langsung dalam bekerja dengan mikrokontroler, yang merupakan komponen inti dari banyak perangkat embedded. Mikrokontroler seperti Arduino atau Raspberry Pi diprogram untuk membaca input dari keypad, memproses data, dan menampilkan hasil pada layar LCD


1.3 Rumusan Masalah

1. Bagaimana cara merancang sistem kalkulator berbasis keypad yang mampu menerima input angka dan operasi aritmatika secara akurat?

2. Bagaimana algoritma yang tepat untuk memproses input dari keypad dan melakukan operasi matematika dasar (penjumlahan, pengurangan, perkalian, dan pembagian)?  

3. Bagaimana cara mengintegrasikan komponen perangkat keras seperti keypad, mikrokontroler, dan LCD tampilan untuk membangun kalkulator yang fungsional?


1.4 Tujuan

- Membuat perangkat kalkulator yang dapat melakukan operasi matematika dasar menggunakan keypad sebagai alat input.  

- Memahami cara kerja mikrokontroler dalam mengolah input dan mengontrol output.  

- Melatih kemampuan logika pemrograman dan algoritma dalam menangani masukan pengguna dan menghasilkan keluaran yang sesuai.  

- Mengembangkan keterampilan teknis dalam merancang dan mengimplementasikan ke perangkat. 


1.5 Pengeretian Keypad Numpad Membran

Keypad numpad membran adalah jenis keypad yang menggunakan teknologi membran untuk mendeteksi input, biasanya dirancang menyerupai layout numerik pada keyboard komputer (dengan angka 0-9, tanda operasi matematika, dan tombol tambahan seperti Enter atau Clear). Keypad ini memiliki permukaan fleksibel yang terdiri dari beberapa lapisan untuk mendeteksi tekanan tombol.


1.6 Diagram Alir


1.7 Program

; AssemblerApplication2.asm

;

; Created: 10/12/2024 20:18:48

; Author : Axioo Hype 10


.include "m328pdef.inc"      ; Menyertakan definisi untuk ATmega328P


; ==========================================================================

; Inisialisasi Port dan Register

; ==========================================================================

ldi     r16, 0xFF            ; Set semua pin untuk LCD (PORTC) dan keypad (PORTB)

out     DDRC, r16            ; Set PORTC sebagai output (LCD)

ldi     r16, 0x00            ; Set PORTB sebagai input (keypad)

out     DDRB, r16


ldi     r17, 0x00            ; Menyimpan key yang ditekan

ldi     r18, 0x00            ; Menyimpan operasi (+,-,x,/)

ldi     r19, 0x00            ; Menyimpan angka pertama (a)

ldi     r20, 0x00            ; Menyimpan angka kedua (b)

ldi     r21, 0x00            ; Menyimpan hasil (result)


; ==========================================================================

; Fungsi untuk membaca keypad

; ==========================================================================

key_scan:

    in      r17, PINB         ; Membaca input dari PINB (keypad)

    ret


; ==========================================================================

; Fungsi untuk menampilkan hasil di LCD

; ==========================================================================

display_lcd:

    ; Implementasi untuk menampilkan hasil di LCD

    ; Misalnya menggunakan fungsi I2C untuk menampilkan karakter

    ret


; ==========================================================================

; Fungsi untuk memeriksa operasi dan melakukan kalkulasi

; ==========================================================================

cal_op:

    ; Keypad input akan diproses sesuai tombol yang ditekan

    ; Misalnya tombol untuk operasi adalah 0x0D (Tambah), 0x0C (Kurang), 0x0B (Kali), 0x0A (Bagi)

    cpi     r17, 0x0D          ; Tombol tambah (0x0D)

    breq    add_op

    cpi     r17, 0x0C          ; Tombol kurang (0x0C)

    breq    sub_op

    cpi     r17, 0x0B          ; Tombol kali (0x0B)

    breq    mul_op

    cpi     r17, 0x0A          ; Tombol bagi (0x0A)

    breq    div_op

    cpi     r17, 0x0E          ; Tombol eksekusi (0x0E)

    breq    exec_op

    ret


; ==========================================================================

; Menangani Operasi

; ==========================================================================

add_op:

    ldi     r18, '+'           ; Set operasi tambah

    ret


sub_op:

    ldi     r18, '-'           ; Set operasi kurang

    ret


mul_op:

    ldi     r18, 'x'           ; Set operasi kali

    ret


div_op:

    ldi     r18, '/'           ; Set operasi bagi

    ret


; ==========================================================================

; Eksekusi Operasi

; ==========================================================================

exec_op:

    ; Eksekusi operasi sesuai dengan operasi yang dipilih

    cpi     r18, '+'           ; Jika operasi tambah

    breq    add_exec

    cpi     r18, '-'           ; Jika operasi kurang

    breq    sub_exec

    cpi     r18, 'x'           ; Jika operasi kali

    breq    mul_exec

    cpi     r18, '/'           ; Jika operasi bagi

    breq    div_exec

    ret


; ==========================================================================

; Eksekusi Perhitungan

; ==========================================================================

add_exec:

    add     r19, r20           ; a + b

    mov     r21, r19           ; Simpan hasil ke r21

    rjmp    display_lcd


sub_exec:

    sub     r19, r20           ; a - b

    mov     r21, r19           ; Simpan hasil ke r21

    rjmp    display_lcd


mul_exec:

    mul     r19, r20           ; a * b

    mov     r21, r0            ; Ambil hasil dari register r0

    rjmp    display_lcd


div_exec:

    ; Pembagian a / b (dengan pembulatan atau cast ke integer jika diperlukan)

    ; Misalnya, hanya menampilkan hasil bulat

    ldi     r22, 0             ; Pembagian belum diimplementasi (ini placeholder)

    rjmp    display_lcd


; ==========================================================================

; Fungsi cal_run (Proses perhitungan)

; ==========================================================================

cal_run:

    ; Lakukan pengecekan operasi dan perhitungan

    ; Misalnya, kita perlu menampilkan angka pertama, operasi, angka kedua, dan hasilnya.

    ; Anda dapat menyesuaikan fungsi display_lcd agar bisa menampilkan hasil sesuai kebutuhan.

    rjmp    display_lcd        ; Panggil fungsi untuk menampilkan hasil


; ==========================================================================

; Program Utama

; ==========================================================================

main:

    rjmp    key_scan           ; Mulai scan tombol

    rjmp    cal_op             ; Panggil fungsi untuk mengecek operasi

    rjmp    cal_run            ; Jalankan kalkulasi dan tampilkan hasil


1.8 Link PPT

https://www.canva.com/design/DAGY53l6FuE/U8vlvq7xU1WsUj3vqR_h7g/edit?utm_content=DAGY53l6FuE&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton


 

Komentar

Postingan populer dari blog ini

SISTEM PEMANTAUAN SUHU DAN KELEMBABAN PADA SUATU RUANGAN MENGGUNAKAN SENSOR DHT22 BERBASIS MIKROKONTROLLER ARDUINO UNO ATMEGA328P

SISTEM LAMPU PENERANGAN JALAN OTOMATIS DENGAN SENSOR LDR BERBASIS ATMega8535

SISTEM KONVEYOR OTOMATIS DENGAN SENSOR INFRARED DAN KONTROL MANUAL