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/
Revision 19:1bdfb971b2c1, committed 2015-03-02
- Comitter:
- Geremia
- Date:
- Mon Mar 02 10:52:26 2015 +0000
- Parent:
- 18:ffa58f1a680a
- Parent:
- 17:1dafb896c6f5
- Child:
- 20:14daa48ffd4c
- Commit message:
- Added LCD ST7565, the very basic std one, tested also on UC1701
Changed in this revision
| Inits/SSD1306.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/Inits/SSD1306.cpp Mon Mar 02 10:35:41 2015 +0000
+++ b/Inits/SSD1306.cpp Mon Mar 02 10:52:26 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);
+}
--- a/Inits/SSD1306.h Mon Mar 02 10:35:41 2015 +0000
+++ b/Inits/SSD1306.h Mon Mar 02 10:52:26 2015 +0000
@@ -47,7 +47,28 @@
*/
virtual void set_contrast(int o);
-protected:
+ /** set automatc horizontal scroll mode
+ * @param l_r direction - left = 0, right = 1
+ * @param s_page start page
+ * @param e_page end page
+ * @param speed time between horizontal shift. 0 slow .. 7 fast
+ */
+ void horizontal_scroll(int l_r,int s_page,int e_page,int speed);
+
+ /** automatic horizontal + vertical scroll mode
+ * @param l_r direction - left = 0, right = 1
+ * @param s_page start page
+ * @param e_page end page
+ * @param v_off vertical offset for scroll
+ * @param speed time between horizontal shift. 0 slow .. 7 fast
+ */
+ void horiz_vert_scroll(int l_r,int s_page,int e_page,int v_off,int speed);
+
+ /** end scroll mode
+ *
+ */
+ void end_scroll(void);
+ protected:
/** Init command sequence
