Demo for FT800 library, K64F, Bitmaps, RGB332, RGB565

Dependencies:   FT800-480x272

Committer:
nz
Date:
Thu Dec 31 20:49:01 2020 +0000
Revision:
1:bf9459555260
Parent:
0:2cbd522b903e
update

Who changed what in which revision?

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