Hallo an alle, kurz gesagt, ich habe folgendes Problem: das LCD Display zeigt nur die letzten 8 Stellen an "block" an, egal was ich mache... und bei der Fehlersuche im Quellcode steh ich aufm Schlauch. Ich habe die Codes des Tutorials genommen und angepasst, aber es klappt net so richtig... im Anhang mal der Schaltplan (D0 - D3 ist NICHT angeschlossen) und der Quellcode... Vielleicht kann mir einer von euch einen kleinen Denkanstoß geben?! Vielen Dank!
Der Code funktioniert so nicht. Der COde ist nicht dafür ausgelegt, dass die Steuerleitungen auf einem anderen Port liegen ans die Datenleitung. Das muss dir doch selber auffallen, dass du in der Konfiguration nirgends PORTC bzw. DDRC reinschreiben musstest. Man könnte den Code natürlich umschreiben und für die Steuerleitungen einen anderen PORT (samt Makro) einführen. Aber für dich dürfte es wohl am einfachsten sein, wenn du dir die LCD Routinen vom P.Fleury holst. DOrt kannst du für jede einzelne Leitung Port und Portpin einstellen.
Gast
#3705086
Hallo Karl Heinz, Das habe ich auch schon probiert, ich vergass zu erwähnen das es ein splc780d treiber ist... ich habe das mit der fleury lib probiert das klappt leider auch nicht...
Arne Pf schrieb: > Hallo Karl Heinz, > > Das habe ich auch schon probiert, ich vergass zu erwähnen das es ein > splc780d treiber ist... Soweit ich das bei einem kurzen Durchscrollen des Datenblattes gesehen habe, ist das ein HD44780 kompatibler IC. Sollte also keine Probleme machen > ich habe das mit der fleury lib probiert das > klappt leider auch nicht... Hast du die auch RICHTIG konfiguriert? Du hast deine Datenleitungen an einem anderen Port als die Control-Leitungen! Das muss in der Kondifguration auch berücksichtigt werden!. Wenn in deiner lcd.h nirgends das Wort 'PORTC' auftaucht, dann ist auch die Fleury Lib nicht richtig konfiguriert. Es reicht eben nicht, nur hier
1 | |
den PORTD einzutragen. Denn damit würden die Steuerleitungen
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
bei unveränderter Einstellung ja auch auf den PORTD gelegt werden. Die sind aber am PORTC. Also musst du das auch eintragen
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
dass diese Leitungen am PORTC sind. Hast du das gemacht? (Und ja, die Fleury Lib kann das korrekt behandeln) Ein anderes mögliches Problem ist natürlich, dass all diese Libs auf den 4 Bit Modus ausgelegt sind. Daher gehen sie ja auch davon aus, dass alle Leitungen an einem Port liegen. IN deinem AUfbau liegen aber alle 8 Datenleitungen an einem µC Port. Je nachdem, welchen Zustand diese Leitungen bei der Initialisierung haben, könnte ich mir vorstellen, dass sie die Initialisierung beeinflussen. Ist das LCD erst mal in den 4 Bit Modus geschaltet, gibt es kein Problem mehr. Aber erst mal muss man in den 4 Bit Modus kommen.
ok, es klappt jetzt, nach kleiner Änderung:
1 | |
2 | |
3 | |
4 | |
//LCD_DATA0_PORT &= ~_BV(LCD_DATA0_PIN); <-- Ohne diesen Befehl klappt das mit dem Initialisieren. Danke!!! Anleitung lesen hilft... aber jetzt zeigt es mit nur ??? und komische Zeichen auf allen stellen an, anstatt nem 'a'
1 | |
2 | |
3 | |
So, die Initialisierung geht, das Display zeigt auch Zeichen an, aber nur die ersten 8! Der Rest fehlt... Hat einer ne Idee woran das noch liegen kann?! Fehlerbehebung wegen der Zeichen ist folgende: in der lcd.c bei LCD_INIT ganz unten folgende Schritte einfügen:
1 | |
2 | |
3 | |
Damit wird das display laut treiber anleitung initialisiert.
Arne Pfäffle schrieb: > So, > > die Initialisierung geht, das Display zeigt auch Zeichen an, aber nur > die ersten 8! Der Rest fehlt... > > Hat einer ne Idee woran das noch liegen kann?! Du kannst doch nicht einfach die Umschaltung in den 4 Bit Modus aus der Initialisierung rausnehmen und denken das wär schon alles gewesen. Wenn du nicht in den 4 Bit Modus schaltest, dann musst du logischerweise auch die Ausgabefunktionen auf unterster Ebene umschreiben. Denn die gehen noch immer davon aus, dass das LCD im 4 Bit Modus ist und daher pro auszugebendem Byte 2 Übertragungen notwendig sind. Dein LCD ist aber nicht im 4 Bit Modus, ergo gestaltet sich die Ausgabe anders.
Gast
#3708748
Das display ist im 4-bit modus, die ausgabe einzelner chars geht ohne Probleme nur werden strings bis max 8 zeichen ausgegeben, der rest wird beschnitten... das ist mein Problem...
Hallo Arne, das ist auch richtig so, da das LCD die 1x16 Zeichen in 2x 8 Zeichen verwaltet. Siehe: http://docs-europe.electrocomponents.com/webdocs/0f25/0900766b80f25dfc.pdf rechts unten DISPLAY CHARACTER ADDRESS CODE. Dann musst du halt die Ausgaberoutine umschreiben, so dass ein Zeichenzähler mit läuft und bei erreichen von Zeichen 8 die DDRAM Adresse 0x40 vorher schreibt.
Gast
#3709285
Ahhh alles klar! Des probier ich dann morgen mal aus, vielen Dank für den Tipp!! Gruß Arne
Hallo Uwe, daas mit dem 2 x 8 Zeichen war das Problem! Display geht jetzt danke! Gruß Arne
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
