KONTROL ON/OF LED DENGAN DS1307 BERBASIS ATMEGA32
lagi-lagi RTC... maklum lagi fokus ma IC pewaktu ini. heheheh.. listing program beriku merupakan program untuk kontrol led secara real time. untuk sistem kerjanay, misalnya kita ingin idupin led pada pulukul 15:43:00 dan mematikan led pada pukul 15:45:00 secara otomatis. dari waktu yang kita set akan dibandingkan dengan waktu nyata atau waktu yang diaktifkan oleh ds1307. untuk set waktu, set wkt start dan stop menggunakan keyboard komputer...
berikut rangkaiannya:
listing program:
$regfile = "m32def.dat"
$crystal = 12000000
$baud = 9600
'***************************************************************
Config Portb = Output
Portb.0 = 0
'***************************************************************
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 ,
Config Lcdpin = Pin , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Config Lcd = 20 * 4
'***************************************************************
$lib "ds1307clock.lib"
Config Sda = Portc.1
Config Scl = Portc.0
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Config Clock = User
'***************************************************************
Dim Char As String * 10 , Tanda As String * 1
Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10
Dim A As Byte , B As Byte , C As Byte
Dim X As Byte , Y As Byte , Z As Byte
Dim Waktu As String * 10
Dim Jame As String * 10
Dim Menite As String * 10
Dim Detike As String * 10
Dim Ali As String * 10
Dim Hadi As String * 10
Dim Lut As String * 10
Dim Ature As String * 10
Dim Stoop As String * 10
Dim Sari As String * 10
Dim Novia As Eram String * 10
Dim Rosid As String * 10
Dim Wahyu As Eram String * 10
'**************************************************************
Print "ALI JAYA"
Waitms 100
Time$ = "15:30:00"
Print "waktu:" ; Time$
'**************************************************************
Mulia:
Sari = Novia
Rosid = Wahyu
Do
Tanda = Inkey()
If Tanda = "A" Then
' untuk ganti seting waktu RTC tekan huruf a pada keyboar
Input "masukkan waktu (hh:mm:ss):" , Waktu
Jam = Mid(waktu , 1 , 2)
Menit = Mid(waktu , 4 , 2)
Detik = Mid(waktu , 7 , 2)
Time$ = Jam + ":" + Menit + ":" + Detik
A = Val(jam)
B = Val(menit)
C = Val(detik)
_hour = A
_min = B
_sec = C
Gosub Settime
End If
If Tanda = "B" Then
' untuk ganti seting waktu STAR TIME tekan huruf B pada keyboar
Input "MASUKKAN STAR TIME (HH:MM:SS) :" , Ature
Jame = Mid(ature , 1 , 2)
Menite = Mid(ature , 4 , 2)
Detike = Mid(ature , 7 , 2)
Sari = Jame + ":" + Menite + ":" + Detike
Novia = Sari
End If
If Tanda = "C" Then
' untuk ganti seting waktu STAR STOP tekan huruf C pada keyboar
Input "MASUKKAN STOP TIME (HH:MM:SS) :" , Stoop
Ali = Mid(stoop , 1 , 2)
Hadi = Mid(stoop , 4 , 2)
Lut = Mid(stoop , 7 , 2)
Rosid = Ali + ":" + Hadi + ":" + Lut
Wahyu = Rosid
End If
Print "waktu :" ; Time$
Cls
Cursor Off
Locate 1 , 3
Lcd "AVR PROJECT"
Locate 2 , 1
Lcd "WAKTU =" ; _hour ; ":" ; _min ; ":" ; _sec
Locate 3 , 1
Lcd "TIME START =" ; Jame ; ":" ; Menite ; ":" ; Detike
Locate 4 , 1
Lcd "TIME STOP =" ; Ali ; ":" ; Hadi ; ":" ; Lut
Wait 1
If Time$ = Sari Then
Portb.0 = 1
End If
If Time$ = Rosid Then
Portb.0 = 0
End If
Loop
End
'************************************************************
Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
Return
'*************************************************************
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cwbyte _min
I2cwbyte _hour
I2cstop
Return
untuk set time tkan huruf A pada keyboar, untuk set time start tekan huruf B dan untuk set time stop tekan huruf C
berikut rangkaiannya:
listing program:
$regfile = "m32def.dat"
$crystal = 12000000
$baud = 9600
'***************************************************************
Config Portb = Output
Portb.0 = 0
'***************************************************************
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 ,
Config Lcdpin = Pin , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Config Lcd = 20 * 4
'***************************************************************
$lib "ds1307clock.lib"
Config Sda = Portc.1
Config Scl = Portc.0
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Config Clock = User
'***************************************************************
Dim Char As String * 10 , Tanda As String * 1
Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10
Dim A As Byte , B As Byte , C As Byte
Dim X As Byte , Y As Byte , Z As Byte
Dim Waktu As String * 10
Dim Jame As String * 10
Dim Menite As String * 10
Dim Detike As String * 10
Dim Ali As String * 10
Dim Hadi As String * 10
Dim Lut As String * 10
Dim Ature As String * 10
Dim Stoop As String * 10
Dim Sari As String * 10
Dim Novia As Eram String * 10
Dim Rosid As String * 10
Dim Wahyu As Eram String * 10
'**************************************************************
Print "ALI JAYA"
Waitms 100
Time$ = "15:30:00"
Print "waktu:" ; Time$
'**************************************************************
Mulia:
Sari = Novia
Rosid = Wahyu
Do
Tanda = Inkey()
If Tanda = "A" Then
' untuk ganti seting waktu RTC tekan huruf a pada keyboar
Input "masukkan waktu (hh:mm:ss):" , Waktu
Jam = Mid(waktu , 1 , 2)
Menit = Mid(waktu , 4 , 2)
Detik = Mid(waktu , 7 , 2)
Time$ = Jam + ":" + Menit + ":" + Detik
A = Val(jam)
B = Val(menit)
C = Val(detik)
_hour = A
_min = B
_sec = C
Gosub Settime
End If
If Tanda = "B" Then
' untuk ganti seting waktu STAR TIME tekan huruf B pada keyboar
Input "MASUKKAN STAR TIME (HH:MM:SS) :" , Ature
Jame = Mid(ature , 1 , 2)
Menite = Mid(ature , 4 , 2)
Detike = Mid(ature , 7 , 2)
Sari = Jame + ":" + Menite + ":" + Detike
Novia = Sari
End If
If Tanda = "C" Then
' untuk ganti seting waktu STAR STOP tekan huruf C pada keyboar
Input "MASUKKAN STOP TIME (HH:MM:SS) :" , Stoop
Ali = Mid(stoop , 1 , 2)
Hadi = Mid(stoop , 4 , 2)
Lut = Mid(stoop , 7 , 2)
Rosid = Ali + ":" + Hadi + ":" + Lut
Wahyu = Rosid
End If
Print "waktu :" ; Time$
Cls
Cursor Off
Locate 1 , 3
Lcd "AVR PROJECT"
Locate 2 , 1
Lcd "WAKTU =" ; _hour ; ":" ; _min ; ":" ; _sec
Locate 3 , 1
Lcd "TIME START =" ; Jame ; ":" ; Menite ; ":" ; Detike
Locate 4 , 1
Lcd "TIME STOP =" ; Ali ; ":" ; Hadi ; ":" ; Lut
Wait 1
If Time$ = Sari Then
Portb.0 = 1
End If
If Time$ = Rosid Then
Portb.0 = 0
End If
Loop
End
'************************************************************
Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
Return
'*************************************************************
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cwbyte _min
I2cwbyte _hour
I2cstop
Return
untuk set time tkan huruf A pada keyboar, untuk set time start tekan huruf B dan untuk set time stop tekan huruf C
