lib/unigraphic/SSD1322.cpp

changeset 6
8cb67d7afd79
parent 5
f1c85c2500f2
child 7
5cf4034ba4e0
equal deleted inserted replaced
5:f1c85c2500f2 6:8cb67d7afd79
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]);

mercurial