UniGraphic-Fork for ST7920-LCD-controller and SH1106. Tested with 128x64 LCD with SPI and 128x64-OLED with IIC
Dependents: UniGraphic-St7920-Test AfficheurUTILECO
Fork of UniGraphic by
Fork of the UniGraphic-Library for monochrome LCDs with ST7920 controller and 128x64-IIC-OLED-Display with SH1106-Controller
Had to adapt LCD for following reasons:
- Give access to screenbuffer buffer[] to parent class
- pixel() and pixel_read() as they are hardware-dependent
- added reset-pin to IIC-Interface
GraphicDisplay:: sends buffer to LCD when auto_update is set to true.
Testprogram for ST7920 can be found here:
https://developer.mbed.org/users/charly/code/UniGraphic-St7920-Test/
Diff: Inits/SSD1306.cpp
- Revision:
- 17:1dafb896c6f5
- Parent:
- 15:b9483ba842c8
- Child:
- 33:f87f06292637
diff -r 244f9563ebc1 -r 1dafb896c6f5 Inits/SSD1306.cpp --- a/Inits/SSD1306.cpp Mon Feb 23 23:36:22 2015 +0000 +++ b/Inits/SSD1306.cpp Tue Feb 24 22:30:05 2015 +0000 @@ -134,3 +134,44 @@ wr_cmd16(0x8100|(o&0xFF)); } + +//////////////////////////////////////////////////////////////////// +// functions that overrides the standard ones implemented in LCD.cpp +//////////////////////////////////////////////////////////////////// + + +const uint8_t scroll_speed[8]={3,2,1,6,0,5,4,7}; + +//////////////////////////////////////////////////////////////////// +// functions addon to LCD.cpp +//////////////////////////////////////////////////////////////////// +void SSD1306::horizontal_scroll(int l_r,int s_page,int e_page,int speed){ + wr_cmd8(0x2E); // deactivate scroll before change + if(l_r == 1){ + wr_cmd16(0x2700); // horizontal scroll left + } + else { + wr_cmd16(0x2600); + } + wr_cmd16((s_page & 0x07)<<8 | (scroll_speed[speed & 0x07])); + wr_cmd16((e_page & 0x07)<<8 ); + wr_cmd16(0xFF2F); +} + +void SSD1306::horiz_vert_scroll(int l_r,int s_page,int e_page,int v_off,int speed){ + wr_cmd8(0x2E); // deactivate scroll before change + if(l_r == 1){ + wr_cmd16(0x2A00); // horizontal scroll left + } + else { + wr_cmd16(0x2900); + } + wr_cmd16((s_page & 0x07)<<8 | (scroll_speed[speed & 0x07])); + wr_cmd16((e_page & 0x07)<<8 | (v_off & 0x3F) ); + wr_cmd8(0x2F); + +} + +void SSD1306::end_scroll(){ + wr_cmd8(0x2E); +}