mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik float Vairable in char umwandeln


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Har (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebes Forum,

ich programmiere einen STM32 und möchte Sensor-Daten an ein LCD-Modul 
anzeigen lassen.
Die Sensor-Daten sind vom Typ float.
An das LCD-Modul übergebe ich mittels einer Funktion aber einen string.
Wie kann ich meine Variable umwandeln, damit ich sie auf meinem 
LCD-Display anzeigen lassen kann?
Bitte wenn möglich Funktionen anbieten, wo keine "speziellen" Libraries 
benötigt werden...

Zum testen habe ich mal eine float-Variable definiert:
float value = 54.32;

Die Funktion, welcher der string übergeben wird, sieht wie folgt aus:
void lcd_string( const char *data )
{
    while( *data != '\0' )
        lcd_data( *data++ );
}

void lcd_data( uint8_t data )
{
    GPIOD->BSRR |= LCD_RS;    // RS auf 1 setzen        //LCD_PORT |= (1<<LCD_RS);    // RS auf 1 setzen

    lcd_out( data );            // zuerst die oberen,
    lcd_out( data<<4 );         // dann die unteren 4 Bit senden

    Wait_1uSec( LCD_WRITEDATA_US );
}

Autor: Roland F. (rhf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Har schrieb:
> Wie kann ich meine Variable umwandeln, damit ich sie auf meinem
> LCD-Display anzeigen lassen kann?

ftoa()

rhf

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Formatierte Ausgabe: sprintf()

Autor: GEKU (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sprintf () verwendet.
float x = 3.14;
char floatstr [16];

sprintf (floatstr, "%f", x);

lcd_string (floatstr);

sprintf liefert die Anzahl, der in floatstr geschrieben Zeichen zurück.

Für %f gibt es noch zusätzliche Steuerzeichen für Formatierung

http://www2.hs-esslingen.de/~zomotor/home.fhtw-berlin.de/junghans/cref/FUNCTIONS/format.html

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Roland F. schrieb:
> ftoa()

gehört nicht zum C/C++ Standard

Frank M. schrieb:
> sprintf()

Besser snprintf()

Autor: Klaus (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
mystring = value.ToString("0.00");

ist leider C# statt C/C++ :-)

Autor: Sebastian S. (amateur)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Wie die Zeiten sich doch ändern!

Früher gabs hier ein: RTFM.

Heute stellt man die Frage bei Mikrocontroller.Net und bekommt sie 
serviert.

Autor: Solid State Funker (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Har schrieb:
> Die Sensor-Daten sind vom Typ float.

Ohne den Sensor zu kennen: das wird wohl so nicht sein.

Habe noch keinen Sensor gesehen der Float-Zahlen ausgibt.
Und ich habe schon "ein paar" gesehen.

Autor: Solid State Funker (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Har schrieb:
> Bitte wenn möglich Funktionen anbieten

Bitte wenn möglich nicht

Har schrieb:
> LCD-Display

schreiben.

Das wäre nämlich ein Liquid Crystal Display Display, also
ein Display das LCD anzeigen würde.

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.

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