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).

Dependencies:   mbed

Committer:
elmicro
Date:
Thu Jun 28 10:12:07 2012 +0000
Revision:
0:db0d63650413

        

Who changed what in which revision?

UserRevisionLine numberNew 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 }