Forum: Mikrocontroller und Digitale Elektronik OLED Display W204-XLG von electronic Assembly


von Christoph M. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe mir ein OLED-Display von electronic Assembly gekauft.
Die Anschlüsse sollen kompatibel zu den Displays mit Controllern wie
z.B. LSI KS0070B (1 x 16 Zeichen) sein.
Das OLED Display habe ich in ein Bascom-Testprogramm eingebunden.
Es reagiert jedoch mit div. Fehlern:
1. der gesamte Bildschirm ist durcheiander mit wirren zeichen
oder
2. alle Zeilen sind gleichmässig verrutscht (nach oben oder unten)
oder
3. alle Spalten um mehrere Stellen verschoben

Hatte mit electr. Assembly gesprochen, die mir 2 Tabellen zugeschickt 
haben.
Bei diesem OLED-Display gibt es anscheinend Funktionsänderungen der Pins
(zB. Return Home).

Hardware: ARDUINO 2560 R3 mit 16MHz Takt

Frage: hat jemand Erfahrung mit diesem Display oder schon mal damit 
gearbeitet?

Bild 1: Zeilen verschoben

Bild 2: Bild mit wirren Zeichen nach HW-Reset

Bild 3: Compiler-Einstellung in Bascom

Für Hilfe hierzu wäre ich dankbar.

Mit besten Grüßen

C. Maass

von Andre (Gast)


Lesenswert?

Das klingt so als wäre die Initialisierung nicht korrekt. Hast du es mal 
mit einem anderen Programm/Bibliothek probiert? Oder eine eigene 
Initialisierung ans Display geschickt?
Soweit ich weiß kann man bei Bascom da leider kaum eingreifen. Ich würde 
es also einfach mit Arduino oder der Bibliothek aus unserem Wiki 
probieren.

von Jim Beam (Gast)


Lesenswert?

Sieht in der Tat nach Init- oder Timing-Problemen aus.

Was spricht nochmal genau dagegen,
das Datenblatt zu konsultieren und SELBST eine vernünftige 
Initialisierung zu machen? Mit kleinen Taktraten anfangen und erst wenn 
es klappt langsam steigern.

Anstatt permanent dem LIB-WAHN zu frönen...

von SL (Gast)


Lesenswert?

Die EA Displays sind zickig was die Initialisierung angeht.
Ich hab das damals in den Griff bekommen nachdem ich mir das Datenblatt 
nochmal genauer zu Gemüte gezogen habe.
Dabei kam diese Befehle zur richtigen Initialisierung raus.
1
  lcd.command(0x28);
2
  lcd.command(0x08);
3
  lcd.command(0x06);
4
  lcd.command(0x17);
5
  lcd.command(0x01);
6
  lcd.command(0x02);
7
  lcd.command(0x0C);

(Arduino IDE)

nette Grüße , nen Versuch is es Wert.

von Christoph M. (Gast)


Angehängte Dateien:

Lesenswert?

Danke für den Tip.
Habe Deine Befehle in mein Programm eingebaut. Leider erfolglos.
(Unknown Statement)

Habe dann die Befehle abgeändert in LCD Hex(xx).
Das ließ der Compiler zu, allerdings hat sich auf dem Display nicht viel 
geändert....

Müssen die Befehle vielleicht anders geschrieben werden ?

Läuft das OLED-Display überhaupt mit Bascom...?


Gruß

C.Maass

von Stefan (Gast)


Lesenswert?

Wie hoch ist die Takt rate?

von SL (Gast)


Lesenswert?

Die Taktrate liegt bei 16MHZ ist aus seinem Code ersichtlich.
Was ist mit dem R/W Pin , der sollte auf GND liegen , ist dem so ?
auf dem Bildern sieht das nicht so aus.
Wenn der Pin offen ist , ist das die Lösung , R/W auf GND legen.

nete Grüße

von SL (Gast)


Angehängte Dateien:

Lesenswert?

FYI

von Stefan (Gast)


Lesenswert?

Mach den Takt auf 8MHz
runter. Dann sollte es gehen.

von Christoph Maass (Gast)


Lesenswert?

Hallo und besten Dank für die Antworten.

SL (Gast):
Guter Hinweis. Danke !
Habe PinA.2 auf Low gelegt. ---> keine Änderung

Stefan (Gast):
Die Taktrate verändern möchte ich nicht. Dann setze ich lieber ein 
anderes
Display ein. Benötige die Taktrate für ein größeres Programm.
Hab die Taktrate probehalber auf 8MHz gesetzt ---> keine Ännderung

Ich glaub das wird nix mit diesem Display....

Danke an Alle für die Hinweise!

C.Maass

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Hi,
schau mal:
Beitrag "Re: KS0070B_V0 kompatibel zu HD44780?"

Die Pausen zwischen den Befehlen der Initialisierungsroutine müssen 
mindestens so lang sein, dass sie mit dem Datenblatt übereistimmen.

Das war bei meinen LCD-Initialisierungsversuchen immer das Hauptproblem.

ciao
gustav

P.S.:
Die Routine im asm-Dateianhang ist sehr aufgeblasen. Das war aber die 
erste, durchaus verbesserungsbedürftig. OK. Nur als Beispiel

Das Prob hier ist wohl eine geänderte Spec.
Das Pinout überprüfen.
https://cdn-reichelt.de/documents/datenblatt/A400/DS_OLED_EA.pdf

: Bearbeitet durch User
von SL (Gast)


Lesenswert?

