Basics

The Real time clock DS1307 IC basically is stand alone time clock. Well, basically we can use a micrcontroller to keep time, but the value would go off as soon as it is powered off.

The RTC DS1307 is a handy solution to keep time all the way, when it is powered by a coin cell.

It is uses I²C (Inter-Integrated Circuit) protocol, referred to as I-squared-C, I-two-C, or IIC for communication with the micrcontroller.

Check the basics of I2C here, if are not familiar with it. For Details of I2C, go through this tutorial.

Schematic

[1]

Schematic AVR Interfacing RTC.JPG

Code

#include <avr\io.h>    // io.h contains the defnition of all ports and SFRs
#include "lcd.h"	         //User defined LCD library which conatins the lcd routines
#include "ds1307.h"    //User defined library which conatins the RTC(ds1307) routines
 
/* start the main program */
void main() 
{
   unsigned char sec,min,hour,day,month,year;
 
  /* Initilize the lcd before displaying any thing on the lcd */
    LCD_Init();
 
  /* Initilize the RTC(ds1307) before reading or writing time/date */
    DS1307_Init();
 
  /*Set the time and Date only once */
   DS1307_SetTime(0x10,0x40,0x20);  //  10:40:20 am
   DS1307_SetDate(0x04,0x02,0x15);  //  4th Feb 2015
 
  /* Display "Time" on first line*/
   LCD_DisplayString("Time: ");
 
   /* Display "Date" on Second line*/
   LCD_GoToLineTwo();
   LCD_DisplayString("Date: ");
 
   /* Display the Time and Date continuously */ 
   while(1)
    {
	 /* Read the Time from RTC(ds1307) */ 
        DS1307_GetTime(&hour,&min,&sec);        
 
	/* Display the time on Firstline-7th position*/
        LCD_GoToXY(0,6); 		 
        LCD_DisplayRtcTime(hour,min,sec);
 
 
	 /* Read the Date from RTC(ds1307) */ 
         DS1307_GetDate(&day,&month,&year);        
 
	 /* Display the Date on Secondline-7th position*/
         LCD_GoToXY(1,6); 		 
         LCD_DisplayRtcDate(day,month,year);
    }		
 
  }