www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit mit Charfeld


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende einen ATMEGA8535.
Jetzt möchte ich auf mein Display den aktuellen Wochentag ausgeben.
Dazu habe ich dies deklariert:
unsigned char text[] = {"Mo.Di.Mi.Do.Fr.Sa.So."};
Die Ausgabefunktion von meinem T6963 Display lautet:
lcd_printfz(0,6,"%02s.",text);

Jetzt weiss ich nicht wie ich der Funktion sage das immer NUR ein
Wochentag ausgegeben wird.
So wie es da steht erscheint alles auf dem Display.

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char text[][] = { "Mo.", "Di.", "Mi.", "Do.",
                           "Fr.", "Sa.", "So.");

    int i = 2;
    lcd_printfz(0, 6, "%s", text[i]);

Sollte [Mi.] auf dem Display anzeigen.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das funktioniert bei mir immer noch nicht. Compiler mekert nicht.
Hmm..Den Code versteh ich nicht.Warum 2 dimensionales Array?

Autor: Patrick Dohmen (oldbug) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Spezifiziere mal ein wenig näher, was "das funktioniert nicht"
bedeutet, bitte...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf dem Dsiplay erscheint kein Text.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum kann ich es so nicht machen?

unsigned char text[] = {"Mo.Di.Mi.Do.Fr.Sa.So."};

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil das ein String ist, nicht sieben.

Literaturhinweis:

Kernighan & Ritchie, "Programmieren in C", 2. Ausgabe, Hanser Verlag

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder so:
unsigned char text[] = {"MoDiMiDoFrSaSo"};

    int i = 2;
    lcd_printfz(0, 6, "%c%c.", text[2*i], text[2*i+1]);


Peter

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann dieser Funktion leider nur eine Variable ausgeben.
Aber es müsste doch auch so gehen, dass ich z.B. Mo ausgeben kann.
Oder ich müsste meine Funktion umbasteln.Aber wie....


Funktion:
void lcd_printfz(unsigned int x, unsigned int y, unsigned char flash
*format, unsigned char *zahl)
{
 sprintf(zahl_buffer,format,zahl);
 lcd_write_zahl(x, y, zahl_buffer);
}

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde den Stringtrenner \0 dazwischenmachen:

unsigned char text[] = "Mo\0Di\0Mi\0Do\0Fr\0Sa\0So"};

lcd_printfz(0, 6, "%s", text[i*3]);

Autor: Mario Grafe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem, ich benutze häufiger solche Felder, schreib einfach:


char *text[] = {"Mo.", "Di",  "Mi.", "Do.", "Fr.", "Sa.",
"So."};

Aufruf dann mit

lcd_printfz(0, 6, "%s", text[i*3]);


Gruß
Mario

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.