Moin,
ich versuch mich grad am SSD1322 Controller, um mein neues Display
anzusteuern. Die Initialisierung hab ich auch soweit hinbekommen, aber
ich versteh nicht, wie man einen bestimmten Pixel x/y auf dem Display
ansteuern kann. Es leuchten immer die ersten Pixel (linke obere Ecke vom
Display).
In der Initialisierung lege ich den Row- und Column-Addressbereich vom
Display entsprechend dem eingesetzten 256x64 Display fest (mit den
Commands CMD_COL und CMD_ROW).
1 | Write_Cmd(CMD_COL); // Set Column Address
|
2 | Write_Data(0x1C); // Start column (offset of 28)
|
3 | Write_Data(0x5B); // End column = 256, 4 per column = 64-1+offset(28) = 91
|
4 |
|
5 | Write_Cmd(CMD_ROW); // Set Row Address
|
6 | Write_Data(0x00); // Start row
|
7 | Write_Data(0x3F); // 64-1 rows
|
Im Datenblatt vom SSD1322 lese ich dazu folgendes
1 | 10.1.2 Set Column Address (15h)
|
2 | This triple byte command specifies column start address and end address of
|
3 | the display data RAM. This command also sets the column address pointer to
|
4 | column start address. This pointer is used to define the current
|
5 | read/write column address in graphic display data RAM.
|
So weit so gut. Was muss ich aber machen, wenn ich mitten im Display
einen Pixel x/y ansteuern möchte?
1 | Write_Cmd(CMD_COL); // Set Column Address
|
2 | Write_Data(0x1C + x); //
|
3 |
|
4 | Write_Cmd(CMD_ROW); // Set Row Address
|
5 | Write_Data(y); // Start row
|
6 |
|
7 | Write_Cmd(CMD_WRITE); // write ram addr
|
8 | Write_Data(0x0F);
|
Mit diesem Programmcode steuer ich immer das erste Pixel vom Display an.
Ich könnte jetzt alle Pixel vom linken oberen Bildpixel auslesen bis ich
zum gewünschten Pixel komme, aber das ist sehr müsig.
Hat jmd von euch bereits mit dem Controller gearbeitet und weiß wie man
ein Pixel x/y sofort ansteuern kann?
Anbei noch der Link zum Datenblatt:
http://www.displayfuture.com/Display/specs/controller/SSD1322.pdf
Gruß
Jens