A simple library for SSH1106 controlled GLCDs
Revision 2:b55dd362afb9, committed 2016-12-22
- Comitter:
- Anaesthetix
- Date:
- Thu Dec 22 23:15:46 2016 +0000
- Parent:
- 1:ac9efaadd666
- Commit message:
- Made universal for different resolutions.
Changed in this revision
SSH1106.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r ac9efaadd666 -r b55dd362afb9 SSH1106.cpp --- a/SSH1106.cpp Mon Dec 19 23:23:41 2016 +0000 +++ b/SSH1106.cpp Thu Dec 22 23:15:46 2016 +0000 @@ -91,9 +91,9 @@ _lcd_cs->write(0); _lcd_cd->write(1); - for(unsigned short j = 0; j < 8; j++) { + for(unsigned short j = 0; j < LCDPAGES; j++) { SSH1106::setCursor(0, j); - for(unsigned short i = 0; i < 128 ; i++) { + for(unsigned short i = 0; i < LCDWIDTH ; i++) { _lcd->write(0x00); } } @@ -186,9 +186,9 @@ _lcd_cs->write(0); _lcd_cd->write(1); SSH1106::setCursor(0,0); - for(int row=0; row<8; row++) { + for(int row=0; row<LCDPAGES; row++) { SSH1106::setCursor(0, row); - for(int column=0; column<128; column++) { + for(int column=0; column<LCDWIDTH; column++) { _lcd->write(data[cnt]); cnt++; } @@ -264,9 +264,9 @@ _lcd_cs->write(0); _lcd_cd->write(1); SSH1106::setCursor(0,0); - for(int row=0; row<8; row++) { + for(int row=0; row<LCDPAGES; row++) { SSH1106::setCursor(0, row); - for(int column=0; column<128; column++) { + for(int column=0; column<LCDWIDTH; column++) { _lcd->write(buff[cnt]); cnt++; } @@ -282,8 +282,8 @@ if(width+posx > LCDWIDTH) width = (LCDWIDTH-posx); // keep inside display area - page = posy/8; - offset = posy - (page*8); + page = posy/LCDPAGES; + offset = posy - (page*LCDPAGES); buffer[0] = buffer[0] >> (8-height); buffer[0] = buffer[0] << offset; @@ -292,12 +292,12 @@ buffer[1] = buffer[1] - (0xFF << (offset2)); } - cursor = posx + (page*128); + cursor = posx + (page*LCDWIDTH); for(int i=0; i<width; i++) SSH1106::buff[cursor+i] |= buffer[0]; - if(buffer[1] != 0xFF && (page+1) < 8) { // only write if line takes up > 1 page & keep inside display area - for(int i=0; i<width; i++) SSH1106::buff[cursor+i+128] |= buffer[1]; + if(buffer[1] != 0xFF && (page+1) < LCDPAGES) { // only write if line takes up > 1 page & keep inside display area + for(int i=0; i<width; i++) SSH1106::buff[cursor+i+LCDWIDTH] |= buffer[1]; } } @@ -306,19 +306,19 @@ char page, pagecount, offset, offset2; int cursor; - page = posy/8; - pagecount = height/8; - offset2 = height - (pagecount*8); - cursor = posx + (page*128); // LCDWIDTH + page = posy/LCDPAGES; + pagecount = height/LCDPAGES; + offset2 = height - (pagecount*LCDPAGES); + cursor = posx + (page*LCDWIDTH); // LCDWIDTH for(int i=0; i<width; i++) SSH1106::buff[cursor+i] |= (0xFF>>offset); for(; pagecount > 1; pagecount--) { page++; - cursor += 128; + cursor += LCDWIDTH; for(int i=0; i<width; i++) SSH1106::buff[cursor+i] |= 0xFF; } - cursor += 128; + cursor += LCDWIDTH; for(int i=0; i<width; i++) SSH1106::buff[cursor+i] |= (0xFF >> offset2); } \ No newline at end of file