mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zahl in ASCI umwandeln für LCD


Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Werner Hoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst die Funktion itoa verwenden:

Sprache c? controller avr?

char buffer[5];
itoa(value, buffer, 10);
WriteLCD (1,1,buffer);

mfg
werner

Autor: Ansgar Hartmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan_H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Schneller gehts so:

int Zehner;
int Einer;

Zehner=Zahl/10;
Einer=Zahl%10;

lg,

Stefan

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.