Pages

Minggu, 09 November 2014

Jam Digital dengan ATmega8 dan RTC DS1307

Nahhh.. kali ini udah bisa bikin jam digital dengan sekaligus tampilan kalender..

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;
   };