Hallo, hab hier ein EA-DIP 122-5 von Elctronic Assembly mit zwei SED1520 Controllern. Derzeit möchte ich nur EINEN Cotroller ansprechen, also nur eine Displayhälfte. Im init_glcd() versuche ich den Anfang der nachfolgenden Schreiboperationen auf die verschiedenen Pages (0-3) zu legen z.B.: write_glcd(1,0b10111000,0); für die erste Page. ^ Danach gebe ich in einer Schleife eine Zahl aus z.B: write_glcd(1,129 ,1);für die Bitfolge 0b10000001 ^ Das klappt auch bei den Pages 0,1,3, die richtigen Pixel werden dargestellt und hintereinander bis zum Ende der Page geschrieben. Wenn ich aber auf Page 2 schreiben möchte: write_glcd(1,0b10111010,0); für die dritte Page. ^ klappt das nicht und statt auf Page 3 (0x10) wird auf die 4te (0x11) geschrieben. Jetzt habe ich schon das Display in Verdacht kaputt zu sein, möchte aber hier erst einmal fragen ob vielleicht schon mal jemand so ein Problem gehabt hat. Jens
:
Bearbeitet durch User
Hat niemand eine Idee oder ist mein Anliegen unverständlich dargelegt? Jens
Sprichst du Pascal?
1 | Procedure GraphInit; |
2 | Begin |
3 | IsCtrlTwo := false; // controller 1 |
4 | WriteLCD(%10101111,false); // display on |
5 | WriteLCD(%11000000,false); // start line 0 |
6 | WriteLCD(%10111000,false); // page 0 |
7 | WriteLCD(%00000000,false); // address 0 |
8 | IsCtrlTwo := true; // controller 2 |
9 | WriteLCD(%10101111,false); // display on |
10 | WriteLCD(%11000000,false); // start line 0 |
11 | WriteLCD(%10111000,false); // page 0 |
12 | WriteLCD(%00000000,false); // address 0 |
13 | gClrScr(0); |
14 | gDispRefresh; |
15 | End GraphInit; |
16 | |
17 | UserDevice GraphIOS(Cmd: Byte; Arg: byte); |
18 | Begin |
19 | If Cmd=0 then // set row addr |
20 | CurRow:=arg; |
21 | IsCtrlTwo:=false; // controller 1 |
22 | WriteLCD(%10111000+CurRow,false); // page |
23 | WriteLCD(%00000000,false); // address 0 |
24 | Col:= 0; |
25 | else |
26 | If Col=61 // if column = 61 then switch to controller 2 |
27 | then |
28 | IsCtrlTwo:=true; // controller 2 |
29 | WriteLCD(%10111000+CurRow,false); // page |
30 | WriteLCD(%00000000,false); // address 0 |
31 | WriteLCD(Arg,true); |
32 | Inc(Col); |
33 | else |
34 | If Col<122 |
35 | then // only column 0..121 are valid |
36 | WriteLCD(Arg,true); |
37 | Inc(Col); |
38 | Endif; |
39 | EndIf; |
40 | EndIf; |
41 | End GraphIOS; |
Hallo, wenn ich das richtig sehe fügst Du hier WriteLCD(%10111000+CurRow,false); der Page einen Zähler hinzu um auf die nächste Page zu wechseln. So habe ich das auch schon probiert, kann aber nicht die Row 3 - also die Page 3- erreichen, mit den anderen Pages(Rows)geht das aber.
Hallo, ich sehe, da fehlt noch was
1 | Procedure WriteLCD(Arg: Byte; IsData: Boolean); |
2 | Var Mask : Byte; |
3 | Begin |
4 | If IsData |
5 | then |
6 | Mask:=$14; // Daten |
7 | else |
8 | Mask:=$10; // Befehl |
9 | EndIf; |
10 | TWIOut(PCA9555,$02,Arg); // Output arg |
11 | If IsCtrlTwo |
12 | then |
13 | TWIOut(PCA9555,$03,(Mask or $08)); // Controller 2 |
14 | else |
15 | TWIOut(PCA9555,$03,(Mask or $01)); // Controller 1 |
16 | EndIf; |
17 | TWIOut(PCA9555,$03,Mask); |
18 | End WriteLCD; |
Ich habe das Display via PCA9555 über I2C verwendet, aber das spielt keine Rolle. Hast du auch nach der Page-Adresse die Startadresse wieder auf 0 gesetzt?
1 | WriteLCD(%10111000+CurRow,false); // page |
2 | WriteLCD(%00000000,false); // address 0 |
Und ja so funktioniert es. Harry
Hallo Harry, ja, die Sartadresse ist auch auf Null gesetzt, ich lass die Row gleich nach dem Init beschreiben, da ist die Strartadresse(column) sowieso Null. Jens
Hi Jens, ich hab noch 2 von den Displays rum liegen, allerdings mit I2C-Platine drunter ..... falls Interesse besteht. Sind die sw mit gelbgrüner Beleuchtung. Harry (mal angemeldet)
Hallo Harry, ich habe hier auch noch einige EA DIP 122-5, allerdings aus einer Charge. Da ich gern mal probieren würde ob Displays aus einer anderen Charge auch nicht auf die Page 3 gehen hätte ich schon interesse an Deinen Displays wenn die I²C Platine nicht angelötet ist. Jens
Hi Jens, doch die sind fertig zusammen gebaut mit PCA und Erzeugung der negativen Kontrastspannung. Harry
ist schon lange her... Am Ende ist das Display kaputt gewesen. Ich hab mir ein PCB mit Buchsenleisten gemacht und einige weitere LCDs aufgesteckt und überprüft. Die sind alle in Ordnung, das erste Display dann wohl kaputt. Jens
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.