Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of UniGraphic by
Revision 18:ffa58f1a680a, committed 2015-03-02
- Comitter:
- Geremia
- Date:
- Mon Mar 02 10:35:41 2015 +0000
- Parent:
- 16:244f9563ebc1
- Child:
- 19:1bdfb971b2c1
- Commit message:
- Added LCD ST7565, compatible with UC1701
Changed in this revision
--- a/Display/LCD.cpp Mon Feb 23 23:36:22 2015 +0000
+++ b/Display/LCD.cpp Mon Mar 02 10:35:41 2015 +0000
@@ -278,7 +278,7 @@
// wr_cmd8(0x10|(col_offset>>4)); // set column hi nibble
wr_cmd16(setcolcmd);
wr_cmd8(0xB0|(page+page_offset)); // set page
- wr_gram(tmp, screensize_X>>1); // send whole page pixels =0
+ wr_gram(tmp, screensize_X>>1); // send whole page pixels = background
}
}
int LCD::sizeX()
--- a/Inits/ILI9341.h Mon Feb 23 23:36:22 2015 +0000
+++ b/Inits/ILI9341.h Mon Mar 02 10:35:41 2015 +0000
@@ -15,7 +15,7 @@
public:
/** Create a PAR display interface
- * @param displayproto only supports PAR_8
+ * @param displayproto PAR_8 or PAR_16
* @param port GPIO port name to use
* @param CS pin connected to CS of display
* @param reset pin connected to RESET of display
@@ -30,7 +30,7 @@
ILI9341(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char* name ,const unsigned int LCDSIZE_X = 240, unsigned int LCDSIZE_Y = 320);
/** Create an SPI display interface
- * @param displayproto only supports SPI_8
+ * @param displayproto SPI_8 or SPI_16
* @param Hz SPI speed in Hz
* @param mosi SPI pin
* @param miso SPI pin
--- a/Inits/ILI9486.h Mon Feb 23 23:36:22 2015 +0000
+++ b/Inits/ILI9486.h Mon Mar 02 10:35:41 2015 +0000
@@ -15,7 +15,7 @@
public:
/** Create a PAR display interface
- * @param displayproto only supports PAR_8
+ * @param displayproto PAR_8 or PAR_16
* @param port GPIO port name to use
* @param CS pin connected to CS of display
* @param reset pin connected to RESET of display
@@ -29,7 +29,7 @@
ILI9486(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char* name, unsigned int LCDSIZE_X = 320, unsigned int LCDSIZE_Y = 480);
/** Create an SPI display interface
- * @param displayproto only supports SPI_8
+ * @param displayproto SPI_8 or SPI_16
* @param Hz SPI speed in Hz
* @param mosi SPI pin
* @param miso SPI pin
--- a/Inits/IST3020.cpp Mon Feb 23 23:36:22 2015 +0000 +++ b/Inits/IST3020.cpp Mon Mar 02 10:35:41 2015 +0000 @@ -5,7 +5,7 @@ #include "Protocols.h" #include "IST3020.h" -/*this is a quite standard config, should be compatible with ST7565, except bigger screen and diff resistor ratio value*/ +/*this is a quite standard config, similar to ST7565, except bigger screen and diff resistor ratio value*/ ////////////////////////////////////////////////////////////////////////////////// // display settings ///////////////////////////////////////////////////////
--- a/Inits/IST3020.h Mon Feb 23 23:36:22 2015 +0000
+++ b/Inits/IST3020.h Mon Mar 02 10:35:41 2015 +0000
@@ -29,7 +29,7 @@
IST3020(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char* name, unsigned int LCDSIZE_X = 192, unsigned int LCDSIZE_Y = 64);
/** Create an SPI display interface
- * @param displayproto only supports SPI_8
+ * @param displayproto SPI_8 or SPI_16
* @param Hz SPI speed in Hz
* @param mosi SPI pin
* @param miso SPI pin
--- a/Inits/SSD1306.h Mon Feb 23 23:36:22 2015 +0000
+++ b/Inits/SSD1306.h Mon Mar 02 10:35:41 2015 +0000
@@ -27,7 +27,7 @@
SSD1306(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char* name, unsigned int LCDSIZE_X = 128, unsigned int LCDSIZE_Y = 64);
/** Create an SPI display interface
- * @param displayproto only supports SPI_8
+ * @param displayproto SPI_8 or SPI_16
* @param Hz SPI speed in Hz
* @param mosi SPI pin
* @param miso SPI pin
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Inits/ST7565.cpp Mon Mar 02 10:35:41 2015 +0000
@@ -0,0 +1,76 @@
+ /* mbed UniGraphic library - Device specific class
+ * Copyright (c) 2015 Giuliano Dianda
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+#include "Protocols.h"
+#include "ST7565.h"
+
+/*this is a quite standard config for ST7565 and similars, like UC1701*/
+
+//////////////////////////////////////////////////////////////////////////////////
+// display settings ///////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+#define IC_X_SEGS 132 // ST7565 SEG has range 0-131 (131-0 if ADC=1), check your datasheet, important for the orientation
+#define IC_Y_COMS 64 // ST7565 COM has range 0-63 (63-0 if SHL=1), check your datasheet, important for the orientation
+// put in constructor
+//#define LCDSIZE_X 128 // display X pixels, ST7565 is advertised as 132x65 but display size could be smaller
+//#define LCDSIZE_Y 64 // display Y pixels, the 65th is for accessing "icons"
+
+
+
+ST7565::ST7565(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char *name, unsigned int LCDSIZE_X, unsigned int LCDSIZE_Y)
+ : LCD(displayproto, port, CS, reset, DC, WR, RD, LCDSIZE_X, LCDSIZE_Y, IC_X_SEGS, IC_Y_COMS, name)
+{
+ hw_reset();
+ BusEnable(true);
+ init();
+ cls();
+ set_orientation(1);
+ locate(0,0);
+}
+ST7565::ST7565(proto_t displayproto, int Hz, PinName mosi, PinName miso, PinName sclk, PinName CS, PinName reset, PinName DC, const char *name, unsigned int LCDSIZE_X, unsigned int LCDSIZE_Y)
+ : LCD(displayproto, Hz, mosi, miso, sclk, CS, reset, DC, LCDSIZE_X, LCDSIZE_Y, IC_X_SEGS, IC_Y_COMS, name)
+{
+ hw_reset();
+ BusEnable(true);
+ init();
+ cls();
+ set_orientation(1);
+ locate(0,0);
+}
+// reset and init the lcd controller
+// init sequence is manufacturer specific
+void ST7565::init()
+{
+ /* Start Initial Sequence ----------------------------------------------------*/
+
+ wr_cmd8(0xE2); // sw reset
+ wait_ms(10);
+
+ wr_cmd8(0xAE); // display off
+
+ wr_cmd8(0xA2); // bias voltage (1/9)
+ // wr_cmd8(0xA3); // bias voltage (1/7)
+
+ //wr_cmd8(0xA0); // ADC select seg0-seg131
+ wr_cmd8(0xA1); // ADC select seg223-seg0
+ //wr_cmd8(0xC8); // SHL select com63-com0
+ wr_cmd8(0xC0); // SHL select com0-com63
+
+ wr_cmd8(0x2C); // Boost ON
+ wait_ms(10);
+ wr_cmd8(0x2E); // Voltage Regulator ON
+ wait_ms(10);
+ wr_cmd8(0x2F); // Voltage Follower ON
+ wait_ms(10);
+ wr_cmd8(0x20|0x05); // Regulor_Resistor_Select resistor ratio 20-27, look at your display specific init code
+ set_contrast(0x20);
+ //wr_cmd8(0x81); // set contrast (reference voltage register set)
+ //wr_cmd8(0x15); // contrast 00-3F
+
+ wr_cmd8(0xA4); // LCD display ram (EntireDisplayOn disable)
+ wr_cmd8(0x40); // start line = 0
+ wr_cmd8(0xA6); // display normal (1 = illuminated)
+ wr_cmd8(0xAF); // display ON
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Inits/ST7565.h Mon Mar 02 10:35:41 2015 +0000
@@ -0,0 +1,58 @@
+#ifndef MBED_ST7565_H
+#define MBED_ST7565_H
+
+
+
+#include "mbed.h"
+#include "LCD.h"
+
+/** Class for ST7565 and similar display controllers
+* to be copypasted and adapted for other controllers
+*/
+class ST7565 : public LCD
+{
+
+ public:
+
+ /** Create a PAR display interface
+ * @param displayproto only supports PAR_8
+ * @param port GPIO port name to use
+ * @param CS pin connected to CS of display
+ * @param reset pin connected to RESET of display
+ * @param DC pin connected to data/command of display
+ * @param WR pin connected to SDI of display
+ * @param RD pin connected to RS of display
+ * @param name The name used by the parent class to access the interface
+ * @param LCDSIZE_X x size in pixel - optional
+ * @param LCDSIZE_Y y size in pixel - optional
+ */
+ ST7565(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char* name, unsigned int LCDSIZE_X = 132, unsigned int LCDSIZE_Y = 64);
+
+ /** Create an SPI display interface
+ * @param displayproto SPI_8 or SPI_16
+ * @param Hz SPI speed in Hz
+ * @param mosi SPI pin
+ * @param miso SPI pin
+ * @param sclk SPI pin
+ * @param CS pin connected to CS of display
+ * @param reset pin connected to RESET of display
+ * @param DC pin connected to data/command of display
+ * @param name The name used by the parent class to access the interface
+ * @param LCDSIZE_X x size in pixel - optional
+ * @param LCDSIZE_Y y size in pixel - optional
+ */
+ ST7565(proto_t displayproto, int Hz, PinName mosi, PinName miso, PinName sclk, PinName CS, PinName reset, PinName DC, const char* name, unsigned int LCDSIZE_X = 132, unsigned int LCDSIZE_Y = 64);
+
+
+
+protected:
+
+
+ /** Init command sequence
+ */
+ void init();
+
+
+
+};
+#endif
\ No newline at end of file
--- a/Inits/TFT_MIPI.h Mon Feb 23 23:36:22 2015 +0000
+++ b/Inits/TFT_MIPI.h Mon Mar 02 10:35:41 2015 +0000
@@ -16,7 +16,7 @@
public:
/** Create a PAR display interface
- * @param displayproto only supports PAR_8
+ * @param displayproto PAR_8 or PAR_16
* @param port GPIO port name to use
* @param CS pin connected to CS of display
* @param reset pin connected to RESET of display
@@ -30,7 +30,7 @@
TFT_MIPI(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char* name , unsigned int LCDSIZE_X = 320, unsigned int LCDSIZE_Y = 480);
/** Create an SPI display interface
- * @param displayproto only supports SPI_8
+ * @param displayproto SPI_8 or SPI_16
* @param Hz SPI speed in Hz
* @param mosi SPI pin
* @param miso SPI pin
--- a/Inits/UC1608.h Mon Feb 23 23:36:22 2015 +0000
+++ b/Inits/UC1608.h Mon Mar 02 10:35:41 2015 +0000
@@ -29,7 +29,7 @@
UC1608(proto_t displayproto, PortName port, PinName CS, PinName reset, PinName DC, PinName WR, PinName RD, const char* name, unsigned int LCDSIZE_X = 240, unsigned int LCDSIZE_Y = 120);
/** Create an SPI display interface
- * @param displayproto only supports SPI_8
+ * @param displayproto SPI_8 or SPI_16
* @param Hz SPI speed in Hz
* @param mosi SPI pin
* @param miso SPI pin
