Bismillah, semoga saya
bisa istiqomah nulis di blog ini
DS1307 diakses lewat
i2c, berikut ini skematik nya
Nah …, sekarang mari
mulai membuat code nya di codevision
Dimulai:
Pilih file type yaitu
project, karena kita ingin buat new project, klik OK
Klik Yes
Kesempatan kali ini menggunakan atmega 8 dengan
clock 8 MHz, kemudian pilih / klik i2c
Pilih i2c port = PORTC, SDA bit = 0, SCL bit =
1, maksudnya port SDA dan SCL i2c ada di PORTC bit ke 0 dan ke 1. Buatlah
setingan seperti gambar diatas, kemudian klik file pilih generate, save and
exit.
Save file dengan nama
“i2c”
Klik save
Klik save
Kemudian akan muncul
Seperti biasa, untuk memudahkan saya menjelaskan
hapus semua code tersebut dan ganti dengan code berikut:
#include
<mega8.h>
#include
<stdio.h>
//
Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include
<lcd.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>
//
Declare your global variables here
unsigned
char j,m,s;
unsigned
char h,b,t;
unsigned
char buffer[16];
void
main(void)
{
//
I2C Bus initialization
i2c_init();
//
LCD module initialization
lcd_init(16);
//
DS1307 Real Time Clock initialization
//
Square wave output on pin SQW/OUT: Off
//
SQW/OUT pin state: 0
rtc_init(0,0,0);
rtc_set_time(12,12,12);//tulis
jam 12:12:12
rtc_set_date(10,10,10);//tulis
tanggal 10-10-10
while
(1)
{
// Place your code here
rtc_get_time(&j,&m,&s);//baca
jam
sprintf(buffer,"%d:%d:%d",j,m,s);
lcd_gotoxy(0,0);
lcd_puts(buffer);
rtc_get_date(&h,&b,&t);//baca
tanggal
sprintf(buffer,"%d:%d:%d",h,b,t);
lcd_gotoxy(0,1);
lcd_puts(buffer);
};
}
*cat: ada penambahan LCD di PORTB untuk memudahkan dalam mengamati / melihat hasil dari pembacaan dan penulisan data jam dan tanggal dari DS1307
Kemudian compile
program diatas dengan menekan shift+F9 pada keyboard,
Klik OK, file .hex saya simulasikan dengan proteus
*cat: pada gambar diatas rangkaian realnya, ic ds1307 pin 1 dan 2 di hubung ke crystal dan pin 3 ke batere 3v dc dan pin 7 ke GND.
ini video nya...
Semoga bermanfaat
ada yang error...
BalasHapusunsigned char buffer (16);
kirim email tarbiyah12@yahoo.co.id
BalasHapusmas waktu di compile ada error "too few argument in function call in line 41 and 51". gimana memperbaikinya mas?
BalasHapusKomentar ini telah dihapus oleh pengarang.
Hapusline 41 dan 51 yang mana? coba code diatas diketik ulang jangan di copas
HapusKomentar ini telah dihapus oleh pengarang.
Hapusmaaf ikut nimbrung.
Hapusiya, nih mas sama kaya kasusnya mas francesco. muncul pesan gitu.
line 41 itu:
rtc_set_date(10,10,10);//tulis tanggal 10-10-10
line 51 itu:
rtc_get_date(&h,&b,&t);//baca tanggal
saya gak tau errornya sebelah mana, padahal selain 2 itu gak ada masalah