Forum: Mikrocontroller und Digitale Elektronik Uhrzeit auf Lcd ausgeben


von Holger (Gast)


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

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Du wirst deine Zahlen in Strngs wandeln müssen, und wenn die Zahl
kleiner als 9 ist, noch eine 0 voranstellen müssen.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Falls jetzt die Frage aufkommt: "Wie mache ich das denn in BASCOM?"
Antwort: "Weiß ich nicht. Aber irgendwelche Strinbearbeitungsroutinen
wird es in BASCOM schon geben."

von André K. (freakazoid)


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

von Holger (Gast)


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

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Oder liege ich da falsch?
Sofern du mit ganzen Zahlen rechnest, liegst du bzgl. der Genauigkeit
falsch.

Wie sieht deine Ausgabe denn bisher aus?

von Holger (Gast)


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.

von inoffizieller WM-Rahul (Gast)


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...

von Holger (Gast)


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

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Gibts in Bascom kein "PRINT USING"? In den üblichen Basic-Dialekten
war das die einfachste Möglichkeit, Zahlen formatiert auszugeben.

von Karl heinz B. (kbucheg)


Lesenswert?

In BASCOM heist das FORMAT.

Wenn ich die Doku richtig deute würde das so gehen

LCD Format( Stunde, "00" ); ":"; Format( Minute, "00" ); ":"
Format( Sekunde, "00" )

von Holger (Gast)


Lesenswert?

Also mit Format funktioniert es nicht. Es geht mit:
config clock = soft und dem Time Ausdruck ohne "$".
Danke an alle die mich auf den richtigen Weg geführt haben.

Gruß Holger

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.