Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of display by
ili9163lcd.h@3:7d97b4f535c6, 2018-10-04 (annotated)
- Committer:
- madhusudhana
- Date:
- Thu Oct 04 11:19:42 2018 +0000
- Revision:
- 3:7d97b4f535c6
- Parent:
- 2:e7a5b9bc75b4
second_version_display_code;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
madhusudhana | 2:e7a5b9bc75b4 | 1 | /** |
morita | 0:c0be4e018a09 | 2 | * @file ili9163lcd.h |
morita | 0:c0be4e018a09 | 3 | * @brief ILI9163 128x128 LCD Driver (Header file) |
morita | 0:c0be4e018a09 | 4 | * |
morita | 0:c0be4e018a09 | 5 | * This code has been ported from the ili9163lcd library for mbed |
morita | 0:c0be4e018a09 | 6 | * made by Jun Morita. |
morita | 0:c0be4e018a09 | 7 | * Source form <http://files.noccylabs.info/lib430/liblcd/ili9163lcd_8c.html> |
morita | 0:c0be4e018a09 | 8 | * |
morita | 0:c0be4e018a09 | 9 | * This code has been ported from the ili9163lcd library for avr made |
morita | 0:c0be4e018a09 | 10 | * by Simon Inns, to run on a msp430. |
morita | 0:c0be4e018a09 | 11 | * |
morita | 0:c0be4e018a09 | 12 | * This program is free software: you can redistribute it and/or modify |
morita | 0:c0be4e018a09 | 13 | * it under the terms of the GNU General Public License as published by |
morita | 0:c0be4e018a09 | 14 | * the Free Software Foundation, either version 3 of the License, or |
morita | 0:c0be4e018a09 | 15 | * (at your option) any later version. |
morita | 0:c0be4e018a09 | 16 | * |
morita | 0:c0be4e018a09 | 17 | * This program is distributed in the hope that it will be useful, |
morita | 0:c0be4e018a09 | 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
morita | 0:c0be4e018a09 | 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
morita | 0:c0be4e018a09 | 20 | * GNU General Public License for more details. |
morita | 0:c0be4e018a09 | 21 | * |
morita | 0:c0be4e018a09 | 22 | * You should have received a copy of the GNU General Public License |
morita | 0:c0be4e018a09 | 23 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
morita | 0:c0be4e018a09 | 24 | * |
morita | 0:c0be4e018a09 | 25 | * @author Jun Morita (iccraft) |
morita | 0:c0be4e018a09 | 26 | * @author Simon Inns <simon.inns@gmail.com> |
morita | 0:c0be4e018a09 | 27 | * @author Christopher Vagnetoft (NoccyLabs) |
morita | 0:c0be4e018a09 | 28 | * @copyright (C) 2012 Simon Inns |
morita | 0:c0be4e018a09 | 29 | * @copyright parts (C) 2012 NoccyLabs |
morita | 0:c0be4e018a09 | 30 | */ |
morita | 0:c0be4e018a09 | 31 | |
morita | 0:c0be4e018a09 | 32 | #ifndef ILI9163LCD_H_ |
morita | 0:c0be4e018a09 | 33 | #define ILI9163LCD_H_ |
morita | 0:c0be4e018a09 | 34 | |
rs27 | 1:b64c81071d96 | 35 | #include "mbed.h" |
rs27 | 1:b64c81071d96 | 36 | #include "font5x8.h" |
rs27 | 1:b64c81071d96 | 37 | #include "font8x8.h" |
rs27 | 1:b64c81071d96 | 38 | #include "font5x12.h" |
rs27 | 1:b64c81071d96 | 39 | #include "font11x16.h" |
rs27 | 1:b64c81071d96 | 40 | #include "font12x12.h" |
rs27 | 1:b64c81071d96 | 41 | #include "font24x23.h" |
rs27 | 1:b64c81071d96 | 42 | |
morita | 0:c0be4e018a09 | 43 | // Definitions for control lines (port C) |
morita | 0:c0be4e018a09 | 44 | #define LCD_WR (1 << 2) |
morita | 0:c0be4e018a09 | 45 | #define LCD_RS (1 << 4) |
morita | 0:c0be4e018a09 | 46 | #define LCD_RD (1 << 5) |
morita | 0:c0be4e018a09 | 47 | #define LCD_CS (1 << 6) |
morita | 0:c0be4e018a09 | 48 | #define LCD_RESET (1 << 7) |
morita | 0:c0be4e018a09 | 49 | |
morita | 0:c0be4e018a09 | 50 | // Screen orientation defines: |
morita | 0:c0be4e018a09 | 51 | // 0 = Ribbon at top |
morita | 0:c0be4e018a09 | 52 | // 1 = Ribbon at left |
morita | 0:c0be4e018a09 | 53 | // 2 = Ribbon at right |
morita | 0:c0be4e018a09 | 54 | // 3 = Ribbon at bottom |
morita | 0:c0be4e018a09 | 55 | #define LCD_ORIENTATION0 0 |
morita | 0:c0be4e018a09 | 56 | #define LCD_ORIENTATION1 96 |
morita | 0:c0be4e018a09 | 57 | #define LCD_ORIENTATION2 160 |
morita | 0:c0be4e018a09 | 58 | #define LCD_ORIENTATION3 192 |
morita | 0:c0be4e018a09 | 59 | |
rs27 | 1:b64c81071d96 | 60 | // eine Farbe belegt 5 Bit, |
rs27 | 1:b64c81071d96 | 61 | // die Farbe Grün wird 6 bit nch links geshiftet |
rs27 | 1:b64c81071d96 | 62 | // die Farbe Blau wird 11 bit nach links geshiftet |
rs27 | 1:b64c81071d96 | 63 | // some RGB color definitions BLUE GREEN RED |
rs27 | 1:b64c81071d96 | 64 | #define Black 0x0000 /* 0, 0, 0 */ |
rs27 | 1:b64c81071d96 | 65 | #define Navy 0x000F /* 0, 0,15 */ |
rs27 | 1:b64c81071d96 | 66 | #define DarkGreen 0x03C0 /* 0,15, 0 */ |
rs27 | 1:b64c81071d96 | 67 | #define DarkCyan 0x03EF /* 0, 128, 128 */ |
rs27 | 1:b64c81071d96 | 68 | #define Maroon 0x7800 /* 15, 0, 0 */ |
rs27 | 1:b64c81071d96 | 69 | #define Purple 0x780F /* 128, 0, 128 */ |
rs27 | 1:b64c81071d96 | 70 | #define Olive 0x7BE0 /* 128, 128, 0 */ |
rs27 | 1:b64c81071d96 | 71 | #define LightGrey 0xC618 /* 192, 192, 192 */ |
rs27 | 1:b64c81071d96 | 72 | #define DarkGrey 0x7BEF /* 128, 128, 128 */ |
rs27 | 1:b64c81071d96 | 73 | #define Red 0x001F /* 0, 0,31 */ |
rs27 | 1:b64c81071d96 | 74 | #define Green 0x07C0 /* 0,31, 0 */ |
rs27 | 1:b64c81071d96 | 75 | #define Cyan 0x07DF /* 0,31,31 */ |
rs27 | 1:b64c81071d96 | 76 | #define Blue 0xF800 /* 31, 0, 0 */ |
rs27 | 1:b64c81071d96 | 77 | #define Yellow 0xF81F /* 31, 0,31 */ |
rs27 | 1:b64c81071d96 | 78 | #define Magenta 0xFFC0 /* 31,31, 0 */ |
rs27 | 1:b64c81071d96 | 79 | #define White 0xFFFF /* 31,31,31 */ |
rs27 | 1:b64c81071d96 | 80 | #define Orange 0xFD20 /* 255, 165, 0 */ |
rs27 | 1:b64c81071d96 | 81 | #define GreenYellow 0xAFE5 /* 173, 255, 47 */ |
rs27 | 1:b64c81071d96 | 82 | #define LightBlue 0x04FF |
rs27 | 1:b64c81071d96 | 83 | |
morita | 0:c0be4e018a09 | 84 | // ILI9163 LCD Controller Commands |
morita | 0:c0be4e018a09 | 85 | #define NOP 0x00 |
morita | 0:c0be4e018a09 | 86 | #define SOFT_RESET 0x01 |
morita | 0:c0be4e018a09 | 87 | #define GET_RED_CHANNEL 0x06 |
morita | 0:c0be4e018a09 | 88 | #define GET_GREEN_CHANNEL 0x07 |
morita | 0:c0be4e018a09 | 89 | #define GET_BLUE_CHANNEL 0x08 |
morita | 0:c0be4e018a09 | 90 | #define GET_PIXEL_FORMAT 0x0C |
morita | 0:c0be4e018a09 | 91 | #define GET_POWER_MODE 0x0A |
morita | 0:c0be4e018a09 | 92 | #define GET_ADDRESS_MODE 0x0B |
morita | 0:c0be4e018a09 | 93 | #define GET_DISPLAY_MODE 0x0D |
morita | 0:c0be4e018a09 | 94 | #define GET_SIGNAL_MODE 0x0E |
morita | 0:c0be4e018a09 | 95 | #define GET_DIAGNOSTIC_RESULT 0x0F |
morita | 0:c0be4e018a09 | 96 | #define ENTER_SLEEP_MODE 0x10 |
morita | 0:c0be4e018a09 | 97 | #define EXIT_SLEEP_MODE 0x11 |
morita | 0:c0be4e018a09 | 98 | #define ENTER_PARTIAL_MODE 0x12 |
morita | 0:c0be4e018a09 | 99 | #define ENTER_NORMAL_MODE 0x13 |
morita | 0:c0be4e018a09 | 100 | #define EXIT_INVERT_MODE 0x20 |
morita | 0:c0be4e018a09 | 101 | #define ENTER_INVERT_MODE 0x21 |
morita | 0:c0be4e018a09 | 102 | #define SET_GAMMA_CURVE 0x26 |
morita | 0:c0be4e018a09 | 103 | #define SET_DISPLAY_OFF 0x28 |
morita | 0:c0be4e018a09 | 104 | #define SET_DISPLAY_ON 0x29 |
morita | 0:c0be4e018a09 | 105 | #define SET_COLUMN_ADDRESS 0x2A |
morita | 0:c0be4e018a09 | 106 | #define SET_PAGE_ADDRESS 0x2B |
morita | 0:c0be4e018a09 | 107 | #define WRITE_MEMORY_START 0x2C |
morita | 0:c0be4e018a09 | 108 | #define WRITE_LUT 0x2D |
morita | 0:c0be4e018a09 | 109 | #define READ_MEMORY_START 0x2E |
morita | 0:c0be4e018a09 | 110 | #define SET_PARTIAL_AREA 0x30 |
morita | 0:c0be4e018a09 | 111 | #define SET_SCROLL_AREA 0x33 |
morita | 0:c0be4e018a09 | 112 | #define SET_TEAR_OFF 0x34 |
morita | 0:c0be4e018a09 | 113 | #define SET_TEAR_ON 0x35 |
morita | 0:c0be4e018a09 | 114 | #define SET_ADDRESS_MODE 0x36 |
morita | 0:c0be4e018a09 | 115 | #define SET_SCROLL_START 0X37 |
morita | 0:c0be4e018a09 | 116 | #define EXIT_IDLE_MODE 0x38 |
morita | 0:c0be4e018a09 | 117 | #define ENTER_IDLE_MODE 0x39 |
morita | 0:c0be4e018a09 | 118 | #define SET_PIXEL_FORMAT 0x3A |
morita | 0:c0be4e018a09 | 119 | #define WRITE_MEMORY_CONTINUE 0x3C |
morita | 0:c0be4e018a09 | 120 | #define READ_MEMORY_CONTINUE 0x3E |
morita | 0:c0be4e018a09 | 121 | #define SET_TEAR_SCANLINE 0x44 |
morita | 0:c0be4e018a09 | 122 | #define GET_SCANLINE 0x45 |
morita | 0:c0be4e018a09 | 123 | #define READ_ID1 0xDA |
morita | 0:c0be4e018a09 | 124 | #define READ_ID2 0xDB |
morita | 0:c0be4e018a09 | 125 | #define READ_ID3 0xDC |
morita | 0:c0be4e018a09 | 126 | #define FRAME_RATE_CONTROL1 0xB1 |
morita | 0:c0be4e018a09 | 127 | #define FRAME_RATE_CONTROL2 0xB2 |
morita | 0:c0be4e018a09 | 128 | #define FRAME_RATE_CONTROL3 0xB3 |
morita | 0:c0be4e018a09 | 129 | #define DISPLAY_INVERSION 0xB4 |
morita | 0:c0be4e018a09 | 130 | #define SOURCE_DRIVER_DIRECTION 0xB7 |
morita | 0:c0be4e018a09 | 131 | #define GATE_DRIVER_DIRECTION 0xB8 |
morita | 0:c0be4e018a09 | 132 | #define POWER_CONTROL1 0xC0 |
morita | 0:c0be4e018a09 | 133 | #define POWER_CONTROL2 0xC1 |
morita | 0:c0be4e018a09 | 134 | #define POWER_CONTROL3 0xC2 |
morita | 0:c0be4e018a09 | 135 | #define POWER_CONTROL4 0xC3 |
morita | 0:c0be4e018a09 | 136 | #define POWER_CONTROL5 0xC4 |
morita | 0:c0be4e018a09 | 137 | #define VCOM_CONTROL1 0xC5 |
morita | 0:c0be4e018a09 | 138 | #define VCOM_CONTROL2 0xC6 |
morita | 0:c0be4e018a09 | 139 | #define VCOM_OFFSET_CONTROL 0xC7 |
morita | 0:c0be4e018a09 | 140 | #define WRITE_ID4_VALUE 0xD3 |
morita | 0:c0be4e018a09 | 141 | #define NV_MEMORY_FUNCTION1 0xD7 |
morita | 0:c0be4e018a09 | 142 | #define NV_MEMORY_FUNCTION2 0xDE |
morita | 0:c0be4e018a09 | 143 | #define POSITIVE_GAMMA_CORRECT 0xE0 |
morita | 0:c0be4e018a09 | 144 | #define NEGATIVE_GAMMA_CORRECT 0xE1 |
morita | 0:c0be4e018a09 | 145 | #define GAM_R_SEL 0xF2 |
morita | 0:c0be4e018a09 | 146 | |
madhusudhana | 3:7d97b4f535c6 | 147 | //ADDING |
madhusudhana | 3:7d97b4f535c6 | 148 | #define ST7735_NOP 0x0 |
madhusudhana | 3:7d97b4f535c6 | 149 | #define ST7735_SWRESET 0x01 |
madhusudhana | 3:7d97b4f535c6 | 150 | #define ST7735_RDDID 0x04 |
madhusudhana | 3:7d97b4f535c6 | 151 | #define ST7735_RDDST 0x09 |
rs27 | 1:b64c81071d96 | 152 | |
madhusudhana | 3:7d97b4f535c6 | 153 | #define ST7735_SLPIN 0x10 |
madhusudhana | 3:7d97b4f535c6 | 154 | #define ST7735_SLPOUT 0x11 |
madhusudhana | 3:7d97b4f535c6 | 155 | #define ST7735_PTLON 0x12 |
madhusudhana | 3:7d97b4f535c6 | 156 | #define ST7735_NORON 0x13 |
madhusudhana | 3:7d97b4f535c6 | 157 | |
madhusudhana | 3:7d97b4f535c6 | 158 | #define ST7735_INVOFF 0x20 |
madhusudhana | 3:7d97b4f535c6 | 159 | #define ST7735_INVON 0x21 |
madhusudhana | 3:7d97b4f535c6 | 160 | #define ST7735_DISPOFF 0x28 |
madhusudhana | 3:7d97b4f535c6 | 161 | #define ST7735_DISPON 0x29 |
madhusudhana | 3:7d97b4f535c6 | 162 | #define ST7735_CASET 0x2A |
madhusudhana | 3:7d97b4f535c6 | 163 | #define ST7735_RASET 0x2B |
madhusudhana | 3:7d97b4f535c6 | 164 | #define ST7735_RAMWR 0x2C |
madhusudhana | 3:7d97b4f535c6 | 165 | #define ST7735_RAMRD 0x2E |
madhusudhana | 3:7d97b4f535c6 | 166 | |
madhusudhana | 3:7d97b4f535c6 | 167 | #define ST7735_COLMOD 0x3A |
madhusudhana | 3:7d97b4f535c6 | 168 | #define ST7735_MADCTL 0x36 |
madhusudhana | 3:7d97b4f535c6 | 169 | |
madhusudhana | 3:7d97b4f535c6 | 170 | |
madhusudhana | 3:7d97b4f535c6 | 171 | #define ST7735_FRMCTR1 0xB1 |
madhusudhana | 3:7d97b4f535c6 | 172 | #define ST7735_FRMCTR2 0xB2 |
madhusudhana | 3:7d97b4f535c6 | 173 | #define ST7735_FRMCTR3 0xB3 |
madhusudhana | 3:7d97b4f535c6 | 174 | #define ST7735_INVCTR 0xB4 |
madhusudhana | 3:7d97b4f535c6 | 175 | #define ST7735_DISSET5 0xB6 |
madhusudhana | 3:7d97b4f535c6 | 176 | |
madhusudhana | 3:7d97b4f535c6 | 177 | #define ST7735_PWCTR1 0xC0 |
madhusudhana | 3:7d97b4f535c6 | 178 | #define ST7735_PWCTR2 0xC1 |
madhusudhana | 3:7d97b4f535c6 | 179 | #define ST7735_PWCTR3 0xC2 |
madhusudhana | 3:7d97b4f535c6 | 180 | #define ST7735_PWCTR4 0xC3 |
madhusudhana | 3:7d97b4f535c6 | 181 | #define ST7735_PWCTR5 0xC4 |
madhusudhana | 3:7d97b4f535c6 | 182 | #define ST7735_VMCTR1 0xC5 |
madhusudhana | 3:7d97b4f535c6 | 183 | |
madhusudhana | 3:7d97b4f535c6 | 184 | #define ST7735_RDID1 0xDA |
madhusudhana | 3:7d97b4f535c6 | 185 | #define ST7735_RDID2 0xDB |
madhusudhana | 3:7d97b4f535c6 | 186 | #define ST7735_RDID3 0xDC |
madhusudhana | 3:7d97b4f535c6 | 187 | #define ST7735_RDID4 0xDD |
madhusudhana | 3:7d97b4f535c6 | 188 | |
madhusudhana | 3:7d97b4f535c6 | 189 | #define ST7735_PWCTR6 0xFC |
madhusudhana | 3:7d97b4f535c6 | 190 | |
madhusudhana | 3:7d97b4f535c6 | 191 | #define ST7735_GMCTRP1 0xE0 |
madhusudhana | 3:7d97b4f535c6 | 192 | #define ST7735_GMCTRN1 0xE1 |
madhusudhana | 3:7d97b4f535c6 | 193 | |
madhusudhana | 3:7d97b4f535c6 | 194 | //ADDING |
madhusudhana | 3:7d97b4f535c6 | 195 | #define _TFTWIDTH 240 |
madhusudhana | 3:7d97b4f535c6 | 196 | #define _TFTHEIGHT 320 |
madhusudhana | 3:7d97b4f535c6 | 197 | |
madhusudhana | 3:7d97b4f535c6 | 198 | #define ILI9340_NOP 0x00 |
madhusudhana | 3:7d97b4f535c6 | 199 | #define ILI9340_SWRESET 0x01 |
madhusudhana | 3:7d97b4f535c6 | 200 | #define ILI9340_RDDID 0x04 |
madhusudhana | 3:7d97b4f535c6 | 201 | #define ILI9340_RDDST 0x09 |
madhusudhana | 3:7d97b4f535c6 | 202 | |
madhusudhana | 3:7d97b4f535c6 | 203 | #define ILI9340_SLPIN 0x10 |
madhusudhana | 3:7d97b4f535c6 | 204 | #define ILI9340_SLPOUT 0x11 |
madhusudhana | 3:7d97b4f535c6 | 205 | #define ILI9340_PTLON 0x12 |
madhusudhana | 3:7d97b4f535c6 | 206 | #define ILI9340_NORON 0x13 |
madhusudhana | 3:7d97b4f535c6 | 207 | |
madhusudhana | 3:7d97b4f535c6 | 208 | #define ILI9340_RDMODE 0x0A |
madhusudhana | 3:7d97b4f535c6 | 209 | #define ILI9340_RDMADCTL 0x0B |
madhusudhana | 3:7d97b4f535c6 | 210 | #define ILI9340_RDPIXFMT 0x0C |
madhusudhana | 3:7d97b4f535c6 | 211 | #define ILI9340_RDIMGFMT 0x0A |
madhusudhana | 3:7d97b4f535c6 | 212 | #define ILI9340_RDSELFDIAG 0x0F |
madhusudhana | 3:7d97b4f535c6 | 213 | |
madhusudhana | 3:7d97b4f535c6 | 214 | #define ILI9340_INVOFF 0x20 |
madhusudhana | 3:7d97b4f535c6 | 215 | #define ILI9340_INVON 0x21 |
madhusudhana | 3:7d97b4f535c6 | 216 | #define ILI9340_GAMMASET 0x26 |
madhusudhana | 3:7d97b4f535c6 | 217 | #define ILI9340_DISPOFF 0x28 |
madhusudhana | 3:7d97b4f535c6 | 218 | #define ILI9340_DISPON 0x29 |
madhusudhana | 3:7d97b4f535c6 | 219 | |
madhusudhana | 3:7d97b4f535c6 | 220 | #define ILI9340_CASET 0x2A |
madhusudhana | 3:7d97b4f535c6 | 221 | #define ILI9340_PASET 0x2B |
madhusudhana | 3:7d97b4f535c6 | 222 | #define ILI9340_RAMWR 0x2C |
madhusudhana | 3:7d97b4f535c6 | 223 | #define ILI9340_RAMRD 0x2E |
madhusudhana | 3:7d97b4f535c6 | 224 | |
madhusudhana | 3:7d97b4f535c6 | 225 | #define ILI9340_PTLAR 0x30 |
madhusudhana | 3:7d97b4f535c6 | 226 | #define ILI9340_MADCTL 0x36 |
madhusudhana | 3:7d97b4f535c6 | 227 | |
madhusudhana | 3:7d97b4f535c6 | 228 | |
madhusudhana | 3:7d97b4f535c6 | 229 | #define ILI9340_MADCTL_MY 0x80 |
madhusudhana | 3:7d97b4f535c6 | 230 | #define ILI9340_MADCTL_MX 0x40 |
madhusudhana | 3:7d97b4f535c6 | 231 | #define ILI9340_MADCTL_MV 0x20 |
madhusudhana | 3:7d97b4f535c6 | 232 | #define ILI9340_MADCTL_ML 0x10 |
madhusudhana | 3:7d97b4f535c6 | 233 | #define ILI9340_MADCTL_RGB 0x00 |
madhusudhana | 3:7d97b4f535c6 | 234 | #define ILI9340_MADCTL_BGR 0x08 |
madhusudhana | 3:7d97b4f535c6 | 235 | #define ILI9340_MADCTL_MH 0x04 |
madhusudhana | 3:7d97b4f535c6 | 236 | |
madhusudhana | 3:7d97b4f535c6 | 237 | #define ILI9340_PIXFMT 0x3A |
madhusudhana | 3:7d97b4f535c6 | 238 | |
madhusudhana | 3:7d97b4f535c6 | 239 | #define ILI9340_FRMCTR1 0xB1 |
madhusudhana | 3:7d97b4f535c6 | 240 | #define ILI9340_FRMCTR2 0xB2 |
madhusudhana | 3:7d97b4f535c6 | 241 | #define ILI9340_FRMCTR3 0xB3 |
madhusudhana | 3:7d97b4f535c6 | 242 | #define ILI9340_INVCTR 0xB4 |
madhusudhana | 3:7d97b4f535c6 | 243 | #define ILI9340_DFUNCTR 0xB6 |
madhusudhana | 3:7d97b4f535c6 | 244 | |
madhusudhana | 3:7d97b4f535c6 | 245 | #define ILI9340_PWCTR1 0xC0 |
madhusudhana | 3:7d97b4f535c6 | 246 | #define ILI9340_PWCTR2 0xC1 |
madhusudhana | 3:7d97b4f535c6 | 247 | #define ILI9340_PWCTR3 0xC2 |
madhusudhana | 3:7d97b4f535c6 | 248 | #define ILI9340_PWCTR4 0xC3 |
madhusudhana | 3:7d97b4f535c6 | 249 | #define ILI9340_PWCTR5 0xC4 |
madhusudhana | 3:7d97b4f535c6 | 250 | #define ILI9340_VMCTR1 0xC5 |
madhusudhana | 3:7d97b4f535c6 | 251 | #define ILI9340_VMCTR2 0xC7 |
madhusudhana | 3:7d97b4f535c6 | 252 | |
madhusudhana | 3:7d97b4f535c6 | 253 | #define ILI9340_RDID1 0xDA |
madhusudhana | 3:7d97b4f535c6 | 254 | #define ILI9340_RDID2 0xDB |
madhusudhana | 3:7d97b4f535c6 | 255 | #define ILI9340_RDID3 0xDC |
madhusudhana | 3:7d97b4f535c6 | 256 | #define ILI9340_RDID4 0xDD |
madhusudhana | 3:7d97b4f535c6 | 257 | |
madhusudhana | 3:7d97b4f535c6 | 258 | #define ILI9340_GMCTRP1 0xE0 |
madhusudhana | 3:7d97b4f535c6 | 259 | #define ILI9340_GMCTRN1 0xE1 |
madhusudhana | 3:7d97b4f535c6 | 260 | |
madhusudhana | 3:7d97b4f535c6 | 261 | |
madhusudhana | 3:7d97b4f535c6 | 262 | #define ST7735_CMD 0x100 |
madhusudhana | 3:7d97b4f535c6 | 263 | #define ST7735_DLY 0x200 |
madhusudhana | 3:7d97b4f535c6 | 264 | #define ST7735_END 0x400 |
rs27 | 1:b64c81071d96 | 265 | class ILI9163 { |
rs27 | 1:b64c81071d96 | 266 | public: |
rs27 | 1:b64c81071d96 | 267 | |
rs27 | 1:b64c81071d96 | 268 | // Das ILI9163 Objekt anlegen |
rs27 | 1:b64c81071d96 | 269 | // |
rs27 | 1:b64c81071d96 | 270 | // @param D2 SCK_ |
rs27 | 1:b64c81071d96 | 271 | // @param D3 SDA |
rs27 | 1:b64c81071d96 | 272 | // @param D4 A0_ |
rs27 | 1:b64c81071d96 | 273 | // @param D5 RESET pin connected to RESET of display |
rs27 | 1:b64c81071d96 | 274 | // @param D6 CS cs pin connected to CS of display |
rs27 | 1:b64c81071d96 | 275 | // |
rs27 | 1:b64c81071d96 | 276 | // ILI9163 tft(D2,D3,D4,D5,D6); |
rs27 | 1:b64c81071d96 | 277 | // |
madhusudhana | 3:7d97b4f535c6 | 278 | ILI9163(PinName SCK, PinName SDA, PinName RESET, PinName CS); |
morita | 0:c0be4e018a09 | 279 | |
rs27 | 1:b64c81071d96 | 280 | DigitalOut SCK_; |
rs27 | 1:b64c81071d96 | 281 | DigitalOut SDA_; |
rs27 | 1:b64c81071d96 | 282 | DigitalOut RESET_; |
rs27 | 1:b64c81071d96 | 283 | DigitalOut CS_; |
rs27 | 1:b64c81071d96 | 284 | |
rs27 | 1:b64c81071d96 | 285 | uint8_t tm; |
rs27 | 1:b64c81071d96 | 286 | uint8_t R,G,B; |
rs27 | 1:b64c81071d96 | 287 | uint8_t RGB_state; |
rs27 | 1:b64c81071d96 | 288 | |
rs27 | 1:b64c81071d96 | 289 | // font Array |
rs27 | 1:b64c81071d96 | 290 | unsigned char* font; |
rs27 | 1:b64c81071d96 | 291 | uint8_t font_bp_char; // Bytes pro Zeichen |
rs27 | 1:b64c81071d96 | 292 | uint8_t font_hor; // Bytes Horizontal |
rs27 | 1:b64c81071d96 | 293 | uint8_t font_vert; // Bytes Vertikal |
rs27 | 1:b64c81071d96 | 294 | uint8_t font_bp_line; // Bytes pro Zeile |
rs27 | 1:b64c81071d96 | 295 | uint8_t font_size; // Vergrößerung des Zeichens |
rs27 | 1:b64c81071d96 | 296 | // Macros and in-lines: |
rs27 | 1:b64c81071d96 | 297 | |
rs27 | 1:b64c81071d96 | 298 | // Translates a 3 byte RGB value into a 2 byte value for the LCD (values should be 0-31) |
rs27 | 1:b64c81071d96 | 299 | inline uint16_t decodeRgbValue(uint8_t r, uint8_t g, uint8_t b) |
rs27 | 1:b64c81071d96 | 300 | { |
morita | 0:c0be4e018a09 | 301 | return (b << 11) | (g << 6) | (r); |
rs27 | 1:b64c81071d96 | 302 | } |
morita | 0:c0be4e018a09 | 303 | |
rs27 | 1:b64c81071d96 | 304 | // This routine takes a row number from 0 to 20 and |
rs27 | 1:b64c81071d96 | 305 | // returns the x coordinate on the screen (0-127) to make |
rs27 | 1:b64c81071d96 | 306 | // it easy to place text |
rs27 | 1:b64c81071d96 | 307 | inline uint8_t lcdTextX(uint8_t x) { return x*font_vert; } |
rs27 | 1:b64c81071d96 | 308 | |
rs27 | 1:b64c81071d96 | 309 | // This routine takes a column number from 0 to 20 and |
rs27 | 1:b64c81071d96 | 310 | // returns the y coordinate on the screen (0-127) to make |
rs27 | 1:b64c81071d96 | 311 | // it easy to place text |
rs27 | 1:b64c81071d96 | 312 | inline uint8_t lcdTextY(uint8_t y) { return y*font_hor; } |
rs27 | 1:b64c81071d96 | 313 | |
rs27 | 1:b64c81071d96 | 314 | // LCD function prototypes |
madhusudhana | 3:7d97b4f535c6 | 315 | void mosi_test(void); |
madhusudhana | 3:7d97b4f535c6 | 316 | |
rs27 | 1:b64c81071d96 | 317 | void lcdReset(void); |
rs27 | 1:b64c81071d96 | 318 | void lcdWriteCommand(uint8_t address); |
madhusudhana | 3:7d97b4f535c6 | 319 | void WriteData(uint8_t Data); |
rs27 | 1:b64c81071d96 | 320 | void lcdWriteParameter(uint8_t parameter); |
rs27 | 1:b64c81071d96 | 321 | void lcdWriteData(uint8_t dataByte1, uint8_t dataByte2); |
rs27 | 1:b64c81071d96 | 322 | void lcdInitialise(uint8_t orientation); |
morita | 0:c0be4e018a09 | 323 | |
rs27 | 1:b64c81071d96 | 324 | void lcdClearDisplay(uint16_t colour); |
rs27 | 1:b64c81071d96 | 325 | void lcdPlot(uint8_t x, uint8_t y, uint16_t colour); |
rs27 | 1:b64c81071d96 | 326 | void lcdLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t colour); |
rs27 | 1:b64c81071d96 | 327 | void lcdRectangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t colour); |
rs27 | 1:b64c81071d96 | 328 | void lcdFilledRectangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t colour); |
rs27 | 1:b64c81071d96 | 329 | void lcdCircle(int16_t xCentre, int16_t yCentre, int16_t radius, uint16_t colour); |
morita | 0:c0be4e018a09 | 330 | |
rs27 | 1:b64c81071d96 | 331 | // select the font to use |
rs27 | 1:b64c81071d96 | 332 | // |
rs27 | 1:b64c81071d96 | 333 | // @param f pointer to font array |
rs27 | 1:b64c81071d96 | 334 | // |
rs27 | 1:b64c81071d96 | 335 | // font array can created with GLCD Font Creator from http://www.mikroe.com |
rs27 | 1:b64c81071d96 | 336 | // you have to add 4 parameter at the beginning of the font array to use: |
rs27 | 1:b64c81071d96 | 337 | // - the number of byte / char |
rs27 | 1:b64c81071d96 | 338 | // - the vertial size in pixel |
rs27 | 1:b64c81071d96 | 339 | // - the horizontal size in pixel |
rs27 | 1:b64c81071d96 | 340 | // - the number of byte per vertical line |
rs27 | 1:b64c81071d96 | 341 | // you also have to change the array to char[] |
rs27 | 1:b64c81071d96 | 342 | // |
rs27 | 1:b64c81071d96 | 343 | void set_font(unsigned char* f); |
rs27 | 1:b64c81071d96 | 344 | |
rs27 | 1:b64c81071d96 | 345 | void lcdPutCh(unsigned char character, uint8_t x, uint8_t y, uint16_t fgColour, uint16_t bgColour); |
rs27 | 1:b64c81071d96 | 346 | void lcdPutS(const char *string, uint8_t x, uint8_t y, uint16_t fgColour, uint16_t bgColour); |
morita | 0:c0be4e018a09 | 347 | |
rs27 | 1:b64c81071d96 | 348 | }; // end class |
morita | 0:c0be4e018a09 | 349 | |
morita | 0:c0be4e018a09 | 350 | #endif /* ILI9163LCD_H_ */ |