#pragma once /* https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf */ /* CONTROL BYTE A control byte mainly consists of Co (Continuation Bit) and D/C# (Data / Command Selection Bit) bits following by six “0”. Co: 0 = The transmission of the following information will contain data bytes only. 1 = NOT DEFINED D/C#: 0 = The following data byte is a command. 1 = The following data byte is a data which will be stored at the GDDRAM. The GDDRAM column address pointer will be increased by one automatically after each data write. */ #define OLED_CONTROL_BYTE_CMD 0x00 // Control Byte to transmit a command. #define OLED_CONTROL_BYTE_DATA 0x40 // Control byte to transmit data. /* FUNDAMENTAL COMMAND */ #define OLED_CMD_SET_CONTRAST_CONTROL 0x81 // Double byte command to set contrast setting of the display. [0x00 - 0xFF] (RESET: 0x7F) #define OLED_CMD_ENABLE_DISPLAY_RAM 0xA4 // Enable display outputs according to the GDDRAM contents. (Default during reset) #define OLED_CMD_FORCE_DISPLAY_ALLON 0xA5 // Forces the entire display to be “ON”. #define OLED_CMD_NORMAL_DISPLAY 0xA6 // RAM data of 1 indicates an “ON” pixel. (Default during reset) #define OLED_CMD_INVERTED_DISPLAY 0xA7 // RAM data of 0 indicates an “ON” pixel. #define OLED_CMD_DISPLAY_OFF 0xAE // Display OFF in sleep mode. (Default during reset) #define OLED_CMD_DISPLAY_ON 0xAF // Display ON in normal mode. /* ADDRESSING SETTING */ #define OLED_CMD_SET_MEMORY_ADDR_MODE 0x20 // Double byte command to set memory addressing mode. [0x00 | HORZ, 0x01 | VERT, 0x02 | PAGE] (RESET: 0x02) #define OLED_MASK_PAGE_ADDR 0xB0 // Mask to set the page address of pointer only in page addressing mode. [0xB0 - 0xB7] #define OLED_MASK_LSB_NIBBLE_SEG_ADDR 0x00 // Mask to set the lower start column address of pointer only in page addressing mode. [0x00 - 0x0F] #define OLED_MASK_HSB_NIBBLE_SEG_ADDR 0x10 // Mask to set the higher start column address of pointer only in page addressing mode. [0x10 - 0x1F] #define OLED_CMD_SET_COLUMN_ADDR_RANGE 0x21 // Three byte command to set start and end column address only in horizontal/vertical mode. [0x00 - 0x7F & 0x00 - 0x7F] (RESET: 0x00 & 0x7F) #define OLED_CMD_SET_PAGE_ADDR_RANGE 0x22 // Three byte command to set start and end page address only in horizontal/vertical mode. [0x00 - 0x07 & 0x00 - 0x07] (RESET: 0x00 & 0x07) /* HARDWARE CONFIGURATION */ #define OLED_MASK_DISPLAY_START_LINE 0x40 // Mask to set the display start line register to determine starting address of display RAM. [0x40 - 0x7F] (RESET: 0x40) #define OLED_CMD_SEGMENT_REMAP_LEFT_TO_RIGHT 0xA0 // Column address 0 is mapped to SEG0, indicating that the display is mapped from left to right. (Default during reset) #define OLED_CMD_SEGMENT_REMAP_RIGHT_TO_LEFT 0xA1 // Column address 127 is mapped to SEG0, indicating that the display is mapped from right to left. #define OLED_CMD_SET_MUX_RATIO 0xA8 // Double byte command to set MUX ratio. [0x0F - 0x3F] (RESET: 0x3F = 64MUX -1) #define OLED_CMD_COM_SCAN_DIRECTION_NORMAL 0xC0 // Normal COM scan direction. (COM0 -> COM[MUX-1] | BOTTOM TO TOP) #define OLED_CMD_COM_SCAN_DIRECTION_REMAP 0xC8 // Remapped/Flipped COM scan direction. (COM[MUX-1] -> COM0 | TOP TO BOTTOM) #define OLED_CMD_SET_COM_PIN_HARDWARE_MAP 0xDA // Double byte command to set COM pins hardware configuration. [0x02 | DISABLE COM REMAP - SEQUENTIAL COM, 0x12 | DISABLE COM REMAP - ALTERNATIVE COM, 0x22 | ENABLE COM REMAP - SEQUENTIAL COM, 0x32 | ENABLE COM REMAP - ALTERNATIVE COM] (RESET: 0x12) #define OLED_CMD_SET_VERT_DISPLAY_OFFSET 0xD3 // Double byte command to set vertical display offset by COM. [0x00 - 0x3F] (RESET: 0x00) /* TIMING & DRIVING SCHEME SETTING */ #define OLED_CMD_SET_DISPLAY_CLK_DIVIDE 0xD5 // Double byte command to set display clock oscillator frequency and divide ratio. [0x00 - 0x0F << 4 & 0x00->0x0F] ((OSCFREQ) << 4 | (DIVIDE RATIO)) (RESET: 0x80) #define OLED_CMD_SET_PRECHARGE_PERIOD 0xD9 // Double byte command to set pre-charge period. [0x00 - 0x0F << 4 & 0x00 - 0x0F](PHASE2/DOTS << 4 | PHASE1/DOTS) (RESET: 0x22) #define OLED_CMD_SET_VCOMH_DESELECT_LEVEL 0xDB // Double byte command to set VCOMH deselect level regulator output. [0X00 | 0.65, 0X20 | 0.77, 0X30 | 0.83 VCC] (RESET: 0x20) /* CHARGE PUMP */ #define OLED_CMD_SET_CHARGE_PUMP 0x8D // Double byte command to set charge pump. [0x10 | OFF, 0x14 | ON] (RESET: 0x14) /* ADDITIONAL COMMANDS */ #define OLED_CMD_NO_OPERATION 0xE3 // NO OPERATION COMMAND /* FONT DEFINED FROM ASCII 32 -> 127 */ static const uint8_t font8x8[256][8] = { /* ASCII CONTROL CHARACTERS */ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 000 -> 0x00 [NULL] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 001 -> 0x01 [SOH] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 002 -> 0x02 [STX] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 003 -> 0x03 [ETX] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 004 -> 0x04 [EOT] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 005 -> 0x05 [ENQ] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 006 -> 0x06 [ACK] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 007 -> 0x07 [BEL] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 008 -> 0x08 [BS] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 009 -> 0x09 [TAB] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 010 -> 0x0A [LF] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 011 -> 0x0B [VT] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 012 -> 0x0C [FF] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 013 -> 0x0D [CR] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 014 -> 0x0E [SO] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 015 -> 0x0F [SI] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 016 -> 0x10 [DLE] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 017 -> 0x11 [DC1] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 018 -> 0x12 [DC2] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 019 -> 0x13 [DC3] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 020 -> 0x14 [DC4] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 021 -> 0x15 [NAK] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 022 -> 0x16 [SYN] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 023 -> 0x17 [ETB] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 024 -> 0x18 [CAN] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 025 -> 0x19 [EM] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 026 -> 0x1A [SUB] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 027 -> 0x1B [ESC] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 028 -> 0x1C [FS] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 029 -> 0x1D [GS] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 030 -> 0x1E [RS] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 031 -> 0x1F [US] /* ASCII PRINTABLE CHARACTERS */ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 032 -> 0x20 ( ) {0x00, 0x00, 0x00, 0x5F, 0x5F, 0x00, 0x00, 0x00}, // 033 -> 0x21 (!) {0x00, 0x07, 0x07, 0x00, 0x07, 0x07, 0x00, 0x00}, // 034 -> 0x22 (") {0x14, 0x7F, 0x7F, 0x14, 0x7F, 0x7F, 0x14, 0x00}, // 035 -> 0x23 (#) {0x00, 0x24, 0x2A, 0x7F, 0x7F, 0x2A, 0x12, 0x00}, // 036 -> 0x24 ($) {0x46, 0x66, 0x30, 0x18, 0x0C, 0x66, 0x62, 0x00}, // 037 -> 0x25 (%) {0x30, 0x7A, 0x4F, 0x5D, 0x37, 0x7A, 0x48, 0x00}, // 038 -> 0x26 (&) {0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00}, // 039 -> 0x27 (') {0x00, 0x00, 0x1C, 0x3E, 0x63, 0x41, 0x00, 0x00}, // 040 -> 0x28 (() {0x00, 0x00, 0x41, 0x63, 0x3E, 0x1C, 0x00, 0x00}, // 041 -> 0x29 ()) {0x08, 0x2A, 0x3E, 0x1C, 0x1C, 0x3E, 0x2A, 0x08}, // 042 -> 0x2a (*) {0x00, 0x08, 0x08, 0x3E, 0x3E, 0x08, 0x08, 0x00}, // 043 -> 0x2b (+) {0x00, 0x00, 0x80, 0xE0, 0x60, 0x00, 0x00, 0x00}, // 044 -> 0x2c (,) {0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00}, // 045 -> 0x2d (-) {0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00}, // 046 -> 0x2e (.) {0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // 047 -> 0x2f (/) {0x3E, 0x7F, 0x51, 0x49, 0x45, 0x7F, 0x3E, 0x00}, // 048 -> 0x30 (0) {0x00, 0x40, 0x42, 0x7F, 0x7F, 0x40, 0x40, 0x00}, // 049 -> 0x31 (1) {0x00, 0x72, 0x7B, 0x49, 0x49, 0x6F, 0x66, 0x00}, // 050 -> 0x32 (2) {0x00, 0x22, 0x63, 0x49, 0x49, 0x7F, 0x36, 0x00}, // 051 -> 0x33 (3) {0x18, 0x1C, 0x16, 0x53, 0x7F, 0x7F, 0x50, 0x00}, // 052 -> 0x34 (4) {0x00, 0x2F, 0x6F, 0x49, 0x49, 0x79, 0x33, 0x00}, // 053 -> 0x35 (5) {0x00, 0x3E, 0x7F, 0x49, 0x49, 0x7B, 0x32, 0x00}, // 054 -> 0x36 (6) {0x00, 0x03, 0x03, 0x71, 0x79, 0x0F, 0x07, 0x00}, // 055 -> 0x37 (7) {0x00, 0x36, 0x7F, 0x49, 0x49, 0x7F, 0x36, 0x00}, // 056 -> 0x38 (8) {0x00, 0x26, 0x6F, 0x49, 0x49, 0x7F, 0x3E, 0x00}, // 057 -> 0x39 (9) {0x00, 0x00, 0x00, 0x6C, 0x6C, 0x00, 0x00, 0x00}, // 058 -> 0x3a (:) {0x00, 0x00, 0x80, 0xEC, 0x6C, 0x00, 0x00, 0x00}, // 059 -> 0x3b (;) {0x00, 0x08, 0x1C, 0x36, 0x63, 0x41, 0x00, 0x00}, // 060 -> 0x3c (<) {0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x00}, // 061 -> 0x3d (=) {0x00, 0x41, 0x63, 0x36, 0x1C, 0x08, 0x00, 0x00}, // 062 -> 0x3e (>) {0x00, 0x06, 0x07, 0x51, 0x59, 0x0F, 0x06, 0x00}, // 063 -> 0x3f (?) {0x3E, 0x7F, 0x41, 0x5D, 0x5D, 0x5F, 0x1E, 0x00}, // 064 -> 0x40 (@) {0x00, 0x7C, 0x7E, 0x13, 0x13, 0x7E, 0x7C, 0x00}, // 065 -> 0x41 (A) {0x41, 0x7F, 0x7F, 0x49, 0x49, 0x7F, 0x36, 0x00}, // 066 -> 0x42 (B) {0x1C, 0x3E, 0x63, 0x41, 0x41, 0x63, 0x22, 0x00}, // 067 -> 0x43 (C) {0x41, 0x7F, 0x7F, 0x41, 0x63, 0x3E, 0x1C, 0x00}, // 068 -> 0x44 (D) {0x41, 0x7F, 0x7F, 0x49, 0x5D, 0x41, 0x63, 0x00}, // 069 -> 0x45 (E) {0x41, 0x7F, 0x7F, 0x49, 0x1D, 0x01, 0x03, 0x00}, // 070 -> 0x46 (F) {0x1C, 0x3E, 0x63, 0x41, 0x51, 0x73, 0x72, 0x00}, // 071 -> 0x47 (G) {0x00, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00}, // 072 -> 0x48 (H) {0x00, 0x41, 0x41, 0x7F, 0x7F, 0x41, 0x41, 0x00}, // 073 -> 0x49 (I) {0x30, 0x70, 0x40, 0x41, 0x7F, 0x3F, 0x01, 0x00}, // 074 -> 0x4a (J) {0x41, 0x7F, 0x7F, 0x08, 0x1C, 0x77, 0x63, 0x00}, // 075 -> 0x4b (K) {0x41, 0x7F, 0x7F, 0x41, 0x40, 0x60, 0x70, 0x00}, // 076 -> 0x4c (L) {0x7F, 0x7F, 0x0E, 0x1C, 0x0E, 0x7F, 0x7F, 0x00}, // 077 -> 0x4d (M) {0x7F, 0x7F, 0x06, 0x0C, 0x18, 0x7F, 0x7F, 0x00}, // 078 -> 0x4e (N) {0x1C, 0x3E, 0x63, 0x41, 0x63, 0x3E, 0x1C, 0x00}, // 079 -> 0x4f (O) {0x41, 0x7F, 0x7F, 0x49, 0x09, 0x0F, 0x06, 0x00}, // 080 -> 0x50 (P) {0x3C, 0x7E, 0x43, 0x51, 0x33, 0x6E, 0x5C, 0x00}, // 081 -> 0x51 (Q) {0x41, 0x7F, 0x7F, 0x09, 0x19, 0x7F, 0x66, 0x00}, // 082 -> 0x52 (R) {0x00, 0x26, 0x6F, 0x49, 0x49, 0x7B, 0x32, 0x00}, // 083 -> 0x53 (S) {0x00, 0x03, 0x41, 0x7F, 0x7F, 0x41, 0x03, 0x00}, // 084 -> 0x54 (T) {0x00, 0x3F, 0x7F, 0x40, 0x40, 0x7F, 0x3F, 0x00}, // 085 -> 0x55 (U) {0x00, 0x1F, 0x3F, 0x60, 0x60, 0x3F, 0x1F, 0x00}, // 086 -> 0x56 (V) {0x7F, 0x7F, 0x30, 0x18, 0x30, 0x7F, 0x7F, 0x00}, // 087 -> 0x57 (W) {0x61, 0x73, 0x1E, 0x0C, 0x1E, 0x73, 0x61, 0x00}, // 088 -> 0x58 (X) {0x00, 0x07, 0x4F, 0x78, 0x78, 0x4F, 0x07, 0x00}, // 089 -> 0x59 (Y) {0x47, 0x63, 0x71, 0x59, 0x4D, 0x67, 0x73, 0x00}, // 090 -> 0x5a (Z) {0x00, 0x00, 0x7F, 0x7F, 0x41, 0x41, 0x00, 0x00}, // 091 -> 0x5b ([) {0x01, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00}, // 092 -> 0x5c (\) {0x00, 0x00, 0x41, 0x41, 0x7F, 0x7F, 0x00, 0x00}, // 093 -> 0x5d (]) {0x08, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x08, 0x00}, // 094 -> 0x5e (^) {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}, // 095 -> 0x5f (_) {0x00, 0x00, 0x01, 0x03, 0x06, 0x04, 0x00, 0x00}, // 096 -> 0x60 (`) {0x20, 0x74, 0x54, 0x54, 0x3C, 0x78, 0x40, 0x00}, // 097 -> 0x61 (a) {0x41, 0x7F, 0x3F, 0x44, 0x44, 0x7C, 0x38, 0x00}, // 098 -> 0x62 (b) {0x00, 0x38, 0x7C, 0x44, 0x44, 0x6C, 0x28, 0x00}, // 099 -> 0x63 (c) {0x38, 0x7C, 0x44, 0x45, 0x3F, 0x7F, 0x40, 0x00}, // 100 -> 0x64 (d) {0x00, 0x38, 0x7C, 0x54, 0x54, 0x5C, 0x18, 0x00}, // 101 -> 0x65 (e) {0x00, 0x48, 0x7E, 0x7F, 0x49, 0x03, 0x02, 0x00}, // 102 -> 0x66 (f) {0x00, 0x98, 0xBC, 0xA4, 0xA4, 0xFC, 0x7C, 0x00}, // 103 -> 0x67 (g) {0x41, 0x7F, 0x7F, 0x08, 0x04, 0x7C, 0x78, 0x00}, // 104 -> 0x68 (h) {0x00, 0x00, 0x44, 0x7D, 0x7D, 0x40, 0x00, 0x00}, // 105 -> 0x69 (i) {0x00, 0x60, 0xE0, 0x80, 0x84, 0xFD, 0x7D, 0x00}, // 106 -> 0x6a (j) {0x41, 0x7F, 0x7F, 0x10, 0x38, 0x6C, 0x44, 0x00}, // 107 -> 0x6b (k) {0x00, 0x00, 0x41, 0x7F, 0x7F, 0x40, 0x00, 0x00}, // 108 -> 0x6c (l) {0x78, 0x7C, 0x0C, 0x38, 0x0C, 0x7C, 0x78, 0x00}, // 109 -> 0x6d (m) {0x04, 0x7C, 0x78, 0x04, 0x04, 0x7C, 0x78, 0x00}, // 110 -> 0x6e (n) {0x00, 0x38, 0x7C, 0x44, 0x44, 0x7C, 0x38, 0x00}, // 111 -> 0x6f (o) {0x84, 0xFC, 0xF8, 0xA4, 0x24, 0x3C, 0x18, 0x00}, // 112 -> 0x70 (p) {0x18, 0x3C, 0x24, 0xA4, 0xF8, 0xFC, 0x84, 0x00}, // 113 -> 0x71 (q) {0x44, 0x7C, 0x78, 0x4C, 0x04, 0x0C, 0x08, 0x00}, // 114 -> 0x72 (r) {0x00, 0x48, 0x5C, 0x54, 0x54, 0x74, 0x20, 0x00}, // 115 -> 0x73 (s) {0x00, 0x04, 0x3F, 0x7F, 0x44, 0x64, 0x20, 0x00}, // 116 -> 0x74 (t) {0x00, 0x3C, 0x7C, 0x40, 0x40, 0x7C, 0x7C, 0x00}, // 117 -> 0x75 (u) {0x00, 0x1C, 0x3C, 0x60, 0x60, 0x3C, 0x1C, 0x00}, // 118 -> 0x76 (v) {0x3C, 0x7C, 0x60, 0x38, 0x60, 0x7C, 0x3C, 0x00}, // 119 -> 0x77 (w) {0x44, 0x6C, 0x38, 0x10, 0x38, 0x6C, 0x44, 0x00}, // 120 -> 0x78 (x) {0x00, 0x9C, 0xBC, 0xA0, 0xA0, 0xFC, 0x7C, 0x00}, // 121 -> 0x79 (y) {0x00, 0x4C, 0x64, 0x74, 0x5C, 0x4C, 0x64, 0x00}, // 122 -> 0x7a (z) {0x00, 0x08, 0x08, 0x3E, 0x77, 0x41, 0x41, 0x00}, // 123 -> 0x7b ({) {0x00, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00}, // 124 -> 0x7c (|) {0x00, 0x41, 0x41, 0x77, 0x3E, 0x08, 0x08, 0x00}, // 125 -> 0x7d (}) {0x10, 0x18, 0x08, 0x18, 0x10, 0x18, 0x08, 0x00}, // 126 -> 0x7e (~) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 127 -> 0x7F [DEL] /* EXTENDED ASCII CHARACTERS */ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 128 -> 0x80 (Ç) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 129 -> 0x81 (ü) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 130 -> 0x82 (é) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 131 -> 0x83 (â) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 132 -> 0x84 (ä) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 133 -> 0x85 (à) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 134 -> 0x86 (å) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 135 -> 0x87 (ç) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 136 -> 0x88 (ê) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 137 -> 0x89 (ë) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 138 -> 0x8A (è) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 139 -> 0x8B (ï) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 140 -> 0x8C (î) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 141 -> 0x8D (ì) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 142 -> 0x8E (Ä) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 143 -> 0x8F (Å) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 144 -> 0x90 (É) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 145 -> 0x91 (æ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 146 -> 0x92 (Æ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 147 -> 0x93 (ô) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 148 -> 0x94 (ö) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 149 -> 0x95 (ò) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 150 -> 0x96 (û) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 151 -> 0x97 (ù) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 152 -> 0x98 (ÿ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 153 -> 0x99 (Ö) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 154 -> 0x9A (Ü) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 155 -> 0x9B (ø) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 156 -> 0x9C (£) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 157 -> 0x9D (Ø) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 158 -> 0x9E (×) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 159 -> 0x9F (ƒ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 160 -> 0xA0 (á) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 161 -> 0xA1 (í) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 162 -> 0xA2 (ó) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 163 -> 0xA3 (ú) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 164 -> 0xA4 (ñ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 165 -> 0xA5 (Ñ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 166 -> 0xA6 (ª) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 167 -> 0xA7 (º) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 168 -> 0xA8 (¿) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 169 -> 0xA9 (®) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 170 -> 0xAA (¬) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 171 -> 0xAB (½) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 172 -> 0xAC (¼) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 173 -> 0xAD (¡) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 174 -> 0xAE («) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 175 -> 0xAF (») {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 176 -> 0xB0 (░) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 177 -> 0xB1 (▒) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 178 -> 0xB2 (▓) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 179 -> 0xB3 (│) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 180 -> 0xB4 (┤) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 181 -> 0xB5 (Á) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 182 -> 0xB6 (Â) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 183 -> 0xB7 (À) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 184 -> 0xB8 (©) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 185 -> 0xB9 (╣) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 186 -> 0xBA (║) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 187 -> 0xBB (╗) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 188 -> 0xBC (╝) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 189 -> 0xBD (¢) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 190 -> 0xBE (¥) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 191 -> 0xBF (┐) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 192 -> 0xC0 (└) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 193 -> 0xC1 (┴) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 194 -> 0xC2 (┬) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 195 -> 0xC3 (├) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 196 -> 0xC4 (─) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 197 -> 0xC5 (┼) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 198 -> 0xC6 (ã) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 199 -> 0xC7 (Ã) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 200 -> 0xC8 (╚) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 201 -> 0xC9 (╔) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 202 -> 0xCA (╩) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 203 -> 0xCB (╦) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 204 -> 0xCC (╠) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 205 -> 0xCD (═) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 206 -> 0xCE (╬) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 207 -> 0xCF (¤) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 208 -> 0xD0 (ð) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 209 -> 0xD1 (Ð) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 210 -> 0xD2 (Ê) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 211 -> 0xD3 (Ë) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 212 -> 0xD4 (È) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 213 -> 0xD5 (ı) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 214 -> 0xD6 (Í) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 215 -> 0xD7 (Î) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 216 -> 0xD8 (Ï) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 217 -> 0xD9 (┘) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 218 -> 0xDA (┌) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 219 -> 0xDB (█) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 220 -> 0xDC (▄) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 221 -> 0xDD (¦) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 222 -> 0xDE (Ì) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 223 -> 0xDF (▀) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 224 -> 0xE0 (Ó) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 225 -> 0xE1 (ß) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 226 -> 0xE2 (Ô) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 227 -> 0xE3 (Ò) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 228 -> 0xE4 (õ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 229 -> 0xE5 (Õ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 230 -> 0xE6 (µ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 231 -> 0xE7 (þ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 232 -> 0xE8 (Þ) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 233 -> 0xE9 (Ú) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 234 -> 0xEA (Û) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 235 -> 0xEB (Ù) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 236 -> 0xEC (ý) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 237 -> 0xED (Ý) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 238 -> 0xEE (¯) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 239 -> 0xEF (´) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 240 -> 0xF0 (≡) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 241 -> 0xF1 (±) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 242 -> 0xF2 (‗) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 243 -> 0xF3 (¾) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 244 -> 0xF4 (¶) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 245 -> 0xF5 (§) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 246 -> 0xF6 (÷) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 247 -> 0xF7 (¸) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 248 -> 0xF8 (°) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 249 -> 0xF9 (¨) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 250 -> 0xFA (·) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 251 -> 0xFB (¹) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 252 -> 0xFC (³) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 253 -> 0xFD (²) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // 254 -> 0xFE (■) {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // 255 -> 0xFF ( ) };