Demo project to demonstrate that ILI9340 display driver and graphics library. very simple but a good starting point for any project using such a display. Please use this to thoroughly enjoy yourself and make your projects cool!

Dependencies:   ILI9340_Driver_Lib mbed

About the Driver:

This driver will drive any display that uses an ILI9340 display controller in SPI mode - such as the adafruits 2.2" 240 x 320 display found here: http://www.adafruit.com/products/1480

All this code has been ported from other peoples hard work - Thanks to All !

Committer:
dextorslabs
Date:
Mon May 26 18:32:43 2014 +0000
Revision:
1:0615e3c659c0
Parent:
0:9c462c65176a
Slightly nicer demo code to accompany the driver / library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dextorslabs 0:9c462c65176a 1 /***************************************************************
dextorslabs 0:9c462c65176a 2 ILI9340_Driver v1.0 26.05.14 Ian Weston
dextorslabs 0:9c462c65176a 3
dextorslabs 0:9c462c65176a 4 Driver and integrated graphics library for displays that use the
dextorslabs 0:9c462c65176a 5 ILI9340 controller in SPI mode.
dextorslabs 0:9c462c65176a 6
dextorslabs 0:9c462c65176a 7 The code was prted from several sources, the driver section
dextorslabs 0:9c462c65176a 8 was completely ported from the Adafruits Arduino source code, and
dextorslabs 0:9c462c65176a 9 the graphics functions were ported from the Adafruits GFX library
dextorslabs 0:9c462c65176a 10 and some elements were ported from code by Elmicros seeduio port.
dextorslabs 0:9c462c65176a 11
dextorslabs 0:9c462c65176a 12 Future revisions will include more advanced graphics functions.
dextorslabs 0:9c462c65176a 13
dextorslabs 0:9c462c65176a 14 ***************************************************************/
dextorslabs 0:9c462c65176a 15
dextorslabs 0:9c462c65176a 16
dextorslabs 0:9c462c65176a 17
dextorslabs 0:9c462c65176a 18 #include "mbed.h"
dextorslabs 0:9c462c65176a 19
dextorslabs 0:9c462c65176a 20 #ifndef ILI9340_DRIVER_h
dextorslabs 0:9c462c65176a 21 #define ILI9340_DRIVER_h
dextorslabs 0:9c462c65176a 22
dextorslabs 0:9c462c65176a 23
dextorslabs 0:9c462c65176a 24 #define _TFTWIDTH 240
dextorslabs 0:9c462c65176a 25 #define _TFTHEIGHT 320
dextorslabs 0:9c462c65176a 26
dextorslabs 0:9c462c65176a 27 #define ILI9340_NOP 0x00
dextorslabs 0:9c462c65176a 28 #define ILI9340_SWRESET 0x01
dextorslabs 0:9c462c65176a 29 #define ILI9340_RDDID 0x04
dextorslabs 0:9c462c65176a 30 #define ILI9340_RDDST 0x09
dextorslabs 0:9c462c65176a 31
dextorslabs 0:9c462c65176a 32 #define ILI9340_SLPIN 0x10
dextorslabs 0:9c462c65176a 33 #define ILI9340_SLPOUT 0x11
dextorslabs 0:9c462c65176a 34 #define ILI9340_PTLON 0x12
dextorslabs 0:9c462c65176a 35 #define ILI9340_NORON 0x13
dextorslabs 0:9c462c65176a 36
dextorslabs 0:9c462c65176a 37 #define ILI9340_RDMODE 0x0A
dextorslabs 0:9c462c65176a 38 #define ILI9340_RDMADCTL 0x0B
dextorslabs 0:9c462c65176a 39 #define ILI9340_RDPIXFMT 0x0C
dextorslabs 0:9c462c65176a 40 #define ILI9340_RDIMGFMT 0x0A
dextorslabs 0:9c462c65176a 41 #define ILI9340_RDSELFDIAG 0x0F
dextorslabs 0:9c462c65176a 42
dextorslabs 0:9c462c65176a 43 #define ILI9340_INVOFF 0x20
dextorslabs 0:9c462c65176a 44 #define ILI9340_INVON 0x21
dextorslabs 0:9c462c65176a 45 #define ILI9340_GAMMASET 0x26
dextorslabs 0:9c462c65176a 46 #define ILI9340_DISPOFF 0x28
dextorslabs 0:9c462c65176a 47 #define ILI9340_DISPON 0x29
dextorslabs 0:9c462c65176a 48
dextorslabs 0:9c462c65176a 49 #define ILI9340_CASET 0x2A
dextorslabs 0:9c462c65176a 50 #define ILI9340_PASET 0x2B
dextorslabs 0:9c462c65176a 51 #define ILI9340_RAMWR 0x2C
dextorslabs 0:9c462c65176a 52 #define ILI9340_RAMRD 0x2E
dextorslabs 0:9c462c65176a 53
dextorslabs 0:9c462c65176a 54 #define ILI9340_PTLAR 0x30
dextorslabs 0:9c462c65176a 55 #define ILI9340_MADCTL 0x36
dextorslabs 0:9c462c65176a 56
dextorslabs 0:9c462c65176a 57
dextorslabs 0:9c462c65176a 58 #define ILI9340_MADCTL_MY 0x80
dextorslabs 0:9c462c65176a 59 #define ILI9340_MADCTL_MX 0x40
dextorslabs 0:9c462c65176a 60 #define ILI9340_MADCTL_MV 0x20
dextorslabs 0:9c462c65176a 61 #define ILI9340_MADCTL_ML 0x10
dextorslabs 0:9c462c65176a 62 #define ILI9340_MADCTL_RGB 0x00
dextorslabs 0:9c462c65176a 63 #define ILI9340_MADCTL_BGR 0x08
dextorslabs 0:9c462c65176a 64 #define ILI9340_MADCTL_MH 0x04
dextorslabs 0:9c462c65176a 65
dextorslabs 0:9c462c65176a 66 #define ILI9340_PIXFMT 0x3A
dextorslabs 0:9c462c65176a 67
dextorslabs 0:9c462c65176a 68 #define ILI9340_FRMCTR1 0xB1
dextorslabs 0:9c462c65176a 69 #define ILI9340_FRMCTR2 0xB2
dextorslabs 0:9c462c65176a 70 #define ILI9340_FRMCTR3 0xB3
dextorslabs 0:9c462c65176a 71 #define ILI9340_INVCTR 0xB4
dextorslabs 0:9c462c65176a 72 #define ILI9340_DFUNCTR 0xB6
dextorslabs 0:9c462c65176a 73
dextorslabs 0:9c462c65176a 74 #define ILI9340_PWCTR1 0xC0
dextorslabs 0:9c462c65176a 75 #define ILI9340_PWCTR2 0xC1
dextorslabs 0:9c462c65176a 76 #define ILI9340_PWCTR3 0xC2
dextorslabs 0:9c462c65176a 77 #define ILI9340_PWCTR4 0xC3
dextorslabs 0:9c462c65176a 78 #define ILI9340_PWCTR5 0xC4
dextorslabs 0:9c462c65176a 79 #define ILI9340_VMCTR1 0xC5
dextorslabs 0:9c462c65176a 80 #define ILI9340_VMCTR2 0xC7
dextorslabs 0:9c462c65176a 81
dextorslabs 0:9c462c65176a 82 #define ILI9340_RDID1 0xDA
dextorslabs 0:9c462c65176a 83 #define ILI9340_RDID2 0xDB
dextorslabs 0:9c462c65176a 84 #define ILI9340_RDID3 0xDC
dextorslabs 0:9c462c65176a 85 #define ILI9340_RDID4 0xDD
dextorslabs 0:9c462c65176a 86
dextorslabs 0:9c462c65176a 87 #define ILI9340_GMCTRP1 0xE0
dextorslabs 0:9c462c65176a 88 #define ILI9340_GMCTRN1 0xE1
dextorslabs 0:9c462c65176a 89 /*
dextorslabs 0:9c462c65176a 90 #define ILI9340_PWCTR6 0xFC
dextorslabs 0:9c462c65176a 91
dextorslabs 0:9c462c65176a 92 */
dextorslabs 0:9c462c65176a 93
dextorslabs 0:9c462c65176a 94 // Color definitions
dextorslabs 0:9c462c65176a 95 #define ILI9340_BLACK 0x0000
dextorslabs 0:9c462c65176a 96 #define ILI9340_BLUE 0x001F
dextorslabs 0:9c462c65176a 97 #define ILI9340_RED 0xF800
dextorslabs 0:9c462c65176a 98 #define ILI9340_GREEN 0x07E0
dextorslabs 0:9c462c65176a 99 #define ILI9340_CYAN 0x07FF
dextorslabs 0:9c462c65176a 100 #define ILI9340_MAGENTA 0xF81F
dextorslabs 0:9c462c65176a 101 #define ILI9340_YELLOW 0xFFE0
dextorslabs 0:9c462c65176a 102 #define ILI9340_WHITE 0xFFFF
dextorslabs 0:9c462c65176a 103
dextorslabs 0:9c462c65176a 104
dextorslabs 0:9c462c65176a 105
dextorslabs 0:9c462c65176a 106 class ILI9340_Display {
dextorslabs 0:9c462c65176a 107
dextorslabs 0:9c462c65176a 108 public:
dextorslabs 0:9c462c65176a 109
dextorslabs 0:9c462c65176a 110 uint16_t _height;
dextorslabs 0:9c462c65176a 111 uint16_t _width;
dextorslabs 0:9c462c65176a 112
dextorslabs 0:9c462c65176a 113 ILI9340_Display(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName rst, PinName dc);
dextorslabs 0:9c462c65176a 114
dextorslabs 0:9c462c65176a 115 void DispInit();
dextorslabs 0:9c462c65176a 116 void WriteCommand(uint8_t);
dextorslabs 0:9c462c65176a 117 void WriteData(uint8_t);
dextorslabs 0:9c462c65176a 118 void SetRotation(uint8_t);
dextorslabs 0:9c462c65176a 119 void InvertDisplay(bool);
dextorslabs 0:9c462c65176a 120 void SetAddrWindow(uint16_t, uint16_t, uint16_t, uint16_t);
dextorslabs 0:9c462c65176a 121
dextorslabs 0:9c462c65176a 122 void DrawPixel(uint16_t, uint16_t, uint16_t);
dextorslabs 0:9c462c65176a 123 void FillScreen(uint16_t);
dextorslabs 0:9c462c65176a 124 void DrawFastVLine(int16_t, int16_t, int16_t, uint16_t);
dextorslabs 0:9c462c65176a 125 void DrawFastHLine(int16_t, int16_t, int16_t, uint16_t);
dextorslabs 0:9c462c65176a 126 void FillRect(int16_t, int16_t, int16_t, int16_t, uint16_t);
dextorslabs 0:9c462c65176a 127 void DrawRect(int16_t, int16_t, int16_t, int16_t, uint16_t);
dextorslabs 0:9c462c65176a 128 void DrawCircle(int16_t, int16_t, int16_t, uint16_t);
dextorslabs 0:9c462c65176a 129 uint16_t Colour565(uint8_t, uint8_t, uint8_t);
dextorslabs 0:9c462c65176a 130
dextorslabs 0:9c462c65176a 131 void DrawAscii(unsigned char, uint16_t, uint16_t, uint16_t, uint16_t);
dextorslabs 0:9c462c65176a 132 void DrawString(char *string, uint16_t, uint16_t, uint8_t, uint16_t);
dextorslabs 0:9c462c65176a 133 void IntToChars (char*, int, uint8_t, uint8_t, uint16_t, uint16_t, uint8_t, uint16_t);
dextorslabs 0:9c462c65176a 134
dextorslabs 0:9c462c65176a 135 void Swap(int16_t*, int16_t*);
dextorslabs 0:9c462c65176a 136 void DrawLine(int16_t, int16_t, int16_t, int16_t, uint16_t);
dextorslabs 0:9c462c65176a 137
dextorslabs 0:9c462c65176a 138 protected:
dextorslabs 0:9c462c65176a 139 SPI spi; // mosi, miso, sclk
dextorslabs 0:9c462c65176a 140 DigitalOut cs;
dextorslabs 0:9c462c65176a 141 DigitalOut rst;
dextorslabs 0:9c462c65176a 142 DigitalOut dc;
dextorslabs 0:9c462c65176a 143
dextorslabs 0:9c462c65176a 144 uint8_t orientation;
dextorslabs 0:9c462c65176a 145
dextorslabs 0:9c462c65176a 146 };
dextorslabs 0:9c462c65176a 147
dextorslabs 0:9c462c65176a 148
dextorslabs 0:9c462c65176a 149
dextorslabs 0:9c462c65176a 150
dextorslabs 0:9c462c65176a 151
dextorslabs 0:9c462c65176a 152 #endif