Hallo zusammen,
ich bin dabei, ein LCD anzusteuern.
Allerdings gibt das LCD nicht den gewünschten Text aus.
Ich wäre dankbar, wenn ihr einen Blick auf den untenstehenden Code
werfen würdet. Vlt fällt euch ein bzw mehrere Fehler auf.
Stimmt, hätte ich dazu schreiben sollen
Das Display ist vom Typ CV4162B und der Controller im LCD ist der
Sitronix ST7066U.
Der PIC, den ich programmiere ist der PIC18f2525.
In der Headerdatei #include "xlcd.h" stehen Definitionen(z.B die Ports
und 4/8-Bitmode) und Funktionen für das LCD.
Gibt das Display überhaupt etwas aus?
Stimmt das Pinning der Schaltung mit dem der vor-kompilierten Bibliothek
überein? (xlcd ist ein.....)
student schrieb:> In der Headerdatei #include "xlcd.h" stehen Definitionen(z.B die Ports> und 4/8-Bitmode)
Hast du da was geändert?
student schrieb:> Ich wäre dankbar, wenn ihr einen Blick auf den untenstehenden Code> werfen würdet.
So verrückt, wie der Quellcode ist, wird man beim Lesen doch ganz
verrückt.
Wenigstens könntest du ihn als C-Code taggen.
Vielen Dank für die Anworten.
Bis jetzt ist die Hintergrundbeleuchtung an und die obere Zeile wird
schwarz angezeigt.
In der Headerdatei habe ich die Pins, die da als Beispiel angegeben
waren so geändert, wie ich das LCD angeschlossen habe.
Ich nutze MPLAB von Microchip, da war die Headerdatei schon dabei, die
man nur leicht abändern muss.
Welchen Sinn hat das "extern" vor den Funktionsdefinitionen der
"Delay"-Funktionen?
Welchen Sinn hat das "return" am Ende dieser Funktionen?
Was würde in so einer Funktion geschehen, wenn da kein "return" am Ende
stünde?
Würde mich da Rufus an schlissen wofür das Return ? wen die Funktion zu
ende ist geht es da weiter wo die Funktion aufgerufen wurde, das Return
kann ehr dafür sorgen das das Programm an undefinierter stelle
weiterleuft, da kein Einsprungstelle gesetzt ist wohin zurückgesprungen
werden kann.
Dein Configwort sieht für nen PIC18F ziemlich kurz aus, würde das immer
Komplet definieren, es sei den du weist zu 100% was der Compiler mit dem
Rest als Default macht.
Danach würde ich mal überprüfen ob ADCON1 richtig gesetzt ist, und die
TRIS Register die stehen bei dir alle auf Ausgang aber
while(BusyXLCD())
würde dafür sprechen das min einer Eingang sein muss.
Hallo zusammen,
ich bin leider noch nicht weiter gekommen.
Was bedeutet es, wenn die obere der beiden Zeilen schwarz leuchtet?
Danke fürs Lesen und antworten!
Gruß
student schrieb:> Was bedeutet es, wenn die obere der beiden Zeilen schwarz leuchtet?
Das bedeutet, dass Dein LCD erstmal funktioniert, aber noch nicht von
der Software initialisiert worden ist. So sieht das Erscheinungsbild
auch aus, wenn überhaupt kein µC angeschlossen ist. Jede zweite Zeile
ist dabei schwarz. Das hilft Dir zum Beispiel, den Kontrast korrekt
einzustellen.
Fazit:
Deine Software arbeitet nicht korrekt. Überprüfe, ob Pins in Soft- und
Hardware übereinstimmen. Delays durch Nops zu generieren ist ziemlich
unportabel, da sie vom verwendeten Takt des µCs abhängen. Da würde ich
mal prüfen, ob die geforderten Delays (s. Datenblatt zum LCD) überhaupt
eingehalten werden. Ist Dir aufgefallen, dass die verwendeten
Delay-Werte einen µC-Takt von 8MHz voraussetzen?
Testweise kannst Du die Delays ja mal verdoppeln. Alternativ würde kann
man die Delays auch sauber über einen Timer generieren.
student schrieb:> In der Headerdatei habe ich die Pins, die da als Beispiel angegeben> waren so geändert, wie ich das LCD angeschlossen habe.> Ich nutze MPLAB von Microchip, da war die Headerdatei schon dabei, die> man nur leicht abändern muss.
Wenn man das Pinning ändert, muss man die Prozessorbibliothek neu
kompilieren. Die wurde ja mit der originalen Headerdatei erstellt!
Das ist meiner persönlichen Meinung nach der totale Schwachsinn und
bringt eigentlich jeden der die Bibliothek zum ersten mal benutzt zum
verzweifeln, weil natürlich keiner daran denkt, dass der Code ja schon
kompiliert in der Bibliothek vorliegt und es deshalb wirkungslos bleibt,
wenn man nur den Header ändert.
Alternativ zum Neu-Erstellen der Bibliothek kann man auch alle
benötigten Source-Dateien dem Projekt hinzufügen. Dann werden die
entsprechenden Funktionen auch neu kompiliert.
PS: Die oben verlinkte LCD Bibliothek ist vor längerer Zeit aus den XLCD
Sourcefiles hervorgegangen, weil das Original eigentlich unbrauchbar
ist.
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