SISTEM BRANKAS DIGITAL BERBASIS MIKROKONTROLER 8051 MENGGUNAKAN KEYPAD, LCD, RELAY, DAN LED KELOMPOK 1 RE-2A

SISTEM BRANKAS DIGITAL BERBASIS MIKROKONTROLER 8051
MENGGUNAKAN KEYPAD, LCD, RELAY, DAN LED

Galih Dwi Permana
Firmansyah Putra Damara
Aditya Eka Pradita
Rizky Defano Fahreza
Robets Yunan Adi Chrisetya
Jurusan Teknik Elektro, Program Studi D4 - Teknologi Rekayasa Elektronika
Politeknik Negeri Semarang
Jl. Prof. Soedarto, Tembalang, Kota Semarang, Jawa Tengah
galih.43424013@mhs.polines.ac.id ; firman.43424012@mhs.polines.ac.id; adit.43424001@mhs.polines.ac.id; reza.43424024@mhs.polines.ac.id; robets.43424025@mhs.polines.ac.id.

Intisari

Keamanan merupakan aspek yang sangat penting dalam penyimpanan barang berharga. Penggunaan sistem pengamanan konvensional seperti kunci mekanik memiliki beberapa kelemahan, antara lain mudah diduplikasi serta kurang fleksibel dalam pengembangan. Oleh karena itu, pada penelitian ini dirancang sebuah sistem brankas digital berbasis mikrokontroler 8051 dengan input berupa keypad 4x4 dan output berupa LCD 16x2, dua buah relay sebagai aktuator mekanisme penguncian, serta LED sebagai indikator status sistem. Sistem bekerja dengan membaca password dari keypad, menampilkannya pada LCD, kemudian membandingkannya dengan password yang telah ditentukan. Apabila password benar maka relay akan aktif sehingga brankas terbuka, sedangkan apabila password salah relay tetap tidak aktif dan LED indikator akan menyala. Perancangan dan pengujian sistem dilakukan melalui simulasi menggunakan perangkat lunak Proteus.

Kata Kunci—Brankas digital, Mikrokontroler 8051, Keypad 4x4, LCD 16x2, Relay, LED, Proteus.

I. PENDAHULUAN

A. Latar Belakang

Perkembangan teknologi mikrokontroler memberikan kemudahan dalam perancangan sistem keamanan berbasis elektronik. Sistem keamanan digital memiliki keunggulan dibandingkan sistem mekanik, terutama dari segi fleksibilitas, kemudahan pengembangan, dan tingkat keamanan.

Salah satu penerapan sistem keamanan digital adalah sistem brankas digital. Dengan menggunakan mikrokontroler sebagai pusat kendali, sistem brankas dapat dirancang untuk menggunakan password sebagai kunci akses. Mikrokontroler 8051 dipilih karena arsitekturnya sederhana, stabil, dan banyak digunakan dalam pembelajaran sistem embedded.

B. Rumusan Masalah

Rumusan masalah dalam penelitian ini meliputi bagaimana merancang sistem brankas digital berbasis mikrokontroler 8051, bagaimana mengimplementasikan keypad sebagai media input password, serta bagaimana mengendalikan relay dan LED sebagai output sistem.

C. Batasan Masalah

Batasan masalah pada penelitian ini antara lain sistem hanya menggunakan password numerik, tidak menggunakan komunikasi jaringan atau IoT, serta perancangan dan pengujian sistem hanya dilakukan melalui simulasi menggunakan software Proteus.

D. Tujuan

Tujuan dari penelitian ini adalah merancang dan mensimulasikan sistem brankas digital berbasis mikrokontroler 8051, serta mempelajari penerapan pemrograman Assembly pada sistem embedded sederhana.

II. METODOLOGI

Metodologi penelitian dilakukan dalam beberapa tahap, yaitu studi literatur, perancangan sistem, perancangan perangkat keras, perancangan perangkat lunak, dan pengujian sistem. Studi literatur dilakukan dengan mempelajari datasheet komponen dan referensi terkait.