kannst du mal ein bild posten wie du die Leitungen eingelötet hast , 
also die Displayplatine von hinten , mich lässt die Vermutung nicht lost 
das was an deinem Anschluss falsch ist .

von Christoph Maass (Gast)


Lesenswert?

Klar, gerne.

Im Anhang das Anschlussfoto und dazu die Anschlusstabelle die
das 4-Bit Pinout.

Pin 5 (R/W) habe ich auf GND gelegt.


Gruß

Christoph

von Christoph M. (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, hatte die Bilder vergessen.  Hier sind sie nun.

von Christoph Maass (Gast)


Lesenswert?

Antwort an Karl B. (gustav):

Hatte es mit 5ms pro Befehl probiert ---> erfolglos.

Der CLS-Befehl benötigt min. 3ms, ich habe ihm 10ms gegeben ---> 
erfolglos

Das Know How für Assembler besitze ich (leider) nicht.

Habe daher in Bascom die Pausen (5ms) hinter jeden einzelnen Befehl 
gepackt.

Bisher alles vergebens --->  electronic Assembly hatte dazu (extrem) 
wenig zu sagen und der Support von dort = 0 (Schade)

Trotzdem Danke für den Hinweis.

Habe mir jetzt ein anderes Display besorgt: DEM20486  (von Reichelt)

Läuft auf Anhieb und ist sehr gut abzulesen.

Trotzdem gebe ich das OLED noch nicht ganz auf ;-)

Gruß

Christoph

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

Christoph Maass schrieb:
> Trotzdem gebe ich das OLED noch nicht ganz auf ;-)

Hi @Chr.,
sieht so aus, als ob an den SMD Widerständen ( Null Ohm) schon einmal 
gelötet worden wäre.
Was das Datenblatt dazu sagt, ist einkopiert.
Also, wie die Impulse aussehen sollen. Welcher Modus etc.

ciao
gustav

: Bearbeitet durch User
von Christoph M. (Gast)


Lesenswert?

Ich glaub, ich hab's.

Das Oled Display (wie auch andere LCD's) benötigen noch den Befehl 
"INITLCD".

Ich hab die Anweisung nach dem Config gesetzt und es funktioniert.

Noch ein Hinweis dazu: ich hab den Arduino nur am USB (wg. 
5V-Versorgung) angeschlossen gehabt. Nach einer extra Versorgung 
(Klinkenstecker) lief das Teil einwandfrei. Ob über den PC irgendwelche 
Störsignale den Programmstart gefährden...?

Es läuft wie gesagt einwandfrei (auch nach einem HW-Reset).

Das Oled hat nicht nur ein beeindruckendes Bild, es benötigt auch keine 
extra LED-Versorgung für eine Hintergrundbeleuchtung.

Danke nochmals an Alle, die zu diesem Thread etwas beigetragen haben !!!

C. Maass

von Cheffe (Gast)


Lesenswert?

SL schrieb:
> Die EA Displays sind zickig was die Initialisierung angeht.

Das ist Bödsinn. Die Doku passt.


Cheffe

von Karl B. (gustav)


Lesenswert?

Zitat:
https://halvar.at/elektronik/kleiner_bascom_avr_kurs/lcd_textanzeige/

INITLCD
Dieser Befehl initialisiert das Display. INITLCD braucht man im 
Normalfall nicht, da Bascom das Display automatisch beim Start 
initialisiert. Aber INITLCD bietet sich an, um zwischendurch das Display 
zurück zu setzen, falls etwas (z.B. ein Relais) die Displayausgabe 
gestört hat.... Wenn Störungen öfter auftreten, dann solltest du dir 
vielleicht lieber Gedanken über eine bessere Entstörung der Schaltung 
machen.
Die Hilfe zu diesem Befehl findet man hier: 
http://avrhelp.mcselec.com/index.html?initlcd.htm
/Zitat

Christoph M. schrieb:
> Noch ein Hinweis dazu: ich hab den Arduino nur am USB (wg.
> 5V-Versorgung) angeschlossen gehabt. Nach einer extra Versorgung
> (Klinkenstecker) lief das Teil einwandfrei. Ob über den PC irgendwelche
> Störsignale den Programmstart gefährden...?

Sieht so aus, dass die 5V vom PC via USB der Übeltäter ist.
Es gibt vielleicht allerdings noch ein Prob. mit dem Backpowering der 
MCU dann.
Also allzu lange sollten beide Vccs nicht eine von beiden abgeschaltet 
sein.
Dann brauchen die meisten LCDs einen mehr oder weniger definierten 
Anstieg der Vcc, um den Power on Reset auszulösen. Im Extremfalle 
springt ein LCD mit vorgeschaltetem 10000 µF Elko nicht an.

ciao
gustav

: Bearbeitet durch User
von Christoph M. (Gast)


Lesenswert?

To Karl B. (gustav):

Besten Dank für die Tips.

Diese Maßnahmen habe ich durchgeführt:
1. DB 0-3 vom Display auf GND legen.
2. Eine externe Betriebsspannung (ca. 7-19V) über Klinkenstecker 
vorsehen.
3. zwischen Pin 15 + 16 einen 4,7uF Kondensator setzen
   (wenn Hintergrundbeleuchtung erforderlich ist - NICHT beim OLED!)
4. zwischen pin 1 + 2 (Vdd-Vss) einen 100nF einbinden um Störungen zu
   vermeiden

Damit läuft das Display einwandfrei (auch nach einem RESET).

Gruß

Christoph

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
Noch kein Account? Hier anmelden.