mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Float Wert auf ein Display übertragen


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuche einen Float Wert auf ein Display zu übertragen. Der
Innhalt ist nach dem IEEE 754 Standart hinterlegt.
Ich habe ein kleines C-Programm unter Windows/Dos, mit dem habe ich das
hinbekommen.

   unsigned char mod [] = { 0x6E, 0x40, 0xBD, 0x1F };
   float * q;
   q = (float *) mod;
   printf ("\n mod= %f", *q);

Nun möchte ich dasselbe auf einem AtMega32 machen, und das ergebnis als
Flieskommazahl auf einem angeschlossenen Display darstellen.
Für das Display stehen mir zwei Funktionen zur Verfügung, eine womit
ich ein Char darstellen kann und eine womit ich einen String darstellen
kann.

Meine Überlegung war, die Float Zahl in ein Array mit sprintf zu
'konvertieren' brachte aber keinen Erfolg.

Da ich noch ziemlich am Anfang mit meinen C-Erfahrungen stecke komme
ich nicht mehr weiter. Kann mir da jemand bitte helfen ?

Viele Grüße

Christian

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hat denn mit sprintf nicht funktioniert?

Eigentlich sollte ein:

unsigned char lcd_buffer[20];
float f1=3.2;

sprintf (lcd_buffer,"%3.3f",f1);

// Wie auch immer deine lcd_string Funktion heisst ...
lcd_puts(lcd_buffer);

doch an sich funktionieren? Du musst vllt aufpassen, dass dein
lcd_buffer gross genug ist für jeden Fall.

Viel Erfolg noch!
Gruss, Sebastian

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
also im meinem Float schiebe ich ein paar Chars rein:

   value = (float *) value_array;

value ist dann mein Float Wert, den habe ich dann versucht mit
   sprintf(value_array2,"%f",value);
zu konvertieren und dann das value_array2 nacheinander aufs Display zu
jagen. Auf dem Display wurden mir dann jedoch irgendwelche Zeichen
wiedergeben. Wenn ich das %f durch %x ersetzte bekomme ich wieder die
Hex-Werte angezeigt die zuvor ins value_array2 kopiert habe -ok das ist
ja auch klar....- .

Dein Code Beispiel konnte ich nicht verifizieren. Wenn ich das so
übernehme und dann aufs Display übertrage bekomme ich ein "?"
angezeigt.

Die Chars die sich im value_array2 befinden habe ich aus einer Modbus
Datenübertragung raus erhalten. Dabei handelt es sich um einen
Messwert, den iach auf einem Display darstellen möchte....

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was mir gerade einfällt, wenn Du den gcc benutzt, hast Du im makefile
die printf option mit floating point aktiviert? Eventuell ist das der
Fehler, weil ja deine Displaykommunikation und sprintf an sich zu
funktionieren scheint.

Hoffentlich hilfts,
Gruss, Sebastian

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
makefile => nächste 'Falle' ;-) gleich mal checken ...

Danke für den Hinweis....

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst einen Float-Wert auch mit den dtostr bzw. dtostre-Funktionen
aus der stdlib.h in einen ASCII-String umwandeln und dann einzeln
rausschieben...

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Dein Code Beispiel konnte ich nicht verifizieren. Wenn ich das so
> übernehme und dann aufs Display übertrage bekomme ich ein "?"
> angezeigt.

Da haben wirs schon.
Du musst die printf-Library gegen jene austauschen, die
Unterstützung für float enthält.

Siehe auch hier:

http://www.mikrocontroller.net/forum/read-2-395780.html#new

Autor: AxelR. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<<Siehe auch hier:

http://www.mikrocontroller.net/forum/read-2-395780.html#new
>>
man beachte die "2" im Link

Wird sowieso alles hier in der "1" gepostet, egal.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versteh nicht ...
Was willst du mir sagen?

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@2:
Die "2" von Axel besgt einfach nur, dass es in das Forum "gcc"
gehört, weil es ein gcc-Problem (Software) und keine Hanrdware-Problem
ist.
Es gibt wirklich Leute, die sich die anderen (Unter-) Foren nie ansehen
(mit FPGA etc hatte ich z.B. bis jetzt noch nichts am Hut...)

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.