MEMBUAT JAM DIGITAL LCD 16X2

selain menunjukan Jam, Menit, & detik Jam Digital LCD 16x2 ini juga akan menapilkan Tanggal, Bulan, Tahun, & Hari. Jam ini cocok di letakkan didinding kamar yang tidak terlalu lebar. jika anda sudah pernah MEMBUAT JAM DIGITAL ATMEGA8 tentunya untuk menampilkan ke LCD 16x2 adalah hal yang sangat mudah.

menampilkan suatu Text maupun simbol tertentu ke LCD 16x2  menggunakan BASCOM-AVR sangatlah mudah. perhatikan potongan Program berikut

locate 1,1 : lcd  "  JAM  DIGITAL  "
locate 2,1 : lcd  jam ; menit ; detik
locate 2,1 : lcd chr(0)


MEMBUAT JAM DIGITAL LCD 16X2

kode yang pertama menampilkan text, untuk menampilkan text diberi tanda " ".
kode yang kedua menampilkan variable jam, menit, dan detik. tidak perlu ditambah " "
kode yang ketiga untuk menampilkan simbol tertentu sesuai keinginan anda, akan tetapi simbol harus dibuat dulu menggunakan lcd design

MEMBUAT JAM DIGITAL LCD 16X2
cara masuk lcd design

MEMBUAT JAM DIGITAL LCD 16X2
LCD design

setelah itu tekan OK, akan tampil seperti dibawah ini. ganti [x] dengan angka 0 - 7
kemudian untuk menampilkan ke LCD menggunakan kode seperti yang telah dijelaskan diatas
di bagian chr( ) isi dengan no yang telah anda ganti. dalam contoh angka 0

karena hanya 0 - 7 berarti hanya bisa membuat simbol sebanyak 8 simbol.

kembali ke masalah MEMBUAT JAM DIGITAL LCD 16X2:
untuk memudahkan kita gunakan saja library Jam Digital yang sudah disediakan BASCOM-AVR. librabry ini tersimpan di example. berikut library Jam Digital

'-------------------------------------------------------------------------------
'                           DS1307.BAS
' shows how to use the ds1307 clock on the 2313 futurlec board
' it also shows the CONFIG CLOCK=USER option
'-------------------------------------------------------------------------------
$regfile = "2313def.dat"
$crystal = 8000000
$baud = 19200
$lib "mcsbyte.lbx"                                          ' for smaller code
$lib "ds1307clock.lib"                                      ' modified lib
$framesize = 16
$hwstack = 24
$swstack = 16


'configure the scl and sda pins
Config Sda = Portd.6
Config Scl = Portd.5

'address of ds1307
Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
Const Ds1307r = &HD1

Config Clock = User                                         ' this will dim the bytes automatic
'dim other needed variables
Dim Weekday As Byte

Print "DS1307"
Waitms 100
' assigning the time will call the SetTime routine
Time$ = "23:58:59"                                          ' to watch the day changing value
Date$ = "11-13-02"                                          ' 13 november 2002
Do
  Print "Date Time : " ; Date$ ; " " ; Time$
  Waitms 500
Loop

End

'called from ds1307clock.lib
Getdatetime:
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' start address in 1307

  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307r                                          ' send address
  I2crbyte _sec , Ack
  I2crbyte _min , Ack                                       ' MINUTES
  I2crbyte _hour , Ack                                      ' Hours
  I2crbyte Weekday , Ack                                    ' Day of Week
  I2crbyte _day , Ack                                       ' Day of Month
  I2crbyte _month , Ack                                     ' Month of Year
  I2crbyte _year , Nack                                     ' Year
  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                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 4                                                ' starting address in 1307
  I2cwbyte _day                                             ' Send Data to SECONDS
  I2cwbyte _month                                           ' MINUTES
  I2cwbyte _year                                            ' Hours
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' starting address in 1307
  I2cwbyte _sec                                             ' Send Data to SECONDS
  I2cwbyte _min                                             ' MINUTES
  I2cwbyte _hour                                            ' Hours
  I2cstop
Return

dengan library siap pakai diatas bisa kita tambahkan kode untuk menampilkan ke LCD. kode diatas masih memakai terminal PC sebagai Displaynya. .ada beberapa kode yang harus di kurangi dan di tambahi. dibawah ini kode yang sudah jadi, perhatikan  bagian yang tidak dipakai dan yang ditambahi

'-------------------------------------------------------------------------------
'                           DS1307.BAS
' shows how to use the ds1307 clock on the 2313 futurlec board
' it also shows the CONFIG CLOCK=USER option
'-------------------------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000
'$baud = 19200
$lib "mcsbyte.lbx"                                          ' for smaller code
$lib "ds1307clock.lib"                                      ' modified lib
$framesize = 16
$hwstack = 24
$swstack = 16


Config Portb = Output
Config Portc = Input

'configure the scl and sda pins
Config Sda = Portc.1
Config Scl = Portc.0

'address of ds1307
Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clock
Const Ds1307r = &HD1

Config Clock = User                                         ' this will dim the bytes automatic
'dim other needed variables
Dim Weekday As Byte

'Print "DS1307"
Waitms 100
' assigning the time will call the SetTime routine
Time$ = "23:58:59"                                          ' to watch the day changing value
Date$ = "11-13-02"                                          ' 13 november 2002

Cls
Cursor Off

Do
  'Print "Date Time : " ; Date$ ; " " ; Time$

  Locate 1 , 1 : Lcd "  Jam  Digital  "
  Locate 2 , 1 : Lcd Time$

  Waitms 500
Loop

End

'called from ds1307clock.lib
Getdatetime:
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' start address in 1307

  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307r                                          ' send address
  I2crbyte _sec , Ack
  I2crbyte _min , Ack                                       ' MINUTES
  I2crbyte _hour , Ack                                      ' Hours
  I2crbyte Weekday , Ack                                    ' Day of Week
  I2crbyte _day , Ack                                       ' Day of Month
  I2crbyte _month , Ack                                     ' Month of Year
  I2crbyte _year , Nack                                     ' Year
  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                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 4                                                ' starting address in 1307
  I2cwbyte _day                                             ' Send Data to SECONDS
  I2cwbyte _month                                           ' MINUTES
  I2cwbyte _year                                            ' Hours
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' starting address in 1307
  I2cwbyte _sec                                             ' Send Data to SECONDS
  I2cwbyte _min                                             ' MINUTES
  I2cwbyte _hour                                            ' Hours
  I2cstop
Return

Artikel Terkait

MEMBUAT JAM DIGITAL LCD 16X2
4/ 5