output

Dependencies:   images mbed

Fork of display by madhu sudhana

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?

UserRevisionLine numberNew 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_ */