Jam Digital Tampilan LCD dengan ATMega32 dan DS1307 Bahasa Pemrograman BASCOM AVR
Perlu diperhatikan jika dalam pembuatan rangkaian sesungguhnya, Crystal yang tepat buat IC DS1307 adalah 32,768KHz. Terkadang kita tidak mempedulikan hal itu sehingga rangkaian yang kita buat tidak berjalan seperti yang ada di simulasi Proteus. DS1307 adalah salah satu IC pewaktu yang berfungsi dalam pemrograman waktu.
Adapun Bahasa programnya dalam Bahasa BASCOM AVR ( basic compiler ) seperti di bawah ini.
Selamat menikmati, semoga bermanfaat..
'Hobby Elektronika
'by : Jetro' 081218390689
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Config Sda = Portc.1
Config Scl = Portc.0
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Config Clock = User
Dim Weekday As Byte
Dim Char As String * 10 , Tanda As String * 1
Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10
Dim Hari As String * 10 , Bulan As String * 10 , Tahun 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 Tanggal As String * 10
Locate 1 , 1
Lcd "SELAMAT DATANG"
Locate 2 , 1
Lcd "DI MY CHANNEL"
Waitms 100
Cls
Cursor Off
Locate 1 , 1
Lcd "JANGAN LUPA"
Locate 2 , 1
Lcd "SUBSCRIBE"
Waitms 100
Cls
Cursor Off
Print "DS1307"
Waitms 100
Time$ = "14:47:00" 'ganti sesuka
Date$ = "01-08-21" 'ganti sesuka
Print "Tanggal: " ; Date$
Print "Waktu:" ; Time$
Cls
Cursor Off
Locate 1 , 1
Lcd "Tanggal: " ; _day ; ":" ; _month ; ":" ; _year
Locate 2 , 1
Lcd "Waktu : " ; _hour ; "-" ; _min ; "-" ; _sec
Wait 1
Mulai:
Do
Tanda = Inkey()
If Tanda = "A" Then
'untuk ganti settingan waktu RTC tekan huruf A pada keyboard
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 settingan tanggal RTC tekan huruf A pada keyboard
Input "Masukkan Tanggal (mm-dd-yy):" , Tanggal
Bulan = Mid(tanggal , 1 , 2)
Hari = Mid(tanggal , 4 , 2)
Tahun = Mid(tanggal , 7 , 2)
Date$ = Bulan + "-" + Hari + "-" + Tahun
X = Val(bulan)
Y = Val(hari)
Z = Val(tahun)
_day = Y
_month = X
_year = Z
Gosub Setdate
End If
Print "Tanggal: " ; Date$
Print "Waktu:" ; Time$
Cls
Cursor Off
Locate 1 , 1
Lcd "Tanggal: " ; _day ; ":" ; _month ; ":" ; _year
Locate 2 , 1
Lcd "Waktu : " ; _hour ; "-" ; _min ; "-" ; _sec
Wait 1
Loop
End
'Pengambilan data RTC DS1307
Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Ack
I2crbyte Weekday , Ack
I2crbyte _day , Ack
I2crbyte _month , Ack
I2crbyte _year , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 4
I2cwbyte _day
I2cwbyte _month
I2cwbyte _year
I2cstop
Return
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cwbyte _min
I2cwbyte _hour
I2cstop
Return

Tidak ada komentar untuk "Jam Digital Tampilan LCD dengan ATMega32 dan DS1307 Bahasa Pemrograman BASCOM AVR"
Posting Komentar