DIGITAL STOPWATCH SIMULATION MENGGUNAKAN PROTEUS BERBASIS MIKROKONTROLLER ATMEGA89C51
DIGITAL STOPWATCH SIMULATION USING AT89C51
Aziza Neysa Fareena Sodikin1, Cahya Putra
Rusdianto2, Hazza Yodha Maheswara3, Muhtadi Adi Nugroho4,
Samuel BETA5.
Email
: 1azizaneysafareenasodikin@gmail.com , 2hazayuda@gmail.com ,
3cahyaputra250106@gmail.com , 4muhtadiadinug@gmail.com , 5sambetak2@gmail.com
Jurusan
Teknik Elektro, Program Studi D3 Teknik Elektronika
Politeknik
Negeri Semarang
Jln.
Prof. H. Sudarto, S.H., Tembalang, Semarang, Jawa Tengah, Indonesia. 50275.
Telp. (024)7473417, Website : www.polines.ac.id , email : mailto:sekretariat@polines.ac.id
I. PENDAHULUAN
1.1 LATAR
BELAKANG
Perkembangan teknologi digital
mendorong penggunaan sistem elektronik yang semakin efisien dan akurat, salah
satunya dalam pengukuran waktu. Stopwatch digital merupakan alat ukur waktu
yang banyak digunakan dalam kegiatan pendidikan, olahraga, dan praktikum
laboratorium karena memiliki tingkat ketelitian yang lebih baik dibandingkan
stopwatch analog. Penggunaan mikrokontroler AT89C51 sebagai
pengendali utama memungkinkan perancangan stopwatch digital yang sederhana,
ekonomis, dan mudah dipahami. Selain itu, penggunaan tampilan 7-segment
memberikan kemudahan dalam menampilkan hasil pengukuran waktu secara jelas.
Oleh karena itu, perancangan stopwatch digital berbasis AT89C51 dan 7-segment
diharapkan dapat menjadi media pembelajaran untuk memahami konsep
mikrokontroler, sistem digital, dan pengukuran waktu.
1.2 RUMUSAN
MASALAH
Dari latar belakang tersebut diperoleh rumusan
masalah sebagai berikut :
1. Bagaimana
merancang stopwatch digital menggunakan mikrokontroler AT89C51?
2.
Bagaimana
cara menampilkan hasil pengukuran waktu pada 7-segment?
3. Bagaimana sistem
tombol start, stop, dan reset bekerja pada stopwatch digital?
4. Bagaimana kinerja
stopwatch digital dalam menampilkan waktu secara akurat dan stabil?
1.3 TUJUAN
Tujuan dari pembuatan sistem monitoring ini adalah
sebaga berikut :
1.
Merancang dan merealisasikan stopwatch digital berbasis
mikrokontroler AT89C51.
2.
Mengimplementasikan tampilan 7-segment sebagai penunjuk
waktu.
3.
Mempelajari cara kerja pengolahan waktu dan
pengendalian input tombol menggunakan AT89C51.
4.
Menguji kinerja stopwatch digital agar dapat bekerja
dengan baik dan sesuai dengan perancangan.
II. TINJAUAN PUSTAKA
•
ATMEGA89C51
AT89C51 merupakan mikrokontroler
8-bit dari keluarga MCS-51 yang diproduksi oleh Atmel. Mikrokontroler
ini banyak digunakan pada sistem kendali sederhana karena memiliki arsitektur
yang stabil dan mudah diprogram. Dalam perancangan stopwatch digital, AT89C51
berfungsi sebagai pengendali utama untuk proses penghitungan waktu, pembacaan
input push button, serta pengendalian tampilan seven segment.
•
Spesifikasi AT89C51:
•
Arsitektur CPU : 8-bit
•
Memori Flash : 4 KB (programmable)
•
RAM internal : 128 byte
•
Tegangan kerja : 4,0 V – 5,5 V
•
Jumlah pin : 40 pin
•
Port I/O : 4 port (Port 0, Port 1, Port 2, Port
3) masing-masing 8 bit
•
Timer/Counter : 2 buah (Timer 0 dan Timer 1)
•
Sistem clock : Menggunakan osilator eksternal
(kristal)
•
Interupsi : 5 sumber interupsi
•
Mode hemat daya : Idle mode dan Power-down mode
Gambar
2.1 AT89C51
•
Seven Segment
Seven segment merupakan komponen
display digital yang terdiri dari tujuh buah LED untuk menampilkan angka 0
sampai 9. Dalam perancangan ini, seven segment digunakan pada simulasi
Proteus sebagai penampil hasil perhitungan waktu stopwatch digital sehingga
dapat diamati secara visual tanpa menggunakan perangkat keras secara langsung.
Gambar 2.2 Seven Segment
•
Battery
Baterai adalah sumber tegangan DC
yang digunakan untuk memberikan catu daya pada rangkaian elektronik. Dalam
sistem stopwatch digital, baterai berfungsi sebagai sumber energi utama agar
mikrokontroler dan komponen pendukung dapat bekerja dengan baik dan stabil.
Gambar
2.3 Battery
•
Kapasitor
Kapasitor merupakan komponen pasif yang digunakan
untuk menyimpan muatan listrik sementara. Pada simulasi Proteus, kapasitor
digunakan untuk menstabilkan tegangan dan mendukung kerja osilator
sehingga sistem stopwatch digital dapat berjalan dengan stabil.
.
Gambar 2.4 Kapasitor
•
Oscilator
Osilator berfungsi sebagai pembangkit
sinyal clock bagi mikrokontroler. Dalam simulasi Proteus, osilator
direpresentasikan menggunakan kristal virtual untuk menghasilkan
frekuensi kerja yang sesuai agar proses perhitungan waktu dapat berjalan dengan
akurat.
Gambar
2.5 Oscilator
•
Resistor
Resistor digunakan untuk membatasi arus listrik dan melindungi komponen. Pada simulasi Proteus, resistor digunakan sebagai pembatas arus LED seven segment serta sebagai pull-up atau pull-down pada push button.
Gambar
2.6 Resistor
•
Push Button
Push button merupakan saklar tekan
yang digunakan sebagai input. Dalam simulasi Proteus, push button berfungsi
sebagai input virtual untuk menjalankan perintah start, stop, dan reset
pada stopwatch digital.
Gambar 2.7 Push Button
III. PERANCANGAN ALAT
3.1 PERANGKAT LUNAK DAN RANGKAIAN ELEKTRONIKA
Komponen yang di gunakan dalam pembuatan digital stopwatch ini
diantaranya:
1.
Mikrokontroler ATMEGA89C51
2.
Seven segmen
3.
Battery
4.
Kapasitor
5.
Osciliator
6.
Resistor
7.
Push Button
3.2 DIAGRAM BLOK
3.3 DIAGRAM ALIR
3.4 DIAGRAM SKEMATIK
3.5 PROGRAM
|
;Pemrogram : Kelompok EK-2A/6 ;1.
06-Aziza Neysa Fareena Sodikin
NIM:3.32.24.0.06 ;2.
07-Cahya Putra Rusdianto
NIM:3.32.24.0.07 ;3.
13-Hazza Yodha Maheswara
NIM:3.32.24.0.13 ;4.
18-Muhtadi Adi Nugroho
NIM:3.32.24.0.19 Tanggal Pembuatan: Selasa, 09 Desember 2025 ;
========================================================== ; STOPWATCH MM:SS:MS (6 digit) for AT89C51 ; - 6 digit multiplex (P0 -> segments, P2 ->
digit enables, active LOW) ; - Buttons: Start = P3.2 (active LOW), Stop = P3.3,
Reset = P3.4 ; - Timer0 ~10 ms tick (uses this as 1 centisecond
unit) ; - EdSim51-compatible syntax (no DS, use EQU, MOVC
with DPTR) ;
========================================================== ORG
0000h LJMP
START ORG
000Bh LJMP
T0_ISR ;
========================================================== ; RAM VARIABLES (use EQU addresses in internal RAM) ;
========================================================== MM_TEN EQU
30h ; menit puluhan MM_ONE EQU
31h ; menit satuan SS_TEN EQU
32h ; detik puluhan SS_ONE EQU
33h ; detik satuan MS_TEN EQU
34h ; milidetik puluhan
(centiseconds tens) MS_ONE EQU
35h ; milidetik satuan (centiseconds
ones) RUNNING EQU
36h ; 0 = stop, 1 = run MUX EQU
37h ; 0..5 multiplex index DEB_S EQU
38h ; debounce start DEB_H EQU
39h ; debounce stop (hold) DEB_R EQU
3Ah ; debounce reset ;
========================================================== ; 7-SEGMENT TABLE (COMMON CATHODE, segments active
HIGH) ; typical encoding: 0x3F = '0', 0x06 = '1', etc. ; placed in code memory ;
========================================================== ORG 100h SEG_TABLE: DB
3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;
========================================================== ; START: initialization ;
========================================================== ORG
200h START: MOV
SP,#7Fh ;
clear variables MOV
MM_TEN,#00h MOV
MM_ONE,#00h MOV
SS_TEN,#00h MOV
SS_ONE,#00h MOV
MS_TEN,#00h MOV
MS_ONE,#00h MOV
RUNNING,#00h MOV MUX,#00h MOV DEB_S,#00h MOV DEB_H,#00h MOV DEB_R,#00h ; ports: segments on P0,
digit enables on P2 (active LOW) MOV
P0,#0FFh MOV
P2,#0FFh ;
setup timer0 ~10 ms (12 MHz crystal) MOV
TMOD,#01h MOV
TH0,#0D8h ; values chosen
approximate 10 ms MOV
TL0,#0F0h SETB
TR0 SETB
ET0 SETB
EA ; set
DPTR once to segment table MOV
DPTR,#SEG_TABLE MAIN_LOOP: SJMP
MAIN_LOOP ;
========================================================== ; TIMER0 ISR — executed every ~10 ms ; Responsibilities each tick: ; - reload timer ; - multiplex
one digit ; - debounce
buttons ; - if RUNNING,
increment centiseconds (MS_ONE/MS_TEN) and handle rollovers ;
========================================================== T0_ISR: PUSH
ACC PUSH
PSW MOV
TH0,#0D8h MOV
TL0,#0F0h ; ----------------- multiplex 6 digits
--------------------- MOV A,MUX CJNE A,#00, MUX1 ; digit 0: MM tens
(leftmost) MUX0: MOV
P2,#0FFh CLR
P2.5 ; enable digit 0 (use bit
mapping P2.5..P2.0) MOV
A,MM_TEN ACALL
DISP_CHAR MOV
MUX,#01h SJMP
BTN_DEB MUX1: CJNE
A,#01, MUX2 ; digit 1: MM ones MOV
P2,#0FFh CLR
P2.4 MOV
A,MM_ONE ACALL
DISP_CHAR MOV
MUX,#02h SJMP
BTN_DEB MUX2: CJNE
A,#02, MUX3 ; digit 2: SS tens MOV
P2,#0FFh CLR
P2.3 MOV
A,SS_TEN ACALL
DISP_CHAR MOV
MUX,#03h SJMP
BTN_DEB MUX3: CJNE
A,#03, MUX4 ; digit 3: SS ones MOV
P2,#0FFh CLR
P2.2 MOV
A,SS_ONE ACALL
DISP_CHAR MOV
MUX,#04h SJMP
BTN_DEB MUX4: CJNE
A,#04, MUX5 ; digit 4: MS tens MOV
P2,#0FFh CLR
P2.1 MOV
A,MS_TEN ACALL
DISP_CHAR MOV
MUX,#05h SJMP
BTN_DEB MUX5: ; digit 5: MS ones (rightmost) MOV
P2,#0FFh CLR
P2.0 MOV
A,MS_ONE ACALL
DISP_CHAR MOV
MUX,#00h ; ----------------- button debouncing
--------------------- BTN_DEB: ; START button (P3.2)
active LOW
JB P3.2, SREL ; if P3.2 = 1 -> not pressed INC
DEB_S MOV
A,DEB_S CJNE
A,#03, SREL2 MOV
RUNNING,#01 SREL2: SJMP
HOLD_CHECK SREL: MOV
DEB_S,#00 ; STOP/HOLD button (P3.3) active LOW -> stop when
pressed HOLD_CHECK: JB
P3.3, HREL INC
DEB_H MOV A,DEB_H CJNE A,#03, HREL2 MOV RUNNING,#00 HREL2: SJMP
RESET_CHECK HREL: MOV
DEB_H,#00 ; RESET button (P3.4) active LOW RESET_CHECK: JB
P3.4, RREL INC
DEB_R MOV A,DEB_R CJNE A,#03, RREL2 ; reset all counters MOV
MM_TEN,#00h MOV
MM_ONE,#00h MOV
SS_TEN,#00h MOV
SS_ONE,#00h MOV
MS_TEN,#00h MOV
MS_ONE,#00h MOV
RUNNING,#00 RREL2: SJMP
COUNTING RREL: MOV
DEB_R,#00 ; ----------------- counting logic
------------------------- COUNTING: MOV
A,RUNNING JZ
T0_DONE ;
increment centiseconds (each ISR = 10 ms) INC
MS_ONE MOV
A,MS_ONE CJNE
A,#0AH, T0_DONE ; if < 10 ->
done (we use 0..9 per one's place) MOV
MS_ONE,#00h INC
MS_TEN MOV
A,MS_TEN CJNE
A,#0AH, T0_DONE ; tens 0..9 (00..99
centiseconds) MOV
MS_TEN,#00h ;
increment seconds INC
SS_ONE MOV
A,SS_ONE CJNE
A,#0AH, T0_DONE MOV
SS_ONE,#00h INC
SS_TEN MOV
A,SS_TEN CJNE
A,#06H, T0_DONE ; seconds tens 0..5 MOV
SS_TEN,#00h ;
increment minutes INC
MM_ONE MOV
A,MM_ONE CJNE
A,#0AH, T0_DONE MOV
MM_ONE,#00h INC
MM_TEN MOV
A,MM_TEN CJNE
A,#06H, T0_DONE ; minutes tens 0..5 MOV
MM_TEN,#00h T0_DONE: ;
restore and return from interrupt POP
PSW POP
ACC RETI ;
========================================================== ; subroutine: DISP_CHAR ; Input: A =
digit value 0..9 ; Outputs
segments on P0 (uses DPTR set to SEG_TABLE) ; Note: digit
enable must be set/cleared by caller (we did CLR P2.x) ;
========================================================== DISP_CHAR: PUSH
ACC MOV
B,A MOV
A,B MOVC
A,@A+DPTR MOV
P0,A ;
small delay to allow visible multiplex (keep short) MOV R7,#50 DLY1: DJNZ R7,DLY1 POP ACC RET END |
3.6 CARA KERJA ALAT
Cara kerja
stopwatch digital berbasis mikrokontroler AT89C51 pada simulasi Proteus
diawali dengan pemberian catu daya virtual ke rangkaian. Setelah sistem aktif,
mikrokontroler melakukan inisialisasi port input dan output, timer, serta
tampilan seven segment.
Ketika push
button start ditekan, mikrokontroler mulai menjalankan timer internal
untuk menghitung waktu dalam satuan menit, detik, dan milisecond. Nilai
waktu akan ditampilkan pada seven segment secara real-time dan terus bertambah.
Apabila push
button stop ditekan, proses penghitungan waktu akan berhenti
sementara, namun nilai waktu terakhir tetap tersimpan. Saat push button start
ditekan kembali, stopwatch akan melanjutkan penghitungan dari nilai terakhir.
Ketika nilai
waktu mencapai batas maksimum 59 menit 59 detik 99 milisecond, sistem
akan secara otomatis melakukan reset, sehingga nilai waktu kembali ke 00:00:00
tanpa perlu menekan push button reset. Selain itu, tombol reset juga
dapat digunakan untuk mengembalikan stopwatch ke kondisi awal secara manual.
Seluruh proses kerja alat ini dapat
diamati melalui simulasi pada software Proteus tanpa menggunakan perangkat
keras secara langsung.
3.7 VIDEO DEMO ALAT
IV. KESIMPULAN
Berdasarkan hasil perancangan dan
simulasi stopwatch digital menggunakan mikrokontroler AT89C51 dengan
tampilan seven segment pada software Proteus, dapat disimpulkan
bahwa sistem stopwatch digital dapat bekerja sesuai dengan perancangan. Proses
penghitungan waktu, pembacaan input push button, serta penampilan data waktu
pada seven segment dapat berjalan dengan baik pada simulasi.
Simulasi
Proteus mempermudah proses perancangan dan pengujian sistem tanpa harus
menggunakan perangkat keras secara langsung. Selain itu, penggunaan AT89C51
sebagai pengendali utama terbukti mampu mengolah data waktu secara akurat
berdasarkan sumber clock yang digunakan. Dengan demikian, simulasi stopwatch
digital ini dapat dijadikan sebagai media pembelajaran untuk memahami konsep
mikrokontroler, sistem digital, dan pengukuran waktu sebelum direalisasikan ke
dalam bentuk perangkat keras sebenarnya.
DAFTAR PUSTAKA
Budiharto, W. 2018. Belajar Mikrokontroler AT89C51. Jakarta: PT Elex Media Komputindo.
Heryanto, M. A. dan Adi, W. 2017. Pemrograman Mikrokontroler 8051. Bandung: Informatika.
Putra, D. A. 2020. Simulasi Rangkaian Mikrokontroler Menggunakan Proteus. Yogyakarta: Andi Offset.
Saputra, R. dan Nugroho, B. A. 2020. “Perancangan Stopwatch Digital Berbasis Mikrokontroler 8051.” Jurnal Teknik Elektro, Vol. 12, No. 1, hal. 15–22.
Widodo, S. dan Kurniawan, D. 2021. “Perancangan dan Simulasi Stopwatch Digital Menggunakan Software Proteus.” Jurnal Teknologi dan Rekayasa, Vol. 9, No. 2, hal. 40–47.
LINK:
2. PPT
3. PROGRAM
Komentar
Posting Komentar