Perancangan perangkat keras dilakukan dengan menentukan hubungan antar komponen seperti mikrokontroler, keypad, LCD, relay, dan LED. Perancangan perangkat lunak dilakukan menggunakan bahasa Assembly 8051. Pengujian sistem dilakukan melalui simulasi menggunakan software Proteus untuk memastikan sistem bekerja sesuai dengan perancangan.

III. KAJIAN PUSTAKA

A. Mikrokontroler 8051

Mikrokontroler 8051 merupakan mikrokontroler 8-bit yang memiliki port input/output, memori internal, serta mendukung pemrograman tingkat rendah menggunakan bahasa Assembly. Mikrokontroler ini banyak digunakan dalam dunia pendidikan dan aplikasi embedded sederhana.

Gambar 1. Mikrokontroler 89C51 keluarga 8051

B. Keypad 4x4

Keypad 4x4 terdiri dari empat baris dan empat kolom yang digunakan sebagai media input. Metode scanning keypad digunakan untuk mendeteksi tombol yang ditekan dengan cara mengaktifkan baris secara bergantian dan membaca kondisi kolom.

Gambar 2. Keypad 4x4

C. LCD 16x2

LCD 16x2 berfungsi sebagai media tampilan informasi sistem. LCD ini mampu menampilkan dua baris karakter, masing-masing sebanyak 16 karakter, sehingga memudahkan pengguna dalam membaca informasi.

Gambar 2. LCD 16x2


D. Relay

Relay merupakan saklar elektromagnetik yang memungkinkan mikrokontroler mengendalikan beban dengan arus yang lebih besar. Pada System ini digunakan dua relay untuk mensimulasikan mekanisme penguncian brankas.

Gambar 4. Relay 5 kaki 5VDC

E. LED

LED digunakan sebagai indikator visual untuk menunjukkan status sistem, seperti kondisi terkunci atau terbuka. Penggunaan LED memudahkan pengguna dalam mengetahui status sistem secara langsung.

F. Resistor

Resistor digunakan sebagai pembatas arus listrik pada rangkaian, khususnya pada LED dan rangkaian driver relay, agar komponen tidak mengalami kerusakan.

G. Kapasitor

Kapasitor berfungsi untuk menstabilkan tegangan catu daya dan meredam gangguan noise pada rangkaian mikrokontroler sehingga sistem dapat bekerja lebih stabil.

H. Crystal Oscillator

Crystal oscillator digunakan sebagai sumber clock untuk mikrokontroler. Crystal menentukan kecepatan kerja mikrokontroler dan memastikan timing sistem berjalan dengan tepat.

I. Dioda

            Dioda merupakan komponen elektronika yang berfungsi untuk mengalirkan arus listrik hanya ke satu arah. Pada rangkaian brankas digital ini, dioda digunakan sebagai flyback diode atau dioda pelindung pada rangkaian relay.

J. Transistor

            Transistor merupakan komponen semikonduktor yang berfungsi sebagai penguat sinyal dan saklar elek tronik. Pada sistem brankas digital berbasis mikrokontroler 8051 ini, transistor digunakan sebagai driver relay. Penggunaan transistor diperlukan karena port input/output pada mikrokontroler 8051 memiliki keterbatasan arus keluaran, sehingga tidak mampu mengaktifkan relay secara langsung. Dengan adanya transistor, sinyal logika dari mikrokontroler dapat digunakan untuk mengendalikan arus yang lebih besar pada relay tanpa membebani port mikrokontroler.

  Dalam perancangan sistem ini, transistor bekerja pada kondisi cut-off dan saturasi, sehingga berfungsi sebagai saklar ON dan OFF. Ketika mikrokontroler memberikan logika HIGH pada basis transistor melalui resistor pembatas, transistor akan berada pada kondisi saturasi dan relay akan aktif. Sebaliknya, ketika logika LOW diberikan, transistor akan berada pada kondisi cut-off sehingga relay tidak aktif. Dengan demikian, transistor berperan penting dalam menjamin kerja sistem yang aman dan andal, khususnya pada rangkaian aktuator.

Gambar 5. Resistor, Dioda, Transistor, Kapasitor, LED, Crystal

 

 

 

K. Diagram Blok




Gambar diagram blok sistem brankas digital berbasis mikrokontroler 8051
 

L. Diagram Alir




Gambar diagram alir (flowchart) sistem brankas digital.

 

