DS1307 merupakan IC Real Time Clock (RTC) yang dapat diakses dengan mikrokontroler menggunakan komunikasi serial I2C. Berikut ini contoh untuk menampilkan RTC DS1307 pada LCD menggunakan Bascom AVR. Dengan adanya RTC ini maka kita dapat menampilkan waktu yang berupa jam, menit, dan detik, serta tanggal, yaitu hari, bulan dan tahun, seperti yang tercatum di datasheet DS1307.
Koneksi RTC DS1307 dengan Mikrokontroler
Berikut ini gambar schematic dari rangkaian RTC DS1307 yang disimulasikan di proteus 7.4 dengan menggunakan Mikrokontroler ATmega32.
Data jam pada RTC disimulasi ini dapat dirubah dengan menekan swicth seting jam agar terhubung ke groud. Maka data detik, menit dan jam dapat disesuaikan, Berikut ini listing program rtc ds1307 menggunakan bascom AVR.
$regfile = "m32def.dat"
$crystal = 12000000
'konfigurasi pin LCD
Config Porta = Output
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.2 , Rs = Porta.0
Config Lcd = 16 * 4 : Cursor Off
Cls
$lib "ds1307clock.lib"
'konfigurasi pin Sda & Scl untuk komunikasi I2C
Config Sda = Portc.1
Config Scl = Portc.0
'nilai konstanta Ds1307 saat tulis dan baca
Const Ds1307w = &HD0
Const Ds1307r = &HD1
'konfiguasi input pust bottom
Config Pinb.0 = Input , Pinb.1 = Input , Pinb.2 = Input , Pinb.3 = Input
Config Debounce = 30
'Pendeklarasian variabel yang digunakan'
Dim A As Byte , B As Byte , Data1 As Byte , C As Byte
Dim Detik As Byte , Menit As Byte , Jam As Byte
Cursor Off
Cls
'program utama
Cls
Main:
Do
Gosub Ds1307
Gosub Seting
Gosub Pustbottom
Loop
Ds1307:
I2cstart
I2cwbyte Ds1307w 'kirim alamat register RAM
I2cwbyte 0 'kirim alamat o yang dibaca detik
I2cstart
I2cwbyte Ds1307r 'baca alamat register RAM
I2crbyte Detik , Ack 'Variable Detik
I2crbyte Menit , Ack 'Variable Menit
I2crbyte Jam , Nack 'variable Jam
I2cstop
Detik = Makedec(detik) : Menit = Makedec(menit) : Jam = Makedec(jam)
If Detik > 59 Then Detik = 0
If Menit > 59 Then Menit = 0
If Jam > 23 Then
Jam = 0
Gosub Detik
End If
Return
Seting:
If Pinb.3 = 1 Then Gosub Disply_seting
Disply_seting:
Locate 3 , 1
Lcd "Jam = "
If Jam < 10 Then
Lcd "0" ; Jam ; ":" ;
Else
Lcd Jam ; ":" ;
End If
If Menit < 10 Then
Lcd "0" ; Menit ; ":" ;
Else
Lcd Menit ; ":" ;
End If
If Detik < 10 Then
Lcd "0" ; Detik
Else
Lcd Detik
End If
Locate 4 , 1
If Jam = 6 Then
Lcd "selamat pagi "
End If
Locate 4 , 1
If Jam = 10 Then
Lcd "selamat Siang"
End If
Locate 4 , 1
If Jam = 16 Then
Lcd "selamat sore"
End If
Return
Pustbottom:
Debounce Pinb.0 , 0 , Detik , Sub
Debounce Pinb.1 , 0 , Menit , Sub
Debounce Pinb.2 , 0 , Jam , Sub
Return
Detik:
Incr Detik
If Detik > 59 Then Detik = 0
Detik = Makebcd(detik)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte Detik
I2cstop
Return
Menit:
Incr Menit
If Menit > 59 Then Menit = 0
Menit = Makebcd(menit)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 1
I2cwbyte Menit
I2cstop
Return
Jam:
Incr Jam
If Jam > 23 Then Jam = 0
Jam = Makebcd(jam)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 2
I2cwbyte Jam
I2cstop
Return
Mr. Casinos | Casinos | DrMCD
BalasHapusGet information and reviews about Mr. 아산 출장샵 Casinos online from Dr. 광주광역 출장마사지 Dr.C. and browse our casino reviews 김해 출장마사지 to find the best casino 충청북도 출장안마 games. 김천 출장안마