www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik float-Zahl ausgeben


Autor: Exodus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits

Sitze hier vor einem kleinen Problem:

Ich habe hier in meinem Programm diverse Berechnungen etc..Resultat 
dieser sind jeweils float-Zahlen.

Nun möchte ich diese gerne auf meinem Display anzeigen, doch genau an 
diesem Punkt scheitert mein Vorhaben.

Ich kann die Zahlen sehr wohl nach ASCII konvertieren und anzeigen, 
klappt perfekt. Nur leider fehlen mir danach die Nachkommastellen.

Hat hier jemand einen Tipp für mich, wie ich das am elegantesten lösen 
könnte?
Verwende übrigens den CCS Compiler.

Danke und Gruss

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
printf("%f",floatvar);
sprintf(buffer,"%f",floatvar);

Autor: Exodus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort, jedoch funktioniert das leider nicht.
Der Compiler meldete:

STDOUT not defined (may be missing #USE RS232)  In call_1

Habe daraufhin mal nachgesehen und testweise über "#use rs232" die 
Schnittstelle aktiviert, da der Befehl ja scheinbar nur dann geht.
Jedenfalls funktioniert es auch jetzt noch nicht, der Mikrocontroller 
macht immer einen Reset an der Codestelle, wo meine float-Zahl gewandelt 
werden soll.

Gibts noch einen anderen Weg, eine float-Zahl auszugeben?

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>printf ...

Muaaahhhhh. Dauert viel zu lange. Besser als Longint rechnen uns dann 
das Komma schieben. Es gibt natuerlich Funktionen, die Float bedingen. 
Dann braucht man die eben. --> Library hinzulinken.

Autor: Bastard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

> Muaaahhhhh. Dauert viel zu lange....
Das war mal, die heutigen uC haben viel mehr Leistung wie früher und da 
fällt das nicht mehr so sehr ins Gewicht!
Ich hab beide Versionen ausprobiert und wenn dein Prog nicht 
zeitkritisch ist und du jede µs einsparen musst ist folgendes sicher 
viel besser:


Bsp("stdio.h" einfügen nicht vergessen):

   char out[16];
   float u = 2.456;

   sprintf( Out, "t=%5.2fs", u);
       //Die Floatzahl wird in das Char-array "Out" gespeichert.
       //Inklusive Komma!

Nun brauchtst du nur mehr dein Char out Zeichenweise auf dein Display 
ausgeben.

Welchen µC verwendest du?

lg
Bas

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha schrieb:
>>printf ...
>
> Muaaahhhhh. Dauert viel zu lange.

Zitat:
Ich habe hier in meinem Programm diverse Berechnungen etc..Resultat
dieser sind jeweils float-Zahlen.


Da dürfte dann ein einzelner printf auch nicht mehr ins Gewicht fallen.

Autor: Exodus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für den Hinweis, funktioniert nun alles einwandfrei.
Habe soeben mein LCR-Projekt komplett fertiggestellt, basierend auf 
einem PIC16F877A.

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.