Dewasa ini pemanfaatan mikrokontroler
sudah menjadi hal yang tidak asing lagi, banyak peralatan yang telah diciptakan
berbasis mikrokontroler. Misalnya stopwatch, dalam stopwatch tersebut
memanfaatkan aplikasi antarmuka mikrokontroler dengan keypad dan seven segment.
Dalam project akhir ini penulis mencoba merancang sebuah alat sejenis
stopwatch, yaitu mengantarmukakan mikrokontroler ATmega 8535 dengan keypad dan seven
segmen. Dalam miniature ini menggunakan 2 buah seven segmen dan sebuah keypad.
Yang diprogram untuk penghitung waktu seperti stopwatch.
PERANCANGAN
|
|
|
Blog diagram rancangan penghitung waktu
|
|
|
|
|
Gambar 5. Blog
diagram rancangan penghitung waktu
Penjelasan blog diagram
1.
Membuat rangkaian minimum system dari
ATmega 8535 yaitu merupakan mikrokontroler 8 bit dengan kapasitas ROM 4KB dan
RAM 128 bytes, yang nantinya dihubungkan dengan rangkaian output, yaitu
rangkaian yang mencakup seven segmen,
rangkaian minimum system digunakan sebagai pengontrolnya, dan sebagai
rangkaian aplikasi tertentu berdasarkan program yang dibuat. dibawah ini merupakan gambar rangkaian dalam
pcb minimum system dan simulasi dari rangkaian keypad dan seven segment
Gambar . Simulasi dari rangkaian penghitung waktu
2. Membuat listing program traffic light,
//Library yang digunakan
#include <mega8535.h>
#include <delay.h>
//deklarasi array untuk menampilkan
karakter pada seven sgmen
unsigned char
bil[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//deklarasi untuk keypad
unsigned char keypad();
//fungsi utama
void main(void){
//variabel lokal
int satu ;
int dua ;
int one ;
int two ;
int t ;
int langkah=1 ;
//setting port pada mikrokontroler
PORTA=0x00;
DDRA=0xFF;
PORTB=0x0f;
DDRB=0xf0;
PORTC=0x00;
DDRC=0xff;
PORTD=0x00;
DDRD=0x00;
//program utama
while (1)
{
if (langkah==1){
one=keypad();
langkah=2;
}
if (langkah==2){
two=keypad();
}
if (one>50){ goto x;
}
else { goto y;
}
// Place your code here
//untuk counter up
x:
satu=0;
dua=0;
for (satu=0;satu<10;satu++)
{
for (dua=0;dua<10;dua++)
{
for (t=1;t<100;t++)
if(satu==9&dua==9)
goto x;
else
{
PORTD.7=1;
PORTD.6=0;
PORTA=bil[dua];
delay_ms(1);
PORTD.7=0;
PORTD.6=1;
PORTA=bil[satu];
delay_ms(1);
//untuk counter down
y:
for (satu=9;satu>=0;satu--)
{
for (dua=9;dua>0;dua--)
{
for (t=1;t<100;t++)
if(satu==9&dua==9)
goto x;
else
{
PORTD.7=1;
PORTD.6=0;
PORTA=bil[dua];
delay_ms(1);
PORTD.7=0;
PORTD.6=1;
PORTA=bil[satu];
delay_ms(1);
}
}
}
}
}
}}}
//deklarasi untuk keypad
unsigned char keypad()
{
PORTB = 0b11111110; //aktifkan baris1 (memberi logika 0 ke
baris1)
delay_ms(100);
if(PINB.7==0) return (10); if(PINB.6==0)
return (3); if(PINB.5==0) return (2); if(PINB.4==0) return (1);
//========================
PORTB = 0b11111101;//aktifkan baris2
delay_ms(100);
if(PINB.7==0) return (11); if(PINB.6==0)
return (6); if(PINB.5==0) return (5); if(PINB.4==0) return (4);
//========================
PORTB = 0b11111011; //aktifkan baris3
delay_ms(100);
if(PINB.7==0) return (12); if(PINB.6==0)
return (9); if(PINB.5==0) return (8); if(PINB.4==0) return (7);
//========================
PORTB = 0b11110111; //aktifkan baris4
delay_ms(100);
if(PINB.7==0) return (13);
if(PINB.6==0) return (15); if(PINB.5==0)
return (0); if(PINB.4==0) return (14);
}
Berdasarkan program
diatas dapat diketahui bahwa:
PORT pada ATMEGA8535
yang I gunakan yaitu PORT B untuk inisialisasi pada keypad. keypad tidak di
buat rangkaian output karena port pada keypad akan langsung di letakkan pada
PORT B pada minimum sistemnya.
PORT D dan PORT A pada
ATMEGA8535 di gunakan untuk inisialisasi seven segment. PORTA sebagai output
untuk data seven segment sedangkan PORTD sebagai output dan input pada seven
segment untuk control seven segment digit 1 dan 2.
3.
Setelah
selesai listing program langkah selanjutnya adalah mendownload program kedalam
mikrokontroler ATmega 8535 sehingga dapat mengantarmukakan seven segmen dan
keypad.
Setelah rangkaian diberi sumber tegangan DC sebesar
5V maka penghitung waktu dapat berjalan sesuai dengan perintah program.
Tidak ada komentar:
Posting Komentar