Eine kleine Ergänzung, .....
ich habe ein paar OLED-Displays (128x64 Pixel) mit diesem Controller in die Finger bekommen, die sich seltsam verhalten haben. Auf diesen war eine Ausgabe auf X-Koordinaten 0 und 1, sowie 126 und 127 nicht möglich.
Des Rätsels Lösung: Die Displays, die ich bisher in den Fingern hatte, haben das Display-RAM Adresse 0 auf Column-Adresse 0 gemappt und diese anderen (warum auch immer) Display-RAM Adresse 2 auf Column-Adresse 0.
Das heißt, man muß das RAM-Mapping einfach um 2 verscheiben:
Code
UserDevice GraphIOS(Cmd: Byte; Arg: Byte);
Begin
If cmd = 0
then
WriteLCD($02,false); // Lo-address nibble %0000xxxx
WriteLCD($10,false); // Hi-address nibble %0001xxxx
WriteLCD($B0+Arg,false);
else
WriteLCD(Arg,true);
EndIf;
End GraphIOS;
Zum Vergleich meine bisherigen Displays:
Code
WriteLCD($00,false);
WriteLCD($10,false);
WriteLCD($B0+Arg,false);
Gruss
Harry