RTC DS1307 berkomunikasi dengan antarmuka I2C (Inter Integrated Circuit). RTC DS1307 memiliki pewaktu dalam variabel detik, menit, jam, hari, tanggal, bulan dan tahun. Selain itu, RTC ini menyediakan pin battery-backup untuk dihubungkan pada baterai lithium 3V atau catu daya lain sehingga ketika power (catu daya) mati, battery-backup akan mengambil alih dan timer tetap akan berjalan sebagaimana mestinya. Sedangkan kristal yang digunakan menurut datasheet bernilai 32,768 KHz. Untuk mendapatkan datasheet DS1307 silakan download disini.
Dengan menggunakan bantuan pada CodeWizardAVR pada Codevision AVR, yang sudah terdapat library untuk DS1307, maka kita akan dengan mudah dapat mengakses RTC DS1307. Setting seperti gambar dibawah ini:
Dan menurut CodeVisionAVR Help, terdapat beberapa instruksi untuk mengakses DS1307:
void rtc_init(unsigned char rs, unsigned char sqwe, unsigned char out)
Instruksi ini untuk inisialisasi DS1307, dimana:
Parameter rs digunakan untuk menghasilkan nilai dari frekuensi gelombang kotak pada pin SQW/OUT DS1307:
Jika rs bernilai:
0 untuk 1 Hz
1 untuk 4096 Hz
2 untuk 8192 Hz
3 untuk 32768 Hz
Jika parameter sqwe bernilai 1 maka output gelombang kotak pada pin SQW/OUT DS1307 akan di enable.
Parameter out merupakan level logika pada pin SQW/OUT saat output gelombang kotak di disable (sqwe=0)
void rtc_get_time(unsigned char *hour, unsigned char *min, unsigned char *sec)
Intruksi ini untuk mendapatkan nilai *hour (jam), *min (menit) dan *sec (detik). Untuk variabel hour, min dan sec dapat kita ganti namanya sesuai keinginan kita tetapi harus bertipe data unsigned char.
void rtc_get_date(unsigned char *date, unsigned char *month, unsigned char *year)
Intruksi ini untuk mendapatkan nilai *date (tanggal), *month (bulan) dan *year (tahun). Untuk variabel date, month dan year dapat kita ganti namanya sesuai keinginan kita tetapi harus bertipe data unsigned char.
void rtc_set_time(unsigned char hour, unsigned char min, unsigned char sec)
intruksi ini digunakan untuk menset nilai hour (jam), min (menit) dan sec (detik) sesuai keinginan kita.
void rtc_set_date(unsigned char date, unsigned char month, unsigned char year)
intruksi ini digunakan untuk menset nilai date (tanggal), month (bulan) dan year (tahun) sesuai keinginan kita.
Dibawah ini adalah listing program lengkapnya:
unsigned char h, m, s, d, mo, y, temp[16];
/*
h=hour, m=minute, s=second
d=day, mo=month, y=year
*/
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x1B ;PORTA
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include <i2c.h>
// DS1307 Real Time Clock functions
#include <ds1307.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
void main(void)
{
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// I2C Bus initialization
i2c_init();
rtc_init(0,0,0);
lcd_init(16);
//rtc_set_time(9,10,26); //untuk menset jam 09:10:26
//rtc_set_date(8,11,87); //untuk menset tanggal: 8 nov 1987
while (1)
{
rtc_get_time(&h,&m,&s); //mendapatkan nilai jam, menit dan detik
rtc_get_date(&d,&mo,&y); //mendapatkan nilai tanggal, bulan dan tahun
lcd_gotoxy(0,0);
sprintf(temp,”Time %d:%d:%d”,h,m,s);
lcd_puts(temp);//tampilkan jam di LCD baris pertama
lcd_gotoxy(0,1);
sprintf(temp,”Date %d-%d-%d”,d,mo,y);
lcd_puts(temp);//tampilkan tanggal di LCD baris kedua
};
}
Untuk file program dalam bentuk CodeVision AVR dan file simulasi Proteus silakan download link dibawah ini.
File program dalam CodeVision AVR dan file simulasi Proteus.
Semoga bermanfaat…
yogi
June 9, 2011 at 09:40
Terimakasih atas artikelnya.sangat membantu.ijin donlod.sukron………
ElectrO-cOntrOl Team
June 9, 2011 at 12:04
silakan download… semoga bermanfaat
awans
June 10, 2011 at 17:05
maaf bos bru bisa berkunjung, bagus, lebih padat isi blogmu, whaaaa lmyan wat referensiku ni heheh
salam kenal
ElectrO-cOntrOl Team
June 10, 2011 at 18:50
ok terima kasih sudah mampir… semoga bisa bermanfaat dan memajukan bidang elektronika indonesia
wawan
June 18, 2011 at 05:02
nyuwun sewu maAS . be2rpa hr lalu aq dunlod e book d link sampean !
da dpt tp koq dprotek, nyuwon sewu paswordnya apa yaaa ?
tq
ElectrO-cOntrOl Team
June 18, 2011 at 06:12
pada menu free ebook, sebenarnya sudah saya kasih link untuk mendownload passwordnya, coba deh dicari tulisan >>>click here to get ebook password<<< pd menu free ebook, trus silakan download password ebooknya..
firman
June 11, 2011 at 09:48
mas mau tnya ni klau utk mengatur jam nya itu g mana ya
maklum mas msh baru ni
^_^
ElectrO-cOntrOl Team
June 11, 2011 at 12:19
seperti yg sudah saya jelaskan untuk menset jam menggunakan instruksi rtc_set_time(hour,min,sec);
sebagai contoh setelah mendownload program ke AVR saya ingin menset jam dimulai dari 10:11:50, maka saya menggunakan instruksi rtc_set_time(10,11,50); (pada program diatas hapus tanda double slash diawal instruksi klo mau men set jam dan tanggal).
Begitu juga untuk menset tanggal, caranya sama seperti menset jam.
firman
June 12, 2011 at 09:39
trz mas yg seperti avcc dan aref itu d hubungkan k vcc ya
ElectrO-cOntrOl Team
June 12, 2011 at 11:25
avcc (power supply ADC) dan aref (Tegangan referensi ADC) sebenarnya digunakan untuk ADC internal mikrokontroler, tetapi saya selalu menghubungkannya ke VCC (5 V)
firman
June 12, 2011 at 09:52
kemudian untuk konektor isp nya g mana ya tu mas
ElectrO-cOntrOl Team
June 12, 2011 at 11:26
untuk konektor isp nya tidak saya gambarkan.
firman
June 12, 2011 at 11:52
mas ada alamt email yang bsa di hubungi gak
ElectrO-cOntrOl Team
June 12, 2011 at 13:22
alamat email saya sudah saya cantumkan di sebelah kanan blog saya… cari Contact Us
firman
June 12, 2011 at 12:04
mas kan aku cba gmbr ulang rngkaian mas di atas dengan menggunakan protel
trz aku tmbahi isp port ny
bsa gak mas cek in rangkaian nya benar atau tidak
ElectrO-cOntrOl Team
June 12, 2011 at 13:25
bisa saja jika ditambahkan konektor ISP
firman
June 12, 2011 at 19:54
mas bru saja saya kirim skemanya ke alamat email mas tlng d cek ya mas bnar apa gak nya
^_^
ElectrO-cOntrOl Team
June 12, 2011 at 20:36
email anda blm saya terima…!
firman
June 12, 2011 at 20:52
cba mas d cek lg soal ny brusan sya kirim lg
firman
June 13, 2011 at 10:08
sbnar nya gini mas saya ingin membuat jam digital dengan atmega 16
dengan usb mas
tp gak ngerti hrus di hubungkan di mana usbnya di atmega 16 nya
trz saya baca2 d internet
sya ambil solusi pkek paralel port 25 pin dengan catatan sck dihubungkan dg kaki 6 pada paralel port 25, mosi di hubungkan dengan kaki 7 pada paralel port 25, miso dihubungkan dengan dengan kaki 9 pada paralel port 25
nah mas kira2 kalau saya buat sperti itu downloadernya jalan gak ya mas
maklum mas krng ngerti
mhan bntuan nya ya mas
ElectrO-cOntrOl Team
June 13, 2011 at 12:36
kalo anda menggunakan downloader parallel port (DB25), koneksinya sebagai berikut:
MIKRO DB25
SCK —> pin 6
MOSI —> pin 7
MISO —> pim 10
untuk lebih jelasnya bisa dilihat pada postingan saya mengenai downloader parallel AVR KANDA SYSTEM STK200+/300
firman
June 14, 2011 at 09:36
trz mas untuk reset di kaki 9 pada atmega 16 dihubungkan gak dengan kaki 9 pada konektor db 25
firman
June 14, 2011 at 09:52
trz mas kaki vcc untuk atmega nya dengan lcd nya d hubungkan gak mas k konektor db 25 nya
ElectrO-cOntrOl Team
June 14, 2011 at 19:11
pada postingan saya tentang downloader parallel kan terlihat kalo pin 9 DB25 dihubungkan ke RESET mikro, Trus kan tidak ada pin VCC yang dihubungkan ke konektor DB25..!
ovelirza
June 14, 2011 at 21:04
sy udah nyoba program d atas ms, tp ko detiknya gak jalan ya.
jd, keluar tampilannya cuma gini :
Time 0:0:0
Date 14-06-2011
itu knp ya mas? di rangkaiannya ato gmn ?
ElectrO-cOntrOl Team
June 15, 2011 at 00:05
untuk program diatas sudah saya simulasikan dan berjalan kok!
ovelirza
June 14, 2011 at 21:23
Eh, saya pake Atmega8535 dink ms,
sy kirim listing program yg sy bikin y.. tlg di cek
kirim nya kmn nih ?
*mohon bantuannya sgt ms…*
ElectrO-cOntrOl Team
June 15, 2011 at 00:07
lewat email saja, alamatnya ada disebelah kanan blog
firman
June 16, 2011 at 15:24
yupz mksih ya mas utk bntuan nya
^_^
ElectrO-cOntrOl Team
June 16, 2011 at 18:26
ok sama2
yogin37
June 18, 2011 at 00:55
bos klo ke seven segmen ada referensinya??
ElectrO-cOntrOl Team
June 18, 2011 at 06:13
klo mau mengakses seven segment silakan baca pada MENU TURORIAL AVR trus klik SEVEN SEGMENT
firman
June 19, 2011 at 10:28
mkin sukses ya mas
^_^
krids
June 22, 2011 at 15:15
mas,kalo setting waktu secara manual menggunakan keypad bagaimana tambahan programnya mas?
ElectrO-cOntrOl Team
June 23, 2011 at 16:48
saya belum pernah membuatnya… anda tinggal mamanipulasi saja instruksi setting waktunya dengan input melalui keypad
arya maulana
June 28, 2011 at 12:50
ElectrO-cOntrOl Team,knapa stelah d compile pake CVavr Error: D:\A(-)\project download\ds1307\programnya bos CVAVR\kk.c(25): can’t open #include file: ds1307.h
atau mungkin file tidak disertakan??mohon penjelasanya,
thx.
ElectrO-cOntrOl Team
June 28, 2011 at 13:28
sudah saya coba dan tidak ada masalah tuh… coba buka file yg berektensi .prj dengan codevision AVR kemudian di compile..
arya maulana
June 28, 2011 at 15:11
thx mas bwat infonya,ternyata cvAVR saya versi evaluasi,jdi untuk ds1302 dan ds 1307 g bsa d pake,bsa ksih tw link dwnload code vision yg full g??
ElectrO-cOntrOl Team
June 28, 2011 at 23:12
untuk mendapatkan software codevision pro silakan download pada menu FREE SOFTWARE
brahmen
July 3, 2011 at 21:10
thanks ya mas…saya izin donload…
ElectrO-cOntrOl Team
July 5, 2011 at 09:44
silakan semoga bermanfaat… silakan kunjungi blog saya yg baru di elektro-kontrol.blogspot.com
karena blog ini akan saya tutup
Yuri
July 16, 2011 at 12:07
gan, klo on off relay utk lampu berbasis waktu nich (ds1307),, bisa ga?
ElectrO-cOntrOl Team
July 21, 2011 at 03:02
Blog ini telah dipindah ke alamat baru yaitu:
elektro-kontrol.blogspot.com
Jika ada pertanyaan atau komentar silakan kunjungi blog yg terbaru, jika anda meninggalkan pertanyaan atau saran disini tidak akan ditanggapi.
Harap maklum. Terima kasih.