[Edit]Hat sich erledigt, das Display läuft
Hallo Zusammen,
es gab hier mal einen User "Alois", der leider gelöscht wurde. Weiß jemand wer das war und wie man ihn kontaktieren kann? Ich habe von ihm damals Displays bekommen, die ich nun versuche (nach langer, langer Zeit) zu verwenden. Ich habs auch schon fast geschafft, aber mir fehlt ein entscheidender Tip .
Falls jemand diesen Tip alternativ hat: Ich sehe, daß mein Test-Text auf dem Display erscheint, aber 0.x Sekunden später wird das Display komplett schwarz (wie ein gFillRect(0,0,319,239,$FF)). Dieses Display hat bis zu 4 Screens/RAM-Bereiche, die man auch alle gleichzeitig anzeigen kann (mit div. Verknüfungsoptionen or/xor/...). Controller ist ein Epson S1D13700.
[EDIT]Ich habe grad noch was raus gefunden: Den Text, den ich da sehe, ist der Text, der das letzte mal in das Display-RAM geschrieben wurde. D.h. das schwarz werden des Displays muß etwas mit der Konfiguration zu tun haben, was aber erst nach einer kurzen Zeit aktiv wird.
Ich starte die Display-Config, warte 10 Sekunden, gebe Text aus. Nach dem 2. Reset sehe ich kurz diesen Text vor es schwarz wird. Wenn ich den Text ändere, compiliere, flashe, Programmstart, dann sehe ich immer noch den Text vom letzten mal. Erst nach einem erneuten Reset (und natürlich 10s Pause vorher) sehe ich den aktuellen Text.
Procedure LCDInit;
Begin
mDelay(100);
LCD_Select:=1; // 0=8080, 1=6800
LCD_WR:=0; // 8080: /WR 6800: 0=WR 1=RD
LCD_En:=0; // 8080: /RD 6800: 0-->1 En
LCD_Reset:=1; //
mDelay(100); // ensure minimum 50 ms after power up LCD }
LCD_Reset:=0; //
mDelay(20); // ensure minimum 1 ms pulling RESET }
LCD_Reset:=1; //
mDelay(20); // wait minimum 3 ms for system stable }
// Overview TM S.19
WriteLCD($40,false); // Sets initial operation and window size (TechMan S.22)
WriteLCD($00,true);
mDelay(10);
WriteLCD($40,false); // Sets initial operation and window size (TechMan S.22)
WriteLCD($34,true); // P1: 0 0 IV 1 WS M2 M1 M0 (TM 23)
WriteLCD($87,true); // P2: WF 0 0 0 0 FX FX FX (TM 26)
WriteLCD($00,true); // P3: 0 0 0 0 FY FY FY FY (TM 27)
WriteLCD($27,true); // P4: CR (TM 27)
WriteLCD($2B,true); // P5: TCR (TM 28)
WriteLCD($EF,true); // P6: LF (TM 28)
WriteLCD($28,true); // P7: APL (TM 29)
WriteLCD($00,true); // P8: APH (TM 29)
mDelay(10);
WriteLCD($44,false); // Scroll: Sets the display start address and display area (TM 32)
WriteLCD($00,true); // Screen 1: A7 A6 A5 A4 A3 A2 A1 A0 Start-Adr. Lo
WriteLCD($00,true); // Screen 1: A15 A14 A13 A12 A11 A10 A9 A8 Start-Adr. Hi
WriteLCD($EF,true); // Screen 1: L7 L6 L5 L4 L3 L2 L1 L0 Lines-1
WriteLCD($25,true); // Screen 2: A7 A6 A5 A4 A3 A2 A1 A0
WriteLCD($80,true); // Screen 2: A15 A14 A13 A12 A11 A10 A9 A8
WriteLCD($EF,true); // Screen 2: L7 L6 L5 L4 L3 L2 L1 L0
//WriteLCD($00,true); // Screen 3: A7 A6 A5 A4 A3 A2 A1 A0
//WriteLCD($4B,true); // Screen 3: A15 A14 A13 A12 A11 A10 A9 A8
//WriteLCD($00,true); // Screen 4: A7 A6 A5 A4 A3 A2 A1 A0
//WriteLCD($00,true); // Screen 4: A15 A14 A13 A12 A11 A10 A9 A8
mDelay(10); // (TM 45)
WriteLCD($5C,false); // Defines the offset Address of CG RAM in display memory space
WriteLCD($00,true); //
WriteLCD($F0,true); //
mDelay(10); // (TM 39)
WriteLCD($5D,false); // Sets the cursor shape etc.
WriteLCD($04,true); //
WriteLCD($86,true); //
mDelay(10); // (TM 46)
WriteLCD($5A,false); // Sets the horizontal direction dot unit and scroll position
WriteLCD($00,true); // 0 0 0 0 0 D2 D1 D0
mDelay(10);
WriteLCD($5B,false); // Instructs screen overlay mode (TM 41)
WriteLCD(%00001100,true); // 0 0 0 OV DM2 DM1 MX1 MX0
mDelay(10);
WriteLCD($60,false); // Sets grayscale mode (TM 47)
WriteLCD($00,true); // 0 0 0 0 0 0 D1 D0 00=1 Bit/Pixel
mDelay(10);
WriteLCD($59,false); // Instructs to turn display on/off and make the screen flash on/off
WriteLCD(%00000100,true); // FP5 FP4 FP3 FP2 FP1 FP0 FC1 FC0 (TM 30)
mDelay(50);
{ turn on VO and VEE } // only after init!
LCD_VEE:=1; // enable both VEE and V0 (damit wird der DCDC -24V aktiviert)
MDelay(50);
gClrScr(0);
gDispRefresh;
gSetTextJustify(alHorCenter, alVertTop); // Textausrichtung horizontal zentriert
// vertikal oben
gSetTextMode(wmXorPix); // Text Xor, d.h. auf einer gefüllten Fläche
// wird der Text invertiert
gSetTextBkGnd(bkTransp); // Texthintergrund transparent
gSetCharSetRam(false);
End LCDInit; ..... das "TM xx" ist die Seite des Technical Manual des Controllers.
Und ja, ich will dieses Display da es 320x240 Pixel und einen Touch hat, s/w ist (Konfigurierbar auf 1 Bit/Pixel) und der reine Pixelbereich 5.6" groß ist (der Displaybereich ist noch leicht größer). Außerdem habe ich es bereits von CCFL auf LED-Hintergrundbeleuchtung umgebaut und ich hab 4 Stück von denen.
Danke & Gruss
Harry
Hallo Zusammen,
es gab hier mal einen User "Alois", der leider gelöscht wurde. Weiß jemand wer das war und wie man ihn kontaktieren kann? Ich habe von ihm damals Displays bekommen, die ich nun versuche (nach langer, langer Zeit) zu verwenden. Ich habs auch schon fast geschafft, aber mir fehlt ein entscheidender Tip .
Falls jemand diesen Tip alternativ hat: Ich sehe, daß mein Test-Text auf dem Display erscheint, aber 0.x Sekunden später wird das Display komplett schwarz (wie ein gFillRect(0,0,319,239,$FF)). Dieses Display hat bis zu 4 Screens/RAM-Bereiche, die man auch alle gleichzeitig anzeigen kann (mit div. Verknüfungsoptionen or/xor/...). Controller ist ein Epson S1D13700.
[EDIT]Ich habe grad noch was raus gefunden: Den Text, den ich da sehe, ist der Text, der das letzte mal in das Display-RAM geschrieben wurde. D.h. das schwarz werden des Displays muß etwas mit der Konfiguration zu tun haben, was aber erst nach einer kurzen Zeit aktiv wird.
Ich starte die Display-Config, warte 10 Sekunden, gebe Text aus. Nach dem 2. Reset sehe ich kurz diesen Text vor es schwarz wird. Wenn ich den Text ändere, compiliere, flashe, Programmstart, dann sehe ich immer noch den Text vom letzten mal. Erst nach einem erneuten Reset (und natürlich 10s Pause vorher) sehe ich den aktuellen Text.
Code
Procedure LCDInit;
Begin
mDelay(100);
LCD_Select:=1; // 0=8080, 1=6800
LCD_WR:=0; // 8080: /WR 6800: 0=WR 1=RD
LCD_En:=0; // 8080: /RD 6800: 0-->1 En
LCD_Reset:=1; //
mDelay(100); // ensure minimum 50 ms after power up LCD }
LCD_Reset:=0; //
mDelay(20); // ensure minimum 1 ms pulling RESET }
LCD_Reset:=1; //
mDelay(20); // wait minimum 3 ms for system stable }
// Overview TM S.19
WriteLCD($40,false); // Sets initial operation and window size (TechMan S.22)
WriteLCD($00,true);
mDelay(10);
WriteLCD($40,false); // Sets initial operation and window size (TechMan S.22)
WriteLCD($34,true); // P1: 0 0 IV 1 WS M2 M1 M0 (TM 23)
WriteLCD($87,true); // P2: WF 0 0 0 0 FX FX FX (TM 26)
WriteLCD($00,true); // P3: 0 0 0 0 FY FY FY FY (TM 27)
WriteLCD($27,true); // P4: CR (TM 27)
WriteLCD($2B,true); // P5: TCR (TM 28)
WriteLCD($EF,true); // P6: LF (TM 28)
WriteLCD($28,true); // P7: APL (TM 29)
WriteLCD($00,true); // P8: APH (TM 29)
mDelay(10);
WriteLCD($44,false); // Scroll: Sets the display start address and display area (TM 32)
WriteLCD($00,true); // Screen 1: A7 A6 A5 A4 A3 A2 A1 A0 Start-Adr. Lo
WriteLCD($00,true); // Screen 1: A15 A14 A13 A12 A11 A10 A9 A8 Start-Adr. Hi
WriteLCD($EF,true); // Screen 1: L7 L6 L5 L4 L3 L2 L1 L0 Lines-1
WriteLCD($25,true); // Screen 2: A7 A6 A5 A4 A3 A2 A1 A0
WriteLCD($80,true); // Screen 2: A15 A14 A13 A12 A11 A10 A9 A8
WriteLCD($EF,true); // Screen 2: L7 L6 L5 L4 L3 L2 L1 L0
//WriteLCD($00,true); // Screen 3: A7 A6 A5 A4 A3 A2 A1 A0
//WriteLCD($4B,true); // Screen 3: A15 A14 A13 A12 A11 A10 A9 A8
//WriteLCD($00,true); // Screen 4: A7 A6 A5 A4 A3 A2 A1 A0
//WriteLCD($00,true); // Screen 4: A15 A14 A13 A12 A11 A10 A9 A8
mDelay(10); // (TM 45)
WriteLCD($5C,false); // Defines the offset Address of CG RAM in display memory space
WriteLCD($00,true); //
WriteLCD($F0,true); //
mDelay(10); // (TM 39)
WriteLCD($5D,false); // Sets the cursor shape etc.
WriteLCD($04,true); //
WriteLCD($86,true); //
mDelay(10); // (TM 46)
WriteLCD($5A,false); // Sets the horizontal direction dot unit and scroll position
WriteLCD($00,true); // 0 0 0 0 0 D2 D1 D0
mDelay(10);
WriteLCD($5B,false); // Instructs screen overlay mode (TM 41)
WriteLCD(%00001100,true); // 0 0 0 OV DM2 DM1 MX1 MX0
mDelay(10);
WriteLCD($60,false); // Sets grayscale mode (TM 47)
WriteLCD($00,true); // 0 0 0 0 0 0 D1 D0 00=1 Bit/Pixel
mDelay(10);
WriteLCD($59,false); // Instructs to turn display on/off and make the screen flash on/off
WriteLCD(%00000100,true); // FP5 FP4 FP3 FP2 FP1 FP0 FC1 FC0 (TM 30)
mDelay(50);
{ turn on VO and VEE } // only after init!
LCD_VEE:=1; // enable both VEE and V0 (damit wird der DCDC -24V aktiviert)
MDelay(50);
gClrScr(0);
gDispRefresh;
gSetTextJustify(alHorCenter, alVertTop); // Textausrichtung horizontal zentriert
// vertikal oben
gSetTextMode(wmXorPix); // Text Xor, d.h. auf einer gefüllten Fläche
// wird der Text invertiert
gSetTextBkGnd(bkTransp); // Texthintergrund transparent
gSetCharSetRam(false);
End LCDInit;
Und ja, ich will dieses Display da es 320x240 Pixel und einen Touch hat, s/w ist (Konfigurierbar auf 1 Bit/Pixel) und der reine Pixelbereich 5.6" groß ist (der Displaybereich ist noch leicht größer). Außerdem habe ich es bereits von CCFL auf LED-Hintergrundbeleuchtung umgebaut und ich hab 4 Stück von denen.
Danke & Gruss
Harry