Hallo,
Ich habe mir eine Steuerung gebaut welche aus einem Atmega128 und ds1307(Realclock) und einem Glcd (240x64) mit T6963c Controller besteht.
Zur graphischen Darstellung benutzte ich das entsprechende Bascom-Tool von Evertdekker (Pixeldarstellung). Ich muß um eine Zahl oder Text, diesen zuerst in eine Stringvariable umwandeln. Und hier fängt mein Problem an. Ich weis das ich mit dem Befehl date$ und time$ den ds1307 beschreiben muß. Aber wie bekomme ich meine Werte für Tag, Monat, Jahr sowie Stunde, Minute und Sekunden ? Da ich schon öfters GLCD's (T6963c) verbaut und in Bascom programmiert habe, stehe ich doch vor einem Problem beziehungsweise die ganzen Forenbeiträge habe mich verwirrt. Zahlreiche Versuche sind kläglich gescheitert, als hätte man ein Brett vorm Kopf !
Ich habe mir eine Steuerung gebaut welche aus einem Atmega128 und ds1307(Realclock) und einem Glcd (240x64) mit T6963c Controller besteht.
Zur graphischen Darstellung benutzte ich das entsprechende Bascom-Tool von Evertdekker (Pixeldarstellung). Ich muß um eine Zahl oder Text, diesen zuerst in eine Stringvariable umwandeln. Und hier fängt mein Problem an. Ich weis das ich mit dem Befehl date$ und time$ den ds1307 beschreiben muß. Aber wie bekomme ich meine Werte für Tag, Monat, Jahr sowie Stunde, Minute und Sekunden ? Da ich schon öfters GLCD's (T6963c) verbaut und in Bascom programmiert habe, stehe ich doch vor einem Problem beziehungsweise die ganzen Forenbeiträge habe mich verwirrt. Zahlreiche Versuche sind kläglich gescheitert, als hätte man ein Brett vorm Kopf !
Code:
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 0 ' Register-addresse im 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)
Select Case Weekday
Case 1
Wt = "Montag"
Case 2
Wt = "Dienstag"
Case 3
Wt = "Mittwoch"
Case 4
Wt = "Donnerstag"
Case 5
Wt = "Freitag"
Case 6
Wt = "Samtag"
Case 7
Wt = "Sonntag"
End Select
'Hier soll die Displayausgabe hin:
Sub Ausgeben
'Ausgeben auf dem LCD Display
'SYNTAX Lcdtext String , Xoffset , Yoffset , Fontset , Inverse , Rotation
'Stunden formatieren
Strstunden = Str(stunden)
If Len(strstunden) = 1 Then Strstunden = "0" + Strstunden
'Minuten formatieren
Strminuten = Str(minuten)
If Len(strminuten) = 1 Then Strminuten = "0" + Strminuten
'Sekunden formatieren
Strsekunden = Str(sekunden)
If Len(strsekunden) = 1 Then Strsekunden = "0" + Strsekunden
'Auf dem Display ausgeben
z.B.
Lcdtext Strstd , 20 , 30 , 2 , 0 , 0
Lcdtext ":" , 50 , 30 , 2 , 0 , 0
Lcdtext Strmin , 60 , 30 , 2 , 0 , 0
Lcdtext ":" , 90 , 30 , 2 , 0 , 0
Lcdtext Strseku , 100 , 30 , 2 , 0 , 0
' das gleiche auch für Wochentag, Tag, Monat und eventuell Jahr
Cursor Off
End Sub
Return
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart ' Generate start code
I2cwbyte Ds1307w ' send address
I2cwbyte 3 ' Register-addresse im 1307
I2cwbyte Weekday
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 ' Register-addresse im 1307
I2cwbyte _sec ' Send Data to SECONDS
I2cwbyte _min ' MINUTES
I2cwbyte _hour ' Hours
I2cstop
Return