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.



Link Video Presentasi:  https://youtu.be/3uK67WlR40w?si=3Pcm3A0cqayVFMMK

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