M. Gambar Rangkaian

            Gambar rangkaian menggunakan software proteus

 


N. Program

            Program Bahasa assm dan di compile di edsim51.

ORG 0000H

SJMP START

; ================= PIN DEFINITIONS =================

RS     EQU P3.2

RW     EQU P3.3

EN     EQU P3.4

BUZZER EQU P3.6    ; BUZZER untuk error indicator

RELAY  EQU P3.7

; ================= MEMORY LOCATIONS =================

BUF0   EQU 30H

BUF1   EQU 31H

BUF2   EQU 32H

BUF3   EQU 33H

COUNT  EQU 34H

; ================= PROGRAM START =================

START:

    MOV P1,#00001111B   ; Setup P1: Row=output(4-7), Col=input(0-3)

    MOV P2,#00H         ; Clear P2 (LCD data port)

    SETB RELAY          ; Relay NC (normally closed) - Transistor OFF

    CLR BUZZER          ; Buzzer OFF saat start

    MOV COUNT,#00H      ; Reset counter

    ACALL LCD_INIT      ; Initialize LCD

    ACALL LCD_CLEAR     ; Clear LCD and buffers

   

MAIN:

    ACALL SCAN_KEYPAD   ; Continuously scan keypad

    SJMP MAIN

; ================= LCD FUNCTIONS =================

LCD_INIT:

    ACALL DELAY_LONG    ; Wait for LCD power-up

    MOV A,#38H          ; 8-bit mode, 2 lines, 5x7 font

    ACALL LCD_CMD

    ACALL DELAY_LONG

    MOV A,#0CH          ; Display ON, cursor OFF

    ACALL LCD_CMD

    ACALL DELAY_LONG

    MOV A,#01H          ; Clear display

    ACALL LCD_CMD

    ACALL DELAY_LONG

    MOV A,#06H          ; Entry mode: increment cursor

    ACALL LCD_CMD

    ACALL DELAY_LONG

    RET

LCD_CMD:

    CLR RS              ; RS=0 for command

    CLR RW              ; RW=0 for write

    MOV P2,A            ; Send command to LCD

    SETB EN             ; Enable pulse

    ACALL DELAY

    CLR EN

    ACALL DELAY

    RET

LCD_DATA:

    SETB RS             ; RS=1 for data

    CLR RW              ; RW=0 for write

    MOV P2,A            ; Send data to LCD

    SETB EN             ; Enable pulse

    ACALL DELAY

    CLR EN

    ACALL DELAY

    RET

LCD_CLEAR:

    MOV A,#01H          ; Clear display command

    ACALL LCD_CMD

    ACALL DELAY_LONG

    MOV COUNT,#00H      ; Reset counter

    MOV BUF0,#00H       ; Clear buffers

    MOV BUF1,#00H

    MOV BUF2,#00H

    MOV BUF3,#00H

    SETB RELAY          ; Relay NC (normally closed) - Transistor OFF

    CLR BUZZER          ; Matikan buzzer saat clear

    RET

; ================= KEYPAD SCANNING =================

; Keypad Layout 4x4:

; [7] [8] [9] [:]

; [4] [5] [6] [x]

; [1] [2] [3] [-]

; [C] [0] [=] [+]

;

; ROW (Output - Active LOW):

; P1.7 = Row A (Row 1)

; P1.6 = Row B (Row 2)

; P1.5 = Row C (Row 3)

; P1.4 = Row D (Row 4)

; COLUMN (Input - Pull-up):

; P1.3 = Col 1

; P1.2 = Col 2

; P1.1 = Col 3

; P1.0 = Col 4

SCAN_KEYPAD:

    ; Scan Row A [7] [8] [9] [:]

    MOV P1,#01111111B   ; RowA=0, Others=1

    ACALL DELAY_SHORT

    JNB P1.3,KEY_7      ; Row A, Col 1

    JNB P1.2,KEY_8      ; Row A, Col 2

    JNB P1.1,KEY_9      ; Row A, Col 3

    JNB P1.0,IGNORE     ; Row A, Col 4 (:) - ignored

    ; Scan Row B [4] [5] [6] [x]

    MOV P1,#10111111B   ; RowB=0, Others=1

    ACALL DELAY_SHORT

    JNB P1.3,KEY_4      ; Row B, Col 1

    JNB P1.2,KEY_5      ; Row B, Col 2

    JNB P1.1,KEY_6      ; Row B, Col 3

    JNB P1.0,IGNORE     ; Row B, Col 4 (x) - ignored

    ; Scan Row C [1] [2] [3] [-]

    MOV P1,#11011111B   ; RowC=0, Others=1

    ACALL DELAY_SHORT

    JNB P1.3,KEY_1      ; Row C, Col 1

    JNB P1.2,KEY_2      ; Row C, Col 2

    JNB P1.1,KEY_3      ; Row C, Col 3

    JNB P1.0,IGNORE     ; Row C, Col 4 (-) - ignored

    ; Scan Row D [C] [0] [=] [+]

    MOV P1,#11101111B   ; RowD=0, Others=1

    ACALL DELAY_SHORT

    JNB P1.3,KEY_ON     ; Row D, Col 1 (C/ON)

    JNB P1.2,KEY_0      ; Row D, Col 2

    JNB P1.1,KEY_ENTER  ; Row D, Col 3 (=)

    JNB P1.0,IGNORE     ; Row D, Col 4 (+) - ignored

IGNORE:

    RET

; ================= KEY HANDLERS =================

KEY_1:  MOV A,#'1' 

        AJMP STORE_KEY

KEY_2:  MOV A,#'2' 

        AJMP STORE_KEY

KEY_3:  MOV A,#'3' 

        AJMP STORE_KEY

KEY_4:  MOV A,#'4' 

        AJMP STORE_KEY

KEY_5:  MOV A,#'5' 

        AJMP STORE_KEY

KEY_6:  MOV A,#'6' 

        AJMP STORE_KEY

KEY_7:  MOV A,#'7' 

        AJMP STORE_KEY

KEY_8:  MOV A,#'8' 

        AJMP STORE_KEY

KEY_9:  MOV A,#'9' 

        AJMP STORE_KEY

KEY_0:  MOV A,#'0' 

        AJMP STORE_KEY

KEY_ON:

    ACALL WAIT_RELEASE

    ACALL LCD_CLEAR

    RET

KEY_ENTER:

    ACALL WAIT_RELEASE

    ACALL CHECK_PASSWORD

    RET

; ================= STORE KEY INPUT =================

STORE_KEY:

    PUSH ACC            ; Save accumulator

    ACALL WAIT_RELEASE  ; Wait for key release

    POP ACC             ; Restore accumulator

    ; Check if buffer is full

    MOV R0,COUNT

    CJNE R0,#04H,STORE_OK

    RET                 ; Buffer full, ignore input 

STORE_OK:

    ; Store in appropriate buffer

    CJNE R0,#00H,CHK1

    MOV BUF0,A

    SJMP DISPLAY_CHAR

CHK1:

    CJNE R0,#01H,CHK2

    MOV BUF1,A

    SJMP DISPLAY_CHAR

CHK2:

    CJNE R0,#02H,CHK3

    MOV BUF2,A

    SJMP DISPLAY_CHAR

CHK3:

    MOV BUF3,A   

DISPLAY_CHAR:

    ACALL LCD_DATA      ; Display character on LCD

    INC COUNT           ; Increment counter

    RET

; ================= PASSWORD CHECK =================

; Default password: 1234

; Cara mengubah password:

; Ganti '1','2','3','4' dengan angka yang diinginkan

; Contoh untuk password 5678:

;   CJNE A,#'5',FAIL

;   MOV A,BUF1

;   CJNE A,#'6',FAIL

;   MOV A,BUF2

;   CJNE A,#'7',FAIL

;   MOV A,BUF3

;   CJNE A,#'8',FAIL

;

; RELAY LOGIC dengan NPN Transistor:

; P3.7 = LOW (0V)  -> Transistor OFF -> Relay NC (Normally Closed)

; P3.7 = HIGH (5V) -> Transistor ON  -> Relay NO (Normally Open)

;

; BUZZER LOGIC dengan NPN Transistor:

; P3.6 = LOW (0V)  -> Transistor OFF -> Buzzer OFF

; P3.6 = HIGH (5V) -> Transistor ON  -> Buzzer ON TERUS (sampai password benar atau clear)

CHECK_PASSWORD:

    ; Check if 4 digits entered

    MOV A,COUNT

    CJNE A,#04H,FAIL 

    ; Check password: 1234

    MOV A,BUF0

    CJNE A,#'1',FAIL    ; Digit 1 (ubah '1' untuk ganti password)

    MOV A,BUF1

    CJNE A,#'2',FAIL    ; Digit 2 (ubah '2' untuk ganti password)

    MOV A,BUF2

    CJNE A,#'3',FAIL    ; Digit 3 (ubah '3' untuk ganti password)

    MOV A,BUF3

    CJNE A,#'4',FAIL    ; Digit 4 (ubah '4' untuk ganti password)   

SUCCESS:

    CLR RELAY           ; P3.7 = LOW -> Transistor ON -> Relay NO (Open)

    CLR BUZZER          ; P3.6 = LOW -> Buzzer OFF (password benar)

    MOV A,#0C0H         ; Move to second line

    ACALL LCD_CMD

    MOV A,#'O'          ; Display 'OK'

    ACALL LCD_DATA

    MOV A,#'K'

    ACALL LCD_DATA

    RET

FAIL:

    SETB RELAY          ; P3.7 = HIGH -> Transistor OFF -> Relay NC (Closed)

    SETB BUZZER         ; *** P3.6 = HIGH -> Buzzer ON TERUS (password salah) ***

    MOV A,#0C0H         ; Move to second line

    ACALL LCD_CMD

    MOV A,#'E'          ; Display 'ERROR'

    ACALL LCD_DATA

    MOV A,#'R'

    ACALL LCD_DATA

    MOV A,#'R'

    ACALL LCD_DATA

    RET

; ================= DELAY FUNCTIONS =================

WAIT_RELEASE:

    ACALL DELAY_LONG    ; Debounce delay

WR_LOOP:

    MOV P1,#00001111B   ; Setup for reading (all rows HIGH)

    MOV A,P1

    ANL A,#00001111B    ; Mask column bits (P1.0-P1.3 = columns)

    CJNE A,#00001111B,WR_LOOP ; Wait until all keys released

    ACALL DELAY_LONG    ; Debounce delay

    RET

DELAY:

    MOV R7,#50

D1: DJNZ R7,D1

    RET

DELAY_SHORT:

    MOV R7,#10

DS: DJNZ R7,DS

    RET

DELAY_LONG:

    MOV R6,#10

DL2:MOV R7,#255

DL1:DJNZ R7,DL1

    DJNZ R6,DL2

    RET

END

IV. HASIL DAN PEMBAHASAN

Pengujian sistem dilakukan melalui simulasi pada software Proteus. Pengujian meliputi pengujian input keypad, tampilan LCD, serta respon relay dan LED.

Hasil simulasi menunjukkan bahwa sistem mampu membaca input password dengan benar. Relay akan aktif ketika password sesuai, sedangkan LED indikator menunjukkan status sistem dengan jelas.

V. KESIMPULAN

Berdasarkan hasil perancangan dan pengujian melalui simulasi Proteus, dapat disimpulkan bahwa sistem brankas digital berbasis mikrokontroler 8051 berhasil dirancang dan dapat bekerja sesuai dengan perancangan.

VI. REFERENSI

https://circuitdigest.com/microcontroller-projects/keypad-interfacing-with-8051-microcontroller
https://belajarmikrokontroller2022.blogspot.com/2023/01/sistem-monitoring-ph-dan-kekeruhan.html
https://app.diagrams.net/
https://ww1.microchip.com/downloads/en/DeviceDoc/doc4301.pdf
https://circuitdigest.com/article/16x2-lcd-display-module-pinout-datasheet

VII. Lampiran

LINK PPT

LINK YOUTUBE


Komentar

Postingan populer dari blog ini

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

RANCANG BANGUN KALKULATOR DIGITAL OPERASI KALI DAN BAGI BERBASIS MIKROKONTROLER AT89C51

SISTEM LAMPU LALU LINTAS PERTIGAAN BERBASIS AT89s51 DENGAN SENSOR INFRAMERAH