disini saya bikin jamnya pake microkontroller ATmega8 lagi deeehh, si kecil yang gesiiitttt,, hehehe, dan saya pake RTC DS1307 untuk real time nya..
bagi sobat yang suka utak atik micro controller, nih boleh kalo mau bikin percobaan membuat jam dengan tampilan SevenSegment..
disini nanti ada 2 tombol Push Button untuk setting Jam dan kalendernya.. hehehee.. oke deh di bawah ini adalah skemanya..
#include <mega8.h>
#asm
.equ __i2c_port=0x18 ;portc
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <delay.h>
#include <ds1307.h>
#include <math.h>
/*
7 segment
a = 6
b = 4
c = 0
d = 1
e = 2
f = 5
g = 3
*/
char status=0;
unsigned char jam,menit,detik,hari,bulan, tahun,;
void init_dev(void)
{
DDRC=0b11111100;
DDRB=0b11111100;
DDRD=0XFF;
i2c_init();
rtc_init(0,1,0);
}
void write7segment(unsigned char digit, unsigned char bilangan)
{
switch (bilangan)
{
case 0 : { PORTD=~(0b1110111); }; break;
case 1 : { PORTD=~(0b0010001); }; break;
case 2 : { PORTD=~(0b1011110); }; break;
case 3 : { PORTD=~(0b1011011); }; break;
case 4 : { PORTD=~(0b0111001); }; break;
case 5 : { PORTD=~(0b1101011); }; break;
case 6 : { PORTD=~(0b1101111); }; break;
case 7 : { PORTD=~(0b1010001); }; break;
case 8 : { PORTD=~(0b1111111); }; break;
case 9 : { PORTD=~(0b1111011); }; break;
};
switch (digit)
{
case 0 : { PORTC=((0b1110)<<2); PORTB=((0b111111)<<2);}; break;
case 1 : { PORTC=((0b1101)<<2); PORTB=((0b111111)<<2);}; break;
case 2 : { PORTC=((0b1011)<<2); PORTB=((0b111111)<<2);}; break;
case 3 : { PORTC=((0b0111)<<2); PORTB=((0b111111)<<2);}; break;
case 4 : { PORTC=((0b1111)<<2); PORTB=((0b111110)<<2);}; break;
case 5 : { PORTC=((0b1111)<<2); PORTB=((0b111101)<<2);}; break;
case 6 : { PORTC=((0b1111)<<2); PORTB=((0b111011)<<2);}; break;
case 7 : { PORTC=((0b1111)<<2); PORTB=((0b110111)<<2);}; break;
case 8 : { PORTC=((0b1111)<<2); PORTB=((0b101111)<<2);}; break;
case 9 : { PORTC=((0b1111)<<2); PORTB=((0b011111)<<2);}; break;
};