Kali ini kita sampaikan cara gampang
membuat jam digital dengan ATmega16. Bisa juga dengan ATmega tipe yang
lain seperti ATmega8, ATmega8535 atau ATmega32. Tampilan seven segment
kita buat 6 digit. Dua digit untuk tampilan jam, dua digit untuk
tampilan menit dan dua lagi sebagai tampilan detik. Rangkaian seven
segment penampil jam digital sebagai berikut :
Sebagai ‘pewaktu’ kita menggunakan Real Time Clock DS1307 keluaran Dallas Semiconductor. Dilengkapi dengan batteray backup sehingga walaupun power pada mikrokontroler mati, data ‘waktu’ tidak akan hilang. Rangkaian RTC DS1307 dan interfacing-nya dengan mikrokontroler terlihat sangat sederhana :
Data ‘waktu’ yang dibaca di RTC berupa jam (jam, menit, detik) dan tanggal (tanggal, bulan, tahun, hari). Pada
aplikasi kita kali ini kit abaca saja data jam, karena yang akan kita
tampilkan ke seven segment cukup jam, menit dan detik saja.Sebagai ‘pewaktu’ kita menggunakan Real Time Clock DS1307 keluaran Dallas Semiconductor. Dilengkapi dengan batteray backup sehingga walaupun power pada mikrokontroler mati, data ‘waktu’ tidak akan hilang. Rangkaian RTC DS1307 dan interfacing-nya dengan mikrokontroler terlihat sangat sederhana :
Program dibuat dengan CodeVisionAVR, nih listingnya :
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __i2c_port=0×12 ;PORTd
.equ __sda_bit=7
.equ __scl_bit=6
#endasm
#include <i2c.h>
#include <ds1307.h>
char angka[10]={0xC0,0xF9,0xA4,0xB0,0×99,0×92,0×82,0xF8,0×80,0×90};
unsigned char h,m,s;
char j_sat,j_pul,m_sat,m_pul,d_sat,d_pul;
void main(void)
{
DDRA=0xFF;
DDRB=0b111111;
i2c_init();
rtc_init(0,0,0);
rtc_set_time(10,23,15);
rtc_set_date(2,3,12);
delay_ms(100);
PORTA=angka[j_pul];
PORTB=0B11010111;
while (1)
{
rtc_get_time(&h,&m,&s);
j_pul=h/10;
j_sat=h%10;
m_pul=m/10;
m_sat=m%10;
d_pul=s/10;
d_sat=s%10;
PORTA=angka[j_pul];
PORTB=0B11111110;
delay_ms(3);
PORTA=angka[j_sat];
PORTB=0B11111101;
delay_ms(3);
PORTA=angka[m_pul];
PORTB=0B11111011;
delay_ms(3);
PORTA=angka[m_sat];
PORTB=0B11110111;
delay_ms(3);
PORTA=angka[d_pul];
PORTB=0B11101111;
delay_ms(3);
PORTA=angka[d_sat];
PORTB=0B11011111;
delay_ms(2);
}
}
Kalau teman – teman membuat rangkaiannya berbeda, maksud saya koneksi dengan mikrokontrolernya tidak sama dengan yang ada disini, cukup sesuaikan pada programnya saja, ok ? Sekarang kita lihat hasilnya. Saya memakai Desymega wRTC .
Desymega wRTC (Development System ATmega with RTC, Real Time Clock)
Kalau yang satu ini sebuah board mikrokontroler yang sudah dilengkapi dengan Real Time Clock (RTC). Jadi kalau aplikasi yang akan dibuat membutuhkan sistem pewaktuan (jam dan tanggal) maka Desymega wRTC ini sangat tepat dipakai.Dilengkapi dengan USB downloader dan LCD display, sehingga pekerjaan ‘mendevelop’ dengan mikrokontroler akan menjadi mudah.
Spesifikasi :
- Mikrokontroler ATmega16 (bisa jg untuk ATmega8535/32)
- RTC DS1307 + Batteray backup
- LCD 2×16
- 3×10 Port ekspansi : PORTA, PORTB, PORTD
- Crystal 16 MHz
- 2 push button (dapat digunakan sebagai INT0 dan INT1)
- Power Supply 5 Vdc (dapat juga langsung dari port USB komputer)
- PCB fiber
- Terintegrasi dengan USB Downloader