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/

Files at this revision

API Documentation at this revision

Comitter:
Rhyme
Date:
Mon Jun 22 02:21:06 2015 +0000
Parent:
23:d0eb35bbd2f3
Child:
25:daacdcf34e52
Commit message:
SEPS225 window function started working

Changed in this revision

Inits/SEPS225.cpp Show annotated file Show diff for this revision Revisions of this file
Inits/SEPS225.h Show annotated file Show diff for this revision Revisions of this file
--- a/Inits/SEPS225.cpp	Thu Jun 18 02:25:31 2015 +0000
+++ b/Inits/SEPS225.cpp	Mon Jun 22 02:21:06 2015 +0000
@@ -139,21 +139,24 @@
     
     reg_write(CMD_OSC_CTL, 0x01) ;
     reg_write(CMD_CLOCK_DIV, 0x30) ;
-    reg_write(CMD_PRECHARGE_TIME_R, 0x03) ;
-    reg_write(CMD_PRECHARGE_TIME_G, 0x04) ;
-    reg_write(CMD_PRECHARGE_TIME_B, 0x05) ;
-//  reg_write(CMD_PRECHARGE_TIME_R, 0x0E) ;
-//  reg_write(CMD_PRECHARGE_TIME_G, 0x0E) ;
-//  reg_write(CMD_PRECHARGE_TIME_B, 0x0E) ;
-    reg_write(CMD_PRECHARGE_CURRENT_R, 0x0B) ;
-    reg_write(CMD_PRECHARGE_CURRENT_G, 0x0B) ;
-    reg_write(CMD_PRECHARGE_CURRENT_B, 0x0B) ;
-//  reg_write(CMD_DRIVING_CURRENT_R, 0x3E) ;
-//  reg_write(CMD_DRIVING_CURRENT_G, 0x32) ;
-//  reg_write(CMD_DRIVING_CURRENT_B, 0x3D) ;
-    reg_write(CMD_DRIVING_CURRENT_R, 0x0B) ;
-    reg_write(CMD_DRIVING_CURRENT_G, 0x0B) ;
-    reg_write(CMD_DRIVING_CURRENT_B, 0x0B) ;
+//    reg_write(CMD_PRECHARGE_TIME_R, 0x03) ;
+//    reg_write(CMD_PRECHARGE_TIME_G, 0x04) ;
+//    reg_write(CMD_PRECHARGE_TIME_B, 0x05) ;
+  reg_write(CMD_PRECHARGE_TIME_R, 0x0E) ;
+  reg_write(CMD_PRECHARGE_TIME_G, 0x0E) ;
+  reg_write(CMD_PRECHARGE_TIME_B, 0x0E) ;
+//    reg_write(CMD_PRECHARGE_CURRENT_R, 0x0B) ;
+//    reg_write(CMD_PRECHARGE_CURRENT_G, 0x0B) ;
+//    reg_write(CMD_PRECHARGE_CURRENT_B, 0x0B) ;
+    reg_write(CMD_PRECHARGE_CURRENT_R, 0x3E) ;
+    reg_write(CMD_PRECHARGE_CURRENT_G, 0x32) ;
+    reg_write(CMD_PRECHARGE_CURRENT_B, 0x3D) ;
+  reg_write(CMD_DRIVING_CURRENT_R, 0x3E) ;
+  reg_write(CMD_DRIVING_CURRENT_G, 0x32) ;
+  reg_write(CMD_DRIVING_CURRENT_B, 0x3D) ;
+//    reg_write(CMD_DRIVING_CURRENT_R, 0x0B) ;
+//    reg_write(CMD_DRIVING_CURRENT_G, 0x0B) ;
+//    reg_write(CMD_DRIVING_CURRENT_B, 0x0B) ;
     // Memory Write Mode
     // 16bit * 1 transfer mode, R[5], G[6], B[5]
     // H:Inc, V:Inc, Method:V
@@ -214,6 +217,8 @@
     reg_write(CMD_MX2_ADDR, x+w-1) ;
     reg_write(CMD_MY1_ADDR, y) ;
     reg_write(CMD_MY2_ADDR, y+h-1) ;
+    reg_write(CMD_MEMORY_ACCESS_POINTER_X, x) ;
+    reg_write(CMD_MEMORY_ACCESS_POINTER_Y, y) ;
 }
 
 void SEPS225::cls(void)
@@ -238,6 +243,30 @@
     return(value) ;
 }
 
+void SEPS225::rect(int x0, int y0, int x1, int y1, unsigned short color)
+{
+    float interval = 0.01 ;
+//    window(x0, y0, x1-x0+1, y1-y0+1) ;
+    *_cs = 0 ;
+    wait(interval) ;
+    line(x0, y0, x1, y0, color) ;
+    *_cs = 1 ;
+    wait(interval) ;  
+    *_cs = 0 ;
+    line(x1, y0, x1, y1, color) ;
+    *_cs = 1 ;
+    wait(interval) ;
+    *_cs = 0 ;
+    line(x0, y0, x0, y1, color) ;
+    *_cs = 1 ;
+    wait(interval) ;
+    *_cs = 0 ;
+    line(x0, y1, x1, y1, color) ;
+    wait(interval) ;
+    *_cs = 1 ;
+//    *_cs = 1 ;
+}
+    
 void SEPS225::window4read(int x, int y, int w, int h)
 {
     //printf("SEPS225::window4read not implemented\n\r") ;
--- a/Inits/SEPS225.h	Thu Jun 18 02:25:31 2015 +0000
+++ b/Inits/SEPS225.h	Mon Jun 22 02:21:06 2015 +0000
@@ -61,6 +61,7 @@
 
     virtual void pixel(int x, int y, unsigned short color);
     virtual void window(int x, int y, int w, int h);
+    virtual void rect(int x0, int y0, int x1, int y1, unsigned short color) ;
     virtual void cls(void) ; // virtual
     virtual unsigned short pixelread(int x, int y);
     virtual void window4read(int x, int y, int w, int h);