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 24:1a2ebae1d289, committed 2015-06-22
- 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);