hi, ich möchte eine zahl z.B. 58 auf dem Display darstellen. Ich habe eine Rouitine in C für das LCD. Die darstellung eines Strings funktioniert wunderbar. Da ich diese so übergebe: WriteLCD (1,1,"Text"); //1.Zeile 1.Zeichen Text nun will ich eine Zahl darstellen. Diese müsste ich ja als text eingeben. Ich will aber eine Variable mit ner zahl darstellen. Habe es mit Pointern versucht, indem ich auf die Adresse der Zahl zeige. Auf dem Display wird die Zahl aber verkert rum angezeigt sprich statt 58 steht da 85. Ich möchte nähmlich ne Uhr einbauen. das Hochzählen funktionrt ja alles nur dass die Darstellung nicht passt da verkehrt. Noch ne Frage wie kann ich die Zahl auf 2 Zeichen beschränken. Ich verwedene unsigned char sind ja insgesammt 3 zeichen da bis 255. Gruss und Danke.
hi, ich beschreibe mal mein problem etwas anders. Wie wandele ich eine Zahl in ASCI - Code um. z.B. 37 zerlegen in 3 und 7. Der rest ist dann klar.
Du kannst die Funktion itoa verwenden: Sprache c? controller avr? char buffer[5]; itoa(value, buffer, 10); WriteLCD (1,1,buffer); mfg werner
Wie wäre es mit sprintf? sprintf(pString,"%d",zahl); sollte dir die Lib für printf zu groß sein... wie oben beschrieben itoa ansonsten: sprintf(pString,"%0#2.2d:%0#2.2d:%0#2.2d",Stunden, Minuten, Sekunden); String laute dann ungefähr wie folgt 02:10:15 Das #-Zeichen wird eigentlich bei der Darstellung mit d ignoriert, funktioniert aber bestens um die Führende Null zu erzwingen... Gruß Ansgar
Hi Georg! Du kannst ja so rechnen: Nehmen wir an die Zahl die du zerlegen möchtest ist 58. zahl = 58 a = zahl / 10 ' a muss integer sein damit nachher 5 in der variablen a steht und nicht 5.8. 'a wäre im beispiel jetzt 5 ersteziffer = a zahl = zahl - (a*10) ' so viele zehner von der zahl abziehen wie in a steht. Jetzt ist zahl als noch 8 zweiteziffer = zahl 'in der variablen ersteziffer steht jetzt 5 'und in der Variablen zweite ziffer 8 Nik
hi, vielen vielen dank für eure hilfe. hab es doch noch geschaft. Jetzt habe ich nur noch folgende frage. Wie schreibe ich die urtzeit ins eeprom. Damit ich bei inem Stromausfall zumindestens dann die letzte Zeiteinstellung habe. Habs zwar probiert aber irgendwie scheint der Controller nicht ins eeprom zu schreiben. Kann mir dann noch einer erklären wo da der Speicherbereich anfängt? Einfach bei adresse 0x00 oder wie? Gruss und danke, georg.
Hi, Schneller gehts so: int Zehner; int Einer; Zehner=Zahl/10; Einer=Zahl%10; lg, Stefan
Wie willst du das mit dem Eprom-Schreiben realisieren? Jede sekunde den neuen wert reinschreiben? - nach 100000 sekunden (ungefär 28 Stunden) ist dann dein Eprom Tot! Und was bringt es dir? - Du weißt ja nicht wie lange der Stromausfall war. Dann kannst du auch gleich wieder mit 00:00:00 anfangen. Wenns dir darauf ankomt die Zeit zu behalten, dann verwende eine Externe Uhr mit Batteriepufferung (oder Gold-Cap). Gruß, Florian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.