Fast! Install BurstSPI library! https://os.mbed.com/users/peekpt/code/BurstSPI/ New display (greentab2 blue module compact).

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 // + GREENTAB2 display
00020 // BurstSPI
00021 
00022 #ifndef _ADAFRUIT_ST7735H_
00023 #define _ADAFRUIT_ST7735H_
00024 
00025 #include "Adafruit_GFX.h"
00026 #include "BurstSPI.h"
00027 #include "mbed.h"
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 #define ST7735_ORANGE 0xFC00
00106 
00107 class Adafruit_ST7735 : public Adafruit_GFX {
00108 
00109 public:
00110   Adafruit_ST7735(PinName mosi, PinName miso, PinName sck, PinName CS,
00111                   PinName RS, PinName RST);
00112 
00113   void initB(void);                             // for ST7735B displays
00114   void initR(uint8_t options = INITR_GREENTAB); // for ST7735R
00115   void setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1);
00116   void pushColor(uint16_t color);
00117 
00118   void fillScreen(uint16_t color);
00119   void drawPixel(int16_t x, int16_t y, uint16_t color);
00120   void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
00121   void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
00122   void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
00123   void invertDisplay(boolean i);
00124 
00125   void setRotation(uint8_t r);
00126   uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
00127 
00128 private:
00129   uint8_t tabcolor;
00130   void spiwrite(uint8_t), writecommand(uint8_t c), writedata(uint8_t d),
00131       commandList(uint8_t *addr), commonInit(uint8_t *cmdList);
00132 
00133   uint8_t colstart, rowstart; // some displays need this changed
00134 
00135   BurstSPI lcdPort; // does SPI MOSI, MISO and SCK
00136   DigitalOut _cs;   // does SPI CE
00137   DigitalOut _rs;   // register/date select
00138   DigitalOut _rst;  // does 3310 LCD_RST
00139 };
00140 
00141 #endif