Library files for using Seeed Studio TFT Touch Shield for Arduino (ST7781R controller) together with ELMICRO TestBed for mbed. Featuring a short example program of how to calibrate the touch screen. Some basic drawing functions are also included (circle, rectangle, lines, text).
TFT.cpp@0:db0d63650413, 2012-06-28 (annotated)
- Committer:
- elmicro
- Date:
- Thu Jun 28 10:12:07 2012 +0000
- Revision:
- 0:db0d63650413
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
elmicro | 0:db0d63650413 | 1 | #include "TFT.h" |
elmicro | 0:db0d63650413 | 2 | #include "shortcuts.h" |
elmicro | 0:db0d63650413 | 3 | #include "touch.h" |
elmicro | 0:db0d63650413 | 4 | |
elmicro | 0:db0d63650413 | 5 | unsigned char DispDir=0; |
elmicro | 0:db0d63650413 | 6 | |
elmicro | 0:db0d63650413 | 7 | |
elmicro | 0:db0d63650413 | 8 | /* =================================================================== |
elmicro | 0:db0d63650413 | 9 | routine: CtrlOutput |
elmicro | 0:db0d63650413 | 10 | purpose: Sets mbed's I/Os to act as RS, RD, RW, CS output |
elmicro | 0:db0d63650413 | 11 | parameters: none |
elmicro | 0:db0d63650413 | 12 | returns: nothing |
elmicro | 0:db0d63650413 | 13 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 14 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 15 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 16 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 17 | void CtrlOutput(void) |
elmicro | 0:db0d63650413 | 18 | { |
elmicro | 0:db0d63650413 | 19 | LPC_GPIO0->FIODIR |= BIT15+BIT16+BIT17+BIT18; |
elmicro | 0:db0d63650413 | 20 | } |
elmicro | 0:db0d63650413 | 21 | |
elmicro | 0:db0d63650413 | 22 | |
elmicro | 0:db0d63650413 | 23 | /* =================================================================== |
elmicro | 0:db0d63650413 | 24 | routine: PinOutput |
elmicro | 0:db0d63650413 | 25 | purpose: Sets mbed's I/Os to act as 8 bit data output |
elmicro | 0:db0d63650413 | 26 | parameters: none |
elmicro | 0:db0d63650413 | 27 | returns: nothing |
elmicro | 0:db0d63650413 | 28 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 29 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 30 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 31 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 32 | void PinOutput(void) |
elmicro | 0:db0d63650413 | 33 | { |
elmicro | 0:db0d63650413 | 34 | LPC_GPIO0->FIODIR |= BIT0+BIT1; |
elmicro | 0:db0d63650413 | 35 | LPC_GPIO2->FIODIR |= BIT0+BIT1+BIT2+BIT3+BIT4+BIT5; |
elmicro | 0:db0d63650413 | 36 | } |
elmicro | 0:db0d63650413 | 37 | |
elmicro | 0:db0d63650413 | 38 | |
elmicro | 0:db0d63650413 | 39 | /* =================================================================== |
elmicro | 0:db0d63650413 | 40 | routine: PinInput |
elmicro | 0:db0d63650413 | 41 | purpose: Sets mbed's I/Os to act as 8 bit data input |
elmicro | 0:db0d63650413 | 42 | parameters: none |
elmicro | 0:db0d63650413 | 43 | returns: nothing |
elmicro | 0:db0d63650413 | 44 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 45 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 46 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 47 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 48 | void PinInput(void) |
elmicro | 0:db0d63650413 | 49 | { |
elmicro | 0:db0d63650413 | 50 | LPC_GPIO0->FIODIR &= ~(BIT0+BIT1); |
elmicro | 0:db0d63650413 | 51 | LPC_GPIO2->FIODIR &= ~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5); |
elmicro | 0:db0d63650413 | 52 | } |
elmicro | 0:db0d63650413 | 53 | |
elmicro | 0:db0d63650413 | 54 | /* =================================================================== |
elmicro | 0:db0d63650413 | 55 | routine: PinLow |
elmicro | 0:db0d63650413 | 56 | purpose: Sets 8 bit data output to 0x00 (all outputs low) |
elmicro | 0:db0d63650413 | 57 | parameters: none |
elmicro | 0:db0d63650413 | 58 | returns: nothing |
elmicro | 0:db0d63650413 | 59 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 60 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 61 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 62 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 63 | void PinLow(void) |
elmicro | 0:db0d63650413 | 64 | { |
elmicro | 0:db0d63650413 | 65 | LPC_GPIO0->FIOCLR = BIT0+BIT1; |
elmicro | 0:db0d63650413 | 66 | LPC_GPIO2->FIOCLR = BIT0+BIT1+BIT2+BIT3+BIT4+BIT5; |
elmicro | 0:db0d63650413 | 67 | } |
elmicro | 0:db0d63650413 | 68 | |
elmicro | 0:db0d63650413 | 69 | /* =================================================================== |
elmicro | 0:db0d63650413 | 70 | routine: PinHigh |
elmicro | 0:db0d63650413 | 71 | purpose: Sets 8 bit data output to 0xff (all outputs high) |
elmicro | 0:db0d63650413 | 72 | parameters: none |
elmicro | 0:db0d63650413 | 73 | returns: nothing |
elmicro | 0:db0d63650413 | 74 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 75 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 76 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 77 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 78 | void PinHigh(void) |
elmicro | 0:db0d63650413 | 79 | { |
elmicro | 0:db0d63650413 | 80 | LPC_GPIO0->FIOSET = BIT0+BIT1; |
elmicro | 0:db0d63650413 | 81 | LPC_GPIO2->FIOSET = BIT0+BIT1+BIT2+BIT3+BIT4+BIT5; |
elmicro | 0:db0d63650413 | 82 | } |
elmicro | 0:db0d63650413 | 83 | |
elmicro | 0:db0d63650413 | 84 | /* =================================================================== |
elmicro | 0:db0d63650413 | 85 | routine: PushData |
elmicro | 0:db0d63650413 | 86 | purpose: Sets the 8 data outputs corresponding to data byte |
elmicro | 0:db0d63650413 | 87 | which shall be transmitted to LCD |
elmicro | 0:db0d63650413 | 88 | parameters: <data> byte of data for TX |
elmicro | 0:db0d63650413 | 89 | returns: nothing |
elmicro | 0:db0d63650413 | 90 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 91 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 92 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 93 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 94 | void PushData(unsigned char data) |
elmicro | 0:db0d63650413 | 95 | { |
elmicro | 0:db0d63650413 | 96 | LPC_GPIO0->FIOCLR = 0x03; //set all outputs low |
elmicro | 0:db0d63650413 | 97 | LPC_GPIO2->FIOCLR = 0x3f; |
elmicro | 0:db0d63650413 | 98 | //as the outputs are not in order and are splittet onto two ports, |
elmicro | 0:db0d63650413 | 99 | //the data byte has to be read bit-by-bit and each bit has to set |
elmicro | 0:db0d63650413 | 100 | //a different output pin |
elmicro | 0:db0d63650413 | 101 | LPC_GPIO0->FIOSET = data&BIT0 | (data&BIT2)>>1; |
elmicro | 0:db0d63650413 | 102 | LPC_GPIO2->FIOSET = (data&BIT6) >> 6 | (data&BIT5) >> 4 | (data&BIT7) >> 5 |
elmicro | 0:db0d63650413 | 103 | | (data&BIT4) >> 1 | (data&BIT3) << 1 | (data&BIT1) << 4; |
elmicro | 0:db0d63650413 | 104 | } |
elmicro | 0:db0d63650413 | 105 | |
elmicro | 0:db0d63650413 | 106 | /* NOT YET TESTED */ |
elmicro | 0:db0d63650413 | 107 | unsigned char GetData(void) |
elmicro | 0:db0d63650413 | 108 | { |
elmicro | 0:db0d63650413 | 109 | unsigned char data = 0; |
elmicro | 0:db0d63650413 | 110 | wait(0.001); |
elmicro | 0:db0d63650413 | 111 | data = (LPC_GPIO0->FIOPIN&BIT0) | (LPC_GPIO0->FIOPIN&BIT2) >> 1; |
elmicro | 0:db0d63650413 | 112 | data |= (LPC_GPIO2->FIOPIN&BIT6) >> 6 | (LPC_GPIO2->FIOPIN&BIT5) >> 4 |
elmicro | 0:db0d63650413 | 113 | | (LPC_GPIO2->FIOPIN&BIT7) >> 5 | (LPC_GPIO2->FIOPIN&BIT4) >> 1 |
elmicro | 0:db0d63650413 | 114 | | (LPC_GPIO2->FIOPIN&BIT3) << 1 | (LPC_GPIO2->FIOPIN&BIT2) << 3; |
elmicro | 0:db0d63650413 | 115 | return data; |
elmicro | 0:db0d63650413 | 116 | } |
elmicro | 0:db0d63650413 | 117 | |
elmicro | 0:db0d63650413 | 118 | /* =================================================================== |
elmicro | 0:db0d63650413 | 119 | routine: SendCommand |
elmicro | 0:db0d63650413 | 120 | purpose: Transmits a command code to the LCD controller |
elmicro | 0:db0d63650413 | 121 | parameters: <command> command byte |
elmicro | 0:db0d63650413 | 122 | returns: nothing |
elmicro | 0:db0d63650413 | 123 | note: Each transmit to the LCD controller has to be 16 bits |
elmicro | 0:db0d63650413 | 124 | wide, which results in 2 bytes per message. |
elmicro | 0:db0d63650413 | 125 | Commands are only 8 bits wide, so the upper bits |
elmicro | 0:db0d63650413 | 126 | have to be all zero |
elmicro | 0:db0d63650413 | 127 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 128 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 129 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 130 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 131 | void SendCommand(unsigned char command) |
elmicro | 0:db0d63650413 | 132 | { |
elmicro | 0:db0d63650413 | 133 | LPC_GPIO0->FIOCLR = BIT16+BIT18; //CS and RS low |
elmicro | 0:db0d63650413 | 134 | LPC_GPIO0->FIOSET = BIT17+BIT15; //RD and WR high |
elmicro | 0:db0d63650413 | 135 | LPC_GPIO0->FIOCLR = BIT17; //WR low |
elmicro | 0:db0d63650413 | 136 | PushData(0); //commands have only 8 bits |
elmicro | 0:db0d63650413 | 137 | LPC_GPIO0->FIOSET = BIT17; //WR high |
elmicro | 0:db0d63650413 | 138 | for(int x=0; x<3; x++); //wait |
elmicro | 0:db0d63650413 | 139 | |
elmicro | 0:db0d63650413 | 140 | LPC_GPIO0->FIOCLR = BIT17; //WR low |
elmicro | 0:db0d63650413 | 141 | PushData(command); |
elmicro | 0:db0d63650413 | 142 | LPC_GPIO0->FIOSET = BIT17; //WR high |
elmicro | 0:db0d63650413 | 143 | LPC_GPIO0->FIOSET = BIT16; //CS high |
elmicro | 0:db0d63650413 | 144 | } |
elmicro | 0:db0d63650413 | 145 | |
elmicro | 0:db0d63650413 | 146 | /* =================================================================== |
elmicro | 0:db0d63650413 | 147 | routine: SendData |
elmicro | 0:db0d63650413 | 148 | purpose: Transmits 16 data bits to the LCD controller |
elmicro | 0:db0d63650413 | 149 | parameters: <data> data value |
elmicro | 0:db0d63650413 | 150 | returns: nothing |
elmicro | 0:db0d63650413 | 151 | note: Transmit has to be splitted into 2 transfers |
elmicro | 0:db0d63650413 | 152 | as interface is only 8 bits wide |
elmicro | 0:db0d63650413 | 153 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 154 | author: Stefan Guenther |
elmicro | 0:db0d63650413 | 155 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 156 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 157 | void SendData(unsigned int data) |
elmicro | 0:db0d63650413 | 158 | { |
elmicro | 0:db0d63650413 | 159 | LPC_GPIO0->FIOCLR = BIT16; //CS low |
elmicro | 0:db0d63650413 | 160 | LPC_GPIO0->FIOSET = BIT18+BIT15; //RD and RS high |
elmicro | 0:db0d63650413 | 161 | LPC_GPIO0->FIOCLR = BIT17; //WR low |
elmicro | 0:db0d63650413 | 162 | PushData((data&0xff00)>>8); //send first byte |
elmicro | 0:db0d63650413 | 163 | LPC_GPIO0->FIOSET = BIT17; //WR high |
elmicro | 0:db0d63650413 | 164 | for(int x=0; x<3; x++); //wait |
elmicro | 0:db0d63650413 | 165 | |
elmicro | 0:db0d63650413 | 166 | LPC_GPIO0->FIOCLR = BIT17; //WR low |
elmicro | 0:db0d63650413 | 167 | PushData(data&0xff); |
elmicro | 0:db0d63650413 | 168 | LPC_GPIO0->FIOSET = BIT17; //WR high |
elmicro | 0:db0d63650413 | 169 | LPC_GPIO0->FIOSET = BIT16; //CS high |
elmicro | 0:db0d63650413 | 170 | } |
elmicro | 0:db0d63650413 | 171 | |
elmicro | 0:db0d63650413 | 172 | |
elmicro | 0:db0d63650413 | 173 | /* NOT YET TESTED */ |
elmicro | 0:db0d63650413 | 174 | unsigned int ReadRegister(unsigned int reg) |
elmicro | 0:db0d63650413 | 175 | { |
elmicro | 0:db0d63650413 | 176 | unsigned int data=0; |
elmicro | 0:db0d63650413 | 177 | |
elmicro | 0:db0d63650413 | 178 | LPC_GPIO0->FIOCLR = BIT16+BIT18; //CS and RS low |
elmicro | 0:db0d63650413 | 179 | LPC_GPIO0->FIOSET = BIT15; //RD high |
elmicro | 0:db0d63650413 | 180 | PinOutput(); |
elmicro | 0:db0d63650413 | 181 | LPC_GPIO0->FIOCLR = BIT17; //WR low |
elmicro | 0:db0d63650413 | 182 | PushData(0); |
elmicro | 0:db0d63650413 | 183 | LPC_GPIO0->FIOSET = BIT17; //WR high |
elmicro | 0:db0d63650413 | 184 | LPC_GPIO0->FIOCLR = BIT17; //WR low |
elmicro | 0:db0d63650413 | 185 | PushData(reg); |
elmicro | 0:db0d63650413 | 186 | LPC_GPIO0->FIOSET = BIT17; //WR high |
elmicro | 0:db0d63650413 | 187 | PinInput(); |
elmicro | 0:db0d63650413 | 188 | PinLow(); /* ?Necessary? */ |
elmicro | 0:db0d63650413 | 189 | LPC_GPIO0->FIOSET = BIT18; //RS high |
elmicro | 0:db0d63650413 | 190 | LPC_GPIO0->FIOCLR = BIT15; //RD low |
elmicro | 0:db0d63650413 | 191 | LPC_GPIO0->FIOSET = BIT15; //RD high |
elmicro | 0:db0d63650413 | 192 | data = GetData(); |
elmicro | 0:db0d63650413 | 193 | LPC_GPIO0->FIOSET = BIT16; //CS high |
elmicro | 0:db0d63650413 | 194 | PinOutput(); |
elmicro | 0:db0d63650413 | 195 | return data; |
elmicro | 0:db0d63650413 | 196 | } |
elmicro | 0:db0d63650413 | 197 | |
elmicro | 0:db0d63650413 | 198 | |
elmicro | 0:db0d63650413 | 199 | void ClearScreen(unsigned int color) |
elmicro | 0:db0d63650413 | 200 | { |
elmicro | 0:db0d63650413 | 201 | for(unsigned char i=0;i<2;i++) |
elmicro | 0:db0d63650413 | 202 | { |
elmicro | 0:db0d63650413 | 203 | for(unsigned int f=0;f<38400;f++) |
elmicro | 0:db0d63650413 | 204 | { |
elmicro | 0:db0d63650413 | 205 | SendData(color); //black |
elmicro | 0:db0d63650413 | 206 | } |
elmicro | 0:db0d63650413 | 207 | } |
elmicro | 0:db0d63650413 | 208 | } |
elmicro | 0:db0d63650413 | 209 | |
elmicro | 0:db0d63650413 | 210 | |
elmicro | 0:db0d63650413 | 211 | void Init(void) |
elmicro | 0:db0d63650413 | 212 | { |
elmicro | 0:db0d63650413 | 213 | /* PRELOAD TFTData STRUCTURE WITH PRESET/DEFAULT VALUES */ |
elmicro | 0:db0d63650413 | 214 | TFTData.XRes = TFTRESX; |
elmicro | 0:db0d63650413 | 215 | TFTData.YRes = TFTRESY; |
elmicro | 0:db0d63650413 | 216 | TFTData.Xmin = 1250; //should be calculated |
elmicro | 0:db0d63650413 | 217 | TFTData.Xmax = 2800; //for each device! |
elmicro | 0:db0d63650413 | 218 | TFTData.Ymin = 900; |
elmicro | 0:db0d63650413 | 219 | TFTData.Ymax = 3100; |
elmicro | 0:db0d63650413 | 220 | TFTData.Xscale = 6875; |
elmicro | 0:db0d63650413 | 221 | TFTData.Yscale = 6875; |
elmicro | 0:db0d63650413 | 222 | DispDir = LEFT2RIGHT; |
elmicro | 0:db0d63650413 | 223 | |
elmicro | 0:db0d63650413 | 224 | /* SETUP MBED FOR CONNECTION WITH TFT */ |
elmicro | 0:db0d63650413 | 225 | CtrlOutput(); //CS, RD, WR, RS as output |
elmicro | 0:db0d63650413 | 226 | PinOutput(); //8-bit parallel bus |
elmicro | 0:db0d63650413 | 227 | PinLow(); //all output pins are low |
elmicro | 0:db0d63650413 | 228 | |
elmicro | 0:db0d63650413 | 229 | /* INITIALIZATION SEQUENCE */ |
elmicro | 0:db0d63650413 | 230 | wait(0.1); |
elmicro | 0:db0d63650413 | 231 | |
elmicro | 0:db0d63650413 | 232 | SendCommand(0x0001); |
elmicro | 0:db0d63650413 | 233 | SendData(0x0100); |
elmicro | 0:db0d63650413 | 234 | SendCommand(0x0002); |
elmicro | 0:db0d63650413 | 235 | SendData(0x0700); |
elmicro | 0:db0d63650413 | 236 | SendCommand(0x0003); |
elmicro | 0:db0d63650413 | 237 | SendData(0x1030); |
elmicro | 0:db0d63650413 | 238 | SendCommand(0x0004); |
elmicro | 0:db0d63650413 | 239 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 240 | SendCommand(0x0008); |
elmicro | 0:db0d63650413 | 241 | SendData(0x0302); |
elmicro | 0:db0d63650413 | 242 | SendCommand(0x000A); |
elmicro | 0:db0d63650413 | 243 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 244 | SendCommand(0x000C); |
elmicro | 0:db0d63650413 | 245 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 246 | SendCommand(0x000D); |
elmicro | 0:db0d63650413 | 247 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 248 | SendCommand(0x000F); |
elmicro | 0:db0d63650413 | 249 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 250 | wait(0.100); |
elmicro | 0:db0d63650413 | 251 | |
elmicro | 0:db0d63650413 | 252 | SendCommand(0x0030); |
elmicro | 0:db0d63650413 | 253 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 254 | SendCommand(0x0031); |
elmicro | 0:db0d63650413 | 255 | SendData(0x0405); |
elmicro | 0:db0d63650413 | 256 | SendCommand(0x0032); |
elmicro | 0:db0d63650413 | 257 | SendData(0x0203); |
elmicro | 0:db0d63650413 | 258 | SendCommand(0x0035); |
elmicro | 0:db0d63650413 | 259 | SendData(0x0004); |
elmicro | 0:db0d63650413 | 260 | SendCommand(0x0036); |
elmicro | 0:db0d63650413 | 261 | SendData(0x0B07); |
elmicro | 0:db0d63650413 | 262 | SendCommand(0x0037); |
elmicro | 0:db0d63650413 | 263 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 264 | SendCommand(0x0038); |
elmicro | 0:db0d63650413 | 265 | SendData(0x0405); |
elmicro | 0:db0d63650413 | 266 | SendCommand(0x0039); |
elmicro | 0:db0d63650413 | 267 | SendData(0x0203); |
elmicro | 0:db0d63650413 | 268 | SendCommand(0x003c); |
elmicro | 0:db0d63650413 | 269 | SendData(0x0004); |
elmicro | 0:db0d63650413 | 270 | SendCommand(0x003d); |
elmicro | 0:db0d63650413 | 271 | SendData(0x0B07); |
elmicro | 0:db0d63650413 | 272 | SendCommand(0x0020); |
elmicro | 0:db0d63650413 | 273 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 274 | SendCommand(0x0021); |
elmicro | 0:db0d63650413 | 275 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 276 | SendCommand(0x0050); |
elmicro | 0:db0d63650413 | 277 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 278 | SendCommand(0x0051); |
elmicro | 0:db0d63650413 | 279 | SendData(0x00ef); |
elmicro | 0:db0d63650413 | 280 | SendCommand(0x0052); |
elmicro | 0:db0d63650413 | 281 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 282 | SendCommand(0x0053); |
elmicro | 0:db0d63650413 | 283 | SendData(0x013f); |
elmicro | 0:db0d63650413 | 284 | wait(0.100); |
elmicro | 0:db0d63650413 | 285 | |
elmicro | 0:db0d63650413 | 286 | SendCommand(0x0060); |
elmicro | 0:db0d63650413 | 287 | SendData(0xa700); |
elmicro | 0:db0d63650413 | 288 | SendCommand(0x0061); |
elmicro | 0:db0d63650413 | 289 | SendData(0x0001); |
elmicro | 0:db0d63650413 | 290 | SendCommand(0x0090); |
elmicro | 0:db0d63650413 | 291 | SendData(0x003A); |
elmicro | 0:db0d63650413 | 292 | SendCommand(0x0095); |
elmicro | 0:db0d63650413 | 293 | SendData(0x021E); |
elmicro | 0:db0d63650413 | 294 | SendCommand(0x0080); |
elmicro | 0:db0d63650413 | 295 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 296 | SendCommand(0x0081); |
elmicro | 0:db0d63650413 | 297 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 298 | SendCommand(0x0082); |
elmicro | 0:db0d63650413 | 299 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 300 | SendCommand(0x0083); |
elmicro | 0:db0d63650413 | 301 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 302 | SendCommand(0x0084); |
elmicro | 0:db0d63650413 | 303 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 304 | SendCommand(0x0085); |
elmicro | 0:db0d63650413 | 305 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 306 | SendCommand(0x00FF); |
elmicro | 0:db0d63650413 | 307 | SendData(0x0001); |
elmicro | 0:db0d63650413 | 308 | SendCommand(0x00B0); |
elmicro | 0:db0d63650413 | 309 | SendData(0x140D); |
elmicro | 0:db0d63650413 | 310 | SendCommand(0x00FF); |
elmicro | 0:db0d63650413 | 311 | SendData(0x0000); |
elmicro | 0:db0d63650413 | 312 | wait(0.100); |
elmicro | 0:db0d63650413 | 313 | |
elmicro | 0:db0d63650413 | 314 | SendCommand(0x0007); |
elmicro | 0:db0d63650413 | 315 | SendData(0x0133); |
elmicro | 0:db0d63650413 | 316 | |
elmicro | 0:db0d63650413 | 317 | /* WAKEUP TFT FROM STANDBY */ |
elmicro | 0:db0d63650413 | 318 | SendCommand(0x0010); |
elmicro | 0:db0d63650413 | 319 | SendData(0x14E0); |
elmicro | 0:db0d63650413 | 320 | wait(0.100); |
elmicro | 0:db0d63650413 | 321 | |
elmicro | 0:db0d63650413 | 322 | SendCommand(0x0007); |
elmicro | 0:db0d63650413 | 323 | SendData(0x0133); |
elmicro | 0:db0d63650413 | 324 | SendCommand(0x0022); |
elmicro | 0:db0d63650413 | 325 | |
elmicro | 0:db0d63650413 | 326 | /* CLS */ |
elmicro | 0:db0d63650413 | 327 | for(unsigned char i=0;i<2;i++) |
elmicro | 0:db0d63650413 | 328 | { |
elmicro | 0:db0d63650413 | 329 | for(unsigned int f=0;f<38400;f++) |
elmicro | 0:db0d63650413 | 330 | { |
elmicro | 0:db0d63650413 | 331 | SendData(0); //black |
elmicro | 0:db0d63650413 | 332 | } |
elmicro | 0:db0d63650413 | 333 | } |
elmicro | 0:db0d63650413 | 334 | } |
elmicro | 0:db0d63650413 | 335 | |
elmicro | 0:db0d63650413 | 336 | |
elmicro | 0:db0d63650413 | 337 | /* =================================================================== |
elmicro | 0:db0d63650413 | 338 | routine: SetOrientation |
elmicro | 0:db0d63650413 | 339 | purpose: Sets the direction in which the X/Y-position counter |
elmicro | 0:db0d63650413 | 340 | autoincrements (used by DrawRectangle) |
elmicro | 0:db0d63650413 | 341 | parameters: <layout> direction control |
elmicro | 0:db0d63650413 | 342 | returns: nothing |
elmicro | 0:db0d63650413 | 343 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 344 | author: Seeed Studio |
elmicro | 0:db0d63650413 | 345 | co-author: Stefan Guenther |
elmicro | 0:db0d63650413 | 346 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 347 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 348 | void SetOrientation(unsigned char layout) |
elmicro | 0:db0d63650413 | 349 | { |
elmicro | 0:db0d63650413 | 350 | SendCommand(0x03); |
elmicro | 0:db0d63650413 | 351 | SendData((layout==1)?(0x5038):(0x5030)); |
elmicro | 0:db0d63650413 | 352 | SendCommand(0x0022); |
elmicro | 0:db0d63650413 | 353 | } |
elmicro | 0:db0d63650413 | 354 | |
elmicro | 0:db0d63650413 | 355 | |
elmicro | 0:db0d63650413 | 356 | void SetDirection(unsigned char dir) |
elmicro | 0:db0d63650413 | 357 | { |
elmicro | 0:db0d63650413 | 358 | DispDir = dir; |
elmicro | 0:db0d63650413 | 359 | } |
elmicro | 0:db0d63650413 | 360 | |
elmicro | 0:db0d63650413 | 361 | |
elmicro | 0:db0d63650413 | 362 | /* =================================================================== |
elmicro | 0:db0d63650413 | 363 | routine: SetXY |
elmicro | 0:db0d63650413 | 364 | purpose: Sets virtual "cursor" to specific pixel |
elmicro | 0:db0d63650413 | 365 | parameters: <posX, posY> |
elmicro | 0:db0d63650413 | 366 | returns: nothing |
elmicro | 0:db0d63650413 | 367 | note: In fact, this tells the LCD controller the next |
elmicro | 0:db0d63650413 | 368 | SRAM address to use for the following color value |
elmicro | 0:db0d63650413 | 369 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 370 | author: Seeed Studio |
elmicro | 0:db0d63650413 | 371 | co-author: Stefan Guenther |
elmicro | 0:db0d63650413 | 372 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 373 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 374 | void SetXY(unsigned int posX, unsigned int posY) |
elmicro | 0:db0d63650413 | 375 | { |
elmicro | 0:db0d63650413 | 376 | SendCommand(0x20); //set X |
elmicro | 0:db0d63650413 | 377 | SendData(posX); |
elmicro | 0:db0d63650413 | 378 | SendCommand(0x21); //set Y |
elmicro | 0:db0d63650413 | 379 | SendData(posY); |
elmicro | 0:db0d63650413 | 380 | SendCommand(0x22); //start command for writing into display SRAM |
elmicro | 0:db0d63650413 | 381 | } |
elmicro | 0:db0d63650413 | 382 | |
elmicro | 0:db0d63650413 | 383 | |
elmicro | 0:db0d63650413 | 384 | /* =================================================================== |
elmicro | 0:db0d63650413 | 385 | routine: SetPixel |
elmicro | 0:db0d63650413 | 386 | purpose: Colors a single pixel |
elmicro | 0:db0d63650413 | 387 | parameters: <posX, posY, color> |
elmicro | 0:db0d63650413 | 388 | returns: nothing |
elmicro | 0:db0d63650413 | 389 | note: The most basic function for displaying content onto |
elmicro | 0:db0d63650413 | 390 | the TFT display |
elmicro | 0:db0d63650413 | 391 | date: 2012-06-27 |
elmicro | 0:db0d63650413 | 392 | author: Seeed Studio |
elmicro | 0:db0d63650413 | 393 | co-author: Stefan Guenther |
elmicro | 0:db0d63650413 | 394 | Elektronikladen | ELMICRO |
elmicro | 0:db0d63650413 | 395 | -------------------------------------------------------------------*/ |
elmicro | 0:db0d63650413 | 396 | void SetPixel(unsigned int posX, unsigned int posY, unsigned int color) |
elmicro | 0:db0d63650413 | 397 | { |
elmicro | 0:db0d63650413 | 398 | SetXY(posX, posY); |
elmicro | 0:db0d63650413 | 399 | SendData(color); |
elmicro | 0:db0d63650413 | 400 | } |