"Schönste" Lösung int und float rechtsbündig im LCD darzustellen

Gast #3910006
Lesenswert?

Hallo

ich habe ein Atmega2560 und ein LCD 204.
Ich will einen 12 Bit Analogwert rechtsbündig darstellen. am liebsten 
auch maximal 4 Zeichen. Mit der itoa funktion wird der String immer nur 
linksbündig im char array...

Meine erste Idee:
1
void itoa_(unsigned char stellen, int16_t zahl) {
2
  int i;
3
  char lcd_str[20]="";
4
  lcd_str[stellen]='\0';
5
  for(i=(stellen-1); i>=0; i--)
6
  {
7
    lcd_str[i]=(zahl % 10) +'0';     // Modulo rechnen, dann den ASCII-Code von '0' addieren
8
    zahl /= 10;
9
  }
10
  for(i=0;i<=(stellen-1);i++)
11
  {
12
    if(lcd_str[i]=='0')
13
    {
14
      lcd_str[i]=' ';
15
    }
16
    else
17
    {
18
      i=stellen;
19
    }
20
  }
21
}

Aber wenns was fertiges gibt was weniger speicher und zeit benötigt bin 
ich gerne für Vorschläge offen.
Persönliche Seite #3910116
Lesenswert?

Peter schrieb:
> Mit der itoa funktion wird der String immer nur linksbündig im char
> array...

Und? Länge des Strings bestimmen, diese von der Anzahl der gewünschten 
Stellen abziehen, und schon weißt Du, wieviele Leerzeichen Du vor dem 
String ausgeben musst, damit er rechtsbündig ist.

Und wenn das ein bisschen dauert: Macht nichts. Das ist eine Ausgabe für 
den Benutzer, also nichts, wo es auf das letzte Fitzelchen Zeit ankommt 
(wie z.B. bei Aktionen in einer ISR o.ä.).

Der Dein Gerät bedienende Mensch kann sowieso nicht mehr als eine 
bestimmte Anzahl von Ausgaben pro Zeit erfassen, daher ist's wurscht, ob 
Deine Ausgabe nun 2000 mal oder nur 500 mal pro Sekunde erfolgen kann 
...
Gast #3910846
Lesenswert?

1
char *
2
utodw(unsigned n, char *buf, int width)
3
{
4
    char *p = buf + width;
5

6
    *p = 0;
7
    while (p > buf) {
8
        *--p = '0' + n % 10; 
9
        n /= 10; 
10
        if (n == 0)
11
            while (p > buf)
12
                *--p = ' ';
13
    }   
14
    return p;
15
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren