Lib for the new LCD Display with ILI9341 controller supporting two displays

Dependents:   CANary_9341_test CANary_9341 CANary

Fork of SPI_TFT_ILI9341 by Peter Drescher

Committer:
TickTock
Date:
Sun May 18 12:45:24 2014 +0000
Revision:
10:aca12a61d2b1
Works with both controllers using precompiler directive

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TickTock 10:aca12a61d2b1 1 /* mbed library for 240*320 pixel display TFT based on HX8347D LCD Controller
TickTock 10:aca12a61d2b1 2 * Copyright (c) 2011 Peter Drescher - DC2PD
TickTock 10:aca12a61d2b1 3 *
TickTock 10:aca12a61d2b1 4 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
TickTock 10:aca12a61d2b1 5 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
TickTock 10:aca12a61d2b1 6 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
TickTock 10:aca12a61d2b1 7 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
TickTock 10:aca12a61d2b1 8 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
TickTock 10:aca12a61d2b1 9 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
TickTock 10:aca12a61d2b1 10 * THE SOFTWARE.
TickTock 10:aca12a61d2b1 11 */
TickTock 10:aca12a61d2b1 12
TickTock 10:aca12a61d2b1 13 /* change the char position handling
TickTock 10:aca12a61d2b1 14 * use pixel (x,y) instadt of colum row */
TickTock 10:aca12a61d2b1 15
TickTock 10:aca12a61d2b1 16
TickTock 10:aca12a61d2b1 17 #ifndef MBED_SPI_TFT_H
TickTock 10:aca12a61d2b1 18 #define MBED_SPI_TFT_H
TickTock 10:aca12a61d2b1 19
TickTock 10:aca12a61d2b1 20 //#define NO_DMA
TickTock 10:aca12a61d2b1 21
TickTock 10:aca12a61d2b1 22 #include "mbed.h"
TickTock 10:aca12a61d2b1 23 #include "GraphicsDisplay.h"
TickTock 10:aca12a61d2b1 24
TickTock 10:aca12a61d2b1 25 #define RGB(r,g,b) (((r&0xF8)<<8)|((g&0xFC)<<3)|((b&0xF8)>>3)) //5 red | 6 green | 5 blue
TickTock 10:aca12a61d2b1 26
TickTock 10:aca12a61d2b1 27 #define SPI_START (0x70) /* Start byte for SPI transfer */
TickTock 10:aca12a61d2b1 28 #define SPI_RD (0x01) /* WR bit 1 within start */
TickTock 10:aca12a61d2b1 29 #define SPI_WR (0x00) /* WR bit 0 within start */
TickTock 10:aca12a61d2b1 30 #define SPI_DATA (0x02) /* RS bit 1 within start byte */
TickTock 10:aca12a61d2b1 31 #define SPI_INDEX (0x00) /* RS bit 0 within start byte */
TickTock 10:aca12a61d2b1 32
TickTock 10:aca12a61d2b1 33
TickTock 10:aca12a61d2b1 34 /* some RGB color definitions */
TickTock 10:aca12a61d2b1 35 #define Black 0x0000 /* 0, 0, 0 */
TickTock 10:aca12a61d2b1 36 #define Navy 0x0007 /* 0, 0, 64 */
TickTock 10:aca12a61d2b1 37 #define DarkGreen 0x03E0 /* 0, 128, 0 */
TickTock 10:aca12a61d2b1 38 #define DarkCyan 0x03EF /* 0, 128, 128 */
TickTock 10:aca12a61d2b1 39 #define Maroon 0x7800 /* 128, 0, 0 */
TickTock 10:aca12a61d2b1 40 #define Purple 0x780F /* 128, 0, 128 */
TickTock 10:aca12a61d2b1 41 #define Olive 0x7BE0 /* 128, 128, 0 */
TickTock 10:aca12a61d2b1 42 #define LightGrey 0xC618 /* 192, 192, 192 */
TickTock 10:aca12a61d2b1 43 #define DarkGrey 0x7BEF /* 128, 128, 128 */
TickTock 10:aca12a61d2b1 44 #define Blue 0x001F /* 0, 0, 255 */
TickTock 10:aca12a61d2b1 45 #define Green 0x07E0 /* 0, 255, 0 */
TickTock 10:aca12a61d2b1 46 #define Cyan 0x07FF /* 0, 255, 255 */
TickTock 10:aca12a61d2b1 47 #define Red 0xF800 /* 255, 0, 0 */
TickTock 10:aca12a61d2b1 48 #define Magenta 0xF81F /* 255, 0, 255 */
TickTock 10:aca12a61d2b1 49 #define Yellow 0xFFE0 /* 255, 255, 0 */
TickTock 10:aca12a61d2b1 50 #define White 0xFFFF /* 255, 255, 255 */
TickTock 10:aca12a61d2b1 51 #define Orange 0xFD20 /* 255, 165, 0 */
TickTock 10:aca12a61d2b1 52 #define GreenYellow 0xAFE5 /* 173, 255, 47 */
TickTock 10:aca12a61d2b1 53 #define Amber 0xFBE0 /* 255, 126, 0 */
TickTock 10:aca12a61d2b1 54
TickTock 10:aca12a61d2b1 55
TickTock 10:aca12a61d2b1 56 // some defines for the DMA use
TickTock 10:aca12a61d2b1 57 #define DMA_CHANNEL_ENABLE 1
TickTock 10:aca12a61d2b1 58 #define DMA_TRANSFER_TYPE_M2P (1UL << 11)
TickTock 10:aca12a61d2b1 59 #define DMA_CHANNEL_TCIE (1UL << 31)
TickTock 10:aca12a61d2b1 60 #define DMA_CHANNEL_SRC_INC (1UL << 26)
TickTock 10:aca12a61d2b1 61 #define DMA_MASK_IE (1UL << 14)
TickTock 10:aca12a61d2b1 62 #define DMA_MASK_ITC (1UL << 15)
TickTock 10:aca12a61d2b1 63 #define DMA_SSP1_TX (1UL << 2)
TickTock 10:aca12a61d2b1 64 #define DMA_SSP0_TX (0)
TickTock 10:aca12a61d2b1 65 #define DMA_DEST_SSP1_TX (2UL << 6)
TickTock 10:aca12a61d2b1 66 #define DMA_DEST_SSP0_TX (0UL << 6)
TickTock 10:aca12a61d2b1 67
TickTock 10:aca12a61d2b1 68
TickTock 10:aca12a61d2b1 69 /** Display control class, based on GraphicsDisplay and TextDisplay
TickTock 10:aca12a61d2b1 70 *
TickTock 10:aca12a61d2b1 71 * Example:
TickTock 10:aca12a61d2b1 72 * @code
TickTock 10:aca12a61d2b1 73 * #include "stdio.h"
TickTock 10:aca12a61d2b1 74 * #include "mbed.h"
TickTock 10:aca12a61d2b1 75 * #include "SPI_TFTx2.h"
TickTock 10:aca12a61d2b1 76 * #include "string"
TickTock 10:aca12a61d2b1 77 * #include "Arial12x12.h"
TickTock 10:aca12a61d2b1 78 * #include "Arial24x23.h"
TickTock 10:aca12a61d2b1 79 *
TickTock 10:aca12a61d2b1 80 *
TickTock 10:aca12a61d2b1 81 *
TickTock 10:aca12a61d2b1 82 * // the TFT is connected to SPI pin 5-7
TickTock 10:aca12a61d2b1 83 * SPI_TFTx2 TFT(p5, p6, p7, p8, p9, p15,"TFT"); // mosi, miso, sclk, cs0, cs1, reset
TickTock 10:aca12a61d2b1 84 *
TickTock 10:aca12a61d2b1 85 * int main() {
TickTock 10:aca12a61d2b1 86 * TFT.claim(stdout); // send stdout to the TFT display
TickTock 10:aca12a61d2b1 87 * //TFT.claim(stderr); // send stderr to the TFT display
TickTock 10:aca12a61d2b1 88 *
TickTock 10:aca12a61d2b1 89 * TFT.background(Black); // set background to black
TickTock 10:aca12a61d2b1 90 * TFT.foreground(White); // set chars to white
TickTock 10:aca12a61d2b1 91 * TFT.cls(); // clear the screen
TickTock 10:aca12a61d2b1 92 * TFT.set_font((unsigned char*) Arial12x12); // select the font
TickTock 10:aca12a61d2b1 93 *
TickTock 10:aca12a61d2b1 94 * TFT.set_orientation(0);
TickTock 10:aca12a61d2b1 95 * TFT.set_display(0);
TickTock 10:aca12a61d2b1 96 * TFT.locate(0,0);
TickTock 10:aca12a61d2b1 97 * printf(" Hello Mbed 0");
TickTock 10:aca12a61d2b1 98 * TFT.set_font((unsigned char*) Arial24x23); // select font 2
TickTock 10:aca12a61d2b1 99 * TFT.locate(48,115);
TickTock 10:aca12a61d2b1 100 * TFT.printf("Bigger Font");
TickTock 10:aca12a61d2b1 101 * }
TickTock 10:aca12a61d2b1 102 * @endcode
TickTock 10:aca12a61d2b1 103 */
TickTock 10:aca12a61d2b1 104 class SPI_TFTx2 : public GraphicsDisplay {
TickTock 10:aca12a61d2b1 105 public:
TickTock 10:aca12a61d2b1 106
TickTock 10:aca12a61d2b1 107 /** Create a SPI_TFTx2 object connected to SPI and two pins
TickTock 10:aca12a61d2b1 108 *
TickTock 10:aca12a61d2b1 109 * @param mosi,miso,sclk SPI
TickTock 10:aca12a61d2b1 110 * @param cs0 pin connected to CS of left display
TickTock 10:aca12a61d2b1 111 * @param cs1 pin connected to CS of right display
TickTock 10:aca12a61d2b1 112 * @param reset pin connected to RESET of display
TickTock 10:aca12a61d2b1 113 *
TickTock 10:aca12a61d2b1 114 */
TickTock 10:aca12a61d2b1 115 SPI_TFTx2(PinName mosi, PinName miso, PinName sclk, PinName cs0, PinName cs1, PinName reset,const char* name ="TFT");
TickTock 10:aca12a61d2b1 116
TickTock 10:aca12a61d2b1 117 /** Get the width of the screen in pixel
TickTock 10:aca12a61d2b1 118 *
TickTock 10:aca12a61d2b1 119 * @param
TickTock 10:aca12a61d2b1 120 * @returns width of screen in pixel
TickTock 10:aca12a61d2b1 121 *
TickTock 10:aca12a61d2b1 122 */
TickTock 10:aca12a61d2b1 123 virtual int width();
TickTock 10:aca12a61d2b1 124
TickTock 10:aca12a61d2b1 125 /** Get the height of the screen in pixel
TickTock 10:aca12a61d2b1 126 *
TickTock 10:aca12a61d2b1 127 * @returns height of screen in pixel
TickTock 10:aca12a61d2b1 128 *
TickTock 10:aca12a61d2b1 129 */
TickTock 10:aca12a61d2b1 130 virtual int height();
TickTock 10:aca12a61d2b1 131
TickTock 10:aca12a61d2b1 132 /** Draw a pixel at x,y with color
TickTock 10:aca12a61d2b1 133 *
TickTock 10:aca12a61d2b1 134 * @param x horizontal position
TickTock 10:aca12a61d2b1 135 * @param y vertical position
TickTock 10:aca12a61d2b1 136 * @param color 16 bit pixel color
TickTock 10:aca12a61d2b1 137 */
TickTock 10:aca12a61d2b1 138 virtual void pixel(int x, int y,int colour);
TickTock 10:aca12a61d2b1 139
TickTock 10:aca12a61d2b1 140 /** draw a circle
TickTock 10:aca12a61d2b1 141 *
TickTock 10:aca12a61d2b1 142 * @param x0,y0 center
TickTock 10:aca12a61d2b1 143 * @param r radius
TickTock 10:aca12a61d2b1 144 * @param color 16 bit color *
TickTock 10:aca12a61d2b1 145 *
TickTock 10:aca12a61d2b1 146 */
TickTock 10:aca12a61d2b1 147 void circle(int x, int y, int r, int colour);
TickTock 10:aca12a61d2b1 148
TickTock 10:aca12a61d2b1 149 /** draw a filled circle
TickTock 10:aca12a61d2b1 150 *
TickTock 10:aca12a61d2b1 151 * @param x0,y0 center
TickTock 10:aca12a61d2b1 152 * @param r radius
TickTock 10:aca12a61d2b1 153 * @param color 16 bit color *
TickTock 10:aca12a61d2b1 154 *
TickTock 10:aca12a61d2b1 155 * use circle with different radius,
TickTock 10:aca12a61d2b1 156 * can miss some pixel
TickTock 10:aca12a61d2b1 157 */
TickTock 10:aca12a61d2b1 158 void fillcircle(int x, int y, int r, int colour);
TickTock 10:aca12a61d2b1 159
TickTock 10:aca12a61d2b1 160
TickTock 10:aca12a61d2b1 161
TickTock 10:aca12a61d2b1 162 /** draw a 1 pixel line
TickTock 10:aca12a61d2b1 163 *
TickTock 10:aca12a61d2b1 164 * @param x0,y0 start point
TickTock 10:aca12a61d2b1 165 * @param x1,y1 stop point
TickTock 10:aca12a61d2b1 166 * @param color 16 bit color
TickTock 10:aca12a61d2b1 167 *
TickTock 10:aca12a61d2b1 168 */
TickTock 10:aca12a61d2b1 169 void line(int x0, int y0, int x1, int y1, int colour);
TickTock 10:aca12a61d2b1 170
TickTock 10:aca12a61d2b1 171 /** draw a rect
TickTock 10:aca12a61d2b1 172 *
TickTock 10:aca12a61d2b1 173 * @param x0,y0 top left corner
TickTock 10:aca12a61d2b1 174 * @param x1,y1 down right corner
TickTock 10:aca12a61d2b1 175 * @param color 16 bit color
TickTock 10:aca12a61d2b1 176 * *
TickTock 10:aca12a61d2b1 177 */
TickTock 10:aca12a61d2b1 178 void rect(int x0, int y0, int x1, int y1, int colour);
TickTock 10:aca12a61d2b1 179
TickTock 10:aca12a61d2b1 180 /** draw a filled rect
TickTock 10:aca12a61d2b1 181 *
TickTock 10:aca12a61d2b1 182 * @param x0,y0 top left corner
TickTock 10:aca12a61d2b1 183 * @param x1,y1 down right corner
TickTock 10:aca12a61d2b1 184 * @param color 16 bit color
TickTock 10:aca12a61d2b1 185 *
TickTock 10:aca12a61d2b1 186 */
TickTock 10:aca12a61d2b1 187 void fillrect(int x0, int y0, int x1, int y1, int colour);
TickTock 10:aca12a61d2b1 188
TickTock 10:aca12a61d2b1 189 /** setup cursor position
TickTock 10:aca12a61d2b1 190 *
TickTock 10:aca12a61d2b1 191 * @param x x-position (top left)
TickTock 10:aca12a61d2b1 192 * @param y y-position
TickTock 10:aca12a61d2b1 193 */
TickTock 10:aca12a61d2b1 194 virtual void locate(int x, int y);
TickTock 10:aca12a61d2b1 195
TickTock 10:aca12a61d2b1 196 /** Fill the screen with _backgroun color
TickTock 10:aca12a61d2b1 197 *
TickTock 10:aca12a61d2b1 198 */
TickTock 10:aca12a61d2b1 199 virtual void cls (void);
TickTock 10:aca12a61d2b1 200
TickTock 10:aca12a61d2b1 201 /** calculate the max number of char in a line
TickTock 10:aca12a61d2b1 202 *
TickTock 10:aca12a61d2b1 203 * @returns max columns
TickTock 10:aca12a61d2b1 204 * depends on actual font size
TickTock 10:aca12a61d2b1 205 *
TickTock 10:aca12a61d2b1 206 */
TickTock 10:aca12a61d2b1 207 virtual int columns(void);
TickTock 10:aca12a61d2b1 208
TickTock 10:aca12a61d2b1 209 /** calculate the max number of columns
TickTock 10:aca12a61d2b1 210 *
TickTock 10:aca12a61d2b1 211 * @returns max column
TickTock 10:aca12a61d2b1 212 * depends on actual font size
TickTock 10:aca12a61d2b1 213 *
TickTock 10:aca12a61d2b1 214 */
TickTock 10:aca12a61d2b1 215 virtual int rows(void);
TickTock 10:aca12a61d2b1 216
TickTock 10:aca12a61d2b1 217 /** put a char on the screen
TickTock 10:aca12a61d2b1 218 *
TickTock 10:aca12a61d2b1 219 * @param value char to print
TickTock 10:aca12a61d2b1 220 * @returns printed char
TickTock 10:aca12a61d2b1 221 *
TickTock 10:aca12a61d2b1 222 */
TickTock 10:aca12a61d2b1 223 virtual int _putc(int value);
TickTock 10:aca12a61d2b1 224
TickTock 10:aca12a61d2b1 225 /** draw a character on given position out of the active font to the TFT
TickTock 10:aca12a61d2b1 226 *
TickTock 10:aca12a61d2b1 227 * @param x x-position of char (top left)
TickTock 10:aca12a61d2b1 228 * @param y y-position
TickTock 10:aca12a61d2b1 229 * @param c char to print
TickTock 10:aca12a61d2b1 230 *
TickTock 10:aca12a61d2b1 231 */
TickTock 10:aca12a61d2b1 232 virtual void character(int x, int y, int c);
TickTock 10:aca12a61d2b1 233
TickTock 10:aca12a61d2b1 234 /** paint a bitmap on the TFT
TickTock 10:aca12a61d2b1 235 *
TickTock 10:aca12a61d2b1 236 * @param x,y : upper left corner
TickTock 10:aca12a61d2b1 237 * @param w width of bitmap
TickTock 10:aca12a61d2b1 238 * @param h high of bitmap
TickTock 10:aca12a61d2b1 239 * @param *bitmap pointer to the bitmap data
TickTock 10:aca12a61d2b1 240 *
TickTock 10:aca12a61d2b1 241 * bitmap format: 16 bit R5 G6 B5
TickTock 10:aca12a61d2b1 242 *
TickTock 10:aca12a61d2b1 243 * use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5
TickTock 10:aca12a61d2b1 244 * use winhex to load this file and mark data stating at offset 0x46 to end
TickTock 10:aca12a61d2b1 245 * use edit -> copy block -> C Source to export C array
TickTock 10:aca12a61d2b1 246 * paste this array into your program
TickTock 10:aca12a61d2b1 247 *
TickTock 10:aca12a61d2b1 248 * define the array as static const unsigned char to put it into flash memory
TickTock 10:aca12a61d2b1 249 * cast the pointer to (unsigned char *) :
TickTock 10:aca12a61d2b1 250 * tft.Bitmap(10,40,309,50,(unsigned char *)scala);
TickTock 10:aca12a61d2b1 251 */
TickTock 10:aca12a61d2b1 252 void Bitmap(unsigned int x, unsigned int y, unsigned int w, unsigned int h,unsigned char *bitmap);
TickTock 10:aca12a61d2b1 253
TickTock 10:aca12a61d2b1 254
TickTock 10:aca12a61d2b1 255 /** paint a 16 bit BMP from local filesytem on the TFT (slow)
TickTock 10:aca12a61d2b1 256 *
TickTock 10:aca12a61d2b1 257 * @param x,y : upper left corner
TickTock 10:aca12a61d2b1 258 * @param *Name_BMP name of the BMP file
TickTock 10:aca12a61d2b1 259 * @returns 1 if bmp file was found and painted
TickTock 10:aca12a61d2b1 260 * @returns -1 if bmp file was found not found
TickTock 10:aca12a61d2b1 261 * @returns -2 if bmp file is not 16bit
TickTock 10:aca12a61d2b1 262 * @returns -3 if bmp file is to big for screen
TickTock 10:aca12a61d2b1 263 * @returns -4 if buffer malloc go wrong
TickTock 10:aca12a61d2b1 264 *
TickTock 10:aca12a61d2b1 265 * bitmap format: 16 bit R5 G6 B5
TickTock 10:aca12a61d2b1 266 *
TickTock 10:aca12a61d2b1 267 * use Gimp to create / load , save as BMP, option 16 bit R5 G6 B5
TickTock 10:aca12a61d2b1 268 * copy to internal file system
TickTock 10:aca12a61d2b1 269 *
TickTock 10:aca12a61d2b1 270 */
TickTock 10:aca12a61d2b1 271
TickTock 10:aca12a61d2b1 272 int BMP_16(unsigned int x, unsigned int y, const char *Name_BMP);
TickTock 10:aca12a61d2b1 273
TickTock 10:aca12a61d2b1 274
TickTock 10:aca12a61d2b1 275
TickTock 10:aca12a61d2b1 276 /** select the font to use
TickTock 10:aca12a61d2b1 277 *
TickTock 10:aca12a61d2b1 278 * @param f pointer to font array
TickTock 10:aca12a61d2b1 279 *
TickTock 10:aca12a61d2b1 280 * font array can created with GLCD Font Creator from http://www.mikroe.com
TickTock 10:aca12a61d2b1 281 * you have to add 4 parameter at the beginning of the font array to use:
TickTock 10:aca12a61d2b1 282 * - the number of byte / char
TickTock 10:aca12a61d2b1 283 * - the vertial size in pixel
TickTock 10:aca12a61d2b1 284 * - the horizontal size in pixel
TickTock 10:aca12a61d2b1 285 * - the number of byte per vertical line
TickTock 10:aca12a61d2b1 286 * you also have to change the array to char[]
TickTock 10:aca12a61d2b1 287 *
TickTock 10:aca12a61d2b1 288 */
TickTock 10:aca12a61d2b1 289 void set_font(unsigned char* f);
TickTock 10:aca12a61d2b1 290
TickTock 10:aca12a61d2b1 291 /** Set the orientation of the screen
TickTock 10:aca12a61d2b1 292 * x,y: 0,0 is always top left
TickTock 10:aca12a61d2b1 293 *
TickTock 10:aca12a61d2b1 294 * @param o direction to use the screen (0-3) 90&#65533; Steps
TickTock 10:aca12a61d2b1 295 *
TickTock 10:aca12a61d2b1 296 */
TickTock 10:aca12a61d2b1 297 void set_orientation(unsigned int o);
TickTock 10:aca12a61d2b1 298
TickTock 10:aca12a61d2b1 299 /* Select between two displays */
TickTock 10:aca12a61d2b1 300 void set_display(unsigned int o);
TickTock 10:aca12a61d2b1 301
TickTock 10:aca12a61d2b1 302
TickTock 10:aca12a61d2b1 303 SPI _spi;
TickTock 10:aca12a61d2b1 304 DigitalOut _cs0;
TickTock 10:aca12a61d2b1 305 DigitalOut _cs1;
TickTock 10:aca12a61d2b1 306 DigitalOut _reset;
TickTock 10:aca12a61d2b1 307 unsigned char* font;
TickTock 10:aca12a61d2b1 308
TickTock 10:aca12a61d2b1 309
TickTock 10:aca12a61d2b1 310
TickTock 10:aca12a61d2b1 311
TickTock 10:aca12a61d2b1 312 protected:
TickTock 10:aca12a61d2b1 313
TickTock 10:aca12a61d2b1 314 /** Set draw window region to whole screen
TickTock 10:aca12a61d2b1 315 *
TickTock 10:aca12a61d2b1 316 */
TickTock 10:aca12a61d2b1 317 void WindowMax (void);
TickTock 10:aca12a61d2b1 318
TickTock 10:aca12a61d2b1 319
TickTock 10:aca12a61d2b1 320 /** draw a horizontal line
TickTock 10:aca12a61d2b1 321 *
TickTock 10:aca12a61d2b1 322 * @param x0 horizontal start
TickTock 10:aca12a61d2b1 323 * @param x1 horizontal stop
TickTock 10:aca12a61d2b1 324 * @param y vertical position
TickTock 10:aca12a61d2b1 325 * @param color 16 bit color
TickTock 10:aca12a61d2b1 326 *
TickTock 10:aca12a61d2b1 327 */
TickTock 10:aca12a61d2b1 328 void hline(int x0, int x1, int y, int colour);
TickTock 10:aca12a61d2b1 329
TickTock 10:aca12a61d2b1 330 /** draw a vertical line
TickTock 10:aca12a61d2b1 331 *
TickTock 10:aca12a61d2b1 332 * @param x horizontal position
TickTock 10:aca12a61d2b1 333 * @param y0 vertical start
TickTock 10:aca12a61d2b1 334 * @param y1 vertical stop
TickTock 10:aca12a61d2b1 335 * @param color 16 bit color
TickTock 10:aca12a61d2b1 336 */
TickTock 10:aca12a61d2b1 337 void vline(int y0, int y1, int x, int colour);
TickTock 10:aca12a61d2b1 338
TickTock 10:aca12a61d2b1 339 /** Set draw window region
TickTock 10:aca12a61d2b1 340 *
TickTock 10:aca12a61d2b1 341 * @param x horizontal position
TickTock 10:aca12a61d2b1 342 * @param y vertical position
TickTock 10:aca12a61d2b1 343 * @param w window width in pixel
TickTock 10:aca12a61d2b1 344 * @param h window height in pixels
TickTock 10:aca12a61d2b1 345 */
TickTock 10:aca12a61d2b1 346 void window (unsigned int x, unsigned int y, unsigned int w, unsigned int h);
TickTock 10:aca12a61d2b1 347
TickTock 10:aca12a61d2b1 348
TickTock 10:aca12a61d2b1 349
TickTock 10:aca12a61d2b1 350 /** Init the HX8347D controller
TickTock 10:aca12a61d2b1 351 *
TickTock 10:aca12a61d2b1 352 */
TickTock 10:aca12a61d2b1 353 void tft_reset();
TickTock 10:aca12a61d2b1 354
TickTock 10:aca12a61d2b1 355 /** Write data to the LCD controller
TickTock 10:aca12a61d2b1 356 *
TickTock 10:aca12a61d2b1 357 * @param dat data written to LCD controller
TickTock 10:aca12a61d2b1 358 *
TickTock 10:aca12a61d2b1 359 */
TickTock 10:aca12a61d2b1 360 //void wr_dat(unsigned int value);
TickTock 10:aca12a61d2b1 361 void wr_dat(unsigned char value);
TickTock 10:aca12a61d2b1 362
TickTock 10:aca12a61d2b1 363 /** Write a command the LCD controller
TickTock 10:aca12a61d2b1 364 *
TickTock 10:aca12a61d2b1 365 * @param cmd: command to be written
TickTock 10:aca12a61d2b1 366 *
TickTock 10:aca12a61d2b1 367 */
TickTock 10:aca12a61d2b1 368 void wr_cmd(unsigned char value);
TickTock 10:aca12a61d2b1 369
TickTock 10:aca12a61d2b1 370 /** Start data sequence to the LCD controller
TickTock 10:aca12a61d2b1 371 *
TickTock 10:aca12a61d2b1 372 */
TickTock 10:aca12a61d2b1 373 //void wr_dat_start();
TickTock 10:aca12a61d2b1 374
TickTock 10:aca12a61d2b1 375 /** Stop of data writing to the LCD controller
TickTock 10:aca12a61d2b1 376 *
TickTock 10:aca12a61d2b1 377 */
TickTock 10:aca12a61d2b1 378 //void wr_dat_stop();
TickTock 10:aca12a61d2b1 379
TickTock 10:aca12a61d2b1 380 /** write data to the LCD controller
TickTock 10:aca12a61d2b1 381 *
TickTock 10:aca12a61d2b1 382 * @param data to be written
TickTock 10:aca12a61d2b1 383 * *
TickTock 10:aca12a61d2b1 384 */
TickTock 10:aca12a61d2b1 385 void wr_dat_only(unsigned short dat);
TickTock 10:aca12a61d2b1 386
TickTock 10:aca12a61d2b1 387 /** Read data from the LCD controller
TickTock 10:aca12a61d2b1 388 *
TickTock 10:aca12a61d2b1 389 * @returns data from LCD controller
TickTock 10:aca12a61d2b1 390 *
TickTock 10:aca12a61d2b1 391 */
TickTock 10:aca12a61d2b1 392 unsigned short rd_dat(void);
TickTock 10:aca12a61d2b1 393
TickTock 10:aca12a61d2b1 394 /** Write a value to the to a LCD register
TickTock 10:aca12a61d2b1 395 *
TickTock 10:aca12a61d2b1 396 * @param reg register to be written
TickTock 10:aca12a61d2b1 397 * @param val data to be written
TickTock 10:aca12a61d2b1 398 */
TickTock 10:aca12a61d2b1 399 void wr_reg (unsigned char reg, unsigned char val);
TickTock 10:aca12a61d2b1 400
TickTock 10:aca12a61d2b1 401 /** Read a LCD register
TickTock 10:aca12a61d2b1 402 *
TickTock 10:aca12a61d2b1 403 * @param reg register to be read
TickTock 10:aca12a61d2b1 404 * @returns value of the register
TickTock 10:aca12a61d2b1 405 */
TickTock 10:aca12a61d2b1 406 unsigned short rd_reg (unsigned char reg);
TickTock 10:aca12a61d2b1 407
TickTock 10:aca12a61d2b1 408 unsigned char spi_port;
TickTock 10:aca12a61d2b1 409 unsigned int orientation;
TickTock 10:aca12a61d2b1 410 unsigned int seldisp;
TickTock 10:aca12a61d2b1 411 unsigned int char_x;
TickTock 10:aca12a61d2b1 412 unsigned int char_y;
TickTock 10:aca12a61d2b1 413
TickTock 10:aca12a61d2b1 414
TickTock 10:aca12a61d2b1 415 };
TickTock 10:aca12a61d2b1 416
TickTock 10:aca12a61d2b1 417 #endif