From 5cbcd1da3c37b8f09d7b8d1d361b90b8d65aa430 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 8 May 2015 14:45:47 +0200 Subject: [PATCH 1/4] rework Adafruit_ILI9341 complete now uses the new SPI implementation tested with example graphicstest_esp8266 add missing define to SPI.h --- .../Adafruit_ILI9341/Adafruit_ILI9341.cpp | 232 ---- libraries/Adafruit_ILI9341/Adafruit_ILI9341.h | 126 -- libraries/Adafruit_ILI9341/Font16.c | 525 --------- libraries/Adafruit_ILI9341/Font16.h | 7 - libraries/Adafruit_ILI9341/Font32.c | 1038 ----------------- libraries/Adafruit_ILI9341/Font32.h | 7 - libraries/Adafruit_ILI9341/Font64.c | 338 ------ libraries/Adafruit_ILI9341/Font64.h | 7 - libraries/Adafruit_ILI9341/Font7s.c | 264 ----- libraries/Adafruit_ILI9341/Font7s.h | 7 - libraries/Adafruit_ILI9341/Load_fonts.h | 8 - libraries/Adafruit_ILI9341/driver/hspi.h | 79 -- .../Adafruit_ILI9341/driver/spi_register.h | 239 ---- .../examples/graphicstest/graphicstest.ino | 332 ------ libraries/Adafruit_ILI9341/hspi.c | 109 -- libraries/Adafruit_ILI9341/mini-printf.c | 199 ---- libraries/Adafruit_ILI9341/mini-printf.h | 41 - libraries/Adafruit_ILI9341/readme.txt | 12 - libraries/SPI/SPI.h | 2 + 19 files changed, 2 insertions(+), 3570 deletions(-) delete mode 100644 libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp delete mode 100644 libraries/Adafruit_ILI9341/Adafruit_ILI9341.h delete mode 100644 libraries/Adafruit_ILI9341/Font16.c delete mode 100644 libraries/Adafruit_ILI9341/Font16.h delete mode 100644 libraries/Adafruit_ILI9341/Font32.c delete mode 100644 libraries/Adafruit_ILI9341/Font32.h delete mode 100644 libraries/Adafruit_ILI9341/Font64.c delete mode 100644 libraries/Adafruit_ILI9341/Font64.h delete mode 100644 libraries/Adafruit_ILI9341/Font7s.c delete mode 100644 libraries/Adafruit_ILI9341/Font7s.h delete mode 100644 libraries/Adafruit_ILI9341/Load_fonts.h delete mode 100644 libraries/Adafruit_ILI9341/driver/hspi.h delete mode 100644 libraries/Adafruit_ILI9341/driver/spi_register.h delete mode 100644 libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino delete mode 100644 libraries/Adafruit_ILI9341/hspi.c delete mode 100644 libraries/Adafruit_ILI9341/mini-printf.c delete mode 100644 libraries/Adafruit_ILI9341/mini-printf.h delete mode 100644 libraries/Adafruit_ILI9341/readme.txt diff --git a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp deleted file mode 100644 index eb8699718..000000000 --- a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.cpp +++ /dev/null @@ -1,232 +0,0 @@ -#include "Adafruit_ILI9341.h" -#include "Adafruit_GFX.h" - -extern "C"{ -#include -#include -#include -#include "driver/hspi.h" -} - -#define SWAPBYTES(i) ((i>>8) | (i<<8)) - -void Adafruit_ILI9341::transmitCmdData(uint8_t cmd, const uint8_t *data, uint8_t numDataByte) -{ - spi_wait_ready(); - TFT_DC_COMMAND; - spi_send_uint8(cmd); - spi_wait_ready(); - TFT_DC_DATA; - spi_send_data(data, numDataByte); -} - -void Adafruit_ILI9341::begin() { - //Set communication using HW SPI Port - config = spi_init(HSPI, 1, spi_mode_tx); - TFT_DC_INIT; - delay(1); - - uint8_t data[15] = {0}; - - data[0] = 0x39; - data[1] = 0x2C; - data[2] = 0x00; - data[3] = 0x34; - data[4] = 0x02; - transmitCmdData(0xCB, data, 5); - - data[0] = 0x00; - data[1] = 0XC1; - data[2] = 0X30; - transmitCmdData(0xCF, data, 3); - - data[0] = 0x85; - data[1] = 0x00; - data[2] = 0x78; - transmitCmdData(0xE8, data, 3); - - data[0] = 0x00; - data[1] = 0x00; - transmitCmdData(0xEA, data, 2); - - data[0] = 0x64; - data[1] = 0x03; - data[2] = 0X12; - data[3] = 0X81; - transmitCmdData(0xED, data, 4); - - data[0] = 0x20; - transmitCmdData(0xF7, data, 1); - - data[0] = 0x23; //VRH[5:0] - transmitCmdData(0xC0, data, 1); //Power control - - data[0] = 0x10; //SAP[2:0];BT[3:0] - transmitCmdData(0xC1, data, 1); //Power control - - data[0] = 0x3e; //Contrast - data[1] = 0x28; - transmitCmdData(0xC5, data, 2); //VCM control - - data[0] = 0x86; //-- - transmitCmdData(0xC7, data, 1); //VCM control2 - - data[0] = 0x48; //C8 - transmitCmdData(0x36, data, 1); // Memory Access Control - - data[0] = 0x55; - transmitCmdData(0x3A, data, 1); - - data[0] = 0x00; - data[1] = 0x18; - transmitCmdData(0xB1, data, 2); - - data[0] = 0x08; - data[1] = 0x82; - data[2] = 0x27; - transmitCmdData(0xB6, data, 3); // Display Function Control - - data[0] = 0x00; - transmitCmdData(0xF2, data, 1); // 3Gamma Function Disable - - data[0] = 0x01; - transmitCmdData(0x26, data, 1); //Gamma curve selected - - data[0] = 0x0F; - data[1] = 0x31; - data[2] = 0x2B; - data[3] = 0x0C; - data[4] = 0x0E; - data[5] = 0x08; - data[6] = 0x4E; - data[7] = 0xF1; - data[8] = 0x37; - data[9] = 0x07; - data[10] = 0x10; - data[11] = 0x03; - data[12] = 0x0E; - data[13] = 0x09; - data[14] = 0x00; - transmitCmdData(0xE0, data, 15); //Set Gamma - - data[0] = 0x00; - data[1] = 0x0E; - data[2] = 0x14; - data[3] = 0x03; - data[4] = 0x11; - data[5] = 0x07; - data[6] = 0x31; - data[7] = 0xC1; - data[8] = 0x48; - data[9] = 0x08; - data[10] = 0x0F; - data[11] = 0x0C; - data[12] = 0x31; - data[13] = 0x36; - data[14] = 0x0F; - transmitCmdData(0xE1, data, 15); //Set Gamma - - transmitCmd(0x11); //Exit Sleep - delay(120); - - transmitCmd(0x29); //Display on - transmitCmd(0x2c); - spi_wait_ready(); -} - -void Adafruit_ILI9341::drawPixel(int16_t x, int16_t y, uint16_t color) { - - if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - setAddrWindow(x,y,x+1,y+1); - transmitData(SWAPBYTES(color)); -} - - -void Adafruit_ILI9341::drawFastVLine(int16_t x, int16_t y, int16_t h, - uint16_t color) { - - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - - if((y+h-1) >= _height) - h = _height-y; - - setAddrWindow(x, y, x, y+h-1); - transmitData(SWAPBYTES(color), h); -} - -void Adafruit_ILI9341::drawFastHLine(int16_t x, int16_t y, int16_t w, - uint16_t color) { - - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - if((x+w-1) >= _width) w = _width-x; - setAddrWindow(x, y, x+w-1, y); - transmitData(SWAPBYTES(color), w); -} - -void Adafruit_ILI9341::fillScreen(uint16_t color) { - fillRect(0, 0, _width, _height, color); -} - -// fill a rectangle -void Adafruit_ILI9341::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - - // rudimentary clipping (drawChar w/big text requires this) - if((x >= _width) || (y >= _height)) return; - if((x + w - 1) >= _width) w = _width - x; - if((y + h - 1) >= _height) h = _height - y; - - setAddrWindow(x, y, x+w-1, y+h-1); - transmitData(SWAPBYTES(color), h*w); -} - - -// Pass 8-bit (each) R,G,B, get back 16-bit packed color -uint16_t Adafruit_ILI9341::color565(uint8_t r, uint8_t g, uint8_t b) { - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); -} - - -#define MADCTL_MY 0x80 -#define MADCTL_MX 0x40 -#define MADCTL_MV 0x20 -#define MADCTL_ML 0x10 -#define MADCTL_RGB 0x00 -#define MADCTL_BGR 0x08 -#define MADCTL_MH 0x04 - -void Adafruit_ILI9341::setRotation(uint8_t m) { - - uint8_t data; - rotation = m % 4; // can't be higher than 3 - switch (rotation) { - case 0: - data = MADCTL_MX | MADCTL_BGR; - _width = ILI9341_TFTWIDTH; - _height = ILI9341_TFTHEIGHT; - break; - case 1: - data = MADCTL_MV | MADCTL_BGR; - _width = ILI9341_TFTHEIGHT; - _height = ILI9341_TFTWIDTH; - break; - case 2: - data = MADCTL_MY | MADCTL_BGR; - _width = ILI9341_TFTWIDTH; - _height = ILI9341_TFTHEIGHT; - break; - case 3: - data = MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR; - _width = ILI9341_TFTHEIGHT; - _height = ILI9341_TFTWIDTH; - break; - } - transmitCmdData(ILI9341_MADCTL, &data, 1); -} - - -void Adafruit_ILI9341::invertDisplay(boolean i) { - transmitCmd(i ? ILI9341_INVON : ILI9341_INVOFF); -} diff --git a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h b/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h deleted file mode 100644 index fdf5a50ec..000000000 --- a/libraries/Adafruit_ILI9341/Adafruit_ILI9341.h +++ /dev/null @@ -1,126 +0,0 @@ -#ifndef _ADAFRUIT_ILI9341H_ -#define _ADAFRUIT_ILI9341H_ - -#include "Adafruit_GFX.h" - -extern "C" -{ -#include -#include -#include -#include "driver/hspi.h" -} - -#define ILI9341_TFTWIDTH 240 -#define ILI9341_TFTHEIGHT 320 - -#define ILI9341_NOP 0x00 -#define ILI9341_SWRESET 0x01 -#define ILI9341_RDDID 0x04 -#define ILI9341_RDDST 0x09 - -#define ILI9341_SLPIN 0x10 -#define ILI9341_SLPOUT 0x11 -#define ILI9341_PTLON 0x12 -#define ILI9341_NORON 0x13 - -#define ILI9341_RDMODE 0x0A -#define ILI9341_RDMADCTL 0x0B -#define ILI9341_RDPIXFMT 0x0C -#define ILI9341_RDIMGFMT 0x0A -#define ILI9341_RDSELFDIAG 0x0F - -#define ILI9341_INVOFF 0x20 -#define ILI9341_INVON 0x21 -#define ILI9341_GAMMASET 0x26 -#define ILI9341_DISPOFF 0x28 -#define ILI9341_DISPON 0x29 - -#define ILI9341_CASET 0x2A -#define ILI9341_PASET 0x2B -#define ILI9341_RAMWR 0x2C -#define ILI9341_RAMRD 0x2E - -#define ILI9341_PTLAR 0x30 -#define ILI9341_MADCTL 0x36 -#define ILI9341_PIXFMT 0x3A - -#define ILI9341_FRMCTR1 0xB1 -#define ILI9341_FRMCTR2 0xB2 -#define ILI9341_FRMCTR3 0xB3 -#define ILI9341_INVCTR 0xB4 -#define ILI9341_DFUNCTR 0xB6 - -#define ILI9341_PWCTR1 0xC0 -#define ILI9341_PWCTR2 0xC1 -#define ILI9341_PWCTR3 0xC2 -#define ILI9341_PWCTR4 0xC3 -#define ILI9341_PWCTR5 0xC4 -#define ILI9341_VMCTR1 0xC5 -#define ILI9341_VMCTR2 0xC7 - -#define ILI9341_RDID1 0xDA -#define ILI9341_RDID2 0xDB -#define ILI9341_RDID3 0xDC -#define ILI9341_RDID4 0xDD - -#define ILI9341_GMCTRP1 0xE0 -#define ILI9341_GMCTRN1 0xE1 -/* -#define ILI9341_PWCTR6 0xFC - -*/ - -// Color definitions -#define ILI9341_BLACK 0x0000 -#define ILI9341_BLUE 0x001F -#define ILI9341_RED 0xF800 -#define ILI9341_GREEN 0x07E0 -#define ILI9341_CYAN 0x07FF -#define ILI9341_MAGENTA 0xF81F -#define ILI9341_YELLOW 0xFFE0 -#define ILI9341_WHITE 0xFFFF - -#define TFT_DC_DATA GPIO_OUTPUT_SET(2, 1) -#define TFT_DC_COMMAND GPIO_OUTPUT_SET(2, 0) -#define TFT_DC_INIT PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2); TFT_DC_DATA - -#define MAKEWORD(b1, b2, b3, b4) (uint32_t(b1) | ((b2) << 8) | ((b3) << 16) | ((b4) << 24)) -#define SWAPBYTES(i) ((i>>8) | (i<<8)) - -class Adafruit_ILI9341 : public Adafruit_GFX { - -private: - uint8_t tabcolor; - spi_config config; - void transmitCmdData(uint8_t cmd, const uint8_t *data, uint8_t numDataByte); - inline void transmitData(uint16_t data) {spi_wait_ready(); spi_send_uint16(data);} - inline void transmitCmdData(uint8_t cmd, uint32_t data) {spi_wait_ready(); TFT_DC_COMMAND; spi_send_uint8(cmd); spi_wait_ready(); TFT_DC_DATA; spi_send_uint32(data);} - inline void transmitData(uint16_t data, int32_t repeats){spi_wait_ready(); spi_send_uint16_r(data, repeats);} - inline void transmitCmd(uint8_t cmd){spi_wait_ready(); TFT_DC_COMMAND; spi_send_uint8(cmd);spi_wait_ready(); TFT_DC_DATA;} - inline void drawPixelInternal(int16_t x, int16_t y, uint16_t color) { if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - setAddrWindow(x,y,x+1,y+1); - transmitData(SWAPBYTES(color)); - } - -public: - Adafruit_ILI9341() : Adafruit_GFX(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT), tabcolor(0){} - - void begin(), - fillScreen(uint16_t color), - drawPixel(int16_t x, int16_t y, uint16_t color), - drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), - drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), - fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color), - setRotation(uint8_t r), - invertDisplay(boolean i); - inline void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) - { transmitCmdData(ILI9341_CASET, MAKEWORD(x0 >> 8, x0 & 0xFF, x1 >> 8, x1 & 0xFF)); - transmitCmdData(ILI9341_PASET, MAKEWORD(y0 >> 8, y0 & 0xFF, y1 >> 8, y1 & 0xFF)); - transmitCmd(ILI9341_RAMWR); // write to RAM - } - uint16_t color565(uint8_t r, uint8_t g, uint8_t b); -}; - -#endif diff --git a/libraries/Adafruit_ILI9341/Font16.c b/libraries/Adafruit_ILI9341/Font16.c deleted file mode 100644 index f80d20def..000000000 --- a/libraries/Adafruit_ILI9341/Font16.c +++ /dev/null @@ -1,525 +0,0 @@ -// Font size 2 - -#include "Font16.h" - -const unsigned char widtbl_f16[96] = // character width table -{ - 5, 2, 3, 8, 7, 8, 8, 2, // char 32 - 39 - 6, 6, 7, 5, 2, 5, 4, 6, // char 40 - 47 - 7, 7, 7, 7, 7, 7, 7, 7, // char 48 - 55 - 7, 7, 2, 2, 5, 5, 5, 7, // char 56 - 63 - 8, 7, 7, 7, 7, 7, 7, 7, // char 64 - 71 - 6, 3, 7, 7, 6, 9, 7, 7, // char 72 - 79 - 7, 7, 7, 7, 7, 7, 7, 9, // char 80 - 87 - 7, 7, 7, 3, 6, 3, 16, 16, // char 88 - 95 - 3, 6, 6, 6, 6, 6, 5, 6, // char 96 - 103 - 6, 4, 4, 5, 4, 7, 6, 7, // char 104 - 111 - 6, 7, 5, 5, 4, 6, 7, 7, // char 112 - 119 - 5, 6, 6, 11, 16, 8, 2, 13 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f16_20[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_21[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x00, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_22[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0xA0, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_23[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x24, 0x24, 0x24, 0xFF, 0x24, 0x24, 0xFF, 0x24, // row 1 - 11 - 0x24, 0x24, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_24[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x3C, 0x42, 0x40, 0x40, 0x70, 0x40, 0x40, // row 1 - 11 - 0x40, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_25[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x61, 0x91, 0x92, 0x64, 0x08, 0x10, 0x26, 0x49, // row 1 - 11 - 0x89, 0x86, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_26[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x20, 0x50, 0x88, 0x88, 0x50, 0x20, 0x52, 0x8C, // row 1 - 11 - 0x8C, 0x73, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_27[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_28[16] = // 1 unsigned char per row -{ - 0x00, 0x0C, 0x10, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x40, 0x40, 0x20, 0x10, 0x0C // row 12 - 16 -}; -const unsigned char chr_f16_29[16] = // 1 unsigned char per row -{ - 0x00, 0xC0, 0x20, 0x10, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, // row 1 - 11 - 0x08, 0x08, 0x10, 0x20, 0xC0 // row 12 - 16 -}; -const unsigned char chr_f16_2A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x10, 0x92, 0x54, 0x38, 0x54, 0x92, 0x10, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0xC0, 0xC0, 0x40, 0x80, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0xC0, 0xC0, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_2F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, // row 1 - 11 - 0x40, 0x80, 0x80, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_30[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x82, 0x82, 0x82, 0x82, 0x44, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_31[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x10, 0x30, 0x50, 0x10, 0x10, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x7C, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_32[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x02, 0x04, 0x18, 0x20, 0x40, // row 1 - 11 - 0x80, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_33[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x78, 0x84, 0x02, 0x04, 0x38, 0x04, 0x02, 0x02, // row 1 - 11 - 0x84, 0x78, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_34[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x04, 0x0C, 0x14, 0x24, 0x44, 0x84, 0xFE, 0x04, // row 1 - 11 - 0x04, 0x04, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_35[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFC, 0x80, 0x80, 0x80, 0xF8, 0x04, 0x02, 0x02, // row 1 - 11 - 0x84, 0x78, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_36[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x40, 0x80, 0x80, 0xB8, 0xC4, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_37[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x7E, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_38[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x44, 0x38, 0x44, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_39[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x46, 0x3A, 0x02, 0x02, // row 1 - 11 - 0x04, 0x78, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, // row 1 - 11 - 0x40, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, // row 1 - 11 - 0x10, 0x08, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, // row 1 - 11 - 0x40, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_3F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x02, 0x04, 0x08, 0x10, 0x10, // row 1 - 11 - 0x00, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_40[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x42, 0x99, 0xA5, 0xA5, 0xA5, 0xA5, 0x9E, // row 1 - 11 - 0x40, 0x3E, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_41[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x10, 0x10, 0x28, 0x28, 0x44, 0x44, 0x7C, 0x82, // row 1 - 11 - 0x82, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_42[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x84, 0xF8, 0x84, 0x82, 0x82, // row 1 - 11 - 0x84, 0xF8, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_43[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x42, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x42, 0x3C, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_44[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x84, 0xF8, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_45[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x80, 0x80, 0x80, 0xFC, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_46[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x80, 0x80, 0x80, 0xF8, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_47[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x3C, 0x42, 0x80, 0x80, 0x80, 0x9C, 0x82, 0x82, // row 1 - 11 - 0x42, 0x3C, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_48[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x84, 0x84, 0x84, 0x84, 0xFC, 0x84, 0x84, 0x84, // row 1 - 11 - 0x84, 0x84, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_49[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0xE0, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x84, 0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, // row 1 - 11 - 0x84, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0xFC, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4D[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x80, 0xC1, 0x80, 0xA2, 0x80, // row 1 - 6 - 0xA2, 0x80, 0x94, 0x80, 0x94, 0x80, 0x88, 0x80, 0x88, 0x80, 0x80, 0x80, // row 7 - 12 - 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_4E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xC2, 0xC2, 0xA2, 0xA2, 0x92, 0x92, 0x8A, 0x8A, // row 1 - 11 - 0x86, 0x86, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_4F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_50[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x82, 0x82, 0x84, 0xF8, 0x80, // row 1 - 11 - 0x80, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_51[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x08, 0x06, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_52[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xF8, 0x84, 0x82, 0x82, 0x84, 0xF8, 0x90, 0x88, // row 1 - 11 - 0x84, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_53[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x80, 0x60, 0x1C, 0x02, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_54[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_55[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_56[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x44, 0x44, 0x28, 0x28, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_57[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 6 - 0x88, 0x80, 0x88, 0x80, 0x49, 0x00, 0x55, 0x00, 0x55, 0x00, 0x22, 0x00, // row 7 - 12 - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_58[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, // row 1 - 11 - 0x82, 0x82, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_59[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x44, 0x28, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xFE, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x40, // row 1 - 11 - 0x80, 0xFE, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0xE0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0x80, 0xE0, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, // row 1 - 11 - 0x40, 0x80, 0x80, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // row 1 - 11 - 0x20, 0x20, 0xE0, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_5E[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xDE, 0x84, 0x21, 0x84, 0x21, // row 1 - 6 - 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, 0x84, 0x21, // row 7 - 12 - 0x84, 0x21, 0x84, 0x21, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_5F[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x52, 0x94, 0x4A, 0x52, // row 1 - 6 - 0x84, 0x21, 0x84, 0x21, 0x08, 0x42, 0x08, 0x42, 0x10, 0x84, 0x10, 0x84, // row 7 - 12 - 0x21, 0x08, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_60[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_61[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x08, 0x04, 0x74, 0x8C, // row 1 - 11 - 0x8C, 0x74, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_62[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0xC8, 0xB0, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_63[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x80, 0x80, 0x80, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_64[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x34, 0x4C, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_65[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x84, 0xF8, 0x80, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_66[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x30, 0x48, 0x40, 0x40, 0x40, 0xE0, 0x40, 0x40, // row 1 - 11 - 0x40, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_67[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4C, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x04, 0x08, 0x70 // row 12 - 16 -}; -const unsigned char chr_f16_68[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0x84, 0x84, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_69[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x10, // row 1 - 11 - 0x10, 0x10, 0x10, 0x90, 0x60 // row 12 - 16 -}; -const unsigned char chr_f16_6B[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x88, 0x90, 0xA0, 0xC0, 0xA0, // row 1 - 11 - 0x90, 0x88, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6C[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0xC0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0x40, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xD2, 0x92, 0x92, 0x92, // row 1 - 11 - 0x92, 0x92, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0x84, 0x84, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_6F[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, // row 1 - 11 - 0x44, 0x38, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_70[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xC8, 0x84, 0x84, 0x84, // row 1 - 11 - 0xC8, 0xB0, 0x80, 0x80, 0x80 // row 12 - 16 -}; -const unsigned char chr_f16_71[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x4C, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x04, 0x04, 0x06 // row 12 - 16 -}; -const unsigned char chr_f16_72[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xC8, 0x80, 0x80, 0x80, // row 1 - 11 - 0x80, 0x80, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_73[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x70, 0x08, // row 1 - 11 - 0x88, 0x70, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_74[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0xE0, 0x40, 0x40, 0x40, 0x40, // row 1 - 11 - 0x40, 0x30, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_75[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_76[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x82, 0x44, // row 1 - 11 - 0x28, 0x10, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_77[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x82, 0x82, 0x92, 0x92, // row 1 - 11 - 0xAA, 0x44, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_78[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x50, 0x20, 0x50, // row 1 - 11 - 0x88, 0x88, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_79[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, // row 1 - 11 - 0x4C, 0x34, 0x04, 0x08, 0x70 // row 12 - 16 -}; -const unsigned char chr_f16_7A[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x04, 0x08, 0x30, 0x40, // row 1 - 11 - 0x80, 0xFC, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_7B[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x41, 0x00, 0x9C, 0x80, // row 1 - 6 - 0xA0, 0x80, 0xA0, 0x80, 0xA0, 0x80, 0x9C, 0x80, 0x41, 0x00, 0x3E, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_7C[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0xF0, 0x00, 0x88, 0x00, 0x88, 0x00, 0xF0, 0x00, 0xA3, 0xC0, // row 1 - 6 - 0x92, 0x20, 0x8A, 0x20, 0x03, 0xC4, 0x02, 0x0A, 0x02, 0x11, 0x02, 0x11, // row 7 - 12 - 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00 // row 13 - 16 -}; -const unsigned char chr_f16_7D[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x22, // row 1 - 11 - 0x32, 0x2C, 0x20, 0x40, 0x80 // row 12 - 16 -}; -const unsigned char chr_f16_7E[16] = // 1 unsigned char per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00 // row 12 - 16 -}; -const unsigned char chr_f16_7F[32] = // 2 unsigned chars per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x34, 0xD0, 0x2A, 0xA8, 0x2A, 0xA8, 0x2A, 0xA8, 0x2A, 0xA8, // row 7 - 12 - 0x2A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 13 - 16 -}; - -const unsigned char* chrtbl_f16[96] = // character pointer table -{ - chr_f16_20, chr_f16_21, chr_f16_22, chr_f16_23, chr_f16_24, chr_f16_25, chr_f16_26, chr_f16_27, - chr_f16_28, chr_f16_29, chr_f16_2A, chr_f16_2B, chr_f16_2C, chr_f16_2D, chr_f16_2E, chr_f16_2F, - chr_f16_30, chr_f16_31, chr_f16_32, chr_f16_33, chr_f16_34, chr_f16_35, chr_f16_36, chr_f16_37, - chr_f16_38, chr_f16_39, chr_f16_3A, chr_f16_3B, chr_f16_3C, chr_f16_3D, chr_f16_3E, chr_f16_3F, - chr_f16_40, chr_f16_41, chr_f16_42, chr_f16_43, chr_f16_44, chr_f16_45, chr_f16_46, chr_f16_47, - chr_f16_48, chr_f16_49, chr_f16_4A, chr_f16_4B, chr_f16_4C, chr_f16_4D, chr_f16_4E, chr_f16_4F, - chr_f16_50, chr_f16_51, chr_f16_52, chr_f16_53, chr_f16_54, chr_f16_55, chr_f16_56, chr_f16_57, - chr_f16_58, chr_f16_59, chr_f16_5A, chr_f16_5B, chr_f16_5C, chr_f16_5D, chr_f16_5E, chr_f16_5F, - chr_f16_60, chr_f16_61, chr_f16_62, chr_f16_63, chr_f16_64, chr_f16_65, chr_f16_66, chr_f16_67, - chr_f16_68, chr_f16_69, chr_f16_6A, chr_f16_6B, chr_f16_6C, chr_f16_6D, chr_f16_6E, chr_f16_6F, - chr_f16_70, chr_f16_71, chr_f16_72, chr_f16_73, chr_f16_74, chr_f16_75, chr_f16_76, chr_f16_77, - chr_f16_78, chr_f16_79, chr_f16_7A, chr_f16_7B, chr_f16_7C, chr_f16_7D, chr_f16_7E, chr_f16_7F -}; diff --git a/libraries/Adafruit_ILI9341/Font16.h b/libraries/Adafruit_ILI9341/Font16.h deleted file mode 100644 index 65c055782..000000000 --- a/libraries/Adafruit_ILI9341/Font16.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f16 96 -#define chr_hgt_f16 16 -#define data_size_f16 8 -#define firstchr_f16 32 - -extern const unsigned char widtbl_f16[96]; -extern const unsigned char* chrtbl_f16[96]; diff --git a/libraries/Adafruit_ILI9341/Font32.c b/libraries/Adafruit_ILI9341/Font32.c deleted file mode 100644 index 3d9756820..000000000 --- a/libraries/Adafruit_ILI9341/Font32.c +++ /dev/null @@ -1,1038 +0,0 @@ -// Font size 4 - -#include "Font32.h" - - -const unsigned char widtbl_f32[96] = // character width table -{ - 8, 11, 11, 22, 17, 24, 20, 9, // char 32 - 39 - 11, 11, 15, 28, 10, 11, 10, 11, // char 40 - 47 - 17, 17, 17, 17, 17, 17, 17, 17, // char 48 - 55 - 17, 17, 10, 10, 28, 28, 28, 16, // char 56 - 63 - 28, 19, 20, 21, 21, 19, 18, 22, // char 64 - 71 - 21, 9, 16, 20, 16, 24, 21, 22, // char 72 - 79 - 19, 22, 20, 19, 17, 21, 18, 26, // char 80 - 87 - 18, 19, 19, 12, 16, 12, 28, 16, // char 88 - 95 - 9, 17, 18, 16, 18, 17, 11, 18, // char 96 - 103 - 18, 9, 9, 15, 9, 25, 18, 18, // char 104 - 111 - 18, 18, 11, 15, 10, 17, 15, 21, // char 112 - 119 - 16, 16, 15, 16, 16, 16, 28, 4 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f32_20[] = // 1 byte per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 12 - 22 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 23 - 32 -}; -const unsigned char chr_f32_21[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 7 - 12 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_22[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, // row 7 - 12 - 0x24, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_23[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x66, 0x00, 0x00, 0x44, 0x00, 0x00, 0x44, 0x00, 0x00, 0xCC, 0x00, // row 9 - 12 - 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0x10, 0x00, // row 13 - 16 - 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x3F, 0xFF, 0x00, 0x02, 0x20, 0x00, // row 17 - 20 - 0x02, 0x20, 0x00, 0x06, 0x60, 0x00, 0x04, 0x40, 0x00, 0x04, 0x40, 0x00, // row 21 - 24 - 0x0C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_24[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x60, 0x18, 0x00, // row 9 - 12 - 0x60, 0x18, 0x00, 0x60, 0x00, 0x00, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, // row 13 - 16 - 0x7F, 0x80, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, // row 17 - 20 - 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0x88, 0x00, 0x7F, 0xF8, 0x00, // row 21 - 24 - 0x60, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_25[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0E, 0x01, 0x80, 0x3F, 0x81, 0x00, 0x31, 0x83, 0x00, 0x60, 0xC6, 0x00, // row 9 - 12 - 0x60, 0xC4, 0x00, 0x60, 0xCC, 0x00, 0x31, 0x88, 0x00, 0x3F, 0x90, 0x00, // row 13 - 16 - 0x0E, 0x31, 0xC0, 0x00, 0x27, 0xF0, 0x00, 0x46, 0x30, 0x00, 0xCC, 0x18, // row 17 - 20 - 0x00, 0x8C, 0x18, 0x01, 0x8C, 0x18, 0x03, 0x06, 0x30, 0x02, 0x07, 0xF0, // row 21 - 24 - 0x06, 0x01, 0xC0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_26[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 5 - 8 - 0x0F, 0xE0, 0x00, 0x1C, 0x70, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, // row 9 - 12 - 0x18, 0x70, 0x00, 0x0C, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, // row 13 - 16 - 0x1F, 0x86, 0x00, 0x39, 0xC6, 0x00, 0x70, 0xE6, 0x00, 0x60, 0x7C, 0x00, // row 17 - 20 - 0x60, 0x3C, 0x00, 0x60, 0x18, 0x00, 0x70, 0x7E, 0x00, 0x3F, 0xE7, 0x00, // row 21 - 24 - 0x1F, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_27[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x10, 0x00, 0x30, 0x00, // row 7 - 12 - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_28[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x0C, 0x00, // row 7 - 12 - 0x0C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, // row 25 - 30 - 0x03, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_29[] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x60, 0x00, 0x20, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x20, 0x00, 0x60, 0x00, 0x40, 0x00, // row 25 - 30 - 0xC0, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x26, 0x40, 0x7F, 0xE0, // row 7 - 12 - 0x1F, 0x80, 0x0F, 0x00, 0x19, 0x80, 0x39, 0xC0, 0x10, 0x80, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2B[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 10 - 12 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 13 - 15 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0xFF, 0xF0, 0x00, // row 16 - 18 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 19 - 21 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // row 22 - 24 - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x08, 0x00, 0x18, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2D[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, // row 13 - 18 - 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2E[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_2F[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, // row 7 - 12 - 0x04, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x10, 0x00, 0x30, 0x00, 0x30, 0x00, 0x20, 0x00, 0x60, 0x00, 0x60, 0x00, // row 19 - 24 - 0x40, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_30[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x07, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x30, 0x30, 0x00, // row 9 - 12 - 0x70, 0x38, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 13 - 16 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x38, 0x00, 0x30, 0x30, 0x00, 0x3C, 0xF0, 0x00, 0x1F, 0xE0, 0x00, // row 21 - 24 - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_31[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, 0x00, 0x1F, 0x80, 0x00, // row 9 - 12 - 0x1F, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 13 - 16 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 17 - 20 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 21 - 24 - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_32[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x70, 0x18, 0x00, // row 9 - 12 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x38, 0x00, // row 13 - 16 - 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, // row 17 - 20 - 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x7F, 0xF8, 0x00, // row 21 - 24 - 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_33[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x30, 0x30, 0x00, // row 9 - 12 - 0x70, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x03, 0xE0, 0x00, // row 13 - 16 - 0x03, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x70, 0x38, 0x00, 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_34[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, // row 9 - 12 - 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, // row 13 - 16 - 0x18, 0x60, 0x00, 0x30, 0x60, 0x00, 0x60, 0x60, 0x00, 0x7F, 0xF8, 0x00, // row 17 - 20 - 0x7F, 0xF8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, // row 21 - 24 - 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_35[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x30, 0x00, 0x00, 0x37, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x78, 0x70, 0x00, // row 13 - 16 - 0x60, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x70, 0x38, 0x00, 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_36[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x38, 0x30, 0x00, 0x30, 0x18, 0x00, // row 9 - 12 - 0x30, 0x18, 0x00, 0x60, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x7F, 0xF0, 0x00, // row 13 - 16 - 0x78, 0x70, 0x00, 0x70, 0x38, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x30, 0x38, 0x00, 0x38, 0x70, 0x00, 0x1F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_37[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x7F, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, // row 9 - 12 - 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x01, 0x80, 0x00, // row 13 - 16 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, // row 17 - 20 - 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, // row 21 - 24 - 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_38[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x07, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x18, 0x60, 0x00, 0x30, 0x30, 0x00, // row 9 - 12 - 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x18, 0x60, 0x00, 0x0F, 0xC0, 0x00, // row 13 - 16 - 0x1F, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, // row 21 - 24 - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_39[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x0F, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x70, 0x30, 0x00, // row 9 - 12 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x38, 0x00, // row 13 - 16 - 0x38, 0x78, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0x98, 0x00, 0x00, 0x18, 0x00, // row 17 - 20 - 0x60, 0x30, 0x00, 0x60, 0x30, 0x00, 0x30, 0x70, 0x00, 0x3F, 0xE0, 0x00, // row 21 - 24 - 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_3A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, // row 19 - 24 - 0x38, 0x00, 0x08, 0x00, 0x18, 0x00, 0x10, 0x00, 0x30, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3C[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, // row 10 - 12 - 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 13 - 15 - 0x00, 0xF0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, // row 16 - 18 - 0x03, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 19 - 21 - 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3D[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 10 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 15 - 0x07, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 16 - 18 - 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 21 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3E[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // row 10 - 12 - 0x03, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 13 - 15 - 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x30, 0x00, // row 16 - 18 - 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1C, 0x00, 0x00, // row 19 - 21 - 0x00, 0xF0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_3F[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x0F, 0xC0, 0x3F, 0xE0, 0x38, 0x70, 0x70, 0x30, 0x60, 0x30, // row 7 - 12 - 0x60, 0x30, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, // row 13 - 18 - 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // row 19 - 24 - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_40[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xC0, 0x70, 0x00, // row 7 - 9 - 0x07, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x06, 0x00, // row 10 - 12 - 0x10, 0x1E, 0x43, 0x00, 0x30, 0x63, 0xC3, 0x00, 0x30, 0xC1, 0x83, 0x00, // row 13 - 15 - 0x60, 0xC1, 0x83, 0x00, 0x61, 0x81, 0x83, 0x00, 0x61, 0x81, 0x83, 0x00, // row 16 - 18 - 0x61, 0x83, 0x06, 0x00, 0x61, 0x83, 0x06, 0x00, 0x61, 0x83, 0x0C, 0x00, // row 19 - 21 - 0x30, 0xC7, 0x18, 0x00, 0x30, 0x79, 0xF0, 0x00, 0x18, 0x00, 0x00, 0x00, // row 22 - 24 - 0x0C, 0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x03, 0x81, 0xE0, 0x00, // row 25 - 27 - 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_41[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 5 - 8 - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, // row 9 - 12 - 0x06, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x30, 0x00, 0x0C, 0x30, 0x00, // row 13 - 16 - 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, // row 17 - 20 - 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, // row 21 - 24 - 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_42[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, // row 9 - 12 - 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x30, 0x0E, 0x00, 0x3F, 0xF8, 0x00, // row 13 - 16 - 0x3F, 0xFE, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x0E, 0x00, 0x3F, 0xFE, 0x00, // row 21 - 24 - 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_43[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1E, 0x0F, 0x00, 0x38, 0x03, 0x00, 0x30, 0x01, 0x80, // row 9 - 12 - 0x70, 0x01, 0x80, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, // row 13 - 16 - 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x01, 0x80, 0x70, 0x01, 0x80, // row 17 - 20 - 0x30, 0x03, 0x80, 0x38, 0x03, 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0xFE, 0x00, // row 21 - 24 - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_44[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, // row 5 - 8 - 0x3F, 0xFC, 0x00, 0x30, 0x1E, 0x00, 0x30, 0x07, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x80, 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, // row 13 - 16 - 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, 0x30, 0x01, 0x80, 0x30, 0x03, 0x80, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x30, 0x1E, 0x00, 0x3F, 0xFC, 0x00, // row 21 - 24 - 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_45[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0xFC, 0x00, // row 13 - 16 - 0x3F, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 17 - 20 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0xFE, 0x00, // row 21 - 24 - 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_46[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, // row 5 - 8 - 0x3F, 0xFC, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3F, 0xF8, 0x00, // row 13 - 16 - 0x3F, 0xF8, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 17 - 20 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 21 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_47[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1C, 0x0F, 0x00, 0x38, 0x03, 0x00, 0x30, 0x03, 0x80, // row 9 - 12 - 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x7F, 0x80, // row 13 - 16 - 0x60, 0x7F, 0x80, 0x60, 0x01, 0x80, 0x60, 0x01, 0x80, 0x70, 0x01, 0x80, // row 17 - 20 - 0x30, 0x03, 0x80, 0x38, 0x07, 0x80, 0x1E, 0x0F, 0x80, 0x0F, 0xFD, 0x80, // row 21 - 24 - 0x03, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_48[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, // row 5 - 8 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, // row 13 - 16 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 21 - 24 - 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_49[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_4A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, // row 7 - 12 - 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, // row 13 - 18 - 0x00, 0x60, 0xC0, 0x60, 0xC0, 0x60, 0xC0, 0x60, 0xE0, 0xE0, 0x7F, 0xC0, // row 19 - 24 - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_4B[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x07, 0x00, // row 5 - 8 - 0x30, 0x0E, 0x00, 0x30, 0x1C, 0x00, 0x30, 0x38, 0x00, 0x30, 0x70, 0x00, // row 9 - 12 - 0x30, 0xE0, 0x00, 0x31, 0xC0, 0x00, 0x33, 0x80, 0x00, 0x37, 0x80, 0x00, // row 13 - 16 - 0x3F, 0xC0, 0x00, 0x3C, 0xE0, 0x00, 0x38, 0x70, 0x00, 0x30, 0x30, 0x00, // row 17 - 20 - 0x30, 0x38, 0x00, 0x30, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x07, 0x00, // row 21 - 24 - 0x30, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_4C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3F, 0xF8, // row 19 - 24 - 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_4D[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x38, 0x00, 0xE0, // row 5 - 8 - 0x3C, 0x01, 0xE0, 0x3C, 0x01, 0xE0, 0x3C, 0x01, 0xE0, 0x36, 0x03, 0x60, // row 9 - 12 - 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x33, 0x06, 0x60, 0x33, 0x06, 0x60, // row 13 - 16 - 0x33, 0x06, 0x60, 0x31, 0x8C, 0x60, 0x31, 0x8C, 0x60, 0x31, 0x8C, 0x60, // row 17 - 20 - 0x30, 0xD8, 0x60, 0x30, 0xD8, 0x60, 0x30, 0xF8, 0x60, 0x30, 0x70, 0x60, // row 21 - 24 - 0x30, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_4E[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, // row 5 - 8 - 0x38, 0x03, 0x00, 0x3C, 0x03, 0x00, 0x3E, 0x03, 0x00, 0x36, 0x03, 0x00, // row 9 - 12 - 0x37, 0x03, 0x00, 0x33, 0x83, 0x00, 0x31, 0x83, 0x00, 0x31, 0xC3, 0x00, // row 13 - 16 - 0x30, 0xE3, 0x00, 0x30, 0x63, 0x00, 0x30, 0x73, 0x00, 0x30, 0x3B, 0x00, // row 17 - 20 - 0x30, 0x1B, 0x00, 0x30, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x30, 0x07, 0x00, // row 21 - 24 - 0x30, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_4F[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1E, 0x0F, 0x00, 0x38, 0x03, 0x80, 0x30, 0x01, 0x80, // row 9 - 12 - 0x70, 0x01, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, // row 13 - 16 - 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x70, 0x01, 0xC0, // row 17 - 20 - 0x30, 0x01, 0x80, 0x38, 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x0F, 0xFE, 0x00, // row 21 - 24 - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_50[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, // row 5 - 8 - 0x3F, 0xFC, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, // row 9 - 12 - 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x30, 0x0E, 0x00, 0x3F, 0xFC, 0x00, // row 13 - 16 - 0x3F, 0xF8, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 17 - 20 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 21 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_51[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x03, 0xF8, 0x00, // row 5 - 8 - 0x0F, 0xFE, 0x00, 0x1E, 0x0F, 0x00, 0x38, 0x03, 0x80, 0x30, 0x01, 0x80, // row 9 - 12 - 0x70, 0x01, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, // row 13 - 16 - 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x60, 0x00, 0xC0, 0x70, 0x11, 0xC0, // row 17 - 20 - 0x30, 0x39, 0x80, 0x38, 0x1F, 0x80, 0x1E, 0x0F, 0x00, 0x0F, 0xFF, 0x80, // row 21 - 24 - 0x03, 0xF9, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_52[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFC, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x30, 0x07, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x06, 0x00, 0x3F, 0xFE, 0x00, // row 13 - 16 - 0x3F, 0xFC, 0x00, 0x30, 0x0E, 0x00, 0x30, 0x06, 0x00, 0x30, 0x07, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 21 - 24 - 0x30, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_53[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, // row 5 - 8 - 0x1F, 0xF8, 0x00, 0x38, 0x1C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, // row 9 - 12 - 0x30, 0x0E, 0x00, 0x38, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xE0, 0x00, // row 13 - 16 - 0x01, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0E, 0x00, 0x70, 0x06, 0x00, // row 17 - 20 - 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x3C, 0x0E, 0x00, 0x1F, 0xFC, 0x00, // row 21 - 24 - 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_54[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, // row 5 - 8 - 0xFF, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 9 - 12 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 13 - 16 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 17 - 20 - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, // row 21 - 24 - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_55[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, // row 5 - 8 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 9 - 12 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 13 - 16 - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, // row 17 - 20 - 0x30, 0x03, 0x00, 0x38, 0x07, 0x00, 0x1C, 0x0E, 0x00, 0x0F, 0xFC, 0x00, // row 21 - 24 - 0x07, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_56[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0xE0, 0x0E, 0x00, // row 5 - 8 - 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, // row 9 - 12 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0x30, 0x00, 0x18, 0x30, 0x00, // row 13 - 16 - 0x18, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, 0x0C, 0x60, 0x00, // row 17 - 20 - 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x80, 0x00, // row 21 - 24 - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_57[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0xE0, 0x38, 0x0E, 0x00, 0x60, 0x38, 0x0C, 0x00, // row 7 - 9 - 0x60, 0x38, 0x0C, 0x00, 0x70, 0x6C, 0x1C, 0x00, 0x30, 0x6C, 0x18, 0x00, // row 10 - 12 - 0x30, 0x6C, 0x18, 0x00, 0x30, 0x6C, 0x18, 0x00, 0x38, 0xC6, 0x38, 0x00, // row 13 - 15 - 0x18, 0xC6, 0x30, 0x00, 0x18, 0xC6, 0x30, 0x00, 0x18, 0xC6, 0x30, 0x00, // row 16 - 18 - 0x1D, 0x83, 0x70, 0x00, 0x0D, 0x83, 0x60, 0x00, 0x0D, 0x83, 0x60, 0x00, // row 19 - 21 - 0x0D, 0x83, 0x60, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x01, 0xC0, 0x00, // row 22 - 24 - 0x07, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_58[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x60, 0x0C, 0x00, // row 5 - 8 - 0x70, 0x1C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x30, 0x00, 0x1C, 0x70, 0x00, // row 9 - 12 - 0x0C, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x80, 0x00, // row 13 - 16 - 0x03, 0x80, 0x00, 0x06, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0C, 0x60, 0x00, // row 17 - 20 - 0x18, 0x30, 0x00, 0x38, 0x38, 0x00, 0x30, 0x18, 0x00, 0x70, 0x1C, 0x00, // row 21 - 24 - 0xE0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_59[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0xE0, 0x07, 0x00, // row 5 - 8 - 0x70, 0x0E, 0x00, 0x30, 0x0C, 0x00, 0x38, 0x1C, 0x00, 0x18, 0x18, 0x00, // row 9 - 12 - 0x0C, 0x30, 0x00, 0x0E, 0x70, 0x00, 0x06, 0x60, 0x00, 0x03, 0xC0, 0x00, // row 13 - 16 - 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 17 - 20 - 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, // row 21 - 24 - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_5A[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x3F, 0xFE, 0x00, // row 5 - 8 - 0x3F, 0xFE, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, // row 9 - 12 - 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, // row 13 - 16 - 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0E, 0x00, 0x00, // row 17 - 20 - 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x7F, 0xFE, 0x00, // row 21 - 24 - 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_5B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 7 - 12 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 13 - 18 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, // row 19 - 24 - 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1F, 0x00, 0x1F, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x20, 0x00, 0x20, 0x00, 0x30, 0x00, 0x10, 0x00, 0x10, 0x00, 0x18, 0x00, // row 7 - 12 - 0x08, 0x00, 0x08, 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, // row 13 - 18 - 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, // row 19 - 24 - 0x00, 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, // row 25 - 30 - 0x00, 0x20, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5D[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, // row 7 - 12 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, // row 13 - 18 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, // row 19 - 24 - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x7C, 0x00, 0x7C, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5E[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, // row 7 - 9 - 0x00, 0x63, 0x00, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x01, 0x80, 0xC0, 0x00, // row 10 - 12 - 0x03, 0x00, 0x60, 0x00, 0x06, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 15 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 16 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 21 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_5F[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0xFF, 0xF8, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_60[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x60, 0x00, 0x40, 0x00, 0x70, 0x00, 0x70, 0x00, // row 7 - 12 - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_61[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x0F, 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x30, 0x70, 0x00, 0x30, 0x30, 0x00, // row 13 - 16 - 0x00, 0x30, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x70, 0x30, 0x00, // row 17 - 20 - 0x60, 0x30, 0x00, 0x60, 0x30, 0x00, 0x70, 0xF0, 0x00, 0x3F, 0xBC, 0x00, // row 21 - 24 - 0x1F, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_62[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // row 5 - 8 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x33, 0xC0, 0x00, 0x37, 0xF0, 0x00, 0x3E, 0x78, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x1C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, // row 17 - 20 - 0x30, 0x1C, 0x00, 0x38, 0x18, 0x00, 0x3E, 0x78, 0x00, 0x37, 0xF0, 0x00, // row 21 - 24 - 0x33, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_63[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x07, 0x80, 0x1F, 0xE0, 0x3C, 0xE0, 0x30, 0x30, 0x70, 0x00, 0x60, 0x00, // row 13 - 18 - 0x60, 0x00, 0x60, 0x00, 0x70, 0x30, 0x30, 0x30, 0x3C, 0xE0, 0x1F, 0xE0, // row 19 - 24 - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_64[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, // row 5 - 8 - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, // row 9 - 12 - 0x07, 0x98, 0x00, 0x1F, 0xD8, 0x00, 0x3C, 0xF8, 0x00, 0x30, 0x38, 0x00, // row 13 - 16 - 0x70, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x18, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF8, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x07, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_65[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x30, 0x30, 0x00, // row 13 - 16 - 0x70, 0x18, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x60, 0x00, 0x00, // row 17 - 20 - 0x70, 0x00, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF0, 0x00, 0x1F, 0xE0, 0x00, // row 21 - 24 - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_66[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0xFE, 0x00, 0xFE, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_67[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0x98, 0x00, 0x1F, 0xD8, 0x00, 0x3C, 0xF8, 0x00, 0x30, 0x38, 0x00, // row 13 - 16 - 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x18, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF8, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x07, 0x98, 0x00, 0x00, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x38, 0x00, // row 25 - 28 - 0x38, 0x70, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_68[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, // row 5 - 8 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 9 - 12 - 0x33, 0xE0, 0x00, 0x37, 0xF0, 0x00, 0x3C, 0x38, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 17 - 20 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 21 - 24 - 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_69[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0xF0, 0x00, // row 25 - 30 - 0xE0, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x70, 0x30, 0xE0, 0x31, 0xC0, 0x33, 0x80, 0x37, 0x00, 0x3F, 0x00, // row 13 - 18 - 0x3F, 0x80, 0x39, 0x80, 0x31, 0xC0, 0x30, 0xC0, 0x30, 0xE0, 0x30, 0x60, // row 19 - 24 - 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6D[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 10 - 12 - 0x33, 0xC3, 0xC0, 0x00, 0x37, 0xEF, 0xE0, 0x00, 0x3C, 0x7C, 0x70, 0x00, // row 13 - 15 - 0x38, 0x38, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, // row 16 - 18 - 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, // row 19 - 21 - 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00, // row 22 - 24 - 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_6E[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x33, 0xE0, 0x00, 0x37, 0xF0, 0x00, 0x3C, 0x38, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 17 - 20 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 21 - 24 - 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_6F[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x30, 0x18, 0x00, // row 13 - 16 - 0x70, 0x1C, 0x00, 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, 0x60, 0x0C, 0x00, // row 17 - 20 - 0x70, 0x1C, 0x00, 0x30, 0x18, 0x00, 0x3C, 0x78, 0x00, 0x1F, 0xF0, 0x00, // row 21 - 24 - 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_70[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x33, 0xC0, 0x00, 0x37, 0xF0, 0x00, 0x3E, 0x78, 0x00, 0x38, 0x18, 0x00, // row 13 - 16 - 0x30, 0x1C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0C, 0x00, // row 17 - 20 - 0x30, 0x1C, 0x00, 0x38, 0x18, 0x00, 0x3E, 0x78, 0x00, 0x37, 0xF0, 0x00, // row 21 - 24 - 0x33, 0xC0, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, // row 25 - 28 - 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_71[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x07, 0x98, 0x00, 0x1F, 0xD8, 0x00, 0x3C, 0xF8, 0x00, 0x30, 0x38, 0x00, // row 13 - 16 - 0x70, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, // row 17 - 20 - 0x70, 0x18, 0x00, 0x30, 0x38, 0x00, 0x3C, 0xF8, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x07, 0x98, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, // row 25 - 28 - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_72[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x37, 0x00, 0x3F, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 19 - 24 - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_73[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x1F, 0x00, 0x3F, 0xC0, 0x70, 0xC0, 0x60, 0x60, 0x60, 0x00, 0x3E, 0x00, // row 13 - 18 - 0x1F, 0xC0, 0x03, 0xE0, 0x00, 0x60, 0x60, 0x60, 0x70, 0xE0, 0x3F, 0xC0, // row 19 - 24 - 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_74[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 7 - 12 - 0xFC, 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, // row 13 - 18 - 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3C, 0x00, // row 19 - 24 - 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_75[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 13 - 16 - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, // row 17 - 20 - 0x30, 0x18, 0x00, 0x30, 0x38, 0x00, 0x38, 0x78, 0x00, 0x1F, 0xD8, 0x00, // row 21 - 24 - 0x0F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_76[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0xC0, 0x60, 0xC0, 0x60, 0x60, 0xC0, 0x60, 0xC0, 0x60, 0xC0, 0x31, 0x80, // row 13 - 18 - 0x31, 0x80, 0x31, 0x80, 0x1B, 0x00, 0x1B, 0x00, 0x1F, 0x00, 0x0E, 0x00, // row 19 - 24 - 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_77[] = // 3 bytes per row -{ - // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0xC1, 0xC1, 0x80, 0xC1, 0xC1, 0x80, 0xC1, 0x41, 0x80, 0x63, 0x63, 0x00, // row 13 - 16 - 0x63, 0x63, 0x00, 0x63, 0x63, 0x00, 0x62, 0x23, 0x00, 0x36, 0x36, 0x00, // row 17 - 20 - 0x36, 0x36, 0x00, 0x36, 0x36, 0x00, 0x1C, 0x1C, 0x00, 0x1C, 0x1C, 0x00, // row 21 - 24 - 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 29 - 32 -}; -const unsigned char chr_f32_78[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x60, 0x30, 0x70, 0x70, 0x30, 0x60, 0x18, 0xC0, 0x1D, 0xC0, 0x0F, 0x80, // row 13 - 18 - 0x07, 0x00, 0x0F, 0x80, 0x1D, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x70, 0x70, // row 19 - 24 - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_79[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0xE0, 0x38, 0x60, 0x30, 0x60, 0x30, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, // row 13 - 18 - 0x18, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x0D, 0x80, 0x0D, 0x80, 0x0D, 0x80, // row 19 - 24 - 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x7C, 0x00, // row 25 - 30 - 0x78, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7A[] = // 2 bytes per row -{ - // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x7F, 0xE0, 0x7F, 0xE0, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, // row 13 - 18 - 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0x7F, 0xE0, // row 19 - 24 - 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7B[] = // 2 bytes per row -{ - // row 1 - 6 - 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, // row 7 - 12 - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, // row 13 - 18 - 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, // row 19 - 24 - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x80, // row 25 - 30 - 0x01, 0xE0, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7C[] = // 2 bytes per row -{ - // row 1 - 6 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 7 - 12 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 13 - 18 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 19 - 24 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 25 - 30 - 0x06, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7D[] = // 2 bytes per row -{ - // row 1 - 6 - 0x3C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 7 - 12 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, // row 13 - 18 - 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, // row 19 - 24 - 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, // row 25 - 30 - 0x3C, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7E[] = // 4 bytes per row -{ - // row 1 - 3 - // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x10, 0x00, 0x03, 0x30, 0x10, 0x00, // row 7 - 9 - 0x06, 0x1C, 0x30, 0x00, 0x04, 0x06, 0x60, 0x00, 0x04, 0x03, 0xC0, 0x00, // row 10 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 15 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 16 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 21 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 27 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 28 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 31 - 32 -}; -const unsigned char chr_f32_7F[] = // 1 byte per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 11 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 12 - 22 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 23 - 32 -}; - -const unsigned char* chrtbl_f32[96] = // character pointer table -{ - chr_f32_20, chr_f32_21, chr_f32_22, chr_f32_23, chr_f32_24, chr_f32_25, chr_f32_26, chr_f32_27, - chr_f32_28, chr_f32_29, chr_f32_2A, chr_f32_2B, chr_f32_2C, chr_f32_2D, chr_f32_2E, chr_f32_2F, - chr_f32_30, chr_f32_31, chr_f32_32, chr_f32_33, chr_f32_34, chr_f32_35, chr_f32_36, chr_f32_37, - chr_f32_38, chr_f32_39, chr_f32_3A, chr_f32_3B, chr_f32_3C, chr_f32_3D, chr_f32_3E, chr_f32_3F, - chr_f32_40, chr_f32_41, chr_f32_42, chr_f32_43, chr_f32_44, chr_f32_45, chr_f32_46, chr_f32_47, - chr_f32_48, chr_f32_49, chr_f32_4A, chr_f32_4B, chr_f32_4C, chr_f32_4D, chr_f32_4E, chr_f32_4F, - chr_f32_50, chr_f32_51, chr_f32_52, chr_f32_53, chr_f32_54, chr_f32_55, chr_f32_56, chr_f32_57, - chr_f32_58, chr_f32_59, chr_f32_5A, chr_f32_5B, chr_f32_5C, chr_f32_5D, chr_f32_5E, chr_f32_5F, - chr_f32_60, chr_f32_61, chr_f32_62, chr_f32_63, chr_f32_64, chr_f32_65, chr_f32_66, chr_f32_67, - chr_f32_68, chr_f32_69, chr_f32_6A, chr_f32_6B, chr_f32_6C, chr_f32_6D, chr_f32_6E, chr_f32_6F, - chr_f32_70, chr_f32_71, chr_f32_72, chr_f32_73, chr_f32_74, chr_f32_75, chr_f32_76, chr_f32_77, - chr_f32_78, chr_f32_79, chr_f32_7A, chr_f32_7B, chr_f32_7C, chr_f32_7D, chr_f32_7E, chr_f32_7F -}; diff --git a/libraries/Adafruit_ILI9341/Font32.h b/libraries/Adafruit_ILI9341/Font32.h deleted file mode 100644 index aba49febb..000000000 --- a/libraries/Adafruit_ILI9341/Font32.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f32 96 -#define chr_hgt_f32 26 -#define data_size_f32 8 -#define firstchr_f32 32 - -extern const unsigned char widtbl_f32[96]; -extern const unsigned char* chrtbl_f32[96]; diff --git a/libraries/Adafruit_ILI9341/Font64.c b/libraries/Adafruit_ILI9341/Font64.c deleted file mode 100644 index d17f4a900..000000000 --- a/libraries/Adafruit_ILI9341/Font64.c +++ /dev/null @@ -1,338 +0,0 @@ -// Font size 6 is intended to display numbers and time -// This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 . : a p m -// The Pipe character | is a narrow space to aid formatting -// All other characters print as a space - - -#include "Font64.h" - -const unsigned char widtbl_f64[96] = // character width table -{ - 15, 15, 15, 15, 15, 15, 15, 15, // char 32 - 39 - 15, 15, 15, 15, 15, 15, 18, 15, // char 40 - 47 - 30, 30, 30, 30, 30, 30, 30, 30, // char 48 - 55 - 30, 30, 18, 15, 15, 15, 15, 15, // char 56 - 63 - 15, 15, 15, 15, 15, 15, 15, 15, // char 64 - 71 - 15, 15, 15, 15, 15, 15, 15, 15, // char 72 - 79 - 15, 15, 15, 15, 15, 15, 15, 15, // char 80 - 87 - 15, 15, 15, 15, 15, 15, 15, 15, // char 88 - 95 - 15, 30, 15, 15, 15, 15, 15, 15, // char 96 - 103 - 15, 15, 15, 15, 15, 45, 15, 15, // char 104 - 111 - 32, 15, 15, 15, 15, 15, 15, 15, // char 112 - 119 - 15, 15, 15, 15, 10, 15, 15, 15 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f64_20[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 43 - 48 -}; -const unsigned char chr_f64_2E[144] = // 3 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 9 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 16 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 17 - 20 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 21 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 28 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 29 - 32 - 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, // row 33 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 41 - 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 45 - 48 -}; -const unsigned char chr_f64_30[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x1F, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 7 - 9 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 10 - 12 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 13 - 15 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 16 - 18 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 19 - 21 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x0F, 0x00, // row 25 - 27 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 28 - 30 - 0x1E, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_31[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x01, 0xC0, 0x00, // row 1 - 3 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 4 - 6 - 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, // row 7 - 9 - 0x07, 0xFF, 0xC0, 0x00, 0x07, 0xFB, 0xC0, 0x00, 0x07, 0xC3, 0xC0, 0x00, // row 10 - 12 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 13 - 15 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 16 - 18 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 19 - 21 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 22 - 24 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 25 - 27 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 28 - 30 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 31 - 33 - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_32[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0xF8, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x07, 0xE0, 0x7F, 0x00, // row 4 - 6 - 0x0F, 0x80, 0x1F, 0x00, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x80, // row 7 - 9 - 0x1F, 0x00, 0x07, 0x80, 0x1E, 0x00, 0x07, 0x80, 0x1E, 0x00, 0x07, 0x80, // row 10 - 12 - 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x80, // row 13 - 15 - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0x00, // row 16 - 18 - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, // row 19 - 21 - 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, // row 22 - 24 - 0x01, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, // row 25 - 27 - 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, // row 28 - 30 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x80, // row 31 - 33 - 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_33[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 7 - 9 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 10 - 12 - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, // row 13 - 15 - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xF0, 0x00, // row 16 - 18 - 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x7F, 0x00, // row 19 - 21 - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 25 - 27 - 0x7C, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x1F, 0x80, 0x3E, 0x00, 0x1F, 0x00, // row 28 - 30 - 0x3F, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, // row 31 - 33 - 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_34[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 1 - 3 - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, // row 4 - 6 - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1E, 0xF0, 0x00, // row 7 - 9 - 0x00, 0x1E, 0xF0, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x78, 0xF0, 0x00, // row 10 - 12 - 0x00, 0xF8, 0xF0, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE0, 0xF0, 0x00, // row 13 - 15 - 0x03, 0xC0, 0xF0, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x07, 0x80, 0xF0, 0x00, // row 16 - 18 - 0x0F, 0x00, 0xF0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0xF0, 0x00, // row 19 - 21 - 0x3C, 0x00, 0xF0, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, 0x80, // row 22 - 24 - 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x80, // row 25 - 27 - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 28 - 30 - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 31 - 33 - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_35[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFE, 0x00, // row 4 - 6 - 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, // row 7 - 9 - 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, // row 10 - 12 - 0x0E, 0x00, 0x00, 0x00, 0x1E, 0x3F, 0xC0, 0x00, 0x1E, 0xFF, 0xF0, 0x00, // row 13 - 15 - 0x1F, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 16 - 18 - 0x1F, 0x00, 0x3F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x00, // row 19 - 21 - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, // row 22 - 24 - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x80, // row 25 - 27 - 0x3C, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x0F, 0x00, // row 28 - 30 - 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_36[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0xF0, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xE0, 0x7E, 0x00, // row 4 - 6 - 0x1F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x80, // row 7 - 9 - 0x3E, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x00, 0x00, // row 10 - 12 - 0x3C, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x3F, 0x80, 0x00, // row 13 - 15 - 0x78, 0xFF, 0xF0, 0x00, 0x7B, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xFC, 0x00, // row 16 - 18 - 0x7F, 0xC0, 0xFE, 0x00, 0x7F, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x1F, 0x00, // row 19 - 21 - 0x7C, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x78, 0x00, 0x07, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 25 - 27 - 0x78, 0x00, 0x07, 0x80, 0x3C, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x0F, 0x00, // row 28 - 30 - 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_37[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x80, // row 1 - 3 - 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0x80, // row 4 - 6 - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, // row 7 - 9 - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, 0x00, // row 10 - 12 - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, // row 13 - 15 - 0x00, 0x07, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, // row 16 - 18 - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, // row 19 - 21 - 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, // row 22 - 24 - 0x00, 0x7C, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, // row 25 - 27 - 0x00, 0xF8, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, // row 28 - 30 - 0x00, 0xF0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, // row 31 - 33 - 0x01, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, // row 34 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_38[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xFF, 0xE0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x1F, 0x00, // row 7 - 9 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 10 - 12 - 0x3E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x3E, 0x00, // row 13 - 15 - 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xF0, 0x00, // row 16 - 18 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0x80, 0x7E, 0x00, // row 19 - 21 - 0x3E, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x0F, 0x80, // row 22 - 24 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 25 - 27 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x7C, 0x00, 0x0F, 0x80, // row 28 - 30 - 0x7C, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1F, 0x00, 0x3F, 0x80, 0x7F, 0x00, // row 31 - 33 - 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xF8, 0x00, // row 34 - 36 - 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_39[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xE0, 0x00, // row 1 - 3 - 0x07, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, // row 4 - 6 - 0x3F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x0F, 0x00, // row 7 - 9 - 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 10 - 12 - 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, 0x78, 0x00, 0x07, 0x80, // row 13 - 15 - 0x7C, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1F, 0x80, // row 16 - 18 - 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0xFF, 0x80, 0x0F, 0xFF, 0xFF, 0x80, // row 19 - 21 - 0x07, 0xFF, 0xF7, 0x80, 0x03, 0xFF, 0xC7, 0x80, 0x00, 0x7F, 0x07, 0x80, // row 22 - 24 - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, // row 25 - 27 - 0x78, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x1E, 0x00, // row 28 - 30 - 0x3C, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7E, 0x00, 0x1F, 0x81, 0xFC, 0x00, // row 31 - 33 - 0x0F, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xC0, 0x00, // row 34 - 36 - 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_3A[144] = // 3 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, // row 9 - 12 - 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, // row 13 - 16 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 17 - 20 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 21 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, // row 25 - 28 - 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, // row 29 - 32 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 33 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 41 - 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 45 - 48 -}; -const unsigned char chr_f64_61[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFC, 0x00, // row 10 - 12 - 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x1F, 0x00, 0x1F, 0x00, // row 13 - 15 - 0x1E, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x0F, 0x00, // row 16 - 18 - 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xFF, 0x00, // row 19 - 21 - 0x01, 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xCF, 0x00, // row 22 - 24 - 0x1F, 0xF0, 0x0F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x3E, 0x00, 0x0F, 0x00, // row 25 - 27 - 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0x1F, 0x00, // row 28 - 30 - 0x3C, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7F, 0x00, 0x1F, 0x01, 0xFF, 0xC0, // row 31 - 33 - 0x1F, 0xFF, 0xE7, 0xC0, 0x0F, 0xFF, 0xC7, 0xC0, 0x07, 0xFF, 0x03, 0xC0, // row 34 - 36 - 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 39 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 40 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f64_6D[288] = // 6 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 2 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 3 - 4 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 5 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 8 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, // row 9 - 10 - 0x1E, 0x3F, 0xF0, 0x7F, 0xF0, 0x00, 0x1E, 0xFF, 0xF8, 0xFF, 0xF8, 0x00, // row 11 - 12 - 0x1E, 0xFF, 0xFD, 0xFF, 0xFC, 0x00, 0x1F, 0xE0, 0x7F, 0xE0, 0x7C, 0x00, // row 13 - 14 - 0x1F, 0x80, 0x3F, 0x80, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, // row 15 - 16 - 0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 17 - 18 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 19 - 20 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 21 - 22 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 23 - 24 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 25 - 26 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 27 - 28 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 29 - 30 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 31 - 32 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 33 - 34 - 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, // row 35 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 38 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 39 - 40 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 41 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 44 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 45 - 46 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 47 - 48 -}; -const unsigned char chr_f64_70[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 4 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 9 - 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x3F, 0xFC, 0x00, 0x1E, 0x7F, 0xFE, 0x00, // row 10 - 12 - 0x1E, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0x80, // row 13 - 15 - 0x1F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x03, 0xC0, 0x1F, 0x00, 0x03, 0xC0, // row 16 - 18 - 0x1F, 0x00, 0x03, 0xE0, 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, // row 19 - 21 - 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, // row 22 - 24 - 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, 0x1E, 0x00, 0x01, 0xE0, // row 25 - 27 - 0x1E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xC0, 0x1F, 0x00, 0x07, 0xC0, // row 28 - 30 - 0x1F, 0x80, 0x07, 0xC0, 0x1F, 0xC0, 0x0F, 0x80, 0x1F, 0xF0, 0x3F, 0x80, // row 31 - 33 - 0x1E, 0xFF, 0xFF, 0x00, 0x1E, 0x7F, 0xFE, 0x00, 0x1E, 0x3F, 0xFC, 0x00, // row 34 - 36 - 0x1E, 0x0F, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 37 - 39 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 40 - 42 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 43 - 45 - 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; - -const unsigned char * chrtbl_f64[96] = // character pointer table -{ - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_2E, chr_f64_20, - chr_f64_30, chr_f64_31, chr_f64_32, chr_f64_33, chr_f64_34, chr_f64_35, chr_f64_36, chr_f64_37, - chr_f64_38, chr_f64_39, chr_f64_3A, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_61, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_6D, chr_f64_20, chr_f64_20, - chr_f64_70, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, - chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20, chr_f64_20 -}; diff --git a/libraries/Adafruit_ILI9341/Font64.h b/libraries/Adafruit_ILI9341/Font64.h deleted file mode 100644 index b18fbd646..000000000 --- a/libraries/Adafruit_ILI9341/Font64.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f64 96 -#define chr_hgt_f64 48 -#define data_size_f64 8 -#define firstchr_f64 32 - -extern const unsigned char widtbl_f64[96]; -extern const unsigned char* chrtbl_f64[96]; diff --git a/libraries/Adafruit_ILI9341/Font7s.c b/libraries/Adafruit_ILI9341/Font7s.c deleted file mode 100644 index 1dbacdd42..000000000 --- a/libraries/Adafruit_ILI9341/Font7s.c +++ /dev/null @@ -1,264 +0,0 @@ -// Font size 7 is a 7 segment font intended to display numbers and time -// This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 : . -// All other characters print as a space - -#include "Font7s.h" - - -const unsigned char widtbl_f7s[96] = // character width table -{ - 12, 12, 12, 12, 12, 12, 12, 12, // char 32 - 39 - 12, 12, 12, 12, 12, 12, 12, 12, // char 40 - 47 - 32, 32, 32, 32, 32, 32, 32, 32, // char 48 - 55 - 32, 32, 12, 12, 12, 12, 12, 12, // char 56 - 63 - 12, 12, 12, 12, 12, 12, 12, 12, // char 64 - 71 - 12, 12, 12, 12, 12, 12, 12, 12, // char 72 - 79 - 12, 12, 12, 12, 12, 12, 12, 12, // char 80 - 87 - 12, 12, 12, 12, 12, 12, 12, 12, // char 88 - 95 - 12, 12, 12, 12, 12, 12, 12, 12, // char 96 - 103 - 12, 12, 12, 12, 12, 12, 12, 12, // char 104 - 111 - 12, 12, 12, 12, 12, 12, 12, 12, // char 112 - 119 - 12, 12, 12, 12, 12, 12, 12, 12 // char 120 - 127 -}; - -// Row format, MSB left - -const unsigned char chr_f7s_20[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 43 - 48 -}; -const unsigned char chr_f7s_2E[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x0E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, 0x00, 0x00 // row 43 - 48 -}; -const unsigned char chr_f7s_30[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x0C, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0x00, 0x00, 0x38, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x20, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x3E, 0x00, 0x00, 0x78, // row 25 - 27 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x1E, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_31[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x78, // row 19 - 21 - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_32[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x00, 0xFF, 0xFE, 0x38, 0x03, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x27, 0xFF, 0xFF, 0xC0, 0x39, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x00, // row 25 - 27 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 28 - 30 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 31 - 33 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 34 - 36 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 37 - 39 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_33[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x00, 0xFF, 0xFE, 0x38, 0x03, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_34[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 3 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0C, 0x00, 0x00, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x38, 0x23, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_35[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x00, 0x0C, 0xFF, 0xFE, 0x00, // row 4 - 6 - 0x1E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 7 - 9 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 10 - 12 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 13 - 15 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 16 - 18 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x00, 0x23, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_36[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x00, 0x0C, 0xFF, 0xFE, 0x00, // row 4 - 6 - 0x1E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 7 - 9 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 10 - 12 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 13 - 15 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, // row 16 - 18 - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x00, 0x23, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x27, 0xFF, 0xFF, 0xC0, 0x39, 0xFF, 0xFF, 0x18, 0x3E, 0x00, 0x00, 0x78, // row 25 - 27 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x1E, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_37[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x00, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // row 22 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 43 - 45 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_38[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x0C, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x38, 0x23, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x27, 0xFF, 0xFF, 0xC0, 0x39, 0xFF, 0xFF, 0x18, 0x3E, 0x00, 0x00, 0x78, // row 25 - 27 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x1E, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x0C, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_39[192] = // 4 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0x00, // row 1 - 3 - 0x03, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x20, 0x0C, 0xFF, 0xFE, 0x70, // row 4 - 6 - 0x1E, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 7 - 9 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 10 - 12 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 13 - 15 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, // row 16 - 18 - 0x3F, 0x00, 0x01, 0xF8, 0x3F, 0x00, 0x01, 0xF8, 0x3E, 0x00, 0x00, 0xF8, // row 19 - 21 - 0x38, 0xFF, 0xFE, 0x38, 0x23, 0xFF, 0xFF, 0x88, 0x0F, 0xFF, 0xFF, 0xE0, // row 22 - 24 - 0x07, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x78, // row 25 - 27 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 28 - 30 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 31 - 33 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 34 - 36 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, // row 37 - 39 - 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0xF0, // row 40 - 42 - 0x00, 0xFF, 0xFE, 0x60, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, // row 43 - 45 - 0x01, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00 // row 46 - 48 -}; -const unsigned char chr_f7s_3A[96] = // 2 bytes per row -{ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 1 - 6 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 7 - 12 - 0x00, 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, // row 13 - 18 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 19 - 24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 25 - 30 - 0x0E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, 0x00, 0x00, // row 31 - 36 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // row 37 - 42 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // row 43 - 48 -}; - -const unsigned char * chrtbl_f7s[96] = // character pointer table -{ - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_2E, chr_f7s_20, - chr_f7s_30, chr_f7s_31, chr_f7s_32, chr_f7s_33, chr_f7s_34, chr_f7s_35, chr_f7s_36, chr_f7s_37, - chr_f7s_38, chr_f7s_39, chr_f7s_3A, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, - chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20, chr_f7s_20 -}; diff --git a/libraries/Adafruit_ILI9341/Font7s.h b/libraries/Adafruit_ILI9341/Font7s.h deleted file mode 100644 index 3274a9d53..000000000 --- a/libraries/Adafruit_ILI9341/Font7s.h +++ /dev/null @@ -1,7 +0,0 @@ -#define nr_chrs_f7s 96 -#define chr_hgt_f7s 48 -#define data_size_f7s 8 -#define firstchr_f7s 32 - -extern const unsigned char widtbl_f7s[96]; -extern const unsigned char * chrtbl_f7s[96]; diff --git a/libraries/Adafruit_ILI9341/Load_fonts.h b/libraries/Adafruit_ILI9341/Load_fonts.h deleted file mode 100644 index 2799f4e45..000000000 --- a/libraries/Adafruit_ILI9341/Load_fonts.h +++ /dev/null @@ -1,8 +0,0 @@ -// Comment out the #defines below with // to stop that font being loaded -// If all fonts are loaded the total space required is ablout 17890 bytes - -//#define LOAD_GLCD // Standard Adafruit font needs ~1792 bytes in FLASH -//#define LOAD_FONT2 // Small font, needs ~3092 bytes in FLASH -//#define LOAD_FONT4 // Medium font, needs ~8126 bytes in FLASH -//#define LOAD_FONT6 // Large font, needs ~4404 bytes in FLASH -//#define LOAD_FONT7 // 7 segment font, needs ~3652 bytes in FLASH diff --git a/libraries/Adafruit_ILI9341/driver/hspi.h b/libraries/Adafruit_ILI9341/driver/hspi.h deleted file mode 100644 index e68691ece..000000000 --- a/libraries/Adafruit_ILI9341/driver/hspi.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef INCLUDE_HSPI_H_ -#define INCLUDE_HSPI_H_ - -#include "spi_register.h" -#include -#include -#include -#include - -#define SPI 0 -#define HSPI 1 - -#define SPIFIFOSIZE 16 //16 words length - -extern uint32_t *spi_fifo; -extern uint32_t current_spi_port; - -typedef enum -{ - spi_mode_tx, - spi_mode_txrx -} spi_mode; - -typedef struct -{ - uint32_t spi_port; - uint32_t clock_reg_val; - spi_mode mode; -} spi_config; - -spi_config spi_init(uint32_t spi_port, uint32_t prescaler, spi_mode mode); -void spi_reinit(spi_config *config); -void spi_send_data(const uint8_t * data, uint8_t datasize); -void spi_send_uint16_r(const uint16_t data, int32_t repeats); -static inline void spi_wait_ready(void){while (READ_PERI_REG(SPI_FLASH_CMD(current_spi_port))&SPI_FLASH_USR);} - -static inline void spi_prepare_tx(uint32_t bytecount) -{ - uint32_t bitcount = bytecount * 8 - 1; - - WRITE_PERI_REG(SPI_FLASH_USER1(current_spi_port), (bitcount & SPI_USR_OUT_BITLEN) << SPI_USR_OUT_BITLEN_S); -} - -static inline void spi_prepare_txrx_bits(uint32_t txbitcount, uint32_t rxbitcount) -{ - WRITE_PERI_REG(SPI_FLASH_USER1(current_spi_port), ((txbitcount & SPI_USR_OUT_BITLEN) << SPI_USR_OUT_BITLEN_S) | - ((rxbitcount & SPI_USR_DIN_BITLEN) << SPI_USR_DIN_BITLEN_S)); -} - -static inline void spi_start_tx() -{ - SET_PERI_REG_MASK(SPI_FLASH_CMD(current_spi_port), SPI_FLASH_USR); // send -} - -static inline void spi_send_uint8(uint8_t data) -{ - spi_prepare_tx(1); - *spi_fifo = data; - spi_start_tx(); -} - -static inline void spi_send_uint16(uint16_t data) -{ - spi_prepare_tx(2); - *spi_fifo = data; - spi_start_tx(); -} - -static inline void spi_send_uint32(uint32_t data) -{ - spi_prepare_tx(4); - *spi_fifo = data; - spi_start_tx(); -} - -/* This is needed to implement XPT2046 driver since it transmits 13 bits back*/ -extern uint16_t spi_send_uint8_receive_13bits(uint8_t to_send); - -#endif /* INCLUDE_HSPI_H_ */ diff --git a/libraries/Adafruit_ILI9341/driver/spi_register.h b/libraries/Adafruit_ILI9341/driver/spi_register.h deleted file mode 100644 index 8ed4cfae8..000000000 --- a/libraries/Adafruit_ILI9341/driver/spi_register.h +++ /dev/null @@ -1,239 +0,0 @@ -//Generated at 2014-07-29 11:03:29 -/* - * Copyright (c) 2010 - 2011 Espressif System - * - */ - -#ifndef SPI_REGISTER_H_INCLUDED -#define SPI_REGISTER_H_INCLUDED - -#define REG_SPI_BASE(i) (0x60000200-i*0x100) - -#define SPI_FLASH_CMD(i) (REG_SPI_BASE(i) + 0x0) -#define SPI_FLASH_READ (BIT(31)) -#define SPI_FLASH_WREN (BIT(30)) -#define SPI_FLASH_WRDI (BIT(29)) -#define SPI_FLASH_RDID (BIT(28)) -#define SPI_FLASH_RDSR (BIT(27)) -#define SPI_FLASH_WRSR (BIT(26)) -#define SPI_FLASH_PP (BIT(25)) -#define SPI_FLASH_SE (BIT(24)) -#define SPI_FLASH_BE (BIT(23)) -#define SPI_FLASH_CE (BIT(22)) -#define SPI_FLASH_DP (BIT(21)) -#define SPI_FLASH_RES (BIT(20)) -#define SPI_FLASH_HPM (BIT(19)) -#define SPI_FLASH_USR (BIT(18)) - -#define SPI_FLASH_ADDR(i) (REG_SPI_BASE(i) + 0x4) - -#define SPI_FLASH_CTRL(i) (REG_SPI_BASE(i) + 0x8) -#define SPI_WR_BIT_ODER (BIT(26)) -#define SPI_RD_BIT_ODER (BIT(25)) -#define SPI_QIO_MODE (BIT(24)) -#define SPI_DIO_MODE (BIT(23)) -#define SPI_TWO_BYTE_STATUS_EN (BIT(22)) -#define SPI_WP_REG (BIT(21)) -#define SPI_QOUT_MODE (BIT(20)) -#define SPI_SHARE_BUS (BIT(19)) -#define SPI_HOLD_MODE (BIT(18)) -#define SPI_ENABLE_AHB (BIT(17)) -#define SPI_SST_AAI (BIT(16)) -#define SPI_RESANDRES (BIT(15)) -#define SPI_DOUT_MODE (BIT(14)) -#define SPI_FASTRD_MODE (BIT(13)) - -#define SPI_FLASH_CTRL1(i) (REG_SPI_BASE (i) + 0xC) -#define SPI_T_CSH 0x0000000F -#define SPI_T_CSH_S 28 -#define SPI_T_RES 0x00000FFF -#define SPI_T_RES_S 16 -#define SPI_BUS_TIMER_LIMIT 0x0000FFFF -#define SPI_BUS_TIMER_LIMIT_S 0 - -#define SPI_FLASH_STATUS(i) (REG_SPI_BASE(i) + 0x10) -#define SPI_STATUS_EXT 0x000000FF -#define SPI_STATUS_EXT_S 24 -#define SPI_WB_MODE 0x000000FF -#define SPI_WB_MODE_S 16 -#define SPI_FLASH_STATUS_PRO_FLAG (BIT(7)) -#define SPI_FLASH_TOP_BOT_PRO_FLAG (BIT(5)) -#define SPI_FLASH_BP2 (BIT(4)) -#define SPI_FLASH_BP1 (BIT(3)) -#define SPI_FLASH_BP0 (BIT(2)) -#define SPI_FLASH_WRENABLE_FLAG (BIT(1)) -#define SPI_FLASH_BUSY_FLAG (BIT(0)) - -#define SPI_FLASH_CTRL2(i) (REG_SPI_BASE(i) + 0x14) -#define SPI_CS_DELAY_NUM 0x0000000F -#define SPI_CS_DELAY_NUM_S 28 -#define SPI_CS_DELAY_MODE 0x00000003 -#define SPI_CS_DELAY_MODE_S 26 -#define SPI_MOSI_DELAY_NUM 0x00000007 -#define SPI_MOSI_DELAY_NUM_S 23 -#define SPI_MOSI_DELAY_MODE 0x00000003 -#define SPI_MOSI_DELAY_MODE_S 21 -#define SPI_MISO_DELAY_NUM 0x00000007 -#define SPI_MISO_DELAY_NUM_S 18 -#define SPI_MISO_DELAY_MODE 0x00000003 -#define SPI_MISO_DELAY_MODE_S 16 -#define SPI_CK_OUT_HIGH_MODE 0x0000000F -#define SPI_CK_OUT_HIGH_MODE_S 12 -#define SPI_CK_OUT_LOW_MODE 0x0000000F -#define SPI_CK_OUT_LOW_MODE_S 8 -#define SPI_HOLD_TIME 0x0000000F -#define SPI_HOLD_TIME_S 4 -#define SPI_SETUP_TIME 0x0000000F -#define SPI_SETUP_TIME_S 0 - -#define SPI_FLASH_CLOCK(i) (REG_SPI_BASE(i) + 0x18) -#define SPI_CLK_EQU_SYSCLK (BIT(31)) -#define SPI_CLKDIV_PRE 0x00001FFF -#define SPI_CLKDIV_PRE_S 18 -#define SPI_CLKCNT_N 0x0000003F -#define SPI_CLKCNT_N_S 12 -#define SPI_CLKCNT_H 0x0000003F -#define SPI_CLKCNT_H_S 6 -#define SPI_CLKCNT_L 0x0000003F -#define SPI_CLKCNT_L_S 0 - -#define SPI_FLASH_USER(i) (REG_SPI_BASE(i) + 0x1C) -#define SPI_USR_COMMAND (BIT(31)) -#define SPI_FLASH_USR_ADDR (BIT(30)) -#define SPI_FLASH_USR_DUMMY (BIT(29)) -#define SPI_FLASH_USR_DIN (BIT(28)) -#define SPI_FLASH_DOUT (BIT(27)) -#define SPI_USR_DUMMY_IDLE (BIT(26)) -#define SPI_USR_DOUT_HIGHPART (BIT(25)) -#define SPI_USR_DIN_HIGHPART (BIT(24)) -#define SPI_USR_PREP_HOLD (BIT(23)) -#define SPI_USR_CMD_HOLD (BIT(22)) -#define SPI_USR_ADDR_HOLD (BIT(21)) -#define SPI_USR_DUMMY_HOLD (BIT(20)) -#define SPI_USR_DIN_HOLD (BIT(19)) -#define SPI_USR_DOUT_HOLD (BIT(18)) -#define SPI_USR_HOLD_POL (BIT(17)) -#define SPI_SIO (BIT(16)) -#define SPI_FWRITE_QIO (BIT(15)) -#define SPI_FWRITE_DIO (BIT(14)) -#define SPI_FWRITE_QUAD (BIT(13)) -#define SPI_FWRITE_DUAL (BIT(12)) -#define SPI_WR_BYTE_ORDER (BIT(11)) -#define SPI_RD_BYTE_ORDER (BIT(10)) -#define SPI_AHB_ENDIAN_MODE 0x00000003 -#define SPI_AHB_ENDIAN_MODE_S 8 -#define SPI_CK_OUT_EDGE (BIT(7)) -#define SPI_CK_I_EDGE (BIT(6)) -#define SPI_CS_SETUP (BIT(5)) -#define SPI_CS_HOLD (BIT(4)) -#define SPI_AHB_USR_COMMAND (BIT(3)) -#define SPI_AHB_USR_COMMAND_4BYTE (BIT(1)) -#define SPI_DOUTDIN (BIT(0)) - -#define SPI_FLASH_USER1(i) (REG_SPI_BASE(i) + 0x20) -#define SPI_USR_ADDR_BITLEN 0x0000003F -#define SPI_USR_ADDR_BITLEN_S 26 -#define SPI_USR_OUT_BITLEN 0x000001FF -#define SPI_USR_OUT_BITLEN_S 17 -#define SPI_USR_DIN_BITLEN 0x000001FF -#define SPI_USR_DIN_BITLEN_S 8 -#define SPI_USR_DUMMY_CYCLELEN 0x000000FF -#define SPI_USR_DUMMY_CYCLELEN_S 0 - -#define SPI_FLASH_USER2(i) (REG_SPI_BASE(i) + 0x24) -#define SPI_USR_COMMAND_BITLEN 0x0000000F -#define SPI_USR_COMMAND_BITLEN_S 28 -#define SPI_USR_COMMAND_VALUE 0x0000FFFF -#define SPI_USR_COMMAND_VALUE_S 0 - -#define SPI_FLASH_USER3(i) (REG_SPI_BASE(i) + 0x28) -#define SPI_FLASH_PIN(i) (REG_SPI_BASE(i) + 0x2C) -#define SPI_FLASH_SLAVE(i) (REG_SPI_BASE(i) + 0x30) -#define SPI_SYNC_RESET (BIT(31)) -#define SPI_SLAVE_MODE (BIT(30)) -#define SPI_SLV_WR_RD_BUF_EN (BIT(29)) -#define SPI_SLV_WR_RD_STA_EN (BIT(28)) -#define SPI_SLV_CMD_DEFINE (BIT(27)) -#define SPI_TRANS_CNT 0x0000000F -#define SPI_TRANS_CNT_S 23 -#define SPI_SLV_LAST_STATE 0x00000007 -#define SPI_SLV_LAST_STATE_S 20 -#define SPI_SLV_LAST_COMMAND 0x00000007 -#define SPI_SLV_LAST_COMMAND_S 17 -#define SPI_CS_I_MODE 0x00000003 -#define SPI_CS_I_MODE_S 10 -#define SPI_INT_EN 0x0000001F -#define SPI_INT_EN_S 5 -#define SPI_TRANS_DONE (BIT(4)) -#define SPI_SLV_WR_STA_DONE (BIT(3)) -#define SPI_SLV_RD_STA_DONE (BIT(2)) -#define SPI_SLV_WR_BUF_DONE (BIT(1)) -#define SPI_SLV_RD_BUF_DONE (BIT(0)) - -#define SPI_FLASH_SLAVE1(i) (REG_SPI_BASE(i) + 0x34) -#define SPI_SLV_STATUS_BITLEN 0x0000001F -#define SPI_SLV_STATUS_BITLEN_S 27 -#define SPI_SLV_STATUS_FAST_EN (BIT(26)) -#define SPI_SLV_STATUS_READBACK (BIT(25)) -#define SPI_SLV_BUF_BITLEN 0x000001FF -#define SPI_SLV_BUF_BITLEN_S 16 -#define SPI_SLV_RD_ADDR_BITLEN 0x0000003F -#define SPI_SLV_RD_ADDR_BITLEN_S 10 -#define SPI_SLV_WR_ADDR_BITLEN 0x0000003F -#define SPI_SLV_WR_ADDR_BITLEN_S 4 -#define SPI_SLV_WRSTA_DUMMY_EN (BIT(3)) -#define SPI_SLV_RDSTA_DUMMY_EN (BIT(2)) -#define SPI_SLV_WRBUF_DUMMY_EN (BIT(1)) -#define SPI_SLV_RDBUF_DUMMY_EN (BIT(0)) - -#define SPI_FLASH_SLAVE2(i) (REG_SPI_BASE(i) + 0x38) -#define SPI_SLV_WRBUF_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_WRBUF_DUMMY_CYCLELEN_S 24 -#define SPI_SLV_RDBUF_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_RDBUF_DUMMY_CYCLELEN_S 16 -#define SPI_SLV_WRSTA_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_WRSTA_DUMMY_CYCLELEN_S 8 -#define SPI_SLV_RDSTA_DUMMY_CYCLELEN 0x000000FF -#define SPI_SLV_RDSTA_DUMMY_CYCLELEN_S 0 - -#define SPI_FLASH_SLAVE3(i) (REG_SPI_BASE(i) + 0x3C) -#define SPI_SLV_WRSTA_CMD_VALUE 0x000000FF -#define SPI_SLV_WRSTA_CMD_VALUE_S 24 -#define SPI_SLV_RDSTA_CMD_VALUE 0x000000FF -#define SPI_SLV_RDSTA_CMD_VALUE_S 16 -#define SPI_SLV_WRBUF_CMD_VALUE 0x000000FF -#define SPI_SLV_WRBUF_CMD_VALUE_S 8 -#define SPI_SLV_RDBUF_CMD_VALUE 0x000000FF -#define SPI_SLV_RDBUF_CMD_VALUE_S 0 - -#define SPI_FLASH_C0(i) (REG_SPI_BASE(i) +0x40) -#define SPI_FLASH_C1(i) (REG_SPI_BASE(i) +0x44) -#define SPI_FLASH_C2(i) (REG_SPI_BASE(i) +0x48) -#define SPI_FLASH_C3(i) (REG_SPI_BASE(i) +0x4C) -#define SPI_FLASH_C4(i) (REG_SPI_BASE(i) +0x50) -#define SPI_FLASH_C5(i) (REG_SPI_BASE(i) +0x54) -#define SPI_FLASH_C6(i) (REG_SPI_BASE(i) +0x58) -#define SPI_FLASH_C7(i) (REG_SPI_BASE(i) +0x5C) - -#define SPI_FLASH_EXT0(i) (REG_SPI_BASE(i) + 0xF0) -#define SPI_T_PP_ENA (BIT(31)) -#define SPI_T_PP_SHIFT 0x0000000F -#define SPI_T_PP_SHIFT_S 16 -#define SPI_T_PP_TIME 0x00000FFF -#define SPI_T_PP_TIME_S 0 - -#define SPI_FLASH_EXT1(i) (REG_SPI_BASE(i) + 0xF4) -#define SPI_T_ERASE_ENA (BIT(31)) -#define SPI_T_ERASE_SHIFT 0x0000000F -#define SPI_T_ERASE_SHIFT_S 16 -#define SPI_T_ERASE_TIME 0x00000FFF -#define SPI_T_ERASE_TIME_S 0 - -#define SPI_FLASH_EXT2(i) (REG_SPI_BASE(i) + 0xF8) -#define SPI_ST 0x00000007 -#define SPI_ST_S 0 - -#define SPI_FLASH_EXT3(i) (REG_SPI_BASE(i) + 0xFC) -#define SPI_INT_HOLD_ENA 0x00000003 -#define SPI_INT_HOLD_ENA_S 0 -#endif // SPI_REGISTER_H_INCLUDED diff --git a/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino b/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino deleted file mode 100644 index 7ba806f2d..000000000 --- a/libraries/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino +++ /dev/null @@ -1,332 +0,0 @@ -/*************************************************** - This is our GFX example for the Adafruit ILI9341 Breakout and Shield - ----> http://www.adafruit.com/products/1651 - - Check out the links above for our tutorials and wiring diagrams - These displays use SPI to communicate, 4 or 5 pins are required to - interface (RST is optional) - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing - products from Adafruit! - - Written by Limor Fried/Ladyada for Adafruit Industries. - MIT license, all text above must be included in any redistribution - - Modified by Sermus for ESP8266 - ****************************************************/ - - -#include "SPI.h" -#include "Adafruit_GFX.h" -#include "Adafruit_ILI9341.h" - -Adafruit_ILI9341 tft = Adafruit_ILI9341(); - -void setup() { - Serial.begin(115200); - Serial.println("ILI9341 Test!"); - - tft.begin(); - - Serial.println(F("Benchmark Time (microseconds)")); - - Serial.print(F("Screen fill ")); - Serial.println(testFillScreen()); - delay(500); - - Serial.print(F("Text ")); - Serial.println(testText()); - delay(3000); - - Serial.print(F("Lines ")); - Serial.println(testLines(ILI9341_CYAN)); - delay(500); - - Serial.print(F("Horiz/Vert Lines ")); - Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE)); - delay(500); - - Serial.print(F("Rectangles (outline) ")); - Serial.println(testRects(ILI9341_GREEN)); - delay(500); - - Serial.print(F("Rectangles (filled) ")); - Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA)); - delay(500); - - Serial.print(F("Circles (filled) ")); - Serial.println(testFilledCircles(10, ILI9341_MAGENTA)); - - Serial.print(F("Circles (outline) ")); - Serial.println(testCircles(10, ILI9341_WHITE)); - delay(500); - - Serial.print(F("Triangles (outline) ")); - Serial.println(testTriangles()); - delay(500); - - Serial.print(F("Triangles (filled) ")); - Serial.println(testFilledTriangles()); - delay(500); - - Serial.print(F("Rounded rects (outline) ")); - Serial.println(testRoundRects()); - delay(500); - - Serial.print(F("Rounded rects (filled) ")); - Serial.println(testFilledRoundRects()); - delay(500); - - Serial.println(F("Done!")); - -} - - -void loop(void) { - for(uint8_t rotation=0; rotation<4; rotation++) { - tft.setRotation(rotation); - testText(); - delay(1000); - } -} - -unsigned long testFillScreen() { - unsigned long start = micros(); - tft.fillScreen(ILI9341_BLACK); - tft.fillScreen(ILI9341_RED); - tft.fillScreen(ILI9341_GREEN); - tft.fillScreen(ILI9341_BLUE); - tft.fillScreen(ILI9341_BLACK); - return micros() - start; -} - -unsigned long testText() { - tft.fillScreen(ILI9341_BLACK); - unsigned long start = micros(); - tft.setCursor(0, 0); - tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1); - tft.println("Hello World!"); - tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2); - tft.println(1234.56); - tft.setTextColor(ILI9341_RED); tft.setTextSize(3); - tft.println(0xDEADBEEF, HEX); - tft.println(); - tft.setTextColor(ILI9341_GREEN); - tft.setTextSize(5); - tft.println("Groop"); - tft.setTextSize(2); - tft.println("I implore thee,"); - tft.setTextSize(1); - tft.println("my foonting turlingdromes."); - tft.println("And hooptiously drangle me"); - tft.println("with crinkly bindlewurdles,"); - tft.println("Or I will rend thee"); - tft.println("in the gobberwarts"); - tft.println("with my blurglecruncheon,"); - tft.println("see if I don't!"); - return micros() - start; -} - -unsigned long testLines(uint16_t color) { - unsigned long start, t; - int x1, y1, x2, y2, - w = tft.width(), - h = tft.height(); - - tft.fillScreen(ILI9341_BLACK); - - x1 = y1 = 0; - y2 = h - 1; - start = micros(); - for(x2=0; x20; i-=6) { - i2 = i / 2; - start = micros(); - tft.fillRect(cx-i2, cy-i2, i, i, color1); - t += micros() - start; - // Outlines are not included in timing results - tft.drawRect(cx-i2, cy-i2, i, i, color2); - } - - return t; -} - -unsigned long testFilledCircles(uint8_t radius, uint16_t color) { - unsigned long start; - int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; - - tft.fillScreen(ILI9341_BLACK); - start = micros(); - for(x=radius; x10; i-=5) { - start = micros(); - tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, - tft.color565(0, i, i)); - t += micros() - start; - tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, - tft.color565(i, i, 0)); - } - - return t; -} - -unsigned long testRoundRects() { - unsigned long start; - int w, i, i2, - cx = tft.width() / 2 - 1, - cy = tft.height() / 2 - 1; - - tft.fillScreen(ILI9341_BLACK); - w = min(tft.width(), tft.height()); - start = micros(); - for(i=0; i20; i-=6) { - i2 = i / 2; - tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); - } - - return micros() - start; -} diff --git a/libraries/Adafruit_ILI9341/hspi.c b/libraries/Adafruit_ILI9341/hspi.c deleted file mode 100644 index 506c62bb8..000000000 --- a/libraries/Adafruit_ILI9341/hspi.c +++ /dev/null @@ -1,109 +0,0 @@ -#include "driver/hspi.h" - -/* -Pinout: -MISO GPIO12 -MOSI GPIO13 -CLK GPIO14 -CS GPIO15 -DC GPIO2 -*/ - -#define __min(a,b) ((a > b) ? (b):(a)) -uint32_t *spi_fifo; -uint32_t current_spi_port; - -spi_config spi_init(uint32_t spi_port, uint32_t prescaler, spi_mode mode) -{ - spi_config config; - - WRITE_PERI_REG(PERIPHS_IO_MUX, 0x105); //clear bit9 - - if (spi_port == SPI) - { - PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA0_U, 2); // SD_D0 MISO - PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_DATA1_U, 2); // SD_D1 MOSI - PIN_FUNC_SELECT(PERIPHS_IO_MUX_SD_CLK_U, 2); // CLK - } else if (spi_port == HSPI) - { - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, 2); // HSPIQ MISO GPIO12 - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, 2); // HSPID MOSI GPIO13 - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, 2); // CLK GPIO14 - PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, 2); // CS GPIO15 - } - - - config.mode = mode; - config.spi_port = spi_port; - // SPI clock = CPU clock / 10 / 4 - // time length HIGHT level = (CPU clock / 10 / 2) ^ -1, - // time length LOW level = (CPU clock / 10 / 2) ^ -1 - config.clock_reg_val = (((prescaler - 1) & SPI_CLKDIV_PRE) << SPI_CLKDIV_PRE_S) | - ((1 & SPI_CLKCNT_N) << SPI_CLKCNT_N_S) | - ((0 & SPI_CLKCNT_H) << SPI_CLKCNT_H_S) | - ((1 & SPI_CLKCNT_L) << SPI_CLKCNT_L_S); - - spi_reinit(&config); - return config; -} - -void spi_reinit(spi_config *config) -{ - current_spi_port = config->spi_port; - spi_fifo = (uint32_t*)SPI_FLASH_C0(current_spi_port); - - uint32_t regvalue = SPI_FLASH_DOUT; - WRITE_PERI_REG(SPI_FLASH_CLOCK(current_spi_port), config->clock_reg_val); - WRITE_PERI_REG(SPI_FLASH_CTRL1(current_spi_port), 0); - - switch(config->mode) - { - case spi_mode_tx: - regvalue &= ~(BIT2 | SPI_FLASH_USR_ADDR | SPI_FLASH_USR_DUMMY | SPI_FLASH_USR_DIN | SPI_USR_COMMAND | SPI_DOUTDIN); - break; - case spi_mode_txrx: - regvalue |= SPI_DOUTDIN | SPI_CK_I_EDGE; - regvalue &= ~(BIT2 | SPI_FLASH_USR_ADDR | SPI_FLASH_USR_DUMMY | SPI_FLASH_USR_DIN | SPI_USR_COMMAND); - break; - } - - WRITE_PERI_REG(SPI_FLASH_USER(current_spi_port), regvalue); -} - -void spi_send_uint16_r(uint16_t data, int32_t repeats) -{ - uint32_t i; - uint32_t word = data << 16 | data; - - while(repeats > 0) - { - uint16_t bytes_to_transfer = __min(repeats * sizeof(uint16_t) , SPIFIFOSIZE * sizeof(uint32_t)); - spi_wait_ready(); - spi_prepare_tx(bytes_to_transfer); - for(i = 0; i < (bytes_to_transfer + 3) / 4;i++) - spi_fifo[i] = word; - spi_start_tx(); - repeats -= bytes_to_transfer / 2; - } -} - -void spi_send_data(const uint8_t * data, uint8_t datasize) -{ - uint32_t *_data = (uint32_t*)data; - uint8_t i; - - uint8_t words_to_send = __min((datasize + 3) / 4, SPIFIFOSIZE); - spi_prepare_tx(datasize); - for(i = 0; i < words_to_send;i++) - spi_fifo[i] = _data[i]; - spi_start_tx(); -} - -uint16_t spi_send_uint8_receive_13bits(uint8_t to_send) -{ - spi_prepare_txrx_bits(8, 13); - *spi_fifo = to_send; - spi_start_tx(); - spi_wait_ready(); - return (*spi_fifo) & 0x1FFF; -} diff --git a/libraries/Adafruit_ILI9341/mini-printf.c b/libraries/Adafruit_ILI9341/mini-printf.c deleted file mode 100644 index 29f948811..000000000 --- a/libraries/Adafruit_ILI9341/mini-printf.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * The Minimal snprintf() implementation - * - * Copyright (c) 2013,2014 Michal Ludvig - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the auhor nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * ---- - * - * This is a minimal snprintf() implementation optimised - * for embedded systems with a very limited program memory. - * mini_snprintf() doesn't support _all_ the formatting - * the glibc does but on the other hand is a lot smaller. - * Here are some numbers from my STM32 project (.bin file size): - * no snprintf(): 10768 bytes - * mini snprintf(): 11420 bytes (+ 652 bytes) - * glibc snprintf(): 34860 bytes (+24092 bytes) - * Wasting nearly 24kB of memory just for snprintf() on - * a chip with 32kB flash is crazy. Use mini_snprintf() instead. - * - */ - -#include -#include -#include "mini-printf.h" - -static unsigned int -mini_strlen(const char *s) -{ - unsigned int len = 0; - while (s[len] != '\0') len++; - return len; -} - -static unsigned int -mini_itoa(int value, unsigned int radix, unsigned int uppercase, - char *buffer, unsigned int zero_pad) -{ - char *pbuffer = buffer; - int negative = 0; - unsigned int i, len; - - /* No support for unusual radixes. */ - if (radix > 16) - return 0; - - if (value < 0) { - negative = 1; - value = -value; - } - - /* This builds the string back to front ... */ - do { - int digit = value % radix; - *(pbuffer++) = (digit < 10 ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10); - value /= radix; - } while (value > 0); - - for (i = (pbuffer - buffer); i < zero_pad; i++) - *(pbuffer++) = '0'; - - if (negative) - *(pbuffer++) = '-'; - - *(pbuffer) = '\0'; - - /* ... now we reverse it (could do it recursively but will - * conserve the stack space) */ - len = (pbuffer - buffer); - for (i = 0; i < len / 2; i++) { - char j = buffer[i]; - buffer[i] = buffer[len-i-1]; - buffer[len-i-1] = j; - } - - return len; -} - -int -mini_vsnprintf(char *buffer, unsigned int buffer_len, const char *fmt, va_list va) -{ - char *pbuffer = buffer; - char bf[24]; - char ch; - - int _putc(char ch) - { - if ((unsigned int)((pbuffer - buffer) + 1) >= buffer_len) - return 0; - *(pbuffer++) = ch; - *(pbuffer) = '\0'; - return 1; - } - - int _puts(char *s, unsigned int len) - { - unsigned int i; - - if (buffer_len - (pbuffer - buffer) - 1 < len) - len = buffer_len - (pbuffer - buffer) - 1; - - /* Copy to buffer */ - for (i = 0; i < len; i++) - *(pbuffer++) = s[i]; - *(pbuffer) = '\0'; - - return len; - } - - while ((ch=*(fmt++))) { - if ((unsigned int)((pbuffer - buffer) + 1) >= buffer_len) - break; - if (ch!='%') - _putc(ch); - else { - char zero_pad = 0; - char *ptr; - unsigned int len; - - ch=*(fmt++); - - /* Zero padding requested */ - if (ch=='0') { - ch=*(fmt++); - if (ch == '\0') - goto end; - if (ch >= '0' && ch <= '9') - zero_pad = ch - '0'; - ch=*(fmt++); - } - - switch (ch) { - case 0: - goto end; - - case 'u': - case 'd': - len = mini_itoa(va_arg(va, unsigned int), 10, 0, bf, zero_pad); - _puts(bf, len); - break; - - case 'x': - case 'X': - len = mini_itoa(va_arg(va, unsigned int), 16, (ch=='X'), bf, zero_pad); - _puts(bf, len); - break; - - case 'c' : - _putc((char)(va_arg(va, int))); - break; - - case 's' : - ptr = va_arg(va, char*); - _puts(ptr, mini_strlen(ptr)); - break; - - default: - _putc(ch); - break; - } - } - } -end: - return pbuffer - buffer; -} - - -int -mini_snprintf(char* buffer, unsigned int buffer_len, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = mini_vsnprintf(buffer, buffer_len, fmt, va); - va_end(va); - - return ret; -} diff --git a/libraries/Adafruit_ILI9341/mini-printf.h b/libraries/Adafruit_ILI9341/mini-printf.h deleted file mode 100644 index 45eb6705d..000000000 --- a/libraries/Adafruit_ILI9341/mini-printf.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * The Minimal snprintf() implementation - * - * Copyright (c) 2013 Michal Ludvig - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the auhor nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#ifndef __MINI_PRINTF__ -#define __MINI_PRINTF__ -#include - -int mini_vsnprintf(char* buffer, unsigned int buffer_len, const char *fmt, va_list va); -int mini_snprintf(char* buffer, unsigned int buffer_len, const char *fmt, ...); - -#define vsnprintf mini_vsnprintf -#define snprintf mini_snprintf - -#endif diff --git a/libraries/Adafruit_ILI9341/readme.txt b/libraries/Adafruit_ILI9341/readme.txt deleted file mode 100644 index 90a7089e7..000000000 --- a/libraries/Adafruit_ILI9341/readme.txt +++ /dev/null @@ -1,12 +0,0 @@ -Port of Adafruit's library for ILI9341 to ESP8266 -Uses HSPI. -Wiring: -ILI9341 pin ESP8266 pin -MISO GPIO12 -MOSI GPIO13 -SCK GPIO14 -CS GPIO15 -DC GPIO2 - -Reset 3V3 -LED through 50-60 Ohm resistor to 3V3 \ No newline at end of file diff --git a/libraries/SPI/SPI.h b/libraries/SPI/SPI.h index a39f3d042..3a37c52e1 100644 --- a/libraries/SPI/SPI.h +++ b/libraries/SPI/SPI.h @@ -24,6 +24,8 @@ #include #include +#define SPI_HAS_TRANSACTION + // This defines are not representing the real Divider of the ESP8266 // the Defines match to an AVR Arduino on 16MHz for better compatibility #if F_CPU == 80000000L From 51b1daf6435187be42fa5733b1b7768dbb367ee1 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 8 May 2015 15:04:45 +0200 Subject: [PATCH 2/4] add esp8266_tcp_active_close.png image --- doc/esp8266_tcp_active_close.png | Bin 0 -> 132720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/esp8266_tcp_active_close.png diff --git a/doc/esp8266_tcp_active_close.png b/doc/esp8266_tcp_active_close.png new file mode 100644 index 0000000000000000000000000000000000000000..f9dad0987335e0295247df2285ac93781b0c9649 GIT binary patch literal 132720 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 z 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 Date: Fri, 8 May 2015 15:27:32 +0200 Subject: [PATCH 3/4] fix SPI run on system clock --- libraries/SPI/SPI.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 2523e689f..740401c3a 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -43,7 +43,6 @@ void SPIClass::begin() { pinMode(MISO, SPECIAL); ///< GPIO12 pinMode(MOSI, SPECIAL); ///< GPIO13 - GPMUX = 0x105; // note crash if SPI flash Frequency < 40MHz SPI1C = 0; setFrequency(1000000); ///< 1MHz SPI1U = SPIUMOSI | SPIUDUPLEX | SPIUSSE; @@ -187,6 +186,11 @@ void SPIClass::setFrequency(uint32_t freq) { } void SPIClass::setClockDivider(uint32_t clockDiv) { + if(clockDiv == 0x80000000) { + GPMUX |= (1 << 9); // Set bit 9 if sysclock required + } else { + GPMUX &= ~(1 << 9); + } SPI1CLK = clockDiv; } From dcc899a1b5db2b894f28ac3c417608a80b8394af Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 8 May 2015 15:33:48 +0200 Subject: [PATCH 4/4] some speed optimizations --- libraries/SPI/SPI.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/SPI/SPI.cpp b/libraries/SPI/SPI.cpp index 740401c3a..d9f9ea1eb 100644 --- a/libraries/SPI/SPI.cpp +++ b/libraries/SPI/SPI.cpp @@ -123,7 +123,11 @@ void SPIClass::setFrequency(uint32_t freq) { const spiClk_t minFreqReg = { 0x7FFFF000 }; uint32_t minFreq = ClkRegToFreq((spiClk_t*) &minFreqReg); if(freq < minFreq) { - freq = minFreq; + // use minimum possible clock + setClockDivider(minFreqReg.regValue); + lastSetRegister = SPI1CLK; + lastSetFrequency = freq; + return; } uint8_t calN = 1;