Rabu, 21 Maret 2012

Jam Digital LCD dengan RTC DS1307

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.


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 :

#include <mega16.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;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
ACSR=0x80;
SFIOR=0x00;
i2c_init();
rtc_init(0,0,0);

lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("==Digital CLOCK==");
lcd_gotoxy(0,1);
lcd_putsf("===============");
printf("Jam Digital RTC DS 1307\r");
delay_ms(2000);

rtc_set_date(21,03,12);
rtc_set_time(20,51,00);
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);       
      };
}

Setelah Mendonwloadkan sekali dan sudah menampilkan jam pada LCD. maka butuh mendonwloadkan sekali lagi namun pada bagian :
rtc_set_date(21,03,12);
rtc_set_time(20,51,00);
di hilangkan atau di no-Aktifkan, agar hasil setingan tidak berubah saat jam mulai di run kembali.

donwload pertama :
rtc_set_date(21,03,12);
rtc_set_time(20,51,00);
disesuaikan dengan tanggal dan jam saat ini:





Minggu, 18 Maret 2012

Monitoring suhu dengan WEB server NM7010A

Bahasan kali ini akan mencoba modul NM7010A yaitu sebuah modul komunikasi basis website. dimana pemanfaatan nya untuk monitoring suatau keadaan dengan tampilan WEBsite.



dalam perancangan kali ini menggunakan mikrokontroler ATmega328, ukuran nya ramping dan memiliki memori yang cukup besar. kenapa tidak menggunakan mikrokontroler lain nya yang memiki memory besar dan pin I/O yang lebih banyak..?? alasan nya dalam projeck ini tidak membutuhkan pin I/O yang banayak. dan ini juga project pesanan seseorang, jadi mikrokontroler disesuaikan dengan pesanan pelanggan.