Real Time Clock merupakan suatu chip (IC) yang memiliki fungsi sebagai penyimpan waktu dan tanggal. DS 1307 merupakan real-time clock (RTC) menggunakan jalur data parallel yang dapat menyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam seminggu, dan tahun valid hingga 2100. Secara otomatis bulan dan tanggal akandisesuaikan untuk bulan yang kurang dari 31 hari termasuk untuk tahun yang akan datang. Operasi jam baik 24 jam atau 12 jam dengan format indikator AM/PM. DS1307 memiliki built-in powersense circuit dapat mendeteksi kegagalan daya (power filure), dan secara otomatis berpindah ke suplai cadangan.
Komunikasi dengan RTC DS1307 adalah serial dengan 1 kabel (I2C), dimulai ketika terjadi perubahan kondisi SDA “1” ke “0” dengan kondisi SCL “1” dan berakhir saat kondisi SDA berubah dari “0” ke “1” dengan SCL “1”. Kemudian untuk menuliskan perintah dengan mengirimkan data “11010000”, sedangkan perintah untuk membaca memori adalah “11010001”.
Dalam penggunaannya DS1307 harus menggunakan beberapa komponen tambahan (yang biasanya dipaket dalam bentuk modul) seperti resistor sebagai pull up pada jalur SDA dan SCL, kristal, dan batterai 3V.Untuk modul DS1307 mungkin akan saya posting(bila sempat, hehehe)
Salah satu aplikasi dari DS1307 ialah sebagai jam digital dengan menggabungkannya ke sistem mikrokontroler. berikut merupakan simulasi dari penggunaan DS1307 pada jam digital:
Bagian program yang
utama dari sistem ini ialah pada pengaturan komunikasi antara mikrokontroler
dengan DS1307 yang digunakan untuk membaca dan menulis data dari/ke
mikrokontroler atau DS1307.
Dim Weekday As Byte
Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Ack
I2crbyte Weekday , Ack
I2crbyte _day , Ack
I2crbyte _month , Ack
I2crbyte _year , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 4
I2cwbyte _day
I2cwbyte _month
I2cwbyte _year
I2cstop
Return
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cwbyte _min
I2cwbyte _hour
I2cstop
Return
Sub program Getdatetime digunakan untuk membaca data berupa detik, menit, jam , hari, tanggal, bulan, dan tahun. sementara itu, untuk sub program setdate digunakan untuk menulis data tanggal, bulan ,tahun dengan alamat datanya adalah 4 dan sub program settime digunakan untuk menulis detik, menit, dan jam dengan alamat datanya adalah 0.
Untuk selengkapnya (simulasi) dapat dilihat pada file ini. semoga bermanfaat.
Real Time Clock DS1307 Application
4/
5
Oleh
Nina Dee
Untuk menyisipkan kode pendek, gunakan <i rel="code"> ... KODE ... </i>
Untuk menyisipkan kode panjang, gunakan <i rel="pre"> ... KODE ... </i>
Untuk menyisipkan gambar, gunakan <i rel="image"> ... URL GAMBAR ... </i>