Added new display module GREENTAB2 (3.3v compact blue board, 8 pin no SD card)

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Adafruit_ST7735.h Source File

Adafruit_ST7735.h

00001 /***************************************************
00002   This is a library for the Adafruit 1.8" SPI display.
00003   This library works with the Adafruit 1.8" TFT Breakout w/SD card
00004   ----> http://www.adafruit.com/products/358
00005   as well as Adafruit raw 1.8" TFT display
00006   ----> http://www.adafruit.com/products/618
00007  
00008   Check out the links above for our tutorials and wiring diagrams
00009   These displays use SPI to communicate, 4 or 5 pins are required to
00010   interface (RST is optional)
00011   Adafruit invests time and resources providing this open source code,
00012   please support Adafruit and open-source hardware by purchasing
00013   products from Adafruit!
00014 
00015   Written by Limor Fried/Ladyada for Adafruit Industries.
00016   MIT license, all text above must be included in any redistribution
00017  ****************************************************/
00018 
00019 
00020  // + GREENTAB2 display 
00021 
00022 #ifndef _ADAFRUIT_ST7735H_
00023 #define _ADAFRUIT_ST7735H_
00024 
00025 #include "Adafruit_GFX.h"
00026 #include "mbed.h"
00027 
00028 
00029 #define boolean bool
00030 
00031 // some flags for initR() :(
00032 // some flags for initR() :(
00033 #define INITR_GREENTAB 0x0
00034 #define INITR_REDTAB 0x1
00035 #define INITR_BLACKTAB 0x2
00036 #define INITR_GREENTAB2 0x3
00037 
00038 #define INITR_18GREENTAB INITR_GREENTAB
00039 #define INITR_18REDTAB INITR_REDTAB
00040 #define INITR_18BLACKTAB INITR_BLACKTAB
00041 #define INITR_144GREENTAB 0x1
00042 
00043 #define ST7735_TFTWIDTH 128
00044 // for 1.44" display
00045 #define ST7735_TFTHEIGHT_144 128
00046 // for 1.8" display
00047 #define ST7735_TFTHEIGHT_18 160
00048 #define ST7735_TFTHEIGHT 160
00049 
00050 #define ST7735_NOP 0x00
00051 #define ST7735_SWRESET 0x01
00052 #define ST7735_RDDID 0x04
00053 #define ST7735_RDDST 0x09
00054 
00055 #define ST7735_SLPIN 0x10
00056 #define ST7735_SLPOUT 0x11
00057 #define ST7735_PTLON 0x12
00058 #define ST7735_NORON 0x13
00059 
00060 #define ST7735_INVOFF 0x20
00061 #define ST7735_INVON 0x21
00062 #define ST7735_DISPOFF 0x28
00063 #define ST7735_DISPON 0x29
00064 #define ST7735_CASET 0x2A
00065 #define ST7735_RASET 0x2B
00066 #define ST7735_RAMWR 0x2C
00067 #define ST7735_RAMRD 0x2E
00068 
00069 #define ST7735_PTLAR 0x30
00070 #define ST7735_COLMOD 0x3A
00071 #define ST7735_MADCTL 0x36
00072 
00073 #define ST7735_FRMCTR1 0xB1
00074 #define ST7735_FRMCTR2 0xB2
00075 #define ST7735_FRMCTR3 0xB3
00076 #define ST7735_INVCTR 0xB4
00077 #define ST7735_DISSET5 0xB6
00078 
00079 #define ST7735_PWCTR1 0xC0
00080 #define ST7735_PWCTR2 0xC1
00081 #define ST7735_PWCTR3 0xC2
00082 #define ST7735_PWCTR4 0xC3
00083 #define ST7735_PWCTR5 0xC4
00084 #define ST7735_VMCTR1 0xC5
00085 
00086 #define ST7735_RDID1 0xDA
00087 #define ST7735_RDID2 0xDB
00088 #define ST7735_RDID3 0xDC
00089 #define ST7735_RDID4 0xDD
00090 
00091 #define ST7735_PWCTR6 0xFC
00092 
00093 #define ST7735_GMCTRP1 0xE0
00094 #define ST7735_GMCTRN1 0xE1
00095 
00096 // Color definitions
00097 #define ST7735_BLACK 0x0000
00098 #define ST7735_BLUE 0x001F
00099 #define ST7735_RED 0xF800
00100 #define ST7735_GREEN 0x07E0
00101 #define ST7735_CYAN 0x07FF
00102 #define ST7735_MAGENTA 0xF81F
00103 #define ST7735_YELLOW 0xFFE0
00104 #define ST7735_WHITE 0xFFFF
00105 
00106 class Adafruit_ST7735 : public Adafruit_GFX {
00107 
00108 public:
00109   Adafruit_ST7735(PinName mosi, PinName miso, PinName sck, PinName CS,
00110                   PinName RS, PinName RST);
00111 
00112   void initB(void);                             // for ST7735B displays
00113   void initR(uint8_t options = INITR_GREENTAB); // for ST7735R
00114   void setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1);
00115   void pushColor(uint16_t color);
00116 
00117   void fillScreen(uint16_t color);
00118   void drawPixel(int16_t x, int16_t y, uint16_t color);
00119   void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
00120   void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
00121   void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
00122   void invertDisplay(boolean i);
00123 
00124   void setRotation(uint8_t r);
00125   uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
00126 
00127 private:
00128   uint8_t tabcolor;
00129   void spiwrite(uint8_t), writecommand(uint8_t c), writedata(uint8_t d),
00130       commandList(uint8_t *addr), commonInit(uint8_t *cmdList);
00131 
00132   uint8_t colstart, rowstart; // some displays need this changed
00133 
00134   SPI lcdPort;     // does SPI MOSI, MISO and SCK
00135   DigitalOut _cs;  // does SPI CE
00136   DigitalOut _rs;  // register/date select
00137   DigitalOut _rst; // does 3310 LCD_RST
00138 };
00139 
00140 #endif