Pendahuluan
1. Latar Belakang
Bicara tentang stopwatch, benda ini adalah benda yang
lumayan terkenal dibidang olahraga pada umumnya. Kali ini saya ingin berbagi
bagaimana membuat stopwatch sederhana. Lebih tepatnya bisa di jadikan widget buatan
kita sendiri atau bisa Anda jadikan sebagai bahan untuk belajar serta refrensi.
Saya akan menggunakan LCD 16x2 dengan 3 switch button (Start, Stop, Reset)
dengan mikrokontroller Atmega16. Compiler yang digunakan yakni Codevision AVR.
Aplikasi ini merupakan sebuah stopwatch sederhana yang
dapat menghitung sampai satuan waktu terkecil yaitu 1/100 detik atau 10 ms.
Untuk membangkitkan timer 10 ms saya menggunakan fitur timer0 mikrokontroller.
2. Tujuan Pembuatan
Tujuan
pembuatan stopwatch ini adalah sebagai mengukur lamanya waktu yang diperlukan
dalam suatu kegiatan. Selain itu pembuatan stopwatch ini adalah sebagai
praktikum Tugas Akhir Lab 3 yang
berbasis mikro kontroler.
Analisa dan Perancangan Alat
1. Langkah
kerja
1.
Buat skrip program pada aplikasi Code Vision
2.
Donwload program yang telah dibuat ke Atmega8535
3.
Sambungkan rangkaian yang telah dibuat ke sumber
VCC
4.
Kemudian tinggal mengklik tombol
(Star,Stop,Reset) sesuai yang diinginkan
2. Analisa
Alat
Pengunci pintu berkode merupakan suatu
alat berbasis Atmega8535 yang menggunakan 8-bit prosesing sistem. Rangkaina
alat menggunakan logika 1 saat start dan logika 0 saat stop.
GAMBAR 1.1 RANGKAIAN
DENGAN PROTEUS
Dengan menggunakan input
push button sebagai tombol start, stop, reset dan Atmega8535 sebagai prosesor
dapat membuat angka pada LCD. Dengan LCD sebagai indikator bahwa waktu telah
berjalan.Dengan menggunakan input
push button sebagai tombol start, stop, reset dan Atmega8535 sebagai prosesor
dapat membuat angka pada LCD. Dengan LCD sebagai indikator bahwa waktu telah
berjalan.
3. Diagram Blog
GAMBAR 2.2 DIAGRAM
BLOK
Input masukan dari push
button yang akan di proses oleh Atmega 8535 yang akan mengubah ubah jalannya
waktu pada LCD. Penggunaan LCD pada alat ini adalah sebagai penunjuk waktu yang
telah tersimpan di Atmega 8535.
4. listing program :
unsigned char count, temp[16], indeks=0, detik=0, menit=0, jam=0;
#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x8A;
count++;
}
void hitung_waktu()
{
if (count>=100)
{
lcd_clear();
detik++;
count=0;
}
if (detik>=60)
{
menit++;
detik=0;
}
if (menit>=60)
{
jam++;
menit=0;
}
}
void detek_tombol()
{
if (PINA.0==0 && (indeks==0 || indeks==2))//start timer
{
indeks=1;
TIMSK=0x01;//memulai timer
lcd_clear();
}
if (PINA.1==0 && indeks==1)//stop timer
{
indeks=2;
TIMSK=0x00;//menstop timer
lcd_clear();
}
if (PINA.2==0 && indeks==2)//reset timer
{
indeks=0;//semua data direset
count=0;
detik=0;
menit=0;
jam=0;
lcd_clear();
}
}
void tampil_lcd()
{
lcd_gotoxy(0,0);
sprintf(temp,"Timer %d:%d:%d:%d",jam,menit,detik,count);
lcd_puts(temp);//tampilkan waktu di LCD baris pertama
if (indeks==0)
{
lcd_gotoxy(0,1);
lcd_putsf("START");
}
if (indeks==1)
{
lcd_gotoxy(0,1);
lcd_putsf("STOP");
}
if (indeks==2)
{
lcd_gotoxy(0,1);
lcd_putsf("START RESET");
}
}
void main(void)
{
PORTA=0x0f;
DDRA=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x8A;
OCR0=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
detek_tombol();
hitung_waktu();
tampil_lcd();
};
}
Stopwatch-nya kok ga jalan ya?? Cuma push button doang yg fungsi sm lcd
BalasHapus