Eric Coyle / TFT_ST7735

Dependents:   ME503_VehicleAssembly

Committer:
DrCoyle
Date:
Wed Sep 13 20:53:01 2017 +0000
Revision:
7:58d9c26fd03c
Parent:
6:2c2a62c4ceca
Child:
8:96f8411b85a3
minor performance edits

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DrCoyle 0:1e675eea5267 1 /***************************************************
DrCoyle 0:1e675eea5267 2 This is a library for the Adafruit 1.8" SPI display.
DrCoyle 0:1e675eea5267 3 This library works with the Adafruit 1.8" TFT Breakout w/SD card
DrCoyle 0:1e675eea5267 4 ----> http://www.adafruit.com/products/358
DrCoyle 0:1e675eea5267 5 as well as Adafruit raw 1.8" TFT display
DrCoyle 0:1e675eea5267 6 ----> http://www.adafruit.com/products/618
DrCoyle 0:1e675eea5267 7
DrCoyle 0:1e675eea5267 8 Check out the links above for our tutorials and wiring diagrams
DrCoyle 0:1e675eea5267 9 These displays use SPI to communicate, 4 or 5 pins are required to
DrCoyle 0:1e675eea5267 10 interface (RST is optional)
DrCoyle 0:1e675eea5267 11 Adafruit invests time and resources providing this open source code,
DrCoyle 0:1e675eea5267 12 please support Adafruit and open-source hardware by purchasing
DrCoyle 0:1e675eea5267 13 products from Adafruit!
DrCoyle 0:1e675eea5267 14
DrCoyle 0:1e675eea5267 15 Written by Limor Fried/Ladyada for Adafruit Industries.
DrCoyle 0:1e675eea5267 16 MIT license, all text above must be included in any redistribution
DrCoyle 0:1e675eea5267 17 ****************************************************/
DrCoyle 0:1e675eea5267 18
DrCoyle 0:1e675eea5267 19 #ifndef _ADAFRUIT_ST7735H_
DrCoyle 0:1e675eea5267 20 #define _ADAFRUIT_ST7735H_
DrCoyle 0:1e675eea5267 21
DrCoyle 0:1e675eea5267 22 #include "mbed.h"
DrCoyle 0:1e675eea5267 23 #include "Adafruit_GFX.h"
DrCoyle 0:1e675eea5267 24
DrCoyle 0:1e675eea5267 25 #define boolean bool
DrCoyle 0:1e675eea5267 26
DrCoyle 0:1e675eea5267 27 // some flags for initR() :(
DrCoyle 0:1e675eea5267 28 #define INITR_GREENTAB 0x0
DrCoyle 0:1e675eea5267 29 #define INITR_REDTAB 0x1
DrCoyle 0:1e675eea5267 30
DrCoyle 0:1e675eea5267 31 #define ST7735_TFTWIDTH 128
DrCoyle 6:2c2a62c4ceca 32 #define ST7735_TFTHEIGHT 128 //make 160 for 1.8" screen, 128 for 1.44" screen
DrCoyle 0:1e675eea5267 33
DrCoyle 0:1e675eea5267 34 #define ST7735_NOP 0x00
DrCoyle 0:1e675eea5267 35 #define ST7735_SWRESET 0x01
DrCoyle 0:1e675eea5267 36 #define ST7735_RDDID 0x04
DrCoyle 0:1e675eea5267 37 #define ST7735_RDDST 0x09
DrCoyle 0:1e675eea5267 38
DrCoyle 0:1e675eea5267 39 #define ST7735_SLPIN 0x10
DrCoyle 0:1e675eea5267 40 #define ST7735_SLPOUT 0x11
DrCoyle 0:1e675eea5267 41 #define ST7735_PTLON 0x12
DrCoyle 0:1e675eea5267 42 #define ST7735_NORON 0x13
DrCoyle 0:1e675eea5267 43
DrCoyle 0:1e675eea5267 44 #define ST7735_INVOFF 0x20
DrCoyle 0:1e675eea5267 45 #define ST7735_INVON 0x21
DrCoyle 0:1e675eea5267 46 #define ST7735_DISPOFF 0x28
DrCoyle 0:1e675eea5267 47 #define ST7735_DISPON 0x29
DrCoyle 0:1e675eea5267 48 #define ST7735_CASET 0x2A
DrCoyle 0:1e675eea5267 49 #define ST7735_RASET 0x2B
DrCoyle 0:1e675eea5267 50 #define ST7735_RAMWR 0x2C
DrCoyle 0:1e675eea5267 51 #define ST7735_RAMRD 0x2E
DrCoyle 0:1e675eea5267 52
DrCoyle 0:1e675eea5267 53 #define ST7735_PTLAR 0x30
DrCoyle 0:1e675eea5267 54 #define ST7735_COLMOD 0x3A
DrCoyle 0:1e675eea5267 55 #define ST7735_MADCTL 0x36
DrCoyle 0:1e675eea5267 56
DrCoyle 0:1e675eea5267 57 #define ST7735_FRMCTR1 0xB1
DrCoyle 0:1e675eea5267 58 #define ST7735_FRMCTR2 0xB2
DrCoyle 0:1e675eea5267 59 #define ST7735_FRMCTR3 0xB3
DrCoyle 0:1e675eea5267 60 #define ST7735_INVCTR 0xB4
DrCoyle 0:1e675eea5267 61 #define ST7735_DISSET5 0xB6
DrCoyle 0:1e675eea5267 62
DrCoyle 0:1e675eea5267 63 #define ST7735_PWCTR1 0xC0
DrCoyle 0:1e675eea5267 64 #define ST7735_PWCTR2 0xC1
DrCoyle 0:1e675eea5267 65 #define ST7735_PWCTR3 0xC2
DrCoyle 0:1e675eea5267 66 #define ST7735_PWCTR4 0xC3
DrCoyle 0:1e675eea5267 67 #define ST7735_PWCTR5 0xC4
DrCoyle 0:1e675eea5267 68 #define ST7735_VMCTR1 0xC5
DrCoyle 0:1e675eea5267 69
DrCoyle 0:1e675eea5267 70 #define ST7735_RDID1 0xDA
DrCoyle 0:1e675eea5267 71 #define ST7735_RDID2 0xDB
DrCoyle 0:1e675eea5267 72 #define ST7735_RDID3 0xDC
DrCoyle 0:1e675eea5267 73 #define ST7735_RDID4 0xDD
DrCoyle 0:1e675eea5267 74
DrCoyle 0:1e675eea5267 75 #define ST7735_PWCTR6 0xFC
DrCoyle 0:1e675eea5267 76
DrCoyle 0:1e675eea5267 77 #define ST7735_GMCTRP1 0xE0
DrCoyle 0:1e675eea5267 78 #define ST7735_GMCTRN1 0xE1
DrCoyle 0:1e675eea5267 79
DrCoyle 0:1e675eea5267 80 // color definitions
DrCoyle 0:1e675eea5267 81 #define ST7735_BLACK 0x0000
DrCoyle 0:1e675eea5267 82 #define ST7735_BLUE 0x001F
DrCoyle 0:1e675eea5267 83 #define ST7735_RED 0xF800
DrCoyle 0:1e675eea5267 84 #define ST7735_GREEN 0x07E0
DrCoyle 0:1e675eea5267 85 #define ST7735_CYAN 0x07FF
DrCoyle 0:1e675eea5267 86 #define ST7735_MAGENTA 0xF81F
DrCoyle 0:1e675eea5267 87 #define ST7735_YELLOW 0xFFE0
DrCoyle 0:1e675eea5267 88 #define ST7735_WHITE 0xFFFF
DrCoyle 7:58d9c26fd03c 89 #define ST7735_ORANGE 0xFD20
DrCoyle 0:1e675eea5267 90
DrCoyle 0:1e675eea5267 91
DrCoyle 0:1e675eea5267 92 class Adafruit_ST7735 : public Adafruit_GFX {
DrCoyle 0:1e675eea5267 93
DrCoyle 0:1e675eea5267 94 public:
DrCoyle 0:1e675eea5267 95
DrCoyle 0:1e675eea5267 96 Adafruit_ST7735(PinName mosi, PinName miso, PinName clk, PinName CS, PinName RS);//PinName mosi, PinName miso, PinName sck
DrCoyle 0:1e675eea5267 97
DrCoyle 0:1e675eea5267 98 void initB(void); // for ST7735B displays
DrCoyle 0:1e675eea5267 99 void initR(uint8_t options = INITR_GREENTAB); // for ST7735R
DrCoyle 0:1e675eea5267 100 void initS(void); // for S6D02A1 displays
DrCoyle 0:1e675eea5267 101 void setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1);
DrCoyle 0:1e675eea5267 102 void pushColor(uint16_t color);
DrCoyle 0:1e675eea5267 103
DrCoyle 0:1e675eea5267 104 void fillScreen(uint16_t color);
DrCoyle 0:1e675eea5267 105 void drawPixel(int16_t x, int16_t y, uint16_t color);
DrCoyle 0:1e675eea5267 106 void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
DrCoyle 0:1e675eea5267 107 void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
DrCoyle 0:1e675eea5267 108 void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
DrCoyle 0:1e675eea5267 109 void invertDisplay(boolean i);
DrCoyle 0:1e675eea5267 110
DrCoyle 0:1e675eea5267 111 void setRotation(uint8_t r);
DrCoyle 0:1e675eea5267 112 void drawRect(int16_t x0, int16_t y0, int16_t x1,int16_t y1,uint16_t color);//added by Sarvesh
DrCoyle 0:1e675eea5267 113 void drawCircle(int16_t x0, int16_t y0,int16_t r,uint16_t color);//added by Sarvesh
DrCoyle 0:1e675eea5267 114 uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
DrCoyle 0:1e675eea5267 115 //void display();
DrCoyle 0:1e675eea5267 116
DrCoyle 0:1e675eea5267 117 private:
DrCoyle 0:1e675eea5267 118
DrCoyle 0:1e675eea5267 119 void spiwrite(uint8_t),
DrCoyle 0:1e675eea5267 120 writecommand(uint8_t c),
DrCoyle 0:1e675eea5267 121 writedata(uint8_t d),
DrCoyle 0:1e675eea5267 122 commandList(uint8_t *addr),
DrCoyle 0:1e675eea5267 123 commonInit(uint8_t *cmdList);
DrCoyle 0:1e675eea5267 124
DrCoyle 0:1e675eea5267 125 uint8_t colstart, rowstart; // some displays need this changed
DrCoyle 0:1e675eea5267 126
DrCoyle 0:1e675eea5267 127 SPI lcdPort; // does SPI MOSI, MISO and SCK
DrCoyle 0:1e675eea5267 128 DigitalOut _cs; // does SPI CE
DrCoyle 0:1e675eea5267 129 DigitalOut _rs; // register/date select
DrCoyle 0:1e675eea5267 130 //DigitalOut _rst; // does 3310 LCD_RST
DrCoyle 0:1e675eea5267 131 };
DrCoyle 0:1e675eea5267 132
DrCoyle 0:1e675eea5267 133 #endif