Hi! Mein altes Display hat den geist aufgegeben. Habe mir also diesen Display gekauft, soll nahezu 100% HD44780 kompatibel sein. Display ausgetauscht, angeschlossen wir das vorherige. Leider tut sich gar nichts, hitergrundbelecuhtung funtkioeniert , sonst nichts. Weißt jemand wieso? Kompilliere mit gcc- compiler. Gruß
Hi, ja Kontrast ist ok. Ich vermute aber dass das Wort "nahezu" zutrifft und meine LCD.lib nicht mehr passt. Hat jemand vielleicht dieses Display? Achso, das Display heißt EA und nicht ES
Hi! <Mein altes Display hat den geist aufgegeben. So, so <Display ausgetauscht, angeschlossen wir das vorherige. Leider tut sich <gar nichts. Nanu, warum das denn? War das Alte eventuell garnicht def.? Wenn du es nur mit Spannung versorgst erscheinen auch keine schwarzen Kästchen? hm, Pinbelegung anders? Kalte Lötstellen? <ja Kontrast ist ok. An was merkst du das denn? Eigentlich sind die EA DIP recht gut zu handhaben und auch recht zuverlässig. Schaue doch bitte nochmal genau nach. Viel Erfolg, Uwe
Die Dinger waren ja nun schon desöfteren Thema hier. Sie sind eben nicht vollkompatibel zum HD44780 und müssen auch anders initialisiert werden. Datenblatt lesen und/oder hier im Forum suchen hilft auf jeden Fall weiter. bye Frank
Also das alte Display war kein EA DIP204, es war ein 100% HD44780. Habe auch versucht hier was zu finden, leider hilft mir das nicht weiter. Was muss ich ändern, ausser der Zeilenadressierung? Was ist da noch anders?
Hallo, ich habe ein ähnliches display.. hab meine lcd library irgendwo aus dem internet und dann aufs display angepasst, hoff sie hilft weiter. Was ich geändert hab weiß ich nicht mehr genau ist schon lange her.. axel
DIP204 hat als Controller KS0073 drauf. Dieser braucht eine andere Initialisierung als der 44780. Auch ist die Zeilenadressierung anders. Die Initialisierung selber ist einfacher, da das Busy-Flag sofort zur Verfügung steht, im Gegensatz zu 44780, wo erst mal ohne Busy-Auswertung initialisiert werden muß. Es steht aber alles im Datenblatt, Download bei EA. So funktioniert DIP204 bei mir (SDCC 8051 Display im 8-Bit-Mode)
1 | // ***********************************************************************
|
2 | // Schreiben eines Zeichens an das LCD-Modul
|
3 | // Übergabe: lcd_byte : Auszugebendes Zeichen/Steuerzeichen
|
4 | // lcd_mode : 0 - Daten
|
5 | // 1 - Steuerzeichen
|
6 | // ***********************************************************************
|
7 | void write_lcd(byte lcd_byte, bit lcd_mode) { |
8 | byte idata lcd_busy = 1; |
9 | // Testen ob LCD-Modul noch im internen Zyklus ist
|
10 | LCD_RW = 1; |
11 | LCD_RS = 0; |
12 | LCD_DATA = 0xFF; // Datenportlatch für Rücklesen vorbereiten |
13 | while(lcd_busy) { |
14 | LCD_E1 = 1; |
15 | _asm nop; nop; nop; _endasm; // Impulsverzögerung |
16 | if (!(LCD_DATA & 0x80)) lcd_busy = 0; // BUSY-Flag abfragen |
17 | LCD_E1 = 0; |
18 | _asm nop; nop; nop; _endasm; // Impulsverzögerung |
19 | }
|
20 | // LCD-Anzeige ist zum Empfang neuer Zeichen bereit
|
21 | LCD_DATA = lcd_byte; // Byte ausgeben |
22 | LCD_RW = 0; |
23 | if (lcd_mode) { |
24 | // Steuerzeichen
|
25 | LCD_RS = 0; |
26 | } else { |
27 | // Daten
|
28 | LCD_RS = 1; |
29 | }
|
30 | LCD_E1 = 1; |
31 | _asm nop; nop; nop; _endasm; // Impulsverzögerung |
32 | LCD_E1 = 0; |
33 | }
|
34 | |
35 | // ***********************************************************************
|
36 | // Grundinitialisierung des LCD-Moduls 8-Bit Bus
|
37 | // KS0073 EA-DIP204 4x20 Display
|
38 | // ***********************************************************************
|
39 | void init_lcd(void) { |
40 | delay(50); // Wartezeit nach POWER-ON bis VCC stabil ist |
41 | // Grundinitialisierung
|
42 | write_lcd(0x34,1); // 0011 0100 (8Bit Bus RE=1) |
43 | write_lcd(0x09,1); // 0000 1001 (4 Zeilen Mode) |
44 | write_lcd(0x30,1); // 0011 0000 (8Bit Bus RE=0) |
45 | write_lcd(0x0C,1); // 0000 1111 (Dipl. ein, Cursor aus, Cursor blinken aus) |
46 | //write_lcd(0x0F,1); // 0000 1111 (Dipl. ein, Cursor ein, Cursor blinken)
|
47 | write_lcd(0x01,1); // 0000 0001 (Diplay löschen, Cursor auf Pos. 1) |
48 | write_lcd(0x06,1); // 0000 0110 (Autoinkrement) |
49 | }
|
Gruß Matthias
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.