Hallo zusammen. Ich möchte ein LCD Display 128x64 einsetzen. Dieses wird von dem Controller ST7565 gesteuert. Nun habe ich Schwierigkeiten mit der Initialisierung. Hat jemand schon einmal ein Display mit diesem Controller verwendet? Ich habe schon nach anderen Beiträgen gesucht, jedoch sind diese nicht im Infos angefüllt. Danke euch
>> ...Nun habe ich Schwierigkeiten mit der Initialisierung...
Sorry, aber das klingt wie: ich bin zu Faul selber was zu schreiben und
der Code, den ich im Internet gefunden habe, läuft nicht ohne Änderungen
mit meiner Hardware...
Was läuft nicht?
Wie sieht Dein Code aus?
...dann wird Dir auch geholfen!
Hier kommt mein Code: void Init_LCD_SW50(void) { RES = 0; delay_us(10); RES = 1; CS1 = 0; // LCD Enable LCD_Command(LCD_Normal); LCD_Command(LCD_BIAS9); LCD_Command(LCD_Normal); LCD_Command(LCD_SetPowerCrtl+7); LCD_Command(LCD_BOOSTERRATIO); LCD_Command(0); LCD_Command(LCD_REGRESISTOR+7); LCD_Command(LCD_SetContrast+20); LCD_Command(LCD_STATINDMODE+9); LCD_Command(9); LCD_Command(LCD_ADCNormal); LCD_Command(LCD_PageAdr); LCD_Command(LCD_ColAdrL); LCD_Command(LCD_ON); LCD_Command(LCD_START); } void LCD_Command (int command) { A0 = 0; CS1 = 0; RD = 1; WR = 0; LCD_BUS = command; CS1 = 1; } Ascnhließend schicke ich Daten an das Display mit: void LCD_WriteData(int data) { A0 = 1; // jetzt kommen Daten CS1 = 0; RD = 1; WR = 0; LCD_BUS = data; // Daten an PORT CS1 = 1; return; } data ist 65 also ein A. Leider wird aber nix angezeigt. Ich bin gerade nochmal dabei, das Datenblatt durch zu lesen, ob ich irgend etwas vergessen oder übersehen habe.
Stefan_KM wrote: > data ist 65 also ein A. > Leider wird aber nix angezeigt. Dir ist schon klar, dass dies ein Grafikdisplay ist? Es wird daher kein A angezeigt sondern nur 2 Pixel gehen an.
Wäre auch gut, ist aber nicht. Der Controller hat also keine eigenen Zeichensatz?
Graphisches Display. Alles klar, muss natürlich byte für byte übertragen. Brauche dann ein haufen Tabellen. Hab schon verstanden. Aber wenn ich 0xFF übergebe, sollte eine senkrechte Linie aus 8 Pixeln entstehen. Es passietrt aber nix.
Stefan_KM wrote: > Aber wenn ich 0xFF übergebe, sollte eine senkrechte Linie aus 8 Pixeln > entstehen. Es passietrt aber nix. Wenn alles passt, sollte das so sein. Da sind aber noch einige Fehler im Code: > LCD_Command(LCD_STATINDMODE+9); > LCD_Command(9); Wie kommst du auf 9 (bei beiden Befehlen)? 0 wäre besser. > void LCD_Command (int command) > { > A0 = 0; > CS1 = 0; > RD = 1; > WR = 0; > LCD_BUS = command; > CS1 = 1; > } WR musst auch wieder auf high setzen also in etwa so: void LCD_Command (int command) { A0 = 0; LCD_BUS = command; RD = 1; CS1 = 0; WR = 0; asm("nop"); asm("nop"); WR = 1; CS1 = 1; }
Ok, habe ich bereits alles gemacht. Klappt trotzdem nicht. Sollte vielleicht die Versorgungsspannung für das LCD später zugeschaltet werden als für den Reset der Elektronik?
Stefan_KM wrote: > Sollte vielleicht die Versorgungsspannung für das LCD später > zugeschaltet werden als für den Reset der Elektronik? In deinem Code verwendest du die interne Spannung (Booster circuit: ON). Falls du eine externe verwendest, muss der abgeschaltet werden. Die Spannung sollte dann später eingeschaltet werden, es funktioniert meist aber auch bei gleichzeitigem Einschalten.
Ok, ich werde mal versuchen die externe Versorgung später zuzuschalten.
Ist die Reihenfolge der Befehle für die Initialsierung egal? Natürlich muss der Reset am Anfang kommen. Und der Rest?
Mehr oder weniger. Der 7565 ist ein recht einfacher Controller, dem ist das meiner Erfahrung nach egal. Wenn du ganz sicher gehen willst, im Datenblatt unterhalb der Befehlsübersicht steht die empfohlene Reihenfolge.
SO habe jetzt die Spannung mal später zugeschaltet als den Rest der Elektronik. Geht immer noch nicht. Habe ich vielleicht den Startpunkt falsch gewählt außerhalb des Sichtbereichs? Dislpay 128x64. Es geht ja bis 136 (wenn ich das Datenblatt richtig verstanden habe). Stimmt vielleicht die Kontrasteinstellung nicht?
Wie sieht es aus. Kannst du mir noch weiter helfen Benedikt?
Eine weitere Frage. Müßte die Kontrasteinstellung nicht auch ohne Initialiserung funktionieren?
Stefan_KM wrote: > Müßte die Kontrasteinstellung nicht auch ohne Initialiserung > funktionieren? Nein. Da das Display intern einen Regler eingebaut hat, bekommt das Display erst Spannung wenn man diesen einschaltet. Falls du an die Kondensatoren (es sollten so etwa 5 Kondensatoren gegen Vcc sein) rankommst, dann kannst du messen ob da eine Spannung anliegt. Falls ja, dann ist die Spannung eingeschaltet. Falls nein gibt es noch ein Problem mit der Ansteuerung. Die Spannungen sollten je nach Kondensator irgendwo bei 0-10V liegen.
Ich habe hier ein COG Display. Ich habe die Kodensatoren selber bestückt. Und dort ist ein Spannung zu messen.
Das heißt dann, dass das Display den LCD_SetPowerCrtl Befehl nicht erhält oder die Spannung von extern fehlt, (falls der interne DCDC nicht verwendet wird).
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.