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 27:acb2594b8aa4, committed 2015-10-26
- Comitter:
- dreschpe
- Date:
- Mon Oct 26 12:49:02 2015 +0000
- Parent:
- 26:09c1d5110134
- Child:
- 28:2b562717a864
- Commit message:
- fix handling of PAR8 / PAR16 includes
Changed in this revision
--- a/Display/LCD.cpp Sun Oct 18 17:31:33 2015 +0000 +++ b/Display/LCD.cpp Mon Oct 26 12:49:02 2015 +0000 @@ -17,20 +17,23 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include "platform.h" +#include "LCD.h" -#include "LCD.h" +#if DEVICE_PORTINOUT +#include "PAR8.h" +#include "PAR16.h" +#endif //#include "mbed_debug.h" #define SWAP(a, b) { a ^= b; b ^= a; a ^= b; } - +#if DEVICE_PORTINOUT LCD::LCD(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const int ic_x_segs, const int ic_y_coms, const char *name) : GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y), _LCDPAGES(lcdsize_y>>3), _IC_X_SEGS(ic_x_segs), _IC_Y_COMS(ic_y_coms), _IC_PAGES(ic_y_coms>>3) { -#if DEVICE_PORTINOUT - if(displayproto==PAR_8) proto = new PAR8(port, CS, reset, DC, WR, RD); -#endif + if(displayproto==PAR_8) proto = new PAR8(port, CS, reset, DC, WR, RD); useNOP=false; buffer = (unsigned char*) malloc (screensize_X*_LCDPAGES); buffer16 = (unsigned short*)buffer; @@ -43,6 +46,8 @@ // cls(); // locate(0,0); } +#endif + LCD::LCD(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const int ic_x_segs, const int ic_y_coms, const char *name) : GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y), _LCDPAGES(lcdsize_y>>3), _IC_X_SEGS(ic_x_segs), _IC_Y_COMS(ic_y_coms), _IC_PAGES(ic_y_coms>>3) {
--- a/Display/LCD.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Display/LCD.h Mon Oct 26 12:49:02 2015 +0000 @@ -2,10 +2,9 @@ #ifndef MBED_LCD_H #define MBED_LCD_H -#include "GraphicsDisplay.h" - #if DEVICE_PORTINOUT #include "PAR8.h" +#include "PAR16.h" #endif #include "BUS8.h" @@ -13,6 +12,8 @@ #include "SPI16.h" #include "Protocols.h" +#include "GraphicsDisplay.h" + // undefine the KL43Z and KL46Z LCD macro #ifdef LCD #undef LCD
--- a/Display/TFT.cpp Sun Oct 18 17:31:33 2015 +0000 +++ b/Display/TFT.cpp Mon Oct 26 12:49:02 2015 +0000 @@ -22,13 +22,12 @@ #define SWAP(a, b) { a ^= b; b ^= a; a ^= b; } +#if DEVICE_PORTINOUT TFT::TFT(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const char *name) : GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y) { -#if DEVICE_PORTINOUT if(displayproto==PAR_8) proto = new PAR8(port, CS, reset, DC, WR, RD); - else if(displayproto==PAR_16) proto = new PAR16(port, CS, reset, DC, WR, RD); -#endif + else if(displayproto==PAR_16) proto = new PAR16(port, CS, reset, DC, WR, RD); useNOP=false; scrollbugfix=0; mipistd=false; @@ -45,6 +44,8 @@ // cls(); // locate(0,0); } +#endif + TFT::TFT(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const char *name) : GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y) {
--- a/Display/TFT932x.cpp Sun Oct 18 17:31:33 2015 +0000 +++ b/Display/TFT932x.cpp Mon Oct 26 12:49:02 2015 +0000 @@ -2,8 +2,14 @@ * Copyright (c) 2015 Giuliano Dianda * Released under the MIT License: http://mbed.org/license/mit */ + +#include "platform.h" +#include "TFT932x.h" -#include "TFT932x.h" +#if DEVICE_PORTINOUT +#include "PAR8.h" +#include "PAR16.h" +#endif //#include "mbed_debug.h" @@ -35,6 +41,7 @@ // locate(0,0); } #endif + TFT932x::TFT932x(proto_t displayproto, PinName* buspins, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const int lcdsize_x, const int lcdsize_y, const char *name) : GraphicsDisplay(name), screensize_X(lcdsize_x), screensize_Y(lcdsize_y) {
--- a/Display/TFT932x.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Display/TFT932x.h Mon Oct 26 12:49:02 2015 +0000 @@ -1,8 +1,6 @@ #ifndef MBED_TFT932x_H #define MBED_TFT932x_H -#include "GraphicsDisplay.h" - #if DEVICE_PORTINOUT #include "PAR8.h" #include "PAR16.h" @@ -14,6 +12,7 @@ #include "SPI16.h" #include "Protocols.h" +#include "GraphicsDisplay.h" /** A custom base class for ILI932x color TFT Display (except ILI9327 which is MIPI standard) */
--- a/Protocols/PAR16.cpp Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR16.cpp Mon Oct 26 12:49:02 2015 +0000 @@ -15,6 +15,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include "platform.h" #if DEVICE_PORTINOUT #include "PAR16.h"
--- a/Protocols/PAR16.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR16.h Mon Oct 26 12:49:02 2015 +0000 @@ -1,10 +1,11 @@ -#if DEVICE_PORTINOUT - #ifndef PAR16_H #define PAR16_H #include "mbed.h" #include "Protocols.h" + +#if DEVICE_PORTINOUT + //#include "GraphicsDisplay.h" /** Parallel 16bit interface
--- a/Protocols/PAR8.cpp Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR8.cpp Mon Oct 26 12:49:02 2015 +0000 @@ -15,6 +15,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#include "platform.h" #if DEVICE_PORTINOUT #include "PAR8.h"
--- a/Protocols/PAR8.h Sun Oct 18 17:31:33 2015 +0000 +++ b/Protocols/PAR8.h Mon Oct 26 12:49:02 2015 +0000 @@ -1,10 +1,10 @@ -#if DEVICE_PORTINOUT - #ifndef PAR8_H #define PAR8_H #include "mbed.h" #include "Protocols.h" + +#if DEVICE_PORTINOUT //#include "GraphicsDisplay.h" /** Parallel 8bit interface