pada post sebelumnya
link hanya dibuat aplikasi ds1307 +atmega16 hanya menampilkan jam saja sedangkan mengaturnya dengan menggunakan program, kemudian saya mencoba menggunakan push button untuk mengatur atau mengeset waktunya dan alhamdulillah berhasil (hehehehe).
Sedikit me refresh kembali ingatan aku sendiri, rangkaian dari ds1307 adalah sebagai berikut.
kemudian pada pin sda dihubungkan ke pin sda minimum sistem begitu juga dengan scl-nya. Apato sda sama scl tuh? SDA adalah sinyal data sedangkan SCl adalah sinyal clock, kedua pin ini adalah pin yang digunakan mikrokontroler untuk komunikasi via I2C (Inter IC) "red-baru itu yang saya tahu tentang i2c" . Berikut merupakan rangkaian dari minimum sistem Atmega16nya
klik gambarnya kalo mau diperbesar. Nah setelah ntu dihubungkan rangkaian modul RTC dan Rangkaian Minimum sistemnya. Kemudian program yang digunakan adalah menggunakan bahasa pemrograman Bascom AVR ver 1.11.9.5. berikut potongan programnya.
$regfile = "m16def.dat"
$crystal = 12000000
$lib "mcsbyte.lbx"
$lib "ds1307clock.lib"
melakukan inisialisasi dan menggambil librari ds1307clock yang terdapat peda bascom AVR.
Config Sda = Portc.1
Config Scl = Portc.0
konfigurasi I2C seperti diatas, gampangkan
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Mendeklarasikan konstanta yang digunakan untuk melakukan operasi menulis dan membaca I2c dai ds1307.
Waktu:
I2cstart
I2cwbyte Ds1307w ; menulis data ke ds1307
I2cwbyte 0 ; mulai dari byte ke 0
I2cstart
I2cwbyte Ds1307r ;membaca data ke ds1307
I2crbyte Det , Ack ;membaca data detik dimasukkan divariabel det
I2crbyte Men , Ack ;membaca data menit dimasukkan divariabel men
I2crbyte Jam , Nack ;membaca data jam dimasukkan divariabel jam
I2cstop
Det = Makedec(det) ; konversi dari BCD ke decimal
Men = Makedec(men)
Jam = Makedec(jam)
Return
Perintah diatas adalah untuk membaca data data dari IC ds1307 nya via I2c. Kalo pengen tahu arti setiap sintaknya. cari di helpnya Bascom AVR.
Aturwaktu:
I2cstart
I2cwbyte Ds1307w ; menulis data ke ds1307
I2cwbyte 0
I2cwbyte Ndet ;memasukkan nilai variabel Ndet ke byte 1(detik)
I2cwbyte Nmen ;memasukkan nilai variabel Nmen ke byte 2(menit)
I2cwbyte Njam ;memasukkan nilai variabel Njam ke byte 3(jam)
I2cstop ;stop I2c
Return
perintah diatas digunakan untuk memasukkan/mengeset parameter waktu seperti detik, menit dan jam. Kemudian semua parameter (jam,menit,detik) ditampilkan di LCD dengan perintah berikut:
Main:
Cls
Do
Locate 1 , 1
Lcd "time=" ; Jam ; ":" ; Men ; ":" ; Det ; " "
Call Waktu
Loop
setelah itu donlot program ke mikrokontroler, jadi deh jam digitalnya hehehehe,, trust me its work!
bagi yang mau donload:
wasalam.