Nikolai Zimfer
/
FT800-Demo-Bitmap
Demo for FT800 library, K64F, Bitmaps, RGB332, RGB565
main.cpp@1:bf9459555260, 2020-12-31 (annotated)
- Committer:
- nz
- Date:
- Thu Dec 31 20:49:01 2020 +0000
- Revision:
- 1:bf9459555260
- Parent:
- 0:2cbd522b903e
update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nz | 0:2cbd522b903e | 1 | /* |
nz | 0:2cbd522b903e | 2 | * HARDWARE: |
nz | 0:2cbd522b903e | 3 | * Board FRDM-K64F - https://os.mbed.com/platforms/FRDM-K64F/ |
nz | 0:2cbd522b903e | 4 | * Display 4.3" 480 x 272 (RVT43ULFNWC03) - https://riverdi.com/product/rvt43ulfnwc0x/ |
nz | 0:2cbd522b903e | 5 | * Break Out Board 20 - https://riverdi.com/product/break-out-board-20/ |
nz | 0:2cbd522b903e | 6 | * Cable FFC, 0.5mm pitch, 20 pin, 150 mm - https://riverdi.com/product/ffc0520150/ |
nz | 0:2cbd522b903e | 7 | * |
nz | 0:2cbd522b903e | 8 | * WIRING: |
nz | 0:2cbd522b903e | 9 | * ----------------------------------- |
nz | 0:2cbd522b903e | 10 | * FRDM-K64F Break Out Board |
nz | 0:2cbd522b903e | 11 | * ----------------------------------- |
nz | 0:2cbd522b903e | 12 | * +3.3V --- Pin 1 VDD, Pin 17 BLVDD |
nz | 0:2cbd522b903e | 13 | * GND --- Pin 2 GND |
nz | 0:2cbd522b903e | 14 | * D13 (PTD1) SCLK --- Pin 3 SPI SCLK |
nz | 0:2cbd522b903e | 15 | * D12 (PTD3) MISO --- Pin 4 MISO |
nz | 0:2cbd522b903e | 16 | * D11 (PTD2) MOSI --- PIN 5 MOSI |
nz | 0:2cbd522b903e | 17 | * D10 (PTD0) --- Pin 6 CS |
nz | 0:2cbd522b903e | 18 | * D9 (PTC4) --- Pin 7 INT |
nz | 0:2cbd522b903e | 19 | * D8 (PTC12) --- Pin 8 PD |
nz | 0:2cbd522b903e | 20 | * ----------------------------------- |
nz | 0:2cbd522b903e | 21 | * |
nz | 0:2cbd522b903e | 22 | * SOFTWARE: |
nz | 0:2cbd522b903e | 23 | * Image2Bitmap.exe - https://github.com/FoxExe/Image2Bitmap |
nz | 0:2cbd522b903e | 24 | */ |
nz | 0:2cbd522b903e | 25 | |
nz | 0:2cbd522b903e | 26 | #include "mbed.h" |
nz | 0:2cbd522b903e | 27 | #include "FT800.h" |
nz | 0:2cbd522b903e | 28 | #include "images.h" |
nz | 0:2cbd522b903e | 29 | /* |
nz | 0:2cbd522b903e | 30 | FT800 TFT(MOSI,MISO, SCK, CS, INT, PD); */ |
nz | 0:2cbd522b903e | 31 | FT800 TFT( D11, D12, D13, D10, D9, D8); // FRDM-K64F |
nz | 0:2cbd522b903e | 32 | |
nz | 0:2cbd522b903e | 33 | uint8_t i; |
nz | 0:2cbd522b903e | 34 | char textbuff[32]; |
nz | 0:2cbd522b903e | 35 | |
nz | 0:2cbd522b903e | 36 | int main() |
nz | 0:2cbd522b903e | 37 | { |
nz | 0:2cbd522b903e | 38 | // for console |
nz | 0:2cbd522b903e | 39 | //printf("Mbed OS %d.%d.%d.\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION); |
nz | 0:2cbd522b903e | 40 | sprintf(textbuff, "Mbed OS %d.%d.%d.", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION); |
nz | 0:2cbd522b903e | 41 | |
nz | 0:2cbd522b903e | 42 | TFT.Init(); |
nz | 0:2cbd522b903e | 43 | |
nz | 0:2cbd522b903e | 44 | // Draw Logo |
nz | 0:2cbd522b903e | 45 | TFT.DLstart(); // start Display Liste |
nz | 0:2cbd522b903e | 46 | TFT.drawLogo(); // start Logo |
nz | 0:2cbd522b903e | 47 | TFT.waitLogo(); // wait |
nz | 0:2cbd522b903e | 48 | TFT.DLend(); // end Display Liste |
nz | 0:2cbd522b903e | 49 | thread_sleep_for(3000); |
nz | 0:2cbd522b903e | 50 | |
nz | 0:2cbd522b903e | 51 | // Draw Background color red |
nz | 0:2cbd522b903e | 52 | TFT.DLstart(RED); |
nz | 0:2cbd522b903e | 53 | TFT.drawText(240,135, 29, BLACK, OPT_CENTER, textbuff); |
nz | 0:2cbd522b903e | 54 | TFT.DLend(); |
nz | 0:2cbd522b903e | 55 | thread_sleep_for(3000); |
nz | 0:2cbd522b903e | 56 | |
nz | 0:2cbd522b903e | 57 | // Draw Background color green |
nz | 0:2cbd522b903e | 58 | TFT.DLstart(GREEN); |
nz | 0:2cbd522b903e | 59 | TFT.DLend(); |
nz | 0:2cbd522b903e | 60 | thread_sleep_for(3000); |
nz | 0:2cbd522b903e | 61 | |
nz | 0:2cbd522b903e | 62 | // Draw Background color blue |
nz | 0:2cbd522b903e | 63 | TFT.DLstart(BLUE); |
nz | 0:2cbd522b903e | 64 | TFT.DLend(); |
nz | 0:2cbd522b903e | 65 | thread_sleep_for(3000); |
nz | 0:2cbd522b903e | 66 | |
nz | 0:2cbd522b903e | 67 | // ------------------------------------------------------------------------- |
nz | 0:2cbd522b903e | 68 | // https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT800.pdf |
nz | 0:2cbd522b903e | 69 | TFT.DLstart(BLACK); |
nz | 0:2cbd522b903e | 70 | TFT.beginBitmap(); |
nz | 0:2cbd522b903e | 71 | |
nz | 0:2cbd522b903e | 72 | // Draw ASCII Characters number 0 - 127, Font 18 |
nz | 0:2cbd522b903e | 73 | for (i = 0; i <= 32; i++) { TFT.Vertex2II( i*10, 0, 18, i); } |
nz | 0:2cbd522b903e | 74 | for (i = 33; i <= 64; i++) { TFT.Vertex2II((i-33)*10, 20, 18, i); } |
nz | 0:2cbd522b903e | 75 | for (i = 65; i <= 96; i++) { TFT.Vertex2II((i-65)*10, 40, 18, i); } |
nz | 0:2cbd522b903e | 76 | for (i = 98; i < 128; i++) { TFT.Vertex2II((i-98)*10, 60, 18, i); } |
nz | 0:2cbd522b903e | 77 | |
nz | 0:2cbd522b903e | 78 | // Draw Characters number 0 - 127, Font 19 |
nz | 0:2cbd522b903e | 79 | TFT.setColor(GREEN); |
nz | 0:2cbd522b903e | 80 | for (i = 0; i <= 32; i++) { TFT.Vertex2II( i*10, 120, 19, i); } |
nz | 0:2cbd522b903e | 81 | for (i = 33; i <= 64; i++) { TFT.Vertex2II((i-33)*10,140, 19, i); } |
nz | 0:2cbd522b903e | 82 | for (i = 65; i <= 96; i++) { TFT.Vertex2II((i-65)*10,160, 19, i); } |
nz | 0:2cbd522b903e | 83 | for (i = 98; i < 128; i++) { TFT.Vertex2II((i-98)*10,180, 19, i); } |
nz | 0:2cbd522b903e | 84 | |
nz | 0:2cbd522b903e | 85 | TFT.DLend(); |
nz | 0:2cbd522b903e | 86 | thread_sleep_for(5000); |
nz | 0:2cbd522b903e | 87 | |
nz | 0:2cbd522b903e | 88 | // ------------------------------------------------------------------------- |
nz | 0:2cbd522b903e | 89 | // Pattern for Background. |
nz | 0:2cbd522b903e | 90 | static const uint8_t pict[] = {0x77,0xE2,0xC1,0xA3,0x77,0x3A,0x1C,0x2E}; |
nz | 0:2cbd522b903e | 91 | TFT.writeRAMG(0, pict, 8); // Writing a picture 8x8 pixels to RAM_G |
nz | 0:2cbd522b903e | 92 | TFT.DLstart(BLACK); // 0х77 = 0b01110111 = ▓...▓... |
nz | 0:2cbd522b903e | 93 | TFT.bitmapSource(0); // 0xE2 = 0b11100010 = ...▓▓▓.▓ |
nz | 0:2cbd522b903e | 94 | TFT.bitmapLayout(L1, 1, 8); // 0xC1 = 0b11000001 = ..▓▓▓▓▓. |
nz | 0:2cbd522b903e | 95 | TFT.bitmapSize(NEAREST,REPEAT,REPEAT,480,272); // 0xA3 = 0b10100011 = .▓.▓▓▓.. |
nz | 0:2cbd522b903e | 96 | TFT.beginBitmap(); // 0x77 = 0b01110111 = ▓...▓... |
nz | 0:2cbd522b903e | 97 | TFT.Vertex2II(0,0, 0,0); // 0x3A = 0b00111010 = ▓▓...▓.▓ |
nz | 0:2cbd522b903e | 98 | TFT.DLend(); // 0x1C = 0b00011100 = ▓▓▓...▓▓ |
nz | 0:2cbd522b903e | 99 | thread_sleep_for(5000); // 0x2E = 0b00101110 = ▓▓.▓...▓ |
nz | 0:2cbd522b903e | 100 | |
nz | 0:2cbd522b903e | 101 | // ------------------------------------------------------------------------- |
nz | 0:2cbd522b903e | 102 | // GRADIENT SPECTRUM for Background |
nz | 0:2cbd522b903e | 103 | TFT.writeRAMG16(0, spectrum, 384); // Writing a spektrum[] to RAM_G |
nz | 0:2cbd522b903e | 104 | TFT.DLstart(BLACK); |
nz | 0:2cbd522b903e | 105 | TFT.bitmapSource(0); |
nz | 0:2cbd522b903e | 106 | TFT.bitmapLayout(RGB565, 768, 1); |
nz | 0:2cbd522b903e | 107 | TFT.bitmapSize(NEAREST,BORDER,REPEAT,384,272); |
nz | 0:2cbd522b903e | 108 | TFT.beginBitmap(); |
nz | 0:2cbd522b903e | 109 | TFT.Vertex2II(0,0, 0,0); |
nz | 0:2cbd522b903e | 110 | TFT.DLend(); |
nz | 0:2cbd522b903e | 111 | thread_sleep_for(5000); |
nz | 0:2cbd522b903e | 112 | |
nz | 0:2cbd522b903e | 113 | // ------------------------------------------------------------------------- |
nz | 0:2cbd522b903e | 114 | // The Image «butterfly», Size 100x80 pixels, data typ uint16_t |
nz | 0:2cbd522b903e | 115 | // Format RGB565 (2 Bytes per pixel) |
nz | 0:2cbd522b903e | 116 | TFT.writeRAMG16(0, butterfly, 8000); |
nz | 0:2cbd522b903e | 117 | TFT.DLstart(WHITE); |
nz | 0:2cbd522b903e | 118 | TFT.bitmapSource(0); |
nz | 0:2cbd522b903e | 119 | TFT.bitmapLayout(RGB565, 200, 80); |
nz | 0:2cbd522b903e | 120 | TFT.bitmapSize(NEAREST,BORDER,BORDER,100,80); |
nz | 0:2cbd522b903e | 121 | TFT.beginBitmap(); |
nz | 0:2cbd522b903e | 122 | TFT.Vertex2II(190,100, 0,0); |
nz | 0:2cbd522b903e | 123 | TFT.DLend(); |
nz | 0:2cbd522b903e | 124 | thread_sleep_for(5000); |
nz | 0:2cbd522b903e | 125 | |
nz | 0:2cbd522b903e | 126 | // ------------------------------------------------------------------------- |
nz | 0:2cbd522b903e | 127 | // The Image «Che Guevara», Size 480x272 pixels and consists of 2 parts (image1 & image2) |
nz | 0:2cbd522b903e | 128 | // Format RGB332 (1 Byte per pixel: RRRGGGBB, 256 colors) |
nz | 0:2cbd522b903e | 129 | TFT.writeRAMG( 0, CheGuevara1, 65280); |
nz | 0:2cbd522b903e | 130 | TFT.writeRAMG(65280, CheGuevara2, 65280); |
nz | 0:2cbd522b903e | 131 | |
nz | 0:2cbd522b903e | 132 | TFT.DLstart(BLACK); |
nz | 0:2cbd522b903e | 133 | TFT.bitmapSource(0); |
nz | 0:2cbd522b903e | 134 | TFT.bitmapLayout(RGB332, 480, 272); |
nz | 0:2cbd522b903e | 135 | TFT.bitmapSize(NEAREST,BORDER,BORDER,480,272); |
nz | 0:2cbd522b903e | 136 | TFT.beginBitmap(); |
nz | 0:2cbd522b903e | 137 | TFT.Vertex2II(0,0, 0,0); |
nz | 0:2cbd522b903e | 138 | TFT.DLend(); |
nz | 0:2cbd522b903e | 139 | |
nz | 0:2cbd522b903e | 140 | return 0; |
nz | 0:2cbd522b903e | 141 | } |