a

Dependencies:   HTTPClient SDFileSystemA SeeedStudioTFTv2 TFT_fonts WIZnet_Library mbed

Fork of Seeed_TFT_Touch_Shield by Bohyun Bang

Committer:
bangbh
Date:
Sat Aug 15 21:14:53 2015 +0000
Revision:
6:12f28bac9400
A

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bangbh 6:12f28bac9400 1 /* mbed library for resistive touch pads
bangbh 6:12f28bac9400 2 * uses 4 pins - 2 IO and 2 Analog
bangbh 6:12f28bac9400 3
bangbh 6:12f28bac9400 4 * c 2011 Peter Drescher - DC2PD
bangbh 6:12f28bac9400 5 *
bangbh 6:12f28bac9400 6 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
bangbh 6:12f28bac9400 7 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
bangbh 6:12f28bac9400 8 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
bangbh 6:12f28bac9400 9 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
bangbh 6:12f28bac9400 10 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
bangbh 6:12f28bac9400 11 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
bangbh 6:12f28bac9400 12 * THE SOFTWARE.
bangbh 6:12f28bac9400 13 */
bangbh 6:12f28bac9400 14
bangbh 6:12f28bac9400 15
bangbh 6:12f28bac9400 16 #include "mbed.h"
bangbh 6:12f28bac9400 17 #include "MySeeedStudioTFTv2.h"
bangbh 6:12f28bac9400 18
bangbh 6:12f28bac9400 19 //#define TFT_DEBUG
bangbh 6:12f28bac9400 20
bangbh 6:12f28bac9400 21 #ifdef TFT_DEBUG
bangbh 6:12f28bac9400 22 extern Serial pc;
bangbh 6:12f28bac9400 23 #endif
bangbh 6:12f28bac9400 24
bangbh 6:12f28bac9400 25
bangbh 6:12f28bac9400 26 MySeeedStudioTFTv2::MySeeedStudioTFTv2(PinName xp, PinName xm, PinName yp, PinName ym,
bangbh 6:12f28bac9400 27 PinName mosi, PinName miso, PinName sclk,
bangbh 6:12f28bac9400 28 PinName csTft, PinName dcTft, PinName blTft,
bangbh 6:12f28bac9400 29 PinName csSd) : SeeedStudioTFTv2(xp,xm,yp,ym,mosi,miso,sclk,csTft,dcTft,blTft,csSd)
bangbh 6:12f28bac9400 30 {
bangbh 6:12f28bac9400 31 SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.frequency(24000000);
bangbh 6:12f28bac9400 32 SeeedStudioTFTv2::SDFileSystem::_spi.frequency(24000000);
bangbh 6:12f28bac9400 33 }
bangbh 6:12f28bac9400 34
bangbh 6:12f28bac9400 35 int MySeeedStudioTFTv2::DrawBitmapFile(unsigned char x, unsigned char y, FILE * fp)
bangbh 6:12f28bac9400 36 {
bangbh 6:12f28bac9400 37
bangbh 6:12f28bac9400 38 char img[3*240];
bangbh 6:12f28bac9400 39 uint32_t imgsize = 0;
bangbh 6:12f28bac9400 40 uint32_t offset = 0;
bangbh 6:12f28bac9400 41 uint32_t imgw = 0;
bangbh 6:12f28bac9400 42 uint32_t imgh = 0;
bangbh 6:12f28bac9400 43 char colbits = 0;
bangbh 6:12f28bac9400 44 char compress = 0;
bangbh 6:12f28bac9400 45 uint16_t col;
bangbh 6:12f28bac9400 46
bangbh 6:12f28bac9400 47 int i, j;
bangbh 6:12f28bac9400 48
bangbh 6:12f28bac9400 49 if(fp == NULL) return -1;
bangbh 6:12f28bac9400 50 if(fgetc(fp) != 0x42) return -2;
bangbh 6:12f28bac9400 51 if(fgetc(fp) != 0x4D) return -2;
bangbh 6:12f28bac9400 52
bangbh 6:12f28bac9400 53 for(i = 0; i < 4; i++)
bangbh 6:12f28bac9400 54 {
bangbh 6:12f28bac9400 55 imgsize += (((uint32_t)fgetc(fp)) << i*8);
bangbh 6:12f28bac9400 56 }
bangbh 6:12f28bac9400 57 #ifdef TFT_DEBUG
bangbh 6:12f28bac9400 58 pc.printf("BMP SIZE:%d\r\n",imgsize);
bangbh 6:12f28bac9400 59 #endif
bangbh 6:12f28bac9400 60 fseek(fp,4,SEEK_CUR);
bangbh 6:12f28bac9400 61 for(i = 0; i < 4; i++)
bangbh 6:12f28bac9400 62 {
bangbh 6:12f28bac9400 63 offset += (((uint32_t)fgetc(fp)) << i*8);
bangbh 6:12f28bac9400 64 }
bangbh 6:12f28bac9400 65 #ifdef TFT_DEBUG
bangbh 6:12f28bac9400 66 pc.printf("BMP OFFSET:%d\r\n",offset);
bangbh 6:12f28bac9400 67 #endif
bangbh 6:12f28bac9400 68 fseek(fp,4,SEEK_CUR);
bangbh 6:12f28bac9400 69 for(i = 0; i < 4; i++)
bangbh 6:12f28bac9400 70 {
bangbh 6:12f28bac9400 71 imgw += (((uint32_t)fgetc(fp)) << i*8);
bangbh 6:12f28bac9400 72 }
bangbh 6:12f28bac9400 73 if(imgw > 240) return -3;
bangbh 6:12f28bac9400 74
bangbh 6:12f28bac9400 75 for(i = 0; i < 4; i++)
bangbh 6:12f28bac9400 76 {
bangbh 6:12f28bac9400 77 imgh += (((uint32_t)fgetc(fp)) << i*8);
bangbh 6:12f28bac9400 78 }
bangbh 6:12f28bac9400 79 if(imgh > 320) return -3;
bangbh 6:12f28bac9400 80
bangbh 6:12f28bac9400 81 fseek(fp,2,SEEK_CUR);
bangbh 6:12f28bac9400 82 colbits = fgetc(fp);
bangbh 6:12f28bac9400 83 //if(colbits != 16 || colbits != 24) return -4;
bangbh 6:12f28bac9400 84 fgetc(fp);
bangbh 6:12f28bac9400 85 if((compress=fgetc(fp)) != 0)
bangbh 6:12f28bac9400 86 {
bangbh 6:12f28bac9400 87 #ifdef TFT_DEBUG
bangbh 6:12f28bac9400 88 pc.printf("Not supported compress : %d\r\n",compress);
bangbh 6:12f28bac9400 89 #endif
bangbh 6:12f28bac9400 90 return -4;
bangbh 6:12f28bac9400 91 }
bangbh 6:12f28bac9400 92
bangbh 6:12f28bac9400 93
bangbh 6:12f28bac9400 94 #ifdef TFT_DEBUG
bangbh 6:12f28bac9400 95 pc.printf("RESOL : %d col, %d X %d",colbits,imgw,imgh);
bangbh 6:12f28bac9400 96 #endif
bangbh 6:12f28bac9400 97
bangbh 6:12f28bac9400 98 fseek(fp, offset, SEEK_SET);
bangbh 6:12f28bac9400 99 for (j = imgh-1; j >= 0; j--) //Lines bottoms up
bangbh 6:12f28bac9400 100 {
bangbh 6:12f28bac9400 101 fread(img,sizeof(char),imgw*3,fp);
bangbh 6:12f28bac9400 102 window(x, j+y, imgw, 1);
bangbh 6:12f28bac9400 103 window(x, j+y, imgw, 1);
bangbh 6:12f28bac9400 104 wr_cmd(0x2C); // send pixel
bangbh 6:12f28bac9400 105 #ifndef TARGET_KL25Z // 16 Bit SPI
bangbh 6:12f28bac9400 106 SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.format(16,3);
bangbh 6:12f28bac9400 107 #endif // switch to 16 bit Mode 3
bangbh 6:12f28bac9400 108
bangbh 6:12f28bac9400 109 for(i = 0; i < imgw; i++)
bangbh 6:12f28bac9400 110 {
bangbh 6:12f28bac9400 111 /* if(colbits == 16)
bangbh 6:12f28bac9400 112 {
bangbh 6:12f28bac9400 113 col = (uint16_t)img[2*i+1];
bangbh 6:12f28bac9400 114 col <<= 8;
bangbh 6:12f28bac9400 115 col += (uint16_t)img[2*i];
bangbh 6:12f28bac9400 116 }
bangbh 6:12f28bac9400 117 else if(colbits == 24) */
bangbh 6:12f28bac9400 118 {
bangbh 6:12f28bac9400 119 col = RGB((uint16_t)img[3*i+2],(uint16_t)img[3*i+1], (uint16_t)img[3*i]);
bangbh 6:12f28bac9400 120 }
bangbh 6:12f28bac9400 121 #ifdef TFT_DEBUG
bangbh 6:12f28bac9400 122 //pc.printf("RGB(%d): (%d,%d,%d) -> %04X\r\n ",i,img[3*i+2],img[3*i+1],img[3*i],col);
bangbh 6:12f28bac9400 123 #endif
bangbh 6:12f28bac9400 124
bangbh 6:12f28bac9400 125 #ifdef TAGET_KL25Z
bangbh 6:12f28bac9400 126 SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.write((char)(col>>8));
bangbh 6:12f28bac9400 127 SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.write((char)col);
bangbh 6:12f28bac9400 128 #else
bangbh 6:12f28bac9400 129 SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.write(col);
bangbh 6:12f28bac9400 130 #endif
bangbh 6:12f28bac9400 131 }
bangbh 6:12f28bac9400 132 SeeedStudioTFTv2::SPI_TFT_ILI9341::_cs = 1;
bangbh 6:12f28bac9400 133 #ifndef TARGET_KL25Z // 16 Bit SPI
bangbh 6:12f28bac9400 134 SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.format(8,3);
bangbh 6:12f28bac9400 135 #endif
bangbh 6:12f28bac9400 136
bangbh 6:12f28bac9400 137 }
bangbh 6:12f28bac9400 138 WindowMax();
bangbh 6:12f28bac9400 139
bangbh 6:12f28bac9400 140 return 0;
bangbh 6:12f28bac9400 141 }