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)
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
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)
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
cara masuk lcd design
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
Fauzi hp