Pengetahuan Dasar pemrograman RTC DS1307 dengan bahasa C codevision untuk AVR

Apa itu RTC ?


RTC yang dimaksud disini adalah real time clock (bukan real time computing), biasanya berupa IC yg mempunyai clock sumber sendiri dan internal batery untuk menyimpan data waktu dan tanggal. Sehingga jika system komputer / microcontroller mati waktu dan tanggal didalam memori RTC tetap uptodate.

Salah satu RTC yang sudah populer dan mudah penggunaanya adalah DS1307, apalagi pada Codevision sudah tersedia fungsi-fungsi untuk mengambil data waktu dan tanggal untuk RTCDS1307 ini.

Fitur-fitur DS1307:
  •  Real-time clock (RTC)  menghitung detik, menit, jam,tanggal,bulan dan hari dan tahun valid sampai tahun 2100
  • Ram 56-byte, nonvolatile untuk menyimpan data.
  • 2 jalur serial interface (I2C).
  • output gelombang kotak yg diprogram.
  • Automatic power-fail detect and switch
  • Konsumsi arus hanya 500nA pada batery internal.
  • mode dg oscillator running.
  • temperature range: -40°C sampai +85°C

Untuk membaca data tangal dan waktu yg tersimpan di memori RTC Ds1307   dapat dilakukan   melalui komunikasi serial I2C spt tampak pada gambar berikut:

Cara pembacaan

DS1307 beropersai sebagai slave pada bus I2C. Cara Access pertama mengirim sinyal START diikuti device address dan alamat sebuah register yg akan dibaca. Beberapa register dapat dibaca sampai STOP condition dikirim.

Data waktu dan tanggal tersimpan dalam memori  masing masing 1 byte , mulai dari alamat 00H sampai 07H.  Sisanya (08H ~ 3FHalamat RAM yg bisa digunakan).

Pemrograman RTC DS1307  dengan Codevision.

Codevision sudah menyediakan fungsi-fungsi khusu untuk mengakses data DS1307 jadi kita tinggal menggunakanya. Apalagi dengan fasilitas codewizard pemrograman RTC menjadi mudah.

setelah  kita klik ok  maka akan  tersedia template Code program sbb:
#include <mega16.h>

// I2C Bus functions
#asm
.equ __i2c_port=0x18 ;PORTB
.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>

char tampungLCD[16];

void main(void)
{
unsigned char hour,minute,second;

/ I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);

// LCD module initialization
lcd_init(16);
/* initialize the DS1307 RTC */
rtc_init(0,0,0); //tambahankan baris ini

//this function sets the current time of the RTC.

rtc_set_time(6,0,0);  // jam 6:00:00

while (1)
{

/* read time from the DS1307 RTC */
rtc_get_time(&hour,&minute,&second);
//tampilkan di LCD 2×16
lcd_gotoxy(0,0);
sprintf(tampungLCD,”Time: %d:%d:%d “,hour,minute,second);
lcd_puts(tampungLCD);
}
}

Referensi:

  • Dataseheet DS1307
  • Codevision help File

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis.

Posted on 27/06/2011, in Menengah-3. Bookmark the permalink. 22 Comments.

  1. mas itu kalo mau bikin jam digital apa harus d’set dengan komputer yaa rtc’y….?
    maklum gak yau pisan…

  2. Terimakasih mas atas informasinya.
    Salam kena.
    Kebetulan saya sedang mencari materi tentang RTC ini untuk tugas kuliah.

  3. Terima kasih mas atas informasinya.
    Salam kenal.
    Kebetulan saya lagi mencari materi ini untuk tugas kuliah.

  4. Kalau mau detect lcd nya ada atau tidak gimana caranya ? karena program diatas jika saya jalankan tanpa lcd maka tidak bisa ttp jika lcd nya ada maka jalan. Jadi rencana ada if … agar bisa detect lcd nya ada ngak, jika tdk ada maka di skip penampilan nya ke lcd, tx

  5. mas kenapa rtc saya di codevision gak mau error?tlony bntuanx

  6. salam kenal

    saya share ni gan,kl mau aktifin led melaui rtc gmn ya??
    untuk mengaktifkan nya butuh waktu 1 hari,,mhon pencerahannya..

  7. slam kenal.mas mau nanya gmana program dengan settingan keypad…misalkan untuk settingan on,atau off untuk ngaktifin lampu,,

  8. Salam kenal

    Saya mau tanya, jadi perbedaan antara memakai ds1307 dengan timer dari uC biasa apa ya?
    Paling hanya kemampuannya yg non-volatile, bisa menyimpan waktu jika disupport supply 3v itu ya?

    • perbedaan paling utama adalah bisa menghemat kerja prosesornya , dan code program jadi lebih simple dan hemat.

      • Ohhh…

        BTW saya pernah membuat RTC dengan ds1307, tetapi waktunya selalu telat dari jam-jam yg lainnya & diduga karna x-tal 32,768 nya yg memang pada umumnya tidak akurat.
        Pngalaman Anda membuat RTC, bagaimana memilih x-tal yg akurat skali shingga cocok waktunya dgn yg lain. Karena menurut pngalaman saya sangat susah skali mendapatkan x-tal 32,768 yg 100% akurat?

  9. salam kenal saya dwi, mau tanya kalau DS 1307 digunakan untuk interrupt bisa tidak?sebagai contoh setiah hitungan 5 menit melakukan ambil data.terima kasih.

  10. salam kenal, mas. makasih byk atas pencerahannya tentang rtc. mo, tanya, gimana klo mo seting jam, menit maupun tanggal, bln dan tahun mnggunakan tombol? terim kasih ats jawabannya.

  1. Pingback: Materi Kuliah Bahasa Pemrograman C++ | Terbaru 2015

  2. Pingback: Contoh Aplikasi Osilator

  3. Pingback: Modul Bahasa Pemrograman | Terbaru 2015

  4. Pingback: Materi Pemrograman Dasar Komputer | Terbaru 2015

  5. Pingback: Materi Pemrograman Web Dasar | Terbaru 2015

  6. Pingback: Materi Dasar Pemrograman Visual Basic | Terbaru 2015

  7. Pingback: Materi Pemrograman Dasar Kelas X | Terbaru 2015

  8. Pingback: Modul Bahasa Pemrograman Komputer | Terbaru 2015

  9. Pingback: Modul Bahasa Pemrograman Vb | Terbaru 2015

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: