Home Tutorial RTC (Real Time Clock) DS1307 (Code Vision AVR)

RTC (Real Time Clock) DS1307 (Code Vision AVR)

by Ikhsan Maulana

Waktu adalah urutan gerak atau peristiwa menurut persepsi yang mengamatinya, dan waktu itu relatif, karena di setiap tempat dan bagi setiap orang itu beda. Nah… dalam postingan kali ini saya ingin berbagi informasi yang bersangkutan tentang waktu, dan dapat berguna untuk yang sedang belajar tentang elektronika dan pemprograman yaitu RTC (Real Time Clock).

RTC (Real Time Clock) merupakan sebuah IC yang memiliki fungsi untuk menghitung waktu, mulai dari detik, menit, jam, tanggal, bulan, serta tahun. Ada beberapa RTC yang di jual di pasaran, seperti : DS1307, DS1302, DS12C887, DS3234.

RTC DS12C887RTC DS1302

Dalam postingan kali ini  saya akan membahas RTC  (Real Time Clock) DS1307 yang memiliki akurasi hingga tahun 2100.
Berikut adalah fitur-fitur pada RTC DS1307, atau dapat juga download datasheed:
  • 56-byte
  • battery-backed
  • RAM nonvolatile (NV) RAM untuk penyimpanan
  • serial Two-wire (I2C)
  • Sinyal luaran gelombang-kotak terprogram (Programmable squarewave)
  • Deteksi otomatis kegagalan-daya (power-fail) dan rangkaian switch
  • Konsumsi daya kurang dari 500nA menggunakan mode baterai cadangan dengan operasional osilator
  • Tersedia fitur industri dengan ketahana suhu: -40°C hingga +85°C
  • Tersedia dalam kemasa 8-pin DIP atau SOIC.
Pada Pin 1 dan Pin 2 dihubungkan dengan Kristal ekternal 32,768 KHz. Pin 3 Vbat di hubungkan dengan baterai eksternal 3v. Pin 4 GND dapat kita hubungkan dengan ground pada baterai eksternal. Pin 8 Vcc di hubungkan ke Vcc minimum sistem. Pada Pin 5, 6, dan 7 adalah sinyal data dari RTC ke micro controler, di antaranya Pin 7 adalah SQM, Pin 6 adalah SCL dan Pin 5 adalah SDA dan di masing-masing sinyl data tersebut kita berikan resistor 1k hingga 10k sebagai pul up, kecuali Pin 7 yaitu SQM. Untuk lebih jelasnya dapat dilihat pada gambar berikut:

 

http://pccontrol.files.wordpress.com/2011/06/koneksidsdgmicon.jpg

Pemrograman RTC (Real Time Clock) DS1307 menggunakan Code Vision AVR.

Tidaklah sulit untuk memprogram RTC DS1307 menggunakan Code Vision AVR  karena telah di sediakan fungsi-fungsi khusu untuk mengakses data DS1307 jadi kita tinggal menggunakanya. Apalagi dengan fasilitas codewizard pemrograman RTC menjadi mudah.berikut saya mencoba untuk memprogram RTC DS1307 pada PORT C.0 untuk SDA dan PORT C.1 untuk SCL. Agar mudah untuk mengecek program tersebut saya menggunakan LCD Caracter 16×2 untuk menampilkan hasil dari keluaran RTC DS 1307 pada PORT B.
Kali ini saya mencoba membuat sebuah jam digital menggunakan RTC DS 1307, dengan program sebagai berikut:
#include <mega32.h>
#include <delay.h>
#include <stdio.h>

// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.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=0x18 ;PORTB
#endasm
#include <lcd.h>

char buff[16];

void main(void)
{
unsigned char jam, menit, detik, tanggal, bulan, tahun;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

// 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);
rtc_init(0,0,0);

rtc_set_time(18,18,30);  //mengeset jam 18:18:30
rtc_set_date(11,6,13);   //mengeset tanggal 11-6-2013

lcd_gotoxy(6,0);
lcd_putsf("Test");
lcd_gotoxy(1,1);
lcd_putsf("Coba-Coba RTC");
delay_ms(3500);
lcd_clear();

while (1)
{

rtc_get_time(&jam,&menit,&detik);
rtc_get_date(&tanggal,&bulan,&tahun);
lcd_gotoxy(1,0);
sprintf(buff,"JAM :%d:%d:%d", jam, menit, detik);
lcd_puts(buff);
lcd_gotoxy(1,1);
sprintf(buff, "TGL :%d:%d:%d", tanggal, bulan, tahun);
lcd_puts(buff);
delay_ms(1000);
lcd_clear();

};
}

Semoga bermanfaat…. 🙂

You may also like

2 comments

Chaerul Anam May 3, 2017 - 03:24

mantap gan izin sedot brother 🙂

Reply
Ikhsan Maulana May 21, 2017 - 22:07

silahkan

Reply

Leave a Comment