335 return (buffer[(x + page*screensize_X)]); // = (buffer[(x + page*screensize_X)] & ~(mask<<(pos*_BPP))) | ((color&mask)<<(pos*_BPP)); |
335 return (buffer[(x + page*screensize_X)]); // = (buffer[(x + page*screensize_X)] & ~(mask<<(pos*_BPP))) | ((color&mask)<<(pos*_BPP)); |
336 } |
336 } |
337 |
337 |
338 |
338 |
339 |
339 |
340 // Set row address 0~32 |
340 // Set row address 0~64 |
341 void SSD1322::set_row_address(unsigned char add) |
341 void SSD1322::set_row_address(unsigned char start_row, unsigned char end_row) |
342 { |
342 { |
343 wr_cmd8(SSD1322_CMD_SET_ROW_ADDR); |
343 wr_cmd8(SSD1322_CMD_SET_ROW_ADDR); |
344 add &= 0x3F; |
344 start_row &= 0x3F; |
345 wr_data8(add); |
345 wr_data8(start_row); |
346 wr_data8(0x3F); |
346 end_row &= 0x3F; |
|
347 wr_data8(end_row); |
347 } |
348 } |
348 |
349 |
349 // Set col address 0~64 for Gray mode) |
350 // Set col address 0~64 for Gray mode) |
350 void SSD1322::set_column_address(unsigned char add) |
351 void SSD1322::set_column_address(unsigned char start_col, unsigned char end_col) |
351 { |
352 { |
352 wr_cmd8(SSD1322_CMD_SET_COLUMN_ADDR); |
353 wr_cmd8(SSD1322_CMD_SET_COLUMN_ADDR); |
353 add &= 0x3F; |
354 start_col = (start_col & 0x3F) + 0x1C; |
354 wr_data8(0x1c+add); // where does this 0x1C (28) comes from??? |
355 wr_data8(start_col); // where does this 0x1C (28) comes from??? |
355 wr_data8(0x5b); // this 0x5B (91) seems 28+64 (-1) |
356 end_col = (end_col & 0x3F) + 0x1C; |
|
357 wr_data8(end_col); |
356 } |
358 } |
357 |
359 |
358 void SSD1322::copy_to_lcd(void) |
360 void SSD1322::copy_to_lcd(void) |
359 { |
361 { |
360 unsigned int i; |
362 unsigned int i; |
366 i = 0; |
368 i = 0; |
367 wr_cmd8(SSD1322_CMD_WRITE_RAM); |
369 wr_cmd8(SSD1322_CMD_WRITE_RAM); |
368 for(y=0; y<64; y++) |
370 for(y=0; y<64; y++) |
369 for(x=0; x<128; x++) |
371 for(x=0; x<128; x++) |
370 wr_data8(buffer[i++]); |
372 wr_data8(buffer[i++]); |
|
373 } |
|
374 |
|
375 void SSD1322::copy_to_lcd(unsigned char from_col, unsigned char to_col, |
|
376 unsigned char from_row, unsigned char to_row) |
|
377 { |
|
378 unsigned char x, y; |
|
379 |
|
380 set_row_address(from_row, to_row); |
|
381 set_column_address(from_col, to_col); |
|
382 |
|
383 wr_cmd8(SSD1322_CMD_WRITE_RAM); |
|
384 for(y=from_row; y<=to_row; y++) { |
|
385 for(x=from_col; x<=to_col; x++) { |
|
386 wr_data8(buffer[y*128 + 2*x]); |
|
387 wr_data8(buffer[y*128 + 2*x + 1]); |
|
388 } |
|
389 } |
371 } |
390 } |
372 |
391 |
373 unsigned long SSD1322::buffaddr(unsigned int i) |
392 unsigned long SSD1322::buffaddr(unsigned int i) |
374 { |
393 { |
375 return (unsigned long) &(buffer[i]); |
394 return (unsigned long) &(buffer[i]); |