Kurang_Sangu
i
7 Votes
RTC (Real time clock) adalah jam elektronik berupa chip yang dapat menghitung waktu (mulai
detik hingga tahun) dengan akurat dan menjaga/menyimpan data waktu tersebut secara real time.
Karena jam tersebut bekerja real time, maka setelah proses hitung waktu dilakukan output datanya
langsung disimpan atau dikirim ke device lain melalui sistem antarmuka.
Chip RTC sering dijumpai pada motherboard PC (biasanya terletak dekat chip BIOS). Semua
komputer menggunakan RTC karena berfungsi menyimpan informasi jam terkini dari komputer
yang bersangkutan. RTC dilengkapi dengan baterai sebagai pensuplai daya pada chip, sehingga
jam akan tetap up-to-date walaupun komputer dimatikan. RTC dinilai cukup akurat sebagai
pewaktu (timer) karena menggunakan osilator kristal.
Banyak contoh chip RTC yang ada di pasaran (pasar genteng, dll) seperti DS12C887, DS1307,
DS1302, DS3234.
1/21
21/08/14Membaca RTC DS1307 dengan Codev ision AVR | Kurang_Sangu
(http://kurangsangu.files.wordpress.com/2011/04/10079-01__66295_zoom2.jpg)
(http://kurangsangu.files.wordpress.com/2011/04/ds12c8872.jpg)
(http://kurangsangu.files.wordpress.com/2011/04/ds13072.jpg)
Salah satu chip RTC yang mudah digunakan adalah DS1307. Pin out chip seperti gambar di
bawah.
(http://kurangsangu.files.wordpress.com/2011/04/100410_0556_11.png)
(http://kurangsangu.files.wordpress.com/2011/04/ds1307shield2.jpg)
Pada topik ini akan dibahas cara pembacaan data waktu dari DS1307 dengan Codevision AVR.
alasan penggunaan chip ini adalah karena mudah dalam komunikasi datanya, yaitu
menggunakan antarmuka Serial I2C yang hanya butuh dua jalur saja (clock dan data). berbeda
dengan DS12C887 yang antarmukanya secara paralel. pada project ini digunakan mikrokontroler
ATmega16 (http://circuits.datasheetdir.com/18/ATMEGA16-pinout.jpg) dan LCD2X16
(http://4.bp.blogspot.com/-UDceyRyNCso/TZ1tb5I-
n_I/AAAAAAAAAS8/GFh4_Tl0jW8/s1600/index.jpg) untuk display waktu RTC nya. PORTC
terhubung ke pin LCD. dan pin SDA DS1307 terhubung ke PORTB.0 sedangkan pin SCLnya ke
PORTB.1.
Untuk menampilkan jam dan tanggal dari RTC DS1307 dilakukan dengan pengaksesan register
pewaktu pada RTC. Pada Codevision AVR terdapat fitur I2C bus dan koneksi pada RTC DS1307
sehingga hanya tinggal melakukan pengaksesan data pada register timekeeper RTC. Berikut
langkah pengaturan pada widzard CodevisionAVR untuk pengaturan fitur I2C bus dan koneksi
pada RTC DS1307.
(http://kurangsangu.files.wordpress.com/2011/04/new-picture-1.jpg)
Dari pengaturan widzard I2C bus dan koneksi RTC DS1307 diatas di ketahui bahwa jalur I2C
berada pada PORTB.0 sebagai serial data (SDA) dan PORTB.1 sebagai serial clock (SCL). Dari
pengaturan tersebut akan ter-include fungsi-fungsi pengaksesan register RTC DS1307 yang
terdapat pada file “ds1307.h.” fungsi-fungsi tersebut antara lain:
unsigned char rtc_read(unsigned char address); —> untuk membaca pada alamat tertentu
dari register timekeeper RTC
void rtc_write(unsigned char address,unsigned char data); —> untuk menulis pada alamat
tertentu dari register timekeeper RTC
void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out); —> untuk
inisialisasi
IC DS1307
void rtc_get_time(unsigned char *hour,unsigned char *min,unsigned char *sec); —>
untuk membaca waktu ( jam, menit dan detik ) dari RTC dalam satu kali akses
void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec); —> untuk
mensetting waktu sekarang ( jam, menit dan detik ) dari RTC dalam satu kali akses
void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year); —>
untuk membaca tanggal, bulan dan tahun dari RTC dalam satu kali akses
void rtc_set_date(unsigned char date,unsigned char month,unsigned char year); —>
untuk mensetting tanggal, bulan dan tahun dari RTC dalam satu kali akses.
pada topik ini, kita ingin mengatur waktu pada RTC sesuai jam dan tanggal sekarang misanya,
jam 08, menit: 19, detik:00 || tanggal: 24, bulan:04, tahun:2011. kemudian melakukan pembacaan
jam dan waktu dari RTC setiap 100 ms sekali dan menampilkan hasilnya pada LCD Display.
berikut listing programnya:
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.3 Professional
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
#include <mega16.h>
#include <ds1307.h>
#include <delay.h>
#include <stdio.h>
void main(void)
{
unsigned char jam, menit, detik, tanggal, bulan, tahun, buff[17];
while (1)
{
// Place your code here
rtc_get_time(&jam,&menit,&detik); // mengakses jam
rtc_get_date(&tanggal,&bulan,&tahun); //mengakses tanggal
lcd_gotoxy(0,0);
sprintf(buff,"Jam: %d:%d:%d ",jam,menit,detik); // menampilkan jam
lcd_puts(buff);
lcd_gotoxy(0,1);
sprintf(buff,"Tgl: %d:%d:%d ",tanggal,bulan,tahun); // menampilkan tanggal
lcd_puts(buff);
delay_ms(100);
lcd_clear();
};
}
Filed under:
About these ads
Electronics
(http://en.wordpress.com/about-these-ads/)
78 Responses
Reply
Reply
Reply
nilai hasil pembacaan dimasukkan dalam variable lalu ditampilkan nama harinya pada
LCD. Contoh:
void baca_nama_hari()
{
unsigned char hari, buff[16];
hari=rtc_read(0x03);
lcd_gotoxy(0,0);
if (hari==1) lcd_putsf(“Hari: minggu “);
else if (hari==2) lcd_putsf(“Hari: senin “);
else if (hari==3) lcd_putsf(“Hari: selasa “);
else if (hari==4) lcd_putsf(“Hari: rabu “);
else if (hari==5) lcd_putsf(“Hari: kamis “);
else if (hari==6) lcd_putsf(“Hari: jum’at “);
else if (hari==7) lcd_putsf(“Hari: sabtu “);
delay_ms(100);
}
Reply
Reply
Reply
Reply
//************************************************//
………………………………….
#define out_RELAY DDRA.0
#define RELAY PORTA.0
#define ON 0 // aktif low
#define OFF 1
…………………………………..
…………………………………..
void main(void)
{………………………………
kurangsangu.wordpress.com/2011/04/24/membaca-rtc-ds1307-dengan-codev ision-av r/ 8/21
21/08/14Membaca RTC DS1307 dengan Codev ision AVR | Kurang_Sangu
……………………………….
……………………………….
out_RELAY=1; // memfungsikan A.0 sebagai output untuk relay
RELAY=OFF; // memberi kondisi awal relay dalam keadaan mati
while (1)
{
// Place your code here
rtc_get_time(&jam,&menit,&detik); // mengakses jam
rtc_get_date(&tanggal,&bulan,&tahun);
lcd_gotoxy(0,0);
sprintf(buff,”Jam: %d:%d:%d “,jam,menit,detik);
lcd_puts(buff);
lcd_gotoxy(0,1);
sprintf(buff,”Tgl: %d:%d:%d “,tanggal,bulan,tahun);
lcd_puts(buff);
if (jam==5) RELAY=ON;
else RELAY=OFF; // jam =6 maka relay mati
delay_ms(100);
lcd_clear();
}
}
Reply
Reply
http://www.ziddu.com/download/18709064/CodevisionAVRV2.03.4.rar.html
Reply
Reply
Pin SQW/OUT (Square Wave Output) di DS1307 fungsinya untuk keluaran gelombang
kotak dari kaki ke-7 (lihat gambar di atas) dengan frekuensi pilihan yaitu 1 Hz, 4096 Hz,
8192 Hz atau 32768 Hz.
keluaran gelombang kotak ini bisa diaktifkan atau tidak terserah penggunanya. fungsi
untuk SQW ini adalah:
void rtc_init(unsigned char rs, unsigned char sqwe, unsigned char out);
rs=nilai frekuensi outputnya (0 untuk 1 Hz, 1 untuk 4096 Hz, 2 untuk 8192 Hz dan 3 untuk
32768 Hz).
sqwe=meng-enable keluaran gelombang kotak pada kaki ke-7 DS1307 (1 untuk enabled
dan 0 untuk disabled).
out=logika pin SQW/OUT ketika kondisi disabled.
Reply
Reply
Reply
Reply
Reply
Reply
Reply
agar dapat mengikuti waktu real yang terkini maka pada program di atas perlu
ditambahkan menu untuk setting jam dan tanggal.. jadi pengaturan waktunya bisa sesuai
kemauan kita. kalau program yg di atas kan pengaturan waktunya dilakukan setiap kita
nge flash / download program ke mikronya. jadi nilai waktunya akan kembali ke nilai wktu
yg sudah ter set di program (statis). program di atas sudah pernah saya pake project timer
pemanas / furnace bahan otomatis.. ya.. dg ngubah2 dikit programnya biar bisa dibuat
menu pengaturan waktunya.
trims..
Reply
Reply
Reply
Reply
Reply
Reply
Reply
kurangsangu.wordpress.com/2011/04/24/membaca-rtc-ds1307-dengan-codev ision-av r/
21/08/14Membaca RTC DS1307 dengan Codev ision AVR | Kurang_Sangu
Reply
Reply
d sambung ke relay untuk mengaktifkan mp3 yang keluarannya suara adzan bisa gk tuliskan
listing programnya
mohon pencerahannya
Reply
ini dengan asumsi alarm untuk semua waktu sholat adalah sama yaitu 1 jenis suara adzan..
beda lagi kalau tiap waktu sholat diberi nada adzan yg berbeda beda misalnya adzan
subuh pake gaya pakistan, dhuhur gaya eropa dll hehehe
Reply
Reply
Reply
Reply
Reply
Reply
untuk kontrol 7 semennya bisa pake 12 pin (8 untuk 7 seg + 4 untuk kontrol latching
keempat digitnya). thanks
Reply
Reply
while(1)
baca jam rtc setiap saat
–> bila jam sama dengan waktu alarm, aktifkan relay
–> bila jam > ‘beberapa jam’ matikan relay
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Reply
mas klo cavr aq ko ga bisa compile ya? pas compile ada pesan klo ds 1307 hanya untuk yang
commercial version. Mungkin masnya punya cavr yg full version share dong mas?
Reply
Reply
Reply
Reply
Reply
Reply
ketika mikro di reset.. solusinya ya harus di tambahkan sub rutin lagi untuk pilihan menu
apakah mau men set waktu RTC atau tidak di awal program.. bisa pake push button untuk
selector menunya.. tapi secara program RTCnya sudah bisa bekerja kan..
Reply
Reply
Reply
Reply
Terima kasih
(novinsyahputra@gmail.com)
Reply
Terima kasih
Reply
kurangsangu.wordpress.com/2011/04/24/membaca-rtc-ds1307-dengan-codev ision-av r/
Membaca RTC DS1307 dengan Codev ision AVR | Kurang_Sangu
Reply
Reply
Reply
Reply
Reply
void nama_hari()
{
lcd_gotoxy(0,0);
if (hari==1) lcd_putsf(“Hari : minggu “);
else if (hari==2) lcd_putsf(“Hari : senin “);
else if (hari==3) lcd_putsf(“Hari : selasa “);
else if (hari==4) lcd_putsf(“Hari : rabu “);
else if (hari==5) lcd_putsf(“Hari : kamis “);
else if (hari==6) lcd_putsf(“Hari : jum’at “);
else if (hari==7) lcd_putsf(“Hari : sabtu “);
sprintf(buff,”%d”,hari);
delay_ms(100);
lcd_clear();
}
while (1)
{
// Place your code here
nama_hari();
};
}
Reply
Reply
Reply
Reply
Reply
Reply
Reply
Follow
Follow “Kurang_Sangu”
Powered by WordPress.com