Project kali ini adalah membuat jam digital sederhana dengan menggunakan 4 buah 7segment dan ATmega8 dan
untuk metode pemrogramannya hanya menggunakan library "delay.h". Terus Bagaimana caranya? kenapa tidak
menggunakan IC decoder untuk 7segment seperti IC 7447?
Jawabannya sederhana yaitu selain rangkaiannya tidak terlalu rumit juga bisa menghemat penggunaan PORT
pada mikrokontroler. Caranya dapat kamu lihat seperti gambar skematik rangkaian dibawah ini
Jika kita lihat skematik rangkaian diatas semua 7Segment terhubung paralel dengan PORTD pada mikrokontroler
kemudian kaki Common / Enable pada seven segment yang biasa kita hubung langsung ke ground itu kita
hubungkan dengan PORTC pada mikrokontroler, ditambah dengan 2 buah LED dan push button yang tersambung
dengan PORTB.
Terus bagaimana cara kerjanya sehingga 7segment bisa menampilkan angka yang berbeda sementara semua
tersambung secara paralel dengan PORTD?. Caranya adalah kita menggunakan metode scanning yaitu menyalakan
7segment secara bergantian dengan kecepatan tinggi sehingga tampak menyala secara normal. Yang berfungsi untuk
mengatur pergantian 7segment adalah PORTC yang jika berlogika 0 (terground) maka 7segment akan aktif,
sebaliknya jika berlogika 1 (tercatu) maka 7segment akan mati
Selanjutnya berikut contoh programnya:
#include <mega8.h>
#include <delay.h>
//-------------------7seg------------------------------#define
set PORTD
//-------------------enable-----------------------------
if(sat_jam>9){sat_jam=0;pul_jam++;}
enable3=1; enable4=0;
set=hit[pul_jam];
delay_ms(x);
if(pul_jam>=4&&sat_jam==2){sat_jam=0;pul_jam=0;}
}
void setting()
{
while(1)
{
if (tombol1==0)
{
delay_ms(200);
while(tombol1==0);
a++;
if(a==1)
{
for(;;)
{
enable4=1;enable1=0;;set=hit[sat_mnt];
if(tombol2==0){
delay_ms(200); while(tombol2==0);sat_mnt+
+;if(sat_mnt>9)sat_mnt=0;}
else if(tombol1==0){break;};
};
}
else if(a==2)
{
for(;;)
{
enable1=1;enable2=0;;set=hit[pul_mnt];
if(tombol2==0){
delay_ms(200); while(tombol2==0);pul_mnt+
+;if(pul_mnt>5)pul_mnt=0;}
else if(tombol1==0){break;};
};
}
else if(a==3)
{
for(;;)
{
enable2=1;enable3=0;;set=hit[sat_jam];
if(tombol2==0){
delay_ms(200); while(tombol2==0);sat_jam+
+;if(sat_jam>9)sat_jam=0;}
else if(tombol1==0){break;};
};
}
else if(a==4)
{
for(;;)
{
enable3=1; enable4=0;;set=hit[pul_jam];
if(tombol2==0){delay_ms(200); while(tombol2==0);pul_jam+
+;if(pul_jam>2)pul_jam=0;}
else if(tombol1==0){break;};
};
}
else if(a==0)break;
lanjut:
}
void jalan()
{
for (detik=1;detik<60;detik++)
{
DDRB.4=DDRB.5=1;
PORTB.5=1;
PORTB.4=1;
for (y=0;y<=24;y++)
{
rolling();
setting();
};
PORTB.4=0;
PORTB.5=0;
for (y=0;y<=24;y++)
{
rolling();
setting();
};
};
sat_mnt++;
}
void main(void)
{
PORTB=0xFF;
DDRB=0x00;
PORTC=0xFF;
DDRC=0xFF;
PORTD=0x00;
DDRD=0xFF;
set=hit[0];
delay_ms(10);
while(1)
{ jalan(); }
Design Skematik dan layout dalam bentuk PDF bisa kamu download pada link dibawah: