Hallo allerseits. Es gab hier schon mehrere Artikel, hat aber leider nichts genützt. Ich betreibe das Oled im 4-bit Modus. Mal vorab: Wenn ich meinen LCD Test-Treiber auf das Oled los lasse wird das Oled initialiseirt und ein Teil des Test Text wird richtig angezeigt, aber nur die erste Zeile und nur die ersten 8 Zeichen. Der Cursor blink dabei in Spalte 9. Der Rest ist dunkel. Beim Oled komme ich Offensichtlich nicht in den 2-Zeilen Modus. Die Initialisierung von Electronic Assembly im 4-Bit Modus funktioniert nicht. Da geht gar nichts. Alle meine timings sind sehr großzügig gehalten und das Busy Flaag wird abgefragt. Mir wäre schon geholfen, wenn mir jemand die Initialisierungs nibbles nennen würde, oder welcher Controller im Display verbaut ist. Ähnlich HD44780 ist eben NICHT gleich :-( https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjVq9-F6a3wAhX_g_0HHbUnCtAQFjABegQIBBAD&url=https%3A%2F%2Fwww.lcd-module.de%2Ffileadmin%2Feng%2Fpdf%2Fdoma%2Folede.pdf&usg=AOvVaw00hDa3wUy6WMkEwnp5sRCb Hier (hoffentlich) der Link zum Datenblatt. Der init ist auf seite 2. Vielen Dank
Jörn P. schrieb: > Mal vorab: Wenn ich meinen LCD Test-Treiber auf das Oled los lasse wird > das Oled initialiseirt und ein Teil des Test Text wird richtig > angezeigt, > aber nur die erste Zeile und nur die ersten 8 Zeichen. Der Cursor blink > dabei in Spalte 9. Der Rest ist dunkel. Dann ist deine Initiallisierung falsch. Ob Du sonst Fehler gemacht hast kann niemand wissen, denn weder sieht man den Code noch einen Schaltplan.
Den Code für ein normales HD44780-kompatibles Display verwendet?
Jörg R. schrieb: > Dann ist deine Initiallisierung falsch. Das habe ich ja geschrieben. Das Oled ist schon richtig angeschlossen, sonst würde gar nichts gehen.
OSchlaffel schrieb: > Den Code für ein normales HD44780-kompatibles Display verwendet? Wenn ich den Code verwende kommt es zu dem erwähnten Effekt: Nur 1ste Zeile und nur 8 Zeichen Text.
Jörn P. schrieb: > Mir wäre schon geholfen, wenn mir jemand die Initialisierungs nibbles > nennen würde, So etwas steht üblicherweise im Datenblatt (Seite 5): https://www.mouser.de/datasheet/2/127/olede-971.pdf Komischerweise hast Du das gleiche DB verlinkt - was willst Du denn eigentlich? Soll Dir jemand fertigen Code liefern? Kannst ja auch hier mal schauen - Goggle / Chrome etc. übersetzen das gerne für Dich :-) http://www.avr-asm-tutorial.net/avr_en/apps/lcd/lcd.html
:
Bearbeitet durch User
Hugo H. schrieb: > So etwas steht üblicherweise im Datenblatt (Seite 5): Das datenblatt habe ich, und es sogar gelesen;-) nachstehend eine Copy der Initialisierung. Wie ich bereits geschrieben habe, funktioniert diese Reihenfolge nicht. Dein Link zielt auf ein LCD, ich jabe ein Oled, das ist leider nicht ganz das gleiche. RS_DD=1; //RS-Pin as Output EN_DD=1; //EN-Pin as Output RW_DD=1; //RW-Pin as Output RS = 0; //RS-Pin to low RW = 0; //RW-Pin to low EN = 0; //EN-Pin to low send_nibble(0x03); //Be sure to send_nibble(0x03); //be in send_nibble(0x03); //8-Bit-Mode send_nibble(0x02); //Switch to 4 Bit Wait(50); //Wait 5us WriteIns(0x28);//4-Bit-Mode WriteIns(0x08);//display off WriteIns(0x06);//entry mode set increment cursor by 1 not shifting display WriteIns(0x17);//Character mode and internel power on WriteIns(0x01);//clear display WriteIns(0x02);//return home WriteIns(0x0C); //display on Auszug Ende. Es kann durchaus sein, das die Reihenfolge falsch ist. Ich habe im Funktion Set, wo Interface und Zeilenanzahl festgelegt werden, schon viele Kombinationen ohne Erfolg durchprobiert. Wenn also jemand das Oled am laufen hat und mir die richtige Reihenfolge der nibbles nennen könnte wäre schon alles paletti. Ansonsten muss ich wohl davon ausgehen, das das Display defekt ist. Danke für Hinweise
Jörn P. schrieb: > Ansonsten muss ich wohl davon ausgehen, das das Display defekt ist. Ich wette dass dein Display nicht defekt ist. Der Fehler sitz vor deinem Bildschirm und Tastatur. Wenn es nicht die Software/Firmware ist kann es auch an der (deiner steuernden) Hardware liegen. Das scheint dir nicht in den Sinn zu kommen. Auch der Gesamtaufbau kann eine Rolle spielen. Insofern bleibt nur auf Jörg hinzuweisen: Jörg R. schrieb: > denn weder sieht man den Code noch einen Schaltplan. Ja und ich habe "Gesamtaufbau" geschrieben der nochmals einen grossen Unterschied zum Schaltplan machen kann.
Jörn P. schrieb: > Wenn ich meinen LCD Test-Treiber auf das Oled los lasse na - dann zeig doch mal "deinen" Test-Treiber...
Jörn P. schrieb: > Dein Link zielt auf ein LCD, ich jabe ein Oled, das ist leider nicht > ganz das gleiche. Wie wäre es, wenn Du mal auf jeder Seite links oder rechts oben hinschaust? Da steht unübersehbar "OLED-DISPLAYS". Warum wohl? Jörn P. schrieb: > Alle meine timings sind sehr großzügig > gehalten und das Busy Flaag wird abgefragt. Lass das mit dem Busy Flag mal sein, wenn die Timings wirklich großzügig sind. Jörn P. schrieb: > Es kann durchaus sein, das die Reihenfolge falsch ist. Es kann durchaus sein, dass Dein Programm falsch ist, dass Deine Verdrahtung falsch ist, dass Abblockkondensatoren fehlen, dass ... Wenn Du nichts offen legst kann Dir auch nicht geholfen werden.
Hallo Jörn, ich habe das EA W202-XLG 2x20 OLED Display an meinem Internetradio angeschlossen. Das läuft über einen Raspberry -> I2C -> MCP23017 -> Display angeschlossen und der Einfachheit halber in Python programmiert. Die Initialisierung sollte aber die gleiche sein. Es hat relativ problemlos funktioniert und läuft bis heute täglich. Die Klasse habe ich hier angehängt. Hier der Teil mit der Initialisierung:
1 | setPortMasked(0x03) |
2 | self.__eToggle__(); |
3 | setPortMasked(0x03) |
4 | self.__eToggle__(); |
5 | setPortMasked(0x03) |
6 | self.__eToggle__(); |
7 | setPortMasked(0x02) #4bit |
8 | self.__eToggle__(); |
9 | __usleep__(50.0) |
10 | |
11 | self.writeDataByte(0, 0x28) #4 bit mode, N=1 |
12 | self.writeDataByte(0, 0x08) #display off |
13 | self.writeDataByte(0, 0x06) #entry mode set inc cursor by 1 not shifting display |
14 | self.writeDataByte(0, 0x17) #character mode and internal power on |
15 | self.writeDataByte(0, 0x01) #clear display |
16 | #self.writeDataByte(0, 0x02) #return home |
17 | self.returnHome() |
18 | self.writeDataByte(0, 0x0c) #display on |
Wie kommst du denn, deiner Meinung nach, in Zeile2? Wie hast du vor, dorthinzugelangen? Alles andere geht ja wohl 0x28 sendest du? als Kommentar "4-bit-mode" Hmm
1 | Function Set |
2 | 8 | 4 | 2 | 1 || 8 | 4 | 2 | 1 |
3 | --+---+---+---++---+---+---+--- |
4 | 0 | 0 | 1 | DL|| N | F |FT1|FT0 |
5 | |
6 | Sets interface data length (DL). Sets number of display lines (N). Sets Character |
7 | Font (F). Sets Font Table (FT). |
Hier wird ja wohl der 2zeilen Mode mitaktiviert. Sieh Dir stattdessen mal das memory-Mapping an, WO die zweite Zeile losgeht. Deine Initialisierung stimmt soweit
Hallo Klatschnass, vielen Dank für die Info. Du verwendest die gleiche Initialisierung wie im Datenblatt. Da es bei dir funzt, aber bei mir nicht, gehe ich von einem defekten Display aus. Ich werde mir ein neues Display bestellen. Dann sehen wir weiter. Vielen Dank ;-)
Sichwort ist Display Cursor Location Hier für ein 8x2 Zeichen OLED. Auszug aus: https://os.mbed.com/users/swe_skytem/code/Oled_Driver/docs/tip/Display_8h_source.html
1 | //V1.1 Changes: |
2 | //Added 2ms delay for clear display function |
3 | //Added Return home in clear display function |
4 | |
5 | |
6 | //INFO |
7 | |
8 | //Made for MBED LPC1768 |
9 | //Made for EA W082-XLG In SPI mode (8x2 Oled display) |
10 | //Also works with other Oled displays |
11 | |
12 | //Default Ports: (For LPC1768) |
13 | //p5 = mosi |
14 | //p6 = miso |
15 | //p7 = sck |
16 | //p8 = cs |
17 | |
18 | // 8x2 display cursor location |
19 | // |---------------------------------------| |
20 | // | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
21 | // |---------------------------------------| |
22 | // | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | |
23 | // |---------------------------------------| |
24 | |
25 | //IF Degree Symbol is desired, write DEG instead of the symbol, it will display the ° symbol. Example: DispCharacter(DEG); //Writes ° to display |
Wann zeigst Du uns deinen Testcode, wo du konkret an die zweite Zeile nicht drannkommst?!?
Axel R. schrieb: > Wann zeigst Du uns deinen Testcode, wo du konkret an die zweite Zeile > nicht drannkommst?!? Never ever - viel zu geheim :-)
Also nochmal: der verwendete Controller bei den Dingern verhält sich zwar wie ein 44780, ist aber keiner. er kann/könnte 64 Zeichen Pro Zeile. Stellt aber nur 8 dar. Soweit richtig. Das hängt einfach damit zusammen, dass die 2 x 16 aus 2 x 2 x 8 "zusammengesetzt" sind. Das Speichermapping ist nicht linear. Das neunte Zeichen erreichst du mit Adresse 0x20, das erste Zeichen in der zweiten zeile mit 0x40 und das wiederum 9te Zeichen in der zweiten Zeile dann wohl wieder mit 0x60. Hättest Du etwas mehr Code gepostet, hätte man Dir ne Schleife 'entworfen', die alle RAM-Adressen anspricht. Dann hättest Du das selbst überprüfen können. Beiträge allerdings komplett ignorieren kommt hingegen nich so gut. Aber: Eagle - mach ich auch manchmal. man kann solch ein Display auch gut als zusätzlichen Speicher missbrauchen, weil eben nicht alle Zeichen angezeigt werden. Dazu müsste man's natürlich auch abfragen, sonst ja doof --> siehe Write-Only-Memory (WOM) Der CCC hatte mal iwie Leih-Fahrräder der Bahn gehäggt und Display-Speicher als zusätzlichen RAM verwendet. (25€ son Display - okay ...) ich häng# Dir mal noch den Display-Controller mit an. Vllt kannst Du damit was anfangen. Dann bin ich hier raus. Muss mich um mein Bierbrauprojekt kümmern, sonst schläft das ein. https://www.buydisplay.com/download/ic/SPLC780.pdf
Hallo axlr, danke mal für deinen Beitrag und damit die Hinweise auf die Display Adressen. Und den Link für den Controller. Danach hatte ich schon gegoogelt, aber nix gefunden. (Hab vergessen das im posting zu erwähnen) Axel R. schrieb: > Beiträge allerdings komplett ignorieren kommt hingegen nich so gut. Das tue ich absolut nicht. Ich bin "von Haus aus" nicht jeden Tag im Forum. Es gibt ja auch noch Anderes zu tun, z.B. Bier brauen ;-) Ich sagte ja, das ich das Display für defekt halte un imo macht es wenig Sinn dann darin Zeit zu verplempern. Nächste Woche soll ein neues Display kommen, dann kann man mal sehen, was Sache ist.
Hi >danke mal für deinen Beitrag und damit die Hinweise auf die Display >Adressen. Und den Link für den Controller. Danach hatte ich schon >gegoogelt, aber nix gefunden. (Hab vergessen das im posting zu >erwähnen). Soweit mir bekannt ist befindet sich auf den EA-Modulen ein RS0012 von Raystar. Aus dem Datenblatt des RS0012 stammen auch einige Darstellungen in http://www.lcd-module.de/fileadmin/downloads/development%20service/OLED_Char/OLED%20application%20note.pdf MfG Spess
Jörn P. schrieb: > Ich sagte ja, das ich das Display für defekt halte Ist es mit an Sicherheit grenzender Wahrscheinlichkeit aber nicht. Defekt bist nur du. Es fehlt halt jegliche einschlägige Kompetenz und jeglicher Wille, daran etwas zu ändern. > Es gibt ja auch noch Anderes zu tun, z.B. Bier brauen ;-) Naja, das ist auch nicht so ganz einfach. Hauptsache, du kannst das besser als Programmieren...
Schau mal hier: https://www.buydisplay.com/i2c-16x2-oled-serial-character-display-module-screen-yellow-on-black müsste identisch sein-Chipsatz ist US2066. Auf der Seite gibt es auch Beispielcode - somit kannst du Dein angeblich defektes Display testen. Ich habe unter Arduino mit der passenden Lib meins zum "laufen" bekommen.
Hi >Schau mal hier: >https://www.buydisplay.com/i2c-16x2-oled-serial-character-display-module-screen-yellow-on-black >müsste identisch sein-Chipsatz ist US2066. Der Controller hat aber nur 3 Zeichensätze. Die EA-Module aber 4, genau wie der RS0012. MfG Spess
Danke für den Hinweis ! Ich habe noch etwas gesucht-es gibt auch den RS0010 (mit vier Zeichensätze): https://www.tme.eu/Document/746174d0ddac05c785c5271afce6c05c/RS0010.pdf U.u. ist der auch zu den RS0012 (teilweise) kompatibel. Für einen Test gibt es bei: https://github.com/iwi1/iwi_SPI_RS0010 einen entsprechenden Beitrag. Ich weiß, ist für SPI und nicht 4 Bit - aber vieleicht hilft es trotzdem. Wenn das Display mit diesen Versuchsaufbau läuft, kann aus der Lib auch die Initialisierung entnommen werden. Schau auch mal hier:Beitrag "DEP16201-Y auch 4-Bit?"
Das neue Oled Display ist eingetrofen und AEG (Anschließen, Einschalten, Geht);-) Es läuft an meinem normalen LC-Driver. Wenn andere user das Oled mit der selben Initialisierung zum Laufen gebracht haben wie ich, mein Oled aber nicht funzt, dann ist imho die einzge Erklärung ein defektes Oled. Ich bedanke mich bei allen die mir mit Codes und Datenblättern geholfen haben. Die "Hellseher" in diesem Fred sollten sich ihr Lehrgeld zurück geben lassen.
Jörn P. schrieb: > dann ist imho die einzge Erklärung ein > defektes Oled. Nein - siehe Hugo H. schrieb: > Es kann durchaus sein, dass Dein Programm falsch ist, dass Deine > Verdrahtung falsch ist, dass Abblockkondensatoren fehlen, dass ... > > Wenn Du nichts offen legst kann Dir auch nicht geholfen werden. aber trotzdem - viel Spaß noch (und veralbern kann ich mich alleine :-) )
Es bleibt ein "Geschmäckle" - mir ist noch kein defektes OLED unter gekommen. Kann sein,dass hier von den wahren Gründen abgelenkt wird und der TO nur noch seine Ruhe haben will. Wenn dass so ist, bitte an der persönlichen Lernkurve weiter arbeiten.
Hallo Klugscheißer Mir ist auch noch kein defektes Oled unter gekommen, denn das war mein erstes. Ich habe aber schon etliche defekte LCD in den Fingern gehabt und ich meine damit nicht die scheinbar defekten mit dem erhöhten temperaturbereich. Das neue Oled funzte auf anhieb, also alles gut ;-)
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.