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