Autor Thema: LCD Display mit Open xLCD Bibliothek, Zeichen werden falsch wiedergegeben  (Gelesen 5712 mal)

Offline Michael Schumann

  • Newbie
  • *
  • Beiträge: 11
    • Profil anzeigen
LCD Display mit Open xLCD Bibliothek, Zeichen werden falsch wiedergegeben
« am: Februar 27, 2010, 19:20:34 Nachmittag »
Hallo Leute,

Ich kämpf seit ein paar Tagen damit mein Display anzusteuern und zwar nicht mit der von CCS zur Verfügung gestellten LCD-Funktion sondern mit einer etwas übersichtlicheren und vor allem flexiblen Bibliothek namens Open xLCD die von dem MCC18 Compiler von Microchip zur Verfügung gestellt wird.

Der Grund warum ich flexibeler sein muss als mit dem von CCS ist, dass mein DATA-Port aus Layoutgründen am ganzen PIC verstreut ist, aus 8 Datenleitungen besteht und ich wegen 2 HD44780 Controllern auf dem Display 2 Enable Eingänge hab.

Ich bin schon soweit vorgedrungen, dass das Display richtig initialisiert wird, die Position und Art des Cursors ändern kann.

Leider das allerwichtigste funktioniert nicht...

... Das schreiben!

Der Grund ist wahrscheinlich dass ich die Routine fürs Schreiben etwas ändern musste, dass er überhaupt compilieren konnte.

Orginal hieß die Routine:
void putrsXLCD(const rom char *buffer)
{
        while(*buffer)                  // Write data to LCD up to null
        {
                while(BusyXLCD());      // Wait while LCD is busy
                WriteDataXLCD(*buffer); // Write character to LCD
                buffer++;               // Increment buffer
        }
        return;
}

Die ich in

void putrsXLCD(char *buffer)
{
        while(*buffer)                  // Write data to LCD up to null
        {
                while(BusyXLCD());      // Wait while LCD is busy
                WriteDataXLCD(*buffer); // Write character to LCD
                buffer++;               // Increment buffer
        }
        return;
}

verändert hab, damit ich überhaupt compilieren konnte.

Nachdem ich die Position des Cursors an meine gewünschte stelle gebracht hab, rufe ich mit folgendem Befehl die Routine auf:
putrsXLCD(*"Hello World!");
In den Tutorial stand, dass der String als Vektor, oder Zeiger übergeben werden soll. Ohne den " * " hat der Compiler auch wieder gemeckert...
standardmäßig
Die Handhabung von Strings ist doch standardmäßig im Compiler implementiert, oder liegt da das Problem?

Gruß,

...Micha
« Letzte Änderung: Februar 28, 2010, 02:06:33 Vormittag von Michael Schumann »

Offline Michael Schumann

  • Newbie
  • *
  • Beiträge: 11
    • Profil anzeigen
Re: LCD Display mit Open xLCD Bibliothek
« Antwort #1 am: Februar 28, 2010, 00:45:17 Vormittag »
Hallo, nochmal!

Ich hab den ganzen Tag noch bisschen rumgeschrieben und ausprobiert und hab die Bibliothek jetzt erfolgreich für den CCS Compiler umgeschrieben mit Option auf den 2. Controller.

Wer Interesse hat einfach bescheid sagen. :-)

Allerdings hab ich grade eben gemerkt, dass meine Zeichen nicht alle 100% korrekt richtig wiedergegeben werden.

Zahlen werden richtig wiedergeben. Buchstaben von A-O (Großbuchstaben) und Buchstaben von p-z (klein) auch. Nur Kleinbuchstaben von a-o werden als Großbuchstaben angezeigt, und Großbuchstaben von P-Z werden als @,A,B,C,....,J angezeigt... An Sonderzeichen brauch ich gar nicht zu denken... nichtmal ein Leerzeichen funktioniert.

Meine Schreibroutine:
char buffer[27];
void main(void){

...

   while(BusyXLCD(UPPER));
   SetDDRamAddr(UPPER,0x40);
   sprintf (buffer,"abcdefghijklmnopqrstuvwxyz");
   putrsXLCD(UPPER,buffer);

...
}

// Der Parameter "UPPER" spricht den oberen von meinen 2 Controllern an, hat damit aber nix zu tun, ging mit einem auch schon nicht.

Hatte das schonmal jemand?

...Micha
« Letzte Änderung: Februar 28, 2010, 02:19:26 Vormittag von Michael Schumann »

Offline Michael Schumann

  • Newbie
  • *
  • Beiträge: 11
    • Profil anzeigen
Re: LCD Display mit Open xLCD Bibliothek, Zeichen werden falsch wiedergegeben
« Antwort #2 am: Februar 28, 2010, 11:41:54 Vormittag »
Und schon wieder ein Problem selbst gelöst :-)....

War wohl ein Kurzschluss zwischen 2 leiterbahnen...

Micha

 


* Recent Topics