www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gleitkommazahl auf LCD ausgeben ;-(


Autor: Max Sch (maxmuenchen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi, ich habe eine Frage und zwar möchte ich eine gemessene Spannung auf 
dem LCD ausgeben.
Habe folgenden Code geschrieben:


///////////////////////////////////////////////////////////////////////
ADC_Value = ADCL;                //Die beiden 8Bit Variablen werden in 
die 16 Bit Variable geschrieben
ADC_Value +=(ADCH<<8);               //ADC_Value geschrieben

  Spannung=Steigung*(float)ADC_Value;
//auch ohne casten funktionierts nicht

  sprintf(str,"%f",Spannung);
  //sprintf(str+4, "%c", " V");

      lcd_clear();
      lcd_setcursor(0,1);
      lcd_string(str);
      for(i=0;i<5;i++)
      _delay_ms(50);
///////////////////////////////////////////////////////////////////////

da bei 0V auch ungefähr 0 in ADV_Value stehen, kann ich das mit einer 
simplen Geradengleichung aufbauen.

das Probelm ist dann nur die Kommazahl Spannung auf dem LCD auszugeben.
habs im MS Visual Studio probiert, da klappts hervorragend, aber hier 
steht an 1. Stelle in str ein "?" und danach nur kaudawelsch.
weis einer wieso??
viele dank

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man siehe in die dokumentation der stdio.h:

http://www.nongnu.org/avr-libc/user-manual/group__...

Autor: Max Sch (maxmuenchen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für deine Antwort, aber hilft mir jetz ehrlich gesagt auch nix 
weiter.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann lies den Abshnitt nochmal

besonders den Absatz über Limitations, bzw Limitations selbst.

Autor: soundso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR und GCC ???

dabei müsstest du noch die libraries für float richtg nutzen, sprich die 
richtigen für sprintf, admit ein float wert raus kommt und nicht ein ?

gruss soundso

Autor: soundso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das zauberwort heist: libprintf_flt.a

Autor: Barny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum berechnest du denn nicht das Ganze in Zentel-/Hundertstel-Volt?
Da spart man sich die Float-Berechnung.
Man braucht dann nur den Komma-Punkt an die richtige Stelle setzen und 
hat das Ergebnis in Volt.

Wenn man mehr Stellen benötigt, kann man auch in Millivolt rechnen.
Man muss nur aufpassen, dass es keinen Überlauf gibt.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besser als Gleitkomma ist oft Festkommaarithmetik

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.