Ich habe ein Problem mit einem 240x128 Pixel LCD (T6963c) Es wird der Test den ich Ausgebe in jeder Zeile dargestellt... Hoffe das mit jemand helfen kann mfg
Kann ich nicht da ich einen C8051F330 MC verwende Habe den betreffenden code eh auskommentiert mfg
grins Mag es vielleicht daran liegen, dass du das Display tatsächlich so initialisiert hast, dass dein Grafikbereich nur eine Buchstabenzeile umfasst? Ändere mal
1 | #define GLCD_GRAPHIC_AREA (GLCD_PIXELS_PER_LINE / GLCD_FONT_WIDTH)
|
in
1 | #define GLCD_GRAPHIC_AREA ((GLCD_PIXELS_PER_LINE / GLCD_FONT_WIDTH) * (GLCD_NUMBER_OF_LINES / 8)
|
Das sollte helfen :) Ralf
Kommando zurück, das machst du ja weiter unten... Sorry... Ausserdem müsste es ja auf den Text bezogen sein, nicht auf Grafik... Hm... Hast du geguckt, ob deine DEFINES alle das richtige Ergebnis liefern? Grafiken machen keine Probleme oder? Ralf
Okay, nachdem ich mich mal n bisschen reingelesen hab in deinen Code, hätte ich mal folgende Anmerkungen: 1. Die Sourcen sind wohl ursprünglich für einen AVR geschrieben. Also schmeiss mal die ganzen Bit-Schiebereien etc. raus, und steuere die Ports direkt an. Du kannst entweder mittels #define oder durch sbit-Deklaration für die einzelnen Portbits entsprechende Namen vergeben. Also entweder statt der vorhandenen #defines
1 | #define GLCD_CD 0
|
2 | #define GLCD_RD 1
|
3 | #define GLCD_WR 2
|
4 | #define GLCD_CE 3
|
5 | #define GLCD_RESET 4
|
6 | #define GLCD_FS 5
|
nimmst du
1 | #define GLCD_CD Px_y //Port eintragen
|
2 | #define GLCD_RD Pa_b
|
3 | #define GLCD_WR Pm_n
|
4 | ...
|
2. Wie schnell lief der AVR, von dem du die Sourcen hast? Ein SiLabs 8051-Controller (oder generell ein 8051) hat eine andere Taktaufteilung als ein AVR, daher können auch einfach schon die Delays falsch sein. Ich glaub, dass du den T6963C zu schnell ansteuerst. Für den ersten Versuch würd ich also einfach die Delay-Funktion vergrößern, dann siehst du schon mal ob es daran liegt. Ralf
ja, das kann gut ein Geschwindigkeitsproblem sein. Ich habe auf Arbeit auch ein wenig mit dem Ding gekämpft, habe aber meine SOurcen momentan nicht hier....deshalb nur aus dem Gedächtnis. Ich habe mir Deinen Quelltext jetzt nicht allzugenau angesehen, aber ich hatte auch das Problem das Text doppelt erschien, unerklärliche Pixelfehler aufgetreten sind usw. und das obwohl die gleiche Libary die wir geschrieben hatten auf einer langsameren CPU wunderbar funktionierte. Letzendlich hat folgendes zum Ziel geführt: Ich habe im Quelltext gesehen, das du bei allen Funktionen die direkt auf das Display zugreifen(also Status abfragen, Kommando schreiben, Daten schreiben, Daten lesen) alle Leitungen gleichzeitig setzt/ausliest. Schreibe dir mal Makros zum setzen und löschen aller einzelnen Leitungen(CE, WR, CD usw) und rufe diese nacheinander auf. Hast Du das entsprechende Datenblatt? In dem wird beschrieben wie die Reihenfolge zu sein hat Dann wird aus etwas wie: GLCD_CTRL_PORT &= ~((1 << GLCD_WR) | (1 << GLCD_CE) | (1 << GLCD_CD)); sowas UNSET_WR; SET_CE; SET_CD; (natürlich muss die Reihenfolge stimmen) und es sollte laufen. Das scheint ja eine fertige Libary zu sein die Du da benutzt, so das ich erstmal nicht davon ausgehe, das dort irgendwelche größeren Fehler drin sind und es prinzipiell funktionieren sollte Ich denke das könnte schon zum Erfolg führen.
ps: Beachten das einige Signalleitungen invertiert sind!!! Das kann einen ziemlich verarschen!(spreche aus eigener Erfahrung :/) Und hier ist das Datenblatt: http://www.datasheetcatalog.com/datasheets_pdf/T/6/9/6/T6963C.shtml falls du es noch nicht hast Auf Seite 9 ist zum Beispiel der Ablauf für Status-Read angegeben: /RD auf Low dann /WR auf High dann /CE auf Low und dann CD auf High dann die Datenbits setzen und dann den Status checken. Wenn Du das so für die 4 genannten Funktionen machst sollte es gehen Der Controller hat übrigends noch einen Auto read/write Modus. Dann wird nur ein Kommando gesendet, und man kann munter seine Daten draufschreiben. Macht das ganze etas fixer. Aber ist erstmal nicht wichtig solange gar nix geht ;) pps: alle Datenleitungen setzen und dann einfach ein langes Delay hatte bei mir damals nicht zu Erfolg geführt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.