Temperaturwert auf LCD

Gast #266031
Lesenswert?
• ▲
▼
Hallo,
ich übe mich gerade an einem Thermometer mit dem AVR mega16 in C.
Hab die messdaten soweit aufbereitet das ich nun eine Variable mit
einem wert zwichen 0-600 habe wobei die letzte stelle immer die hinter
dem komma ist. Das minuszeichen wird "manuell" hinzugefügt.
Mein ganzes Problem ist jetzt das ich die werte im LCD mit komma oder
punkt ausgeben will und ich nicht genau weis wie ich das anstellen
soll.
Der Plan war den wert in seine einzelnen zahlen zu spalten aber da weis
ich auch nicht so recht wie ich das anstellen soll...
Hat jemand ein vorschlag oder ansatz für mich wie ich das anstelle?
Die LCD routine ist die von Peter Fleury.

Gruß
Torsten
#266032
Lesenswert?
• ▲
▼
int Wert;

  /* Wert enthaelt deinen Messwert, zb. 534 */

  int Vorkomma = Wert / 10;   /* 53 */
  int Nachkomma = Wert % 10;  /* 4  */

  /* so und jetzt gibst Du die Zahlen einfach aus
     und schmuggelst noch ein ',' oder '.' dazwischen */

  --------------------

  /* oder du baust dir zuerst einen String zusammen
     und gibst den dann aus */
  char buffer[20];
  sprintf( buffer, "%d,%d", Vorkomma, Nachkomma );
Gast #266035
Lesenswert?
• ▲
▼
Oder du nimmst diese Routine - die wandelt einen signed int in einen
string - und druckst bei der Ausgabe einen Punkt vor der letzten Zahl
im String...

const uint16_t pot10[4] ={10,100,1000,10000};

void bi2dec(const int16_t sval, char *strg, uint8_t nzero)
/*
  convert signed int16 value to a character string
  stringlength has to be 7 character -32765 + the final 0

  if nzero==0, no leading zeros
  if nzero==1, with leading zeros
*/
{
  uint8_t dec,idx=4,odx=0;
  uint16_t val=sval;

  if (sval<0)
  {
    val=-sval;
    strg[odx++]='-';
  } else if (nzero)
  {
    strg[odx++]=' ';
  }

  do
  {
    idx--;
    for (dec=0; val>=pot10[idx]; val-=pot10[idx])
    {
      dec++;
    }
    nzero+=dec;
    if (nzero) strg[odx++]='0'+dec;
  } while(idx);
  strg[odx++]='0'+val;
  strg[odx]=0;
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.