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

Dependencies:   FT800-480x272

Committer:
nz
Date:
Thu Dec 31 16:06:39 2020 +0000
Revision:
0:2cbd522b903e
Child:
1:bf9459555260
Demo for FT800 library, Bitmaps, RGB565, RGB332

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 * IMAGE:
nz 0:2cbd522b903e 26 * https://os.mbed.com/media/uploads/nz/demo-clock.jpg
nz 0:2cbd522b903e 27 */
nz 0:2cbd522b903e 28
nz 0:2cbd522b903e 29 #include "mbed.h"
nz 0:2cbd522b903e 30 #include "FT800.h"
nz 0:2cbd522b903e 31 #include "images.h"
nz 0:2cbd522b903e 32 /*
nz 0:2cbd522b903e 33 FT800 TFT(MOSI,MISO, SCK, CS, INT, PD); */
nz 0:2cbd522b903e 34 FT800 TFT( D11, D12, D13, D10, D9, D8); // FRDM-K64F
nz 0:2cbd522b903e 35
nz 0:2cbd522b903e 36 uint8_t i;
nz 0:2cbd522b903e 37 char textbuff[32];
nz 0:2cbd522b903e 38
nz 0:2cbd522b903e 39 int main()
nz 0:2cbd522b903e 40 {
nz 0:2cbd522b903e 41 // for console
nz 0:2cbd522b903e 42 //printf("Mbed OS %d.%d.%d.\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
nz 0:2cbd522b903e 43 sprintf(textbuff, "Mbed OS %d.%d.%d.", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
nz 0:2cbd522b903e 44
nz 0:2cbd522b903e 45 TFT.Init();
nz 0:2cbd522b903e 46
nz 0:2cbd522b903e 47 // Draw Logo
nz 0:2cbd522b903e 48 TFT.DLstart(); // start Display Liste
nz 0:2cbd522b903e 49 TFT.drawLogo(); // start Logo
nz 0:2cbd522b903e 50 TFT.waitLogo(); // wait
nz 0:2cbd522b903e 51 TFT.DLend(); // end Display Liste
nz 0:2cbd522b903e 52 thread_sleep_for(3000);
nz 0:2cbd522b903e 53
nz 0:2cbd522b903e 54 // Draw Background color red
nz 0:2cbd522b903e 55 TFT.DLstart(RED);
nz 0:2cbd522b903e 56 TFT.drawText(240,135, 29, BLACK, OPT_CENTER, textbuff);
nz 0:2cbd522b903e 57 TFT.DLend();
nz 0:2cbd522b903e 58 thread_sleep_for(3000);
nz 0:2cbd522b903e 59
nz 0:2cbd522b903e 60 // Draw Background color green
nz 0:2cbd522b903e 61 TFT.DLstart(GREEN);
nz 0:2cbd522b903e 62 TFT.DLend();
nz 0:2cbd522b903e 63 thread_sleep_for(3000);
nz 0:2cbd522b903e 64
nz 0:2cbd522b903e 65 // Draw Background color blue
nz 0:2cbd522b903e 66 TFT.DLstart(BLUE);
nz 0:2cbd522b903e 67 TFT.DLend();
nz 0:2cbd522b903e 68 thread_sleep_for(3000);
nz 0:2cbd522b903e 69
nz 0:2cbd522b903e 70 // -------------------------------------------------------------------------
nz 0:2cbd522b903e 71 // https://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT800.pdf
nz 0:2cbd522b903e 72 TFT.DLstart(BLACK);
nz 0:2cbd522b903e 73 TFT.beginBitmap();
nz 0:2cbd522b903e 74
nz 0:2cbd522b903e 75 // Draw ASCII Characters number 0 - 127, Font 18
nz 0:2cbd522b903e 76 for (i = 0; i <= 32; i++) { TFT.Vertex2II( i*10, 0, 18, i); }
nz 0:2cbd522b903e 77 for (i = 33; i <= 64; i++) { TFT.Vertex2II((i-33)*10, 20, 18, i); }
nz 0:2cbd522b903e 78 for (i = 65; i <= 96; i++) { TFT.Vertex2II((i-65)*10, 40, 18, i); }
nz 0:2cbd522b903e 79 for (i = 98; i < 128; i++) { TFT.Vertex2II((i-98)*10, 60, 18, i); }
nz 0:2cbd522b903e 80
nz 0:2cbd522b903e 81 // Draw Characters number 0 - 127, Font 19
nz 0:2cbd522b903e 82 TFT.setColor(GREEN);
nz 0:2cbd522b903e 83 for (i = 0; i <= 32; i++) { TFT.Vertex2II( i*10, 120, 19, i); }
nz 0:2cbd522b903e 84 for (i = 33; i <= 64; i++) { TFT.Vertex2II((i-33)*10,140, 19, i); }
nz 0:2cbd522b903e 85 for (i = 65; i <= 96; i++) { TFT.Vertex2II((i-65)*10,160, 19, i); }
nz 0:2cbd522b903e 86 for (i = 98; i < 128; i++) { TFT.Vertex2II((i-98)*10,180, 19, i); }
nz 0:2cbd522b903e 87
nz 0:2cbd522b903e 88 TFT.DLend();
nz 0:2cbd522b903e 89 thread_sleep_for(5000);
nz 0:2cbd522b903e 90
nz 0:2cbd522b903e 91 // -------------------------------------------------------------------------
nz 0:2cbd522b903e 92 // Pattern for Background.
nz 0:2cbd522b903e 93 static const uint8_t pict[] = {0x77,0xE2,0xC1,0xA3,0x77,0x3A,0x1C,0x2E};
nz 0:2cbd522b903e 94 TFT.writeRAMG(0, pict, 8); // Writing a picture 8x8 pixels to RAM_G
nz 0:2cbd522b903e 95 TFT.DLstart(BLACK); // 0х77 = 0b01110111 = ▓...▓...
nz 0:2cbd522b903e 96 TFT.bitmapSource(0); // 0xE2 = 0b11100010 = ...▓▓▓.▓
nz 0:2cbd522b903e 97 TFT.bitmapLayout(L1, 1, 8); // 0xC1 = 0b11000001 = ..▓▓▓▓▓.
nz 0:2cbd522b903e 98 TFT.bitmapSize(NEAREST,REPEAT,REPEAT,480,272); // 0xA3 = 0b10100011 = .▓.▓▓▓..
nz 0:2cbd522b903e 99 TFT.beginBitmap(); // 0x77 = 0b01110111 = ▓...▓...
nz 0:2cbd522b903e 100 TFT.Vertex2II(0,0, 0,0); // 0x3A = 0b00111010 = ▓▓...▓.▓
nz 0:2cbd522b903e 101 TFT.DLend(); // 0x1C = 0b00011100 = ▓▓▓...▓▓
nz 0:2cbd522b903e 102 thread_sleep_for(5000); // 0x2E = 0b00101110 = ▓▓.▓...▓
nz 0:2cbd522b903e 103
nz 0:2cbd522b903e 104 // -------------------------------------------------------------------------
nz 0:2cbd522b903e 105 // GRADIENT SPECTRUM for Background
nz 0:2cbd522b903e 106 TFT.writeRAMG16(0, spectrum, 384); // Writing a spektrum[] to RAM_G
nz 0:2cbd522b903e 107 TFT.DLstart(BLACK);
nz 0:2cbd522b903e 108 TFT.bitmapSource(0);
nz 0:2cbd522b903e 109 TFT.bitmapLayout(RGB565, 768, 1);
nz 0:2cbd522b903e 110 TFT.bitmapSize(NEAREST,BORDER,REPEAT,384,272);
nz 0:2cbd522b903e 111 TFT.beginBitmap();
nz 0:2cbd522b903e 112 TFT.Vertex2II(0,0, 0,0);
nz 0:2cbd522b903e 113 TFT.DLend();
nz 0:2cbd522b903e 114 thread_sleep_for(5000);
nz 0:2cbd522b903e 115
nz 0:2cbd522b903e 116 // -------------------------------------------------------------------------
nz 0:2cbd522b903e 117 // The Image «butterfly», Size 100x80 pixels, data typ uint16_t
nz 0:2cbd522b903e 118 // Format RGB565 (2 Bytes per pixel)
nz 0:2cbd522b903e 119 TFT.writeRAMG16(0, butterfly, 8000);
nz 0:2cbd522b903e 120 TFT.DLstart(WHITE);
nz 0:2cbd522b903e 121 TFT.bitmapSource(0);
nz 0:2cbd522b903e 122 TFT.bitmapLayout(RGB565, 200, 80);
nz 0:2cbd522b903e 123 TFT.bitmapSize(NEAREST,BORDER,BORDER,100,80);
nz 0:2cbd522b903e 124 TFT.beginBitmap();
nz 0:2cbd522b903e 125 TFT.Vertex2II(190,100, 0,0);
nz 0:2cbd522b903e 126 TFT.DLend();
nz 0:2cbd522b903e 127 thread_sleep_for(5000);
nz 0:2cbd522b903e 128
nz 0:2cbd522b903e 129 // -------------------------------------------------------------------------
nz 0:2cbd522b903e 130 // The Image «Che Guevara», Size 480x272 pixels and consists of 2 parts (image1 & image2)
nz 0:2cbd522b903e 131 // Format RGB332 (1 Byte per pixel: RRRGGGBB, 256 colors)
nz 0:2cbd522b903e 132 TFT.writeRAMG( 0, CheGuevara1, 65280);
nz 0:2cbd522b903e 133 TFT.writeRAMG(65280, CheGuevara2, 65280);
nz 0:2cbd522b903e 134
nz 0:2cbd522b903e 135 TFT.DLstart(BLACK);
nz 0:2cbd522b903e 136 TFT.bitmapSource(0);
nz 0:2cbd522b903e 137 TFT.bitmapLayout(RGB332, 480, 272);
nz 0:2cbd522b903e 138 TFT.bitmapSize(NEAREST,BORDER,BORDER,480,272);
nz 0:2cbd522b903e 139 TFT.beginBitmap();
nz 0:2cbd522b903e 140 TFT.Vertex2II(0,0, 0,0);
nz 0:2cbd522b903e 141 TFT.DLend();
nz 0:2cbd522b903e 142
nz 0:2cbd522b903e 143 return 0;
nz 0:2cbd522b903e 144 }