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 GraphicsDisplay

Fork of the UniGraphic-Library for monochrome LCDs with ST7920 controller and 128x64-IIC-OLED-Display with SH1106-Controller

/media/uploads/charly/20170522_210344.jpg

/media/uploads/charly/20180425_230623.jpg

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:
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);
+}