Counter 0-99 Berbasis ATMega8535
Counter
0-99 Berbasis ATMega8535
Dosen Pengampu :
Dr. Samuel Beta Kuntardjo,
Ing.Tech., M.T.
Disusun Oleh :
1. Ahmad Faruq 4.34.24.1.01
2.Ghaniyu Annuur
4.34.24.1.12
3.Hafif Rizky F 4.34.24.1.13
4. Rizki Widiyanto
4.34.24.1.24
5.Taufan Widyadhana
4.34.24.1.25
PROGRAM STUDI TEKNIK ELEKTRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2025
Kata
Pengantar
Puji dan syukur kami panjatkan ke
hadirat Tuhan Yang Maha Esa, atas rahmat dan karunia-Nya sehingga laporan
praktikum ini yang berjudul "Counter 0-999 Berbasis ATMega8535"
dapat diselesaikan dengan baik.
Laporan ini disusun sebagai salah
satu tugas praktikum mata kuliah Mikrokontroler. Dalam proyek ini, kami
merancang dan mengimplementasikan sistem penghitung digital (counter) yang
dapat menampilkan angka 0 hingga 999 menggunakan seven-segment display, dengan
mikrokontroler ATMega8535 sebagai pengendali utama sistem.
Tujuan dari praktikum ini adalah
untuk meningkatkan pemahaman mahasiswa tentang penggunaan mikrokontroler dalam
aplikasi nyata, khususnya dalam menciptakan sistem penghitung digital yang
akurat dan efisien. Kami berharap laporan ini dapat memberikan manfaat serta
menjadi referensi bagi pengembangan teknologi serupa di masa depan.
Kami menyadari bahwa dalam
penyusunan laporan ini masih terdapat kekurangan. Oleh karena itu, kami sangat
mengharapkan kritik dan saran yang membangun untuk perbaikan di masa mendatang.
Kami mengucapkan terima kasih
kepada dosen pembimbing, laboran, serta rekan-rekan yang telah memberikan
bimbingan dan dukungan selama proses praktikum ini. Semoga laporan ini dapat
memberikan kontribusi positif bagi pembaca sekalian.
I.
PENDAHULUAN
1.1
Latar Belakang
Sistem
antrian merupakan bagian penting dalam pelayanan publik seperti rumah sakit,
bank, dan kantor pemerintahan. Pengelolaan antrian yang baik dapat meningkatkan
efisiensi pelayanan dan kepuasan pelanggan. Namun, sistem antrian manual yang
masih banyak digunakan memiliki kelemahan seperti rentan kesalahan, membutuhkan
banyak tenaga kerja, dan dapat menimbulkan ketidakadilan dalam urutan
pelayanan.
Perkembangan teknologi elektronika
memberikan solusi melalui sistem otomasi berbasis mikrokontroler.
Mikrokontroler 8051 dipilih karena memiliki arsitektur yang sederhana, mudah
diprogramkan, harga terjangkau, dan ketersediaan komponen yang melimpah.
Implementasi sistem penghitung nomor antrian otomatis berbasis mikrokontroler
8051 dapat menampilkan nomor antrian secara digital, memberikan kontrol yang
mudah melalui push button, serta memastikan urutan pelayanan yang terorganisir.
Proyek ini bertujuan untuk
menghasilkan prototype sistem penghitung nomor antrian yang dapat mengurangi
beban kerja petugas, meminimalisir kesalahan, dan meningkatkan kualitas
pelayanan secara keseluruhan.
1.2
Rumusan Masalah
·
Bagaimana
merancang sistem penghitung nomor antrian otomatis menggunakan mikrokontroler
8051?
·
Bagaimana
mengimplementasikan sistem kontrol untuk pengaturan nomor antrian (increment,
decrement, dan reset)?
·
Bagaimana
menampilkan nomor antrian secara real-time pada display 7-segment?
1.3
Tujuan
- Merancang dan membuat sistem penghitung nomor
antrian otomatis berbasis mikrokontroler 8051
- Mengimplementasikan sistem kontrol antrian
menggunakan push button
- Menampilkan nomor antrian pada display 7-segment
2 digit (range 0-30)
II. METODOLOGI
2.1
Alat dan Bahan
2.1.1
Perangkat Keras (Hardware)
1. Mikrokontroler
Intel 8051 (1 unit)
2. LCD
16x2 (LCD 1602) dengan backlight hijau (1 unit)
3. Push
Button 12x12x5mm (3 unit)
·
Push Button UP
·
Push Button DOWN
·
Push Button RESET
4. Potensiometer
10kΩ (untuk kontras LCD) (1 buah)
5. Resistor
10kΩ (untuk pull-up button) (3 buah)
6. Kapasitor
33pF (2 buah)
7. Kristal
Osilator 12 MHz (1 buah)
8. Catu
Daya 5V DC
9. Project
Board / PCB
10. Kabel
jumper secukupnya
2.1.2
Perangkat Lunak (Software)
1. Edsim
- untuk menulis dan mengcompile program assembly
2. Proteus
ISIS - untuk simulasi rangkaian (opsional)
2.2
Metode Perancangan
2.2.1
Perancangan Hardware
Perancangan
hardware sistem counter antrian ini terdiri dari beberapa tahap:
a.
Rangkaian Mikrokontroler 8051
Mikrokontroler
8051 dikonfigurasi dengan rangkaian minimum system yang meliputi:
·
Kristal osilator 12 MHz dihubungkan ke pin XTAL1 (pin
19) dan XTAL2 (pin 18)
·
Dua kapasitor 33pF dipasang pada masing-masing kaki
kristal ke ground
·
Pin RST (pin 9) dihubungkan ke tombol reset dengan
resistor pull-down
·
Pin EA (pin 31) dihubungkan ke VCC untuk menggunakan
memori program internal
b.
Rangkaian Display LCD 1602
LCD
16x2 (1602) dipasang dengan konfigurasi sebagai berikut:
·
Pin VSS (pin 1) dihubungkan ke ground
·
Pin VDD (pin 2) dihubungkan ke VCC +5V
·
Pin V0 (pin 3) dihubungkan ke potensiometer 10kΩ untuk
pengaturan kontras
·
Pin RS (Register Select - pin 4) dihubungkan ke P2.0
·
Pin RW (Read/Write - pin 5) dihubungkan ke ground
(mode write)
·
Pin E (Enable - pin 6) dihubungkan ke P2.1
·
Pin D4-D7 (pin 11-14) dihubungkan ke P0.4-P0.7 (mode 4-bit)
·
Pin A (Anode backlight - pin 15) dihubungkan ke VCC
melalui resistor 220Ω
·
Pin K (Cathode backlight - pin 16) dihubungkan ke
ground
c.
Rangkaian Push Button
Tiga
push button dipasang dengan konfigurasi active-low:
·
Push Button UP dihubungkan ke P1.0
·
Push Button DOWN dihubungkan ke P1.1
·
Push Button RESET dihubungkan ke P1.2
·
Setiap button dilengkapi resistor pull-up 10kΩ ke VCC
·
Saat ditekan, pin input terhubung ke ground (logika 0)
2.2.2
Perancangan Software
Perancangan
software dilakukan dengan bahasa assembly 8051 mengikuti algoritma berikut:
a.
Inisialisasi Sistem
·
Mengatur nilai awal counter = 0
·
Mengkonfigurasi pin button sebagai input (set HIGH)
·
Menginisialisasi LCD 1602 (mode 4-bit, 2 baris, font
5x8)
·
Menampilkan pesan awal pada LCD
b.
Program Loop Utama
·
Membaca status ketiga push button
·
Mengupdate nilai counter sesuai button yang ditekan
·
Mengkonversi nilai counter ke format ASCII
·
Menampilkan nomor antrian pada LCD dengan format yang
jelas
c.
Fungsi Pembacaan Button
·
Implementasi debouncing dengan delay 20ms untuk
menghindari bouncing
·
Deteksi penekanan button dengan logika active-low
·
Menunggu button dilepas sebelum melanjutkan proses
d.
Fungsi Operasi Counter
·
Count UP: menambah nilai counter +1 (maksimal 30)
·
Count DOWN: mengurangi nilai counter -1 (minimal 0)
·
Reset: mengatur nilai counter kembali ke 0
e.
Fungsi Display LCD
·
Inisialisasi LCD dengan perintah setup mode 4-bit
·
Fungsi untuk mengirim perintah (command) ke LCD
·
Fungsi untuk mengirim data (karakter) ke LCD
·
Fungsi untuk mengatur posisi kursor
·
Fungsi untuk clear display dan return home
·
Konversi nilai counter ke format string untuk
ditampilkan
2.3
Cara Kerja Sistem
1. Tahap
Inisialisasi: Saat sistem dinyalakan, mikrokontroler melakukan
inisialisasi LCD dan mengatur counter ke nilai 0. LCD menampilkan judul sistem
di baris pertama (misalnya "NOMOR ANTRIAN") dan nomor antrian
"00" di baris kedua.
2. Tahap
Operasi Normal:
o
Sistem secara kontinyu membaca status ketiga push
button
o
Jika tombol UP ditekan, nilai counter bertambah 1
(maksimal 30)
o
Jika tombol DOWN ditekan, nilai counter berkurang 1
(minimal 0)
o
Jika tombol RESET ditekan, nilai counter kembali ke 0
o
Setiap perubahan nilai langsung ditampilkan pada LCD
3. Tahap
Konversi: Nilai counter dikonversi menjadi format string ASCII
untuk ditampilkan pada LCD dengan format dua digit (contoh: 05, 12, 30).
4. Tahap
Tampilan:
o
LCD baris pertama menampilkan label "NOMOR
ANTRIAN:" atau "QUEUE NUMBER:"
o
LCD baris kedua menampilkan nilai counter dengan
format center atau left-aligned
o
Update display dilakukan setiap kali ada perubahan
nilai counter
o
LCD backlight tetap menyala untuk kemudahan pembacaan
2.4
Pengujian Sistem
Pengujian
dilakukan melalui beberapa tahap:
1. Pengujian
Hardware: Memastikan semua komponen terpasang dengan benar dan
sistem dapat menyala
2. Pengujian
Fungsi Dasar:
o
Menguji tombol UP dari 0 sampai 30
o
Menguji tombol DOWN dari 30 sampai 0
o
Menguji tombol RESET di berbagai nilai counter
3. Pengujian
Batas Nilai:
o
Memastikan counter tidak melebihi 30 saat tombol UP
ditekan terus
o
Memastikan counter tidak kurang dari 0 saat tombol
DOWN ditekan terus
4. Pengujian
Display:
o
Memverifikasi inisialisasi LCD berjalan dengan baik
o
Memastikan setiap angka 0-30 tampil dengan jelas dan
terbaca
o
Memeriksa kontras dan brightness LCD
o
Memastikan tidak ada karakter yang corrupt atau tidak
terbaca
o
Menguji kecepatan update display saat nilai berubah
5. Pengujian
Stabilitas: Menjalankan sistem dalam waktu lama untuk memastikan
tidak ada error atau hang.
III.KAJIAN
PUSTAKA
1) Komponen
Utama
1. INTEL
8051
2. Push
Button
3. LCD
1602
2) Blok
Diagram
3) Flowchart
4)
Program
;=========================================
;
Timer-Counter dengan Push Button Up/Down/Reset
;===
Deklarasi variabel ===
counter
equ 30h ; nilai counter (0-30)
puluhan
equ 31h ; digit puluhan
satuan equ 32h
; digit satuan
;===
Deklarasi port dan bit ===
posB equ P3.6
; dekoder posisi 7 segmen digit kiri (puluhan)
posA equ P3.5
; dekoder posisi 7 segmen digit kanan (satuan)
tampil equ P0
; luaran tampilan 7 segmen
btn_up equ P1.0
; tombol UP (aktif LOW)
btn_dn equ P1.1
; tombol DOWN (aktif LOW)
btn_rst
equ P1.2 ; tombol RESET (aktif LOW)
;=========================================
;===
Program Utama ===
ORG
00h ; alamat awal program
mulai:
MOV
counter, #00h ; inisialisasi
counter = 0
SETB btn_up ; set tombol UP sebagai input (HIGH
default)
SETB btn_dn ; set tombol DOWN sebagai input
SETB btn_rst ; set tombol RESET sebagai input
loop_utama:
ACALL cek_button ; cek tombol up/down/reset
ACALL konversi ; konversi counter ke puluhan dan
satuan
ACALL tampil_7seg ; tampilkan ke 7 segmen
SJMP loop_utama ; ulang terus
;=========================================
;===
Sub Program: Cek Tombol ===
cek_button:
; --- Tombol UP ---
JB
btn_up, cek_down ; jika HIGH,
lanjut cek tombol DOWN
ACALL debounce
JB
btn_up, cek_down
ACALL count_up
wait_up:
JNB
btn_up, wait_up ; tunggu
tombol dilepas
ACALL debounce
SJMP cek_exit
cek_down:
; --- Tombol DOWN ---
JB
btn_dn, cek_reset ; jika HIGH,
lanjut cek tombol RESET
ACALL debounce
JB
btn_dn, cek_reset
ACALL count_down
wait_down:
JNB
btn_dn, wait_down ; tunggu
tombol dilepas
ACALL debounce
SJMP cek_exit
cek_reset:
; --- Tombol RESET ---
JB
btn_rst, cek_exit ; jika HIGH,
tidak ditekan
ACALL debounce
JB
btn_rst, cek_exit
MOV
counter, #00h ; reset
nilai counter ke 0
wait_rst:
JNB
btn_rst, wait_rst ; tunggu
tombol dilepas
ACALL debounce
cek_exit:
RET
;=========================================
;===
Sub Program: Count UP / DOWN ===
;
-- Count UP (max 30)
count_up:
MOV A,
counter
CJNE A, #30, lanjut_up
RET
lanjut_up:
INC counter
RET
;
-- Count DOWN (min 0)
count_down:
MOV A,
counter
JZ
stop_down
DEC
counter
stop_down:
RET
;=========================================
;===
Sub Program: Delay (debounce & display) ===
;
-- Debounce delay (~20ms @12MHz)
debounce:
MOV
R7, #50
deb1:
MOV
R6, #200
deb2:
DJNZ R6, deb2
DJNZ R7, deb1
RET
;
-- Penunda waktu untuk multiplexing
tunda:
MOV R7, #25
tunda1:
MOV R6, #25
tunda2:
NOP
DJNZ R6, tunda2
DJNZ R7, tunda1
RET
;=========================================
;===
Sub Program: Konversi dan Tampilan ===
;
-- Konversi counter ke puluhan dan satuan
konversi:
MOV A,
counter
MOV B,
#10
DIV AB
MOV
puluhan, A ; hasil bagi =
puluhan
MOV
satuan, B ; sisa = satuan
RET
;
-- Tampilan ke 7 segmen (2 digit multiplex)
tampil_7seg:
; --- Display Puluhan (digit kiri) ---
MOV A,
puluhan
MOV
DPTR, #hex7r
MOVC A, @A+DPTR
MOV
tampil, A
CLR
posB ; aktifkan digit
kiri
CLR
posA
ACALL tunda
MOV
tampil, #0FFh ; matikan display
; --- Display Satuan (digit kanan) ---
MOV A,
satuan
MOV
DPTR, #hex7r
MOVC A, @A+DPTR
MOV
tampil, A
CLR
posB ; aktifkan digit
kanan
SETB posA
ACALL tunda
MOV
tampil, #0FFh ; matikan display
RET
;=========================================
;===
Tabel Data 7-Segment ===
;
Tabel konversi angka 0–F untuk display anoda bersama
ORG
100h
hex7r:
DB 0C0h,0F9h,0A4h,0B0h ; 0,1,2,3
DB 099h,092h,082h,0F8h ; 4,5,6,7
DB 080h,090h,088h,083h ; 8,9,A,b
DB 0C6h,0A1h,086h,08Eh ; C,d,E,F
NOP
END
IV.
HASIL DAN PEMBAHASAN
Pengujian
sistem counter 1–99 berbasis mikrokontroler 8051 dilakukan dengan menyalakan
rangkaian dan mengamati tampilan pada dua seven segment. Hasil pengujian
menunjukkan bahwa sistem dapat bekerja secara stabil dan menampilkan angka
secara berurutan mulai dari 01 hingga 99. Proses pembagian digit puluhan dan
satuan berjalan dengan benar, ditandai dengan tampilan angka yang sesuai dengan
nilai hitungan aktual pada setiap langkah.
Teknik
multiplexing juga berjalan dengan baik. Kedua digit seven segment tampak
menyala bersamaan tanpa flicker yang mengganggu, menandakan bahwa waktu delay
multiplexing sudah sesuai. Setiap kali angka berubah, seven segment menampilkan
bentuk angka yang tepat berdasarkan tabel kode seven segment yang digunakan.
Setelah counter mencapai angka 99, sistem kembali ke angka 01 secara otomatis
tanpa kendala.
Secara
keseluruhan, hasil pengujian menunjukkan bahwa sistem counter berfungsi sesuai
perancangan, menampilkan angka dengan akurat, stabil, dan dapat dioperasikan
secara terus-menerus tanpa terjadi kesalahan tampilan.
V.
KESIMPULAN
Sistem penghitung nomor
antrian otomatis berbasis mikrokontroler 8051 telah berhasil dirancang dan
diimplementasikan dengan menggunakan display 7-segment 2 digit dan tiga push
button sebagai interface kontrol. Sistem ini mampu menampilkan nomor antrian
dalam range 0-30 dengan mekanisme increment, decrement, dan reset yang
berfungsi dengan baik.
Penggunaan teknik multiplexing
pada display 7-segment dan implementasi debouncing pada pembacaan push button
memastikan sistem bekerja secara efisien dan akurat. Sistem ini terbukti
menjadi solusi praktis dan ekonomis untuk pengelolaan antrian di tempat
pelayanan publik, serta dapat meningkatkan efisiensi pelayanan dan kepuasan
pelanggan.






Komentar
Posting Komentar