Jam Digital dengan Mikrokontroler ATmega
Sebagai ‘pewaktu’ kita menggunakan Real Time Clock DS1307 keluaran Dallas Semiconductor. Dilengkapi dengan batteray backup sehingga walaupun power pada mikrokontroler mati, data ‘waktu’ tidak akan hilang. Rangkaian RTC DS1307 dan interfacing-nya dengan mikrokontroler terlihat sangat sederhana :
Data ‘waktu’ yang dibaca di RTC berupa jam (jam, menit, detik) dan tanggal (tanggal, bulan, tahun, hari). Pada aplikasi kita kali ini kit abaca saja data jam, karena yang akan kita tampilkan ke seven segment cukup jam, menit dan detik saja.
Program dibuat dengan CodeVisionAVR, nih listingnya :
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#asm
  .equ __i2c_port=0×12 ;PORTd
  .equ __sda_bit=7
  .equ __scl_bit=6
#endasm
#include <i2c.h>Â Â Â
#include <ds1307.h>
char angka[10]={0xC0,0xF9,0xA4,0xB0,0×99,0×92,0×82,0xF8,0×80,0×90};
unsigned char h,m,s;
char j_sat,j_pul,m_sat,m_pul,d_sat,d_pul;
void main(void)
{
DDRA=0xFF;
DDRB=0b111111;
i2c_init();
rtc_init(0,0,0);
rtc_set_time(10,23,15);
rtc_set_date(2,3,12);Â Â Â Â
delay_ms(100);
PORTA=angka[j_pul];
PORTB=0B11010111;
while (1)
 { Â
 rtc_get_time(&h,&m,&s);
 j_pul=h/10;
 j_sat=h%10;
 m_pul=m/10;
 m_sat=m%10;
 d_pul=s/10;
 d_sat=s%10;
 PORTA=angka[j_pul];
 PORTB=0B11111110;
 delay_ms(3);
 PORTA=angka[j_sat];
 PORTB=0B11111101;
 delay_ms(3);
 PORTA=angka[m_pul];
 PORTB=0B11111011;
 delay_ms(3);
 PORTA=angka[m_sat];
 PORTB=0B11110111;
 delay_ms(3);
 PORTA=angka[d_pul];
 PORTB=0B11101111;
 delay_ms(3);
 PORTA=angka[d_sat];
 PORTB=0B11011111;
 delay_ms(2);
 }
}
Kalau teman – teman membuat rangkaiannya berbeda, maksud saya koneksi dengan mikrokontrolernya tidak sama dengan yang ada disini, cukup sesuaikan pada programnya saja, ok ? Sekarang kita lihat hasilnya. Saya memakai Desymega wRTC .
Sumber : http://cvsapto.blogspot.com/2012/09/kali-ini-kita-sampaikan-cara-gampang.html