Friday 1 February 2013

Real Time Clock DS1307 Application


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.

Nina Dee

Author & Editor

Not an expert, just a hobby. Catatan untuk kita semua yang mungkin sedang membutuhkan.

Related Post

Real Time Clock DS1307 Application
4/ 5
Oleh

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>