Widget HTML Atas

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"