Jumat, 02 Maret 2012

Tutorial Jam Digital dengan RTC DS1307 Menggunakan CodeVision AVR

Sebelumnya sudah pernah saya posting tentang RTC DS1307 juga pada Tutorial Jam Digital dengan Bascom AVR, sedikit teori dan datasheet RTC DS1307 dapat dilihat pada postingan tersebut.

Pada tutorial kali ini saya akan memberikan contoh program jam digital dengan RTC DS1307 menggunakan bahasa pemrograman CodeVision AVR. Jam digital tersebut akan menampilkan tanggal dan waktu pada LCD dan port serial atau Hyperterminal.

 

Rangkaian skematik untuk tutorial jam digital ini sbb:
 
Pengaturan LCD pada wizard CodeVision AVR sbb:

Pengaturan port serial pada wizard CodeVision AVR sbb:

Pengaturan I2C DS1307 pada wizard CodeVision AVR sbb:

 Jangan lupa pilih data float pada pengaturan Project --> Configure --> C Compiler sbb:


Listing program jam digital pada tutorial ini sbb:
/*****************************************************
Project : RTC DS1307 CODE VISION
Date    : 06/17/2011
Author  : WAHYU RAHMANIAR
Company : TECHNOLOGINATION
*****************************************************/

#include <mega32.h>
#include <delay.h>
#include <stdio.h>  

// I2C Bus functions
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=1
   .equ __scl_bit=0
#endasm
#include <i2c.h>  
#include <ds1307.h>

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>

char buf[33];
unsigned char dd;
unsigned char mm;
unsigned char yy;
unsigned char s;
unsigned char m;
unsigned char h;

void main(void)
{
PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

ACSR=0x80;
SFIOR=0x00;

// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);

lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("==Jam Digital==");
lcd_gotoxy(0,1);
lcd_putsf("***************");
printf("Jam Digital dengan CodeVision AVR.... \r");
delay_ms(2000);

rtc_set_time(11,12,00);
rtc_set_date(02,03,12);

while (1)
      {          
      rtc_get_time(&h,&m,&s);
      rtc_get_date(&dd,&mm,&yy);
      lcd_gotoxy(0,0);
      sprintf(buf,"Tanggal:%02u/%02u/%02u",dd,mm,yy);
      lcd_puts(buf);
      lcd_gotoxy(0,1);
      sprintf(buf,"Waktu  :%02u:%02u:%02u",h,m,s);
      lcd_puts(buf);
      printf("Tanggal: %02u:%02u:%02u \r",dd,mm,yy);
      printf("Waktu  : %02u:%02u:%02u \r",h,m,s);
      delay_ms(1000);        
      };
}



Jika sudah didownload, maka download sekali program ke mikrokontroler dengan menghapus bagian ini:
rtc_set_time(11,12,00);
rtc_set_date(02,03,12);
karena sekali download data RTC akan tersimpan dan tinggal dipanggil untuk mengambil datanya.
Kalau listing program bagian setting jam dan tanggal tsb tidak dihapus maka jam dan tanggal akan selalu mengulang dari settingan tsb setiap kali program di-run.

Simulasi dan source code dapat didownload disini.

-ayuchan-