mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Initialisierung ST7565 LCD Cntroller


Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Forensuche -> 9 Treffer!!!

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> ...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!

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wäre auch gut, ist aber nicht.

Der Controller hat also keine eigenen Zeichensatz?

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;
}

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich werde mal versuchen die externe Versorgung später zuzuschalten.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist die Reihenfolge der Befehle für die Initialsierung egal? Natürlich 
muss der Reset am Anfang kommen. Und der Rest?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So langsam glaube ich ist das Display im Eimer.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich glaube das es kaputt ist.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht es aus. Kannst du mir noch weiter helfen Benedikt?

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine weitere Frage.

Müßte die Kontrasteinstellung nicht auch ohne Initialiserung 
funktionieren?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe hier ein COG Display. Ich habe die Kodensatoren selber 
bestückt.
Und dort ist ein Spannung zu messen.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jedoch fast überall nur 0,5V !?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.