aboutsummaryrefslogtreecommitdiff
path: root/libraries/TFT/utility/Adafruit_ST7735.h
diff options
context:
space:
mode:
authorCristian Maglie <c.maglie@bug.st>2013-06-01 23:16:02 +0200
committerCristian Maglie <c.maglie@bug.st>2013-06-01 23:16:02 +0200
commit177ad96f866714a4962be57f69cd3d5a6334cde1 (patch)
tree1072239986340d6a239adac924eddf2e1d1ca566 /libraries/TFT/utility/Adafruit_ST7735.h
parent6cff36ac5e85c74bcb45cc53491ad69d64520b36 (diff)
parentd90fcca5839d13d57ed527d4009b78d22dafbde7 (diff)
Merge branch 'merge-1.0.5' into ide-1.5.x-discovery
Diffstat (limited to 'libraries/TFT/utility/Adafruit_ST7735.h')
-rwxr-xr-xlibraries/TFT/utility/Adafruit_ST7735.h150
1 files changed, 150 insertions, 0 deletions
diff --git a/libraries/TFT/utility/Adafruit_ST7735.h b/libraries/TFT/utility/Adafruit_ST7735.h
new file mode 100755
index 0000000..c0d5de0
--- /dev/null
+++ b/libraries/TFT/utility/Adafruit_ST7735.h
@@ -0,0 +1,150 @@
+/***************************************************
+ This is a library for the Adafruit 1.8" SPI display.
+ This library works with the Adafruit 1.8" TFT Breakout w/SD card
+ ----> http://www.adafruit.com/products/358
+ as well as Adafruit raw 1.8" TFT display
+ ----> http://www.adafruit.com/products/618
+
+ Check out the links above for our tutorials and wiring diagrams
+ These displays use SPI to communicate, 4 or 5 pins are required to
+ interface (RST is optional)
+ Adafruit invests time and resources providing this open source code,
+ please support Adafruit and open-source hardware by purchasing
+ products from Adafruit!
+
+ Written by Limor Fried/Ladyada for Adafruit Industries.
+ MIT license, all text above must be included in any redistribution
+ ****************************************************/
+
+#ifndef _ADAFRUIT_ST7735H_
+#define _ADAFRUIT_ST7735H_
+
+#if ARDUINO >= 100
+ #include "Arduino.h"
+ #include "Print.h"
+#else
+ #include "WProgram.h"
+#endif
+#include <Adafruit_GFX.h>
+#include <avr/pgmspace.h>
+
+// some flags for initR() :(
+#define INITR_GREENTAB 0x0
+#define INITR_REDTAB 0x1
+#define INITR_BLACKTAB 0x2
+
+#define ST7735_TFTWIDTH 128
+#define ST7735_TFTHEIGHT 160
+
+#define ST7735_NOP 0x00
+#define ST7735_SWRESET 0x01
+#define ST7735_RDDID 0x04
+#define ST7735_RDDST 0x09
+
+#define ST7735_SLPIN 0x10
+#define ST7735_SLPOUT 0x11
+#define ST7735_PTLON 0x12
+#define ST7735_NORON 0x13
+
+#define ST7735_INVOFF 0x20
+#define ST7735_INVON 0x21
+#define ST7735_DISPOFF 0x28
+#define ST7735_DISPON 0x29
+#define ST7735_CASET 0x2A
+#define ST7735_RASET 0x2B
+#define ST7735_RAMWR 0x2C
+#define ST7735_RAMRD 0x2E
+
+#define ST7735_PTLAR 0x30
+#define ST7735_COLMOD 0x3A
+#define ST7735_MADCTL 0x36
+
+#define ST7735_FRMCTR1 0xB1
+#define ST7735_FRMCTR2 0xB2
+#define ST7735_FRMCTR3 0xB3
+#define ST7735_INVCTR 0xB4
+#define ST7735_DISSET5 0xB6
+
+#define ST7735_PWCTR1 0xC0
+#define ST7735_PWCTR2 0xC1
+#define ST7735_PWCTR3 0xC2
+#define ST7735_PWCTR4 0xC3
+#define ST7735_PWCTR5 0xC4
+#define ST7735_VMCTR1 0xC5
+
+#define ST7735_RDID1 0xDA
+#define ST7735_RDID2 0xDB
+#define ST7735_RDID3 0xDC
+#define ST7735_RDID4 0xDD
+
+#define ST7735_PWCTR6 0xFC
+
+#define ST7735_GMCTRP1 0xE0
+#define ST7735_GMCTRN1 0xE1
+
+// Color definitions
+#define ST7735_BLACK 0x0000
+#define ST7735_BLUE 0x001F
+#define ST7735_RED 0xF800
+#define ST7735_GREEN 0x07E0
+#define ST7735_CYAN 0x07FF
+#define ST7735_MAGENTA 0xF81F
+#define ST7735_YELLOW 0xFFE0
+#define ST7735_WHITE 0xFFFF
+
+
+class Adafruit_ST7735 : public Adafruit_GFX {
+
+ public:
+
+ Adafruit_ST7735(uint8_t CS, uint8_t RS, uint8_t SID, uint8_t SCLK,
+ uint8_t RST);
+ Adafruit_ST7735(uint8_t CS, uint8_t RS, uint8_t RST);
+
+ void initB(void), // for ST7735B displays
+ initR(uint8_t options = INITR_GREENTAB), // for ST7735R
+ setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1),
+ pushColor(uint16_t color),
+ fillScreen(uint16_t color),
+ drawPixel(int16_t x, int16_t y, uint16_t color),
+ drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
+ drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
+ fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
+ uint16_t color),
+ setRotation(uint8_t r),
+ invertDisplay(boolean i);
+ uint16_t Color565(uint8_t r, uint8_t g, uint8_t b) { return newColor(r, g, b);}
+
+ /* These are not for current use, 8-bit protocol only!
+ uint8_t readdata(void),
+ readcommand8(uint8_t);
+ uint16_t readcommand16(uint8_t);
+ uint32_t readcommand32(uint8_t);
+ void dummyclock(void);
+ */
+
+ private:
+ uint8_t tabcolor;
+
+ void spiwrite(uint8_t),
+ writecommand(uint8_t c),
+ writedata(uint8_t d),
+ commandList(uint8_t *addr),
+ commonInit(uint8_t *cmdList);
+//uint8_t spiread(void);
+
+ boolean hwSPI;
+ #if defined(ARDUINO_ARCH_SAM)
+ volatile uint32_t *dataport, *clkport, *csport, *rsport;
+ uint32_t _cs, _rs, _rst, _sid, _sclk,
+ datapinmask, clkpinmask, cspinmask, rspinmask,
+ colstart, rowstart; // some displays need this changed
+ #else
+ volatile uint8_t *dataport, *clkport, *csport, *rsport;
+ uint8_t _cs, _rs, _rst, _sid, _sclk,
+ datapinmask, clkpinmask, cspinmask, rspinmask,
+ colstart, rowstart; // some displays need this changed
+ #endif
+};
+
+#endif