- LiFePO4 Speicher Test         
Ergebnis 1 bis 7 von 7

Thema: AtMega16 und Sonderzeichen?

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.197

    AtMega16 und Sonderzeichen?

    Anzeige

    Powerstation Test
    Hallöle.
    Ich möchte gerne mein Display (I2C) am NiboBee etwas besser nutzen.
    Dafür brauche ich auch die Sonderzeichen, denn auf einem 16x3 ist es blöd, dauernd OE,AE usw. zu schreiben, und das Display hat es ja auch drauf.
    Ausserdem möchte ich mir anschliessend auch einige selbstdefinierte Zeichen machen.
    Drittens braucht meine bisherige Vorgehensweise offenbar viel Speicherplatz.

    Bisher gebe ich Dinge so aus:

    lcd_setCursor(S,Z);
    printf("<<<Druecken");

    oder
    printf("Spannung %2d", volt);

    Ersetze ich das ue durch ein ü gibts Zeichensalat.
    Ich habe zum Display eine Tabelle (Datenblatt), in der aufgeführt wird, wie man jedes Zeichen aufrufen kann, weiss aber nicht, wie ich das dem Display mitteilen muss...
    Genau darum aber gehts mir.
    Kurz gesagt: Hilfe [-(

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    04.05.2010
    Beiträge
    88
    Ersetze ich das ue durch ein ü gibts Zeichensalat.
    im acsii ist kein platz für sonderzeichen deswegen weicht man auf unicode z.b. utf-8 bei linux und windows ISO 8859-1 aus.
    das "ä" ist bei utf-8 z.b.: 0xC3A4 und beim lcd liegt das "ä" auf 0xE1.

    wie ich das dem Display mitteilen muss
    1. "Dr" ausgeben
    2. 0xF5 ausgeben
    3. "cken" ausgeben

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.197
    Danke, so einfach klappt es leider nicht.
    Das Beste, was ich bei dem Versuch herausbekomme, ist, dass das Display ununterbrochen voller kleiner, nach links zeigender Pfeile geschrieben wird.
    Offenbar haut also irgendwas nicht hin.
    Kannes sein (das Display ist ein EA Dog-M) dass das einen speiziellen Zeichensatz benutzt oder so?
    Ich habe im Datenblatt eine Tabelle, die die verfügbaren Zeichen enthält, dort finde ich z.B. das "ü" in der Zeile 0001 und Spalte 1000.
    Wie erkläre ich das aber nun dem Compiler?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    04.05.2010
    Beiträge
    88
    Ich habe im Datenblatt eine Tabelle, die die verfügbaren Zeichen enthält, dort finde ich z.B. das "ü" in der Zeile 0001 und Spalte 1000.
    die "üblichen" zeichen a-z, A-Z und 0-9 sind immer auf der ascii position den rest ordnet der hersteller nach belieben.
    bei diesem display controller ist das "ü" auf 0b10000001 = 0x81 und beim hd44780 ist das "ü" auf position 0xF5 = 0b11110101.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Was ich hier mache:
    Ich lass vor der Ausgabe ne Ersetz-Funktion drüberlaufen.
    Also einfach den String abrattern, überall wo ein "echtes" ü steht, den ASCII-Wert des Zeichens gegen den Wert austauschen, den das Display-ü hat. Haut wunderbar hin.
    #ifndef MfG
    #define MfG

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.197
    Deibel noch eins, es klappt nicht. Wenn ich 0x81 ausgebe, erscheint ein ".".

    Hab es eben auch mit vertauschten Zeilen/Spalten versucht, nix.
    Es kommen Sonderzeichen (offenbar Zufallstreffer), aber nie die, die ich will...

    Ausserdem ergibt folgende Zeile:
    printf(0x81);

    die Compiler-Warnung: ../NiboBee_Intelligence.c:88: warning: passing argument 1 of 'printf' makes pointer from integer without a cast


    Irgendwo hab ich noch nen Wurm drin.
    Wie gesagt: anstatt des gewünschten "ü" wird hier ein "." ausgegeben.
    Wo, zum Kuckuck ist hier noch ein Fehler?

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.197
    Hab es herausgefunden, man muss es nur richtig notieren:

    printf("Wert: \x7f");

    Nächste Übung in der Richtung wird dann irgendwann sein, eigene Zeichen zu definieren, aber für den Moment genügen mit die Erweiterungen völlig.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus