Initialisierung ST7565 LCD Cntroller

Gast #1181690
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
Gast #1181721
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!
Gast #1181783
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.
Gast #1181834
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.
#1181881
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;
}
#1181893
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.
Gast #1181953
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?
#1183231
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren