Rabu, 27 Juni 2012

Menggunakan IC Real Time Clock DS1307 dengan CodeVisionAVR


Bismillah, semoga saya bisa istiqomah nulis di blog ini

Kesempatan kali ini saya ingin berbagi tentang menggunakan IC DS1307 dengan CodevisionAVR versi 1.xx.x. DS1307 adalah IC yang berfungsi menyediakan data waktu seperti jam dan tanggal secara real time.

 




DS1307 diakses lewat i2c, berikut ini skematik nya

 
Nah …, sekarang mari mulai membuat code nya di codevision

Dimulai:

Buka aplikasi codevision versi 1.xx.x, ingat harus versi 1.xx.x karena pada tulisan ini saya pakai yang versi 1.xx.x. buatlah new project.

 
 
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

7 komentar:

  1. ada yang error...
    unsigned char buffer (16);

    BalasHapus
  2. kirim email tarbiyah12@yahoo.co.id

    BalasHapus
  3. mas waktu di compile ada error "too few argument in function call in line 41 and 51". gimana memperbaikinya mas?

    BalasHapus
    Balasan
    1. Komentar ini telah dihapus oleh pengarang.

      Hapus
    2. line 41 dan 51 yang mana? coba code diatas diketik ulang jangan di copas

      Hapus
    3. Komentar ini telah dihapus oleh pengarang.

      Hapus
    4. maaf ikut nimbrung.
      iya, 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

      Hapus