Uhrzeit auf Lcd ausgeben

Gast #409875
Lesenswert?

Hallo,
ich habe mir eine Uhr mit Hilfe des Timers gebastelt. Funktioniert auch
einwandfrei. Jetzt gebe ich das ganze auf mein Lcd aus. Sagen wir mal:
12:25:11. Also super, so wollte ich es, aber wenn die Stunden, Minuten
oder Sekunden auf Null stehen, sieht das in etwa so aus: 12:0:2. Das
wollte ich natürlich nicht. Hat jemand eine Idee zur Lösung? Es sollte
mit Bascom realisierbar sein.
Gruß Holger
#409878
Lesenswert?

Kann ja auch sein, daß er das schon macht und nur die führenden Nullen
im Formatsting vergessen hat. Also sowas wie '%d:%d:%d' statt
'%02d:%02d:%02d'.

> Es sollte mit Bascom realisierbar sein.
Hat Bascom Einschränkungen gegenüber anderen Programmiersprachen?
Denke man kann nahezu alles in Allem realisieren. Kommt nur darauf an
ob  hinterher Aufwand und Nutzen in einem guten Verhältnis stehen ;-)

Grüße, Freakazoid
Gast #409879
Lesenswert?

Also ich habe bis jetzt die normalen Zählerwerte genutzt zur Ausgabe.
Ich bin davon ausgegangen das jede rechenarbeit (also auch das wandeln
in Strings) eine weitere Ungenaigkeit mitbringt. Oder liege ich da
falsch? Mir ist schon klar, das die ganze Angelegenheit sowieso nicht
wirklich genau ist, aber man muss es ja nicht noch verschlimmern, wenn
es anders geht. Dachte ich jedenfalls.
Gruß Holger
Gast #409881
Lesenswert?

Das ist die Grundversion des Codes:

$regfile = "m8def.dat"
$crystal = 3686400

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 ,
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4
Cursor Off Noblink

Dim Stunde As Byte , Minute As Byte , Sekunde As Byte

Config Timer1 = Timer , Prescale = 64
On Timer1 Timer_irq
Const Startwert = 7936
Enable Timer1
Enable Interrupts



Stunde = 21
Minute = 59
Sekunde = 50
Cls
Do
If Sekunde = 0 Then Cls
Locate 1 , 2
Lcd Stunde ; ":" ; Minute ; ":" ; Sekunde


Loop

Timer_irq:
Timer1 = Startwert
Incr Sekunde
If Sekunde = 60 Then
Sekunde = 0
Incr Minute
End If
If Minute = 60 Then
Minute = 0
Incr Stunde
End If
If Stunde = 24 Then
Stunde = 0
End If
Return

Also wirklich im Moment mit ganzen Zahlen nur geht eben "01" usw.
nicht.
Gast #409882
Lesenswert?

>Lcd Stunde ; ":" ; Minute ; ":" ; Sekunde

if Stunde < 10 LCD "0"
LCD Stunde ; ":" ;
if Minute < 10 LCD "0"
LCD Minute ; ":" ;
if Sekunde < 10 LCD "0"
LCD Sekunde

Ist etwas länger, sollte aber funktionieren.
Ob der LCD-Befehl eine eigene Formatierung beitzt, weiß ich nicht.
Bascom hat aber eigentlich auch eine Date$- und Time$-Funktion...
Gast #409883
Lesenswert?

Wer lesen kann ist klar im Vorteil! :-) Ich kann scheinbar nicht lesen.
Man sollte manchmal einfach einen Blick in die (Bascom)-Hilfe werfen.
Da steht dann auch tatsächlich Time$ usw.
Also vielen Dank erstmal.
Gruß Holger

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren