A basic LCD output test which uses the NXP LPC1768\'s SPI interface to display pixels, characters, and numbers on the Nokia 5110 or Nokia 3310 LCD.
Quick and versatile LCD screen control. Works as a great alternative to serial consoles!
---------
Inverted-color text function makes easy menus and borders
Uses a simple SetXY(char, char) function to draw data-plots or patterns
- Wiring -
LCD's connections from left to right:
1) +3.3v (V_lcd) - mbed's VOUT
2) GND - mbed's GND
3) SCE (chip select) - mbed's p8
4) RST (reset) - mbed's p9
5) DC (data/command) - mbed's p10
6) MOSI - mbed's p11
7) SCLK (serial clock) - mbed's p13
8) +3.3v (V_backlight) - mbed's VOUT
The code for this setup would be...
LcdPins myPins;
myPins.sce = p8;
myPins.rst = p9;
myPins.dc = p10;
myPins.mosi = p11;
myPins.miso = NC;
myPins.sclk = p13;
or more easily...
LcdPins myPins = { p11, NC, p13, p10, p8, p9 };
Init the NokiaLcd class using the above struct...
NokiaLcd myLcd( myPins );
then start the LCD using...
myLcd.InitLcd();
Simple text output is achieved with either of these functions:
void DrawString(char* str);
void DrawChar(char character);
------
Better documentation, pre/post conditions, and extended draw functions are coming soon :)
NOKIA_5110.h@0:fbba596f1039, 2012-01-16 (annotated)
- Committer:
- Fuzball
- Date:
- Mon Jan 16 19:47:48 2012 +0000
- Revision:
- 0:fbba596f1039
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Fuzball | 0:fbba596f1039 | 1 | // Project: Fuzzy LCD Voltmeter |
Fuzball | 0:fbba596f1039 | 2 | // File: NOKIA_5110.h |
Fuzball | 0:fbba596f1039 | 3 | // Author: Chris Yan |
Fuzball | 0:fbba596f1039 | 4 | // Created: January, 2012 |
Fuzball | 0:fbba596f1039 | 5 | // Revised: |
Fuzball | 0:fbba596f1039 | 6 | // Desc: Commands, fonts, and class for using a |
Fuzball | 0:fbba596f1039 | 7 | // Nokia 5110 LCD via the Phillips 8554 LCD driver. |
Fuzball | 0:fbba596f1039 | 8 | // |
Fuzball | 0:fbba596f1039 | 9 | // Typical Usage: User must fill the LcdPins struct with the pinout used to control the LCD and |
Fuzball | 0:fbba596f1039 | 10 | // instantiate the NokiaLcd class - passing the created LcdPins struct to the constructor. |
Fuzball | 0:fbba596f1039 | 11 | // The class function NokiaLcd::InitLcd may then be called to reset and start the LCD driver. |
Fuzball | 0:fbba596f1039 | 12 | // A simple 6x6 font (6x8 in LCD space and ~5x5 character space) is included to facilitate |
Fuzball | 0:fbba596f1039 | 13 | // the NokiaLcd::DrawChar( char character ) function, which will copy the character 8 bits |
Fuzball | 0:fbba596f1039 | 14 | // at a time for 6 clock cycles. |
Fuzball | 0:fbba596f1039 | 15 | // Commands may be sent to the LCD via the NokiaLcd::SendFunction(char cmd) |
Fuzball | 0:fbba596f1039 | 16 | // function, but be aware that certain commands require the Function Set register's H-value |
Fuzball | 0:fbba596f1039 | 17 | // to be either 1 or 0, depending on the command. This class does not check to see whether |
Fuzball | 0:fbba596f1039 | 18 | // the H-value is of proper status. The Function Set register /may/ be changed via the |
Fuzball | 0:fbba596f1039 | 19 | // NokiaLcd::SendFunction(char cmd), but the code uses this internally and expects that |
Fuzball | 0:fbba596f1039 | 20 | // most function registers have not been changed by the user. |
Fuzball | 0:fbba596f1039 | 21 | // |
Fuzball | 0:fbba596f1039 | 22 | // Example: |
Fuzball | 0:fbba596f1039 | 23 | // #include "mbed.h" |
Fuzball | 0:fbba596f1039 | 24 | // #include "NOKIA_5110.h" |
Fuzball | 0:fbba596f1039 | 25 | // |
Fuzball | 0:fbba596f1039 | 26 | // int main() { |
Fuzball | 0:fbba596f1039 | 27 | // LcdPins myLcdPins = { p11, NC, p13, p10, p8, p9 }; |
Fuzball | 0:fbba596f1039 | 28 | // NokiaLcd myLcd( myLcdPins ); // SPI is started here (8-bits, mode 1) |
Fuzball | 0:fbba596f1039 | 29 | // myLcd.InitLcd(); // LCD is reset and DDRAM is cleared |
Fuzball | 0:fbba596f1039 | 30 | // myLcd.TestLcd( 0xAA ); // Draws a vertical pattern where every other pixel is on |
Fuzball | 0:fbba596f1039 | 31 | // wait(10); |
Fuzball | 0:fbba596f1039 | 32 | // myLcd.ShutdownLcd(); // Clears the LCD's DDRAM and powers it down via CMD_FS_POWER_DOWN_MODE, H=0 |
Fuzball | 0:fbba596f1039 | 33 | // while(1) |
Fuzball | 0:fbba596f1039 | 34 | // { }; |
Fuzball | 0:fbba596f1039 | 35 | // } |
Fuzball | 0:fbba596f1039 | 36 | |
Fuzball | 0:fbba596f1039 | 37 | // Command Instructions |
Fuzball | 0:fbba596f1039 | 38 | // H = 0 |
Fuzball | 0:fbba596f1039 | 39 | #define CMD_DC_CLEAR_DISPLAY 0x08 |
Fuzball | 0:fbba596f1039 | 40 | #define CMD_DC_NORMAL_MODE 0x0C |
Fuzball | 0:fbba596f1039 | 41 | #define CMD_DC_FILL_DISPLAY 0x09 |
Fuzball | 0:fbba596f1039 | 42 | #define CMD_DC_INVERT_VIDEO 0x0D |
Fuzball | 0:fbba596f1039 | 43 | #define CMD_FS_HORIZONTAL_MODE 0x00 |
Fuzball | 0:fbba596f1039 | 44 | #define CMD_FS_VERTICAL_MODE 0x02 |
Fuzball | 0:fbba596f1039 | 45 | #define CMD_FS_BASIC_MODE 0x00 |
Fuzball | 0:fbba596f1039 | 46 | #define CMD_FS_EXTENDED_MODE 0x01 |
Fuzball | 0:fbba596f1039 | 47 | #define CMD_FS_ACTIVE_MODE 0x00 |
Fuzball | 0:fbba596f1039 | 48 | #define CMD_FS_POWER_DOWN_MODE 0x04 |
Fuzball | 0:fbba596f1039 | 49 | // H = 1 |
Fuzball | 0:fbba596f1039 | 50 | #define CMD_TC_TEMP_0 0x04 |
Fuzball | 0:fbba596f1039 | 51 | #define CMD_TC_TEMP_1 0x05 |
Fuzball | 0:fbba596f1039 | 52 | #define CMD_TC_TEMP_2 0x06 |
Fuzball | 0:fbba596f1039 | 53 | #define CMD_TC_TEMP_3 0x07 |
Fuzball | 0:fbba596f1039 | 54 | #define CMD_BI_MUX_24 0x15 |
Fuzball | 0:fbba596f1039 | 55 | #define CMD_BI_MUX_48 0x13 |
Fuzball | 0:fbba596f1039 | 56 | #define CMD_BI_MUX_100 0x10 |
Fuzball | 0:fbba596f1039 | 57 | #define CMD_VOP_6V06 0xB2 |
Fuzball | 0:fbba596f1039 | 58 | #define CMD_VOP_7V38 0xC8 |
Fuzball | 0:fbba596f1039 | 59 | |
Fuzball | 0:fbba596f1039 | 60 | // LCD Characteristics |
Fuzball | 0:fbba596f1039 | 61 | #define LCD_FREQ 4000000 |
Fuzball | 0:fbba596f1039 | 62 | #define LCD_SPI_MODE 0x01 |
Fuzball | 0:fbba596f1039 | 63 | #define LCD_SPI_BITS 0x08 |
Fuzball | 0:fbba596f1039 | 64 | |
Fuzball | 0:fbba596f1039 | 65 | #define PIN_RST 0x00 |
Fuzball | 0:fbba596f1039 | 66 | #define PIN_SCE 0x01 |
Fuzball | 0:fbba596f1039 | 67 | #define PIN_DC 0x02 |
Fuzball | 0:fbba596f1039 | 68 | |
Fuzball | 0:fbba596f1039 | 69 | #include "mbed.h" |
Fuzball | 0:fbba596f1039 | 70 | |
Fuzball | 0:fbba596f1039 | 71 | struct LcdPins |
Fuzball | 0:fbba596f1039 | 72 | { |
Fuzball | 0:fbba596f1039 | 73 | PinName mosi; |
Fuzball | 0:fbba596f1039 | 74 | PinName miso; |
Fuzball | 0:fbba596f1039 | 75 | PinName sclk; |
Fuzball | 0:fbba596f1039 | 76 | PinName dc; |
Fuzball | 0:fbba596f1039 | 77 | PinName sce; |
Fuzball | 0:fbba596f1039 | 78 | PinName rst; |
Fuzball | 0:fbba596f1039 | 79 | }; |
Fuzball | 0:fbba596f1039 | 80 | |
Fuzball | 0:fbba596f1039 | 81 | struct LcdFunctionSet |
Fuzball | 0:fbba596f1039 | 82 | { |
Fuzball | 0:fbba596f1039 | 83 | char PD; |
Fuzball | 0:fbba596f1039 | 84 | char V; |
Fuzball | 0:fbba596f1039 | 85 | char H; |
Fuzball | 0:fbba596f1039 | 86 | }; |
Fuzball | 0:fbba596f1039 | 87 | |
Fuzball | 0:fbba596f1039 | 88 | typedef char LcdFunctionChar; |
Fuzball | 0:fbba596f1039 | 89 | typedef char LcdTempControl; |
Fuzball | 0:fbba596f1039 | 90 | typedef char LcdDispControl; |
Fuzball | 0:fbba596f1039 | 91 | typedef char LcdBiasChar; |
Fuzball | 0:fbba596f1039 | 92 | typedef char LcdVopChar; |
Fuzball | 0:fbba596f1039 | 93 | |
Fuzball | 0:fbba596f1039 | 94 | class NokiaLcd |
Fuzball | 0:fbba596f1039 | 95 | { |
Fuzball | 0:fbba596f1039 | 96 | public: |
Fuzball | 0:fbba596f1039 | 97 | NokiaLcd(LcdPins lcd_pinout); |
Fuzball | 0:fbba596f1039 | 98 | ~NokiaLcd(); |
Fuzball | 0:fbba596f1039 | 99 | |
Fuzball | 0:fbba596f1039 | 100 | public: |
Fuzball | 0:fbba596f1039 | 101 | void InitLcd(); |
Fuzball | 0:fbba596f1039 | 102 | void ClearLcdMem(); |
Fuzball | 0:fbba596f1039 | 103 | void ShutdownLcd(); |
Fuzball | 0:fbba596f1039 | 104 | void SendFunction(char cmd); |
Fuzball | 0:fbba596f1039 | 105 | |
Fuzball | 0:fbba596f1039 | 106 | void TestLcd(char test_pattern); |
Fuzball | 0:fbba596f1039 | 107 | void DrawChar(char character); |
Fuzball | 0:fbba596f1039 | 108 | void SendDrawData(char data); |
Fuzball | 0:fbba596f1039 | 109 | |
Fuzball | 0:fbba596f1039 | 110 | private: |
Fuzball | 0:fbba596f1039 | 111 | char CreateFunctionChar(); |
Fuzball | 0:fbba596f1039 | 112 | void ResetLcd(); |
Fuzball | 0:fbba596f1039 | 113 | |
Fuzball | 0:fbba596f1039 | 114 | private: |
Fuzball | 0:fbba596f1039 | 115 | LcdFunctionChar FunctionChar; |
Fuzball | 0:fbba596f1039 | 116 | LcdTempControl TempControlChar; |
Fuzball | 0:fbba596f1039 | 117 | LcdDispControl DispControlChar; |
Fuzball | 0:fbba596f1039 | 118 | LcdFunctionSet FunctionSet; |
Fuzball | 0:fbba596f1039 | 119 | LcdBiasChar BiasChar; |
Fuzball | 0:fbba596f1039 | 120 | LcdVopChar VopChar; |
Fuzball | 0:fbba596f1039 | 121 | DigitalOut** Pins; |
Fuzball | 0:fbba596f1039 | 122 | SPI* LcdSpi; |
Fuzball | 0:fbba596f1039 | 123 | |
Fuzball | 0:fbba596f1039 | 124 | }; |
Fuzball | 0:fbba596f1039 | 125 | |
Fuzball | 0:fbba596f1039 | 126 | const char FONT_6x6[570] = //should be 564 total char |
Fuzball | 0:fbba596f1039 | 127 | { |
Fuzball | 0:fbba596f1039 | 128 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // SPACE 1 |
Fuzball | 0:fbba596f1039 | 129 | 0x00, 0x06, 0x2F, 0x06, 0x00, 0x00, // ! 2 |
Fuzball | 0:fbba596f1039 | 130 | 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, // " 3 |
Fuzball | 0:fbba596f1039 | 131 | 0x14, 0x3E, 0x14, 0x3E, 0x14, 0x00, // # 4 |
Fuzball | 0:fbba596f1039 | 132 | 0x2E, 0x2A, 0x3F, 0x2A, 0x3A, 0x00, // $ 5 |
Fuzball | 0:fbba596f1039 | 133 | 0x26, 0x16, 0x08, 0x34, 0x32, 0x00, // % 6 |
Fuzball | 0:fbba596f1039 | 134 | 0x34, 0x2A, 0x3C, 0x18, 0x28, 0x00, // & 7 |
Fuzball | 0:fbba596f1039 | 135 | 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, // ' 8 |
Fuzball | 0:fbba596f1039 | 136 | 0x00, 0x00, 0x1C, 0x36, 0x22, 0x00, // ( 9 |
Fuzball | 0:fbba596f1039 | 137 | 0x22, 0x36, 0x1C, 0x00, 0x00, 0x00, // ) 10 |
Fuzball | 0:fbba596f1039 | 138 | 0x24, 0x18, 0x0E, 0x18, 0x24, 0x00, // * 11 |
Fuzball | 0:fbba596f1039 | 139 | 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, // + 12 |
Fuzball | 0:fbba596f1039 | 140 | 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, // , 13 |
Fuzball | 0:fbba596f1039 | 141 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // - 14 |
Fuzball | 0:fbba596f1039 | 142 | 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, // . 15 |
Fuzball | 0:fbba596f1039 | 143 | 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00, // / 16 |
Fuzball | 0:fbba596f1039 | 144 | 0x00, 0x1C, 0x22, 0x22, 0x1C, 0x00, // 0 17 |
Fuzball | 0:fbba596f1039 | 145 | 0x00, 0x24, 0x3E, 0x20, 0x00, 0x00, // 1 18 |
Fuzball | 0:fbba596f1039 | 146 | 0x3A, 0x2A, 0x2A, 0x2A, 0x2E, 0x00, // 2 19 |
Fuzball | 0:fbba596f1039 | 147 | 0x22, 0x2A, 0x2A, 0x2A, 0x3E, 0x00, // 3 20 |
Fuzball | 0:fbba596f1039 | 148 | 0x0E, 0x08, 0x08, 0x3E, 0x08, 0x00, // 4 21 |
Fuzball | 0:fbba596f1039 | 149 | 0x2E, 0x2A, 0x2A, 0x2A, 0x3A, 0x00, // 5 22 |
Fuzball | 0:fbba596f1039 | 150 | 0x3E, 0x2A, 0x2A, 0x2A, 0x3A, 0x00, // 6 23 |
Fuzball | 0:fbba596f1039 | 151 | 0x22, 0x12, 0x0A, 0x06, 0x02, 0x00, // 7 24 |
Fuzball | 0:fbba596f1039 | 152 | 0x3E, 0x2A, 0x2A, 0x2A, 0x3E, 0x00, // 8 25 |
Fuzball | 0:fbba596f1039 | 153 | 0x00, 0x2E, 0x2A, 0x2A, 0x3E, 0x00, // 9 26 |
Fuzball | 0:fbba596f1039 | 154 | 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // : 27 |
Fuzball | 0:fbba596f1039 | 155 | 0x00, 0x20, 0x14, 0x00, 0x00, 0x00, // ; 28 |
Fuzball | 0:fbba596f1039 | 156 | 0x00, 0x00, 0x08, 0x14, 0x22, 0x00, // < 29 |
Fuzball | 0:fbba596f1039 | 157 | 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, // = 30 |
Fuzball | 0:fbba596f1039 | 158 | 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, // > 31 |
Fuzball | 0:fbba596f1039 | 159 | 0x06, 0x01, 0x2D, 0x06, 0x00, 0x00, // ? 32 |
Fuzball | 0:fbba596f1039 | 160 | 0x1E, 0x23, 0x19, 0x35, 0x3E, 0x00, // @ 33 |
Fuzball | 0:fbba596f1039 | 161 | 0x3C, 0x0A, 0x0A, 0x0A, 0x3C, 0x00, // A 34 |
Fuzball | 0:fbba596f1039 | 162 | 0x3E, 0x2A, 0x2A, 0x2A, 0x1C, 0x00, // B 35 |
Fuzball | 0:fbba596f1039 | 163 | 0x1C, 0x22, 0x22, 0x22, 0x22, 0x00, // C 36 |
Fuzball | 0:fbba596f1039 | 164 | 0x3E, 0x22, 0x22, 0x22, 0x1C, 0x00, // D 37 |
Fuzball | 0:fbba596f1039 | 165 | 0x3E, 0x2A, 0x2A, 0x2A, 0x22, 0x00, // E 38 |
Fuzball | 0:fbba596f1039 | 166 | 0x3E, 0x0A, 0x0A, 0x0A, 0x02, 0x00, // F 39 |
Fuzball | 0:fbba596f1039 | 167 | 0x1C, 0x22, 0x2A, 0x2A, 0x18, 0x00, // G 40 |
Fuzball | 0:fbba596f1039 | 168 | 0x3E, 0x08, 0x08, 0x08, 0x3E, 0x00, // H |
Fuzball | 0:fbba596f1039 | 169 | 0x22, 0x22, 0x3E, 0x22, 0x22, 0x00, // I |
Fuzball | 0:fbba596f1039 | 170 | 0x10, 0x22, 0x22, 0x1E, 0x02, 0x00, // J |
Fuzball | 0:fbba596f1039 | 171 | 0x3E, 0x08, 0x14, 0x22, 0x00, 0x00, // K |
Fuzball | 0:fbba596f1039 | 172 | 0x00, 0x3E, 0x20, 0x20, 0x20, 0x00, // L 45 |
Fuzball | 0:fbba596f1039 | 173 | 0x3E, 0x04, 0x08, 0x04, 0x3E, 0x00, // M |
Fuzball | 0:fbba596f1039 | 174 | 0x3C, 0x02, 0x02, 0x02, 0x3C, 0x00, // N |
Fuzball | 0:fbba596f1039 | 175 | 0x1C, 0x22, 0x22, 0x22, 0x1C, 0x00, // O |
Fuzball | 0:fbba596f1039 | 176 | 0x3E, 0x0A, 0x0A, 0x04, 0x00, 0x00, // P |
Fuzball | 0:fbba596f1039 | 177 | 0x1C, 0x22, 0x32, 0x3C, 0x20, 0x00, // Q 50 |
Fuzball | 0:fbba596f1039 | 178 | 0x3E, 0x0A, 0x0A, 0x1A, 0x24, 0x00, // R |
Fuzball | 0:fbba596f1039 | 179 | 0x24, 0x2A, 0x2A, 0x2A, 0x12, 0x00, // S |
Fuzball | 0:fbba596f1039 | 180 | 0x02, 0x02, 0x3E, 0x02, 0x02, 0x00, // T |
Fuzball | 0:fbba596f1039 | 181 | 0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00, // U |
Fuzball | 0:fbba596f1039 | 182 | 0x06, 0x18, 0x20, 0x18, 0x06, 0x00, // V 55 |
Fuzball | 0:fbba596f1039 | 183 | 0x0E, 0x30, 0x18, 0x30, 0x0E, 0x00, // W |
Fuzball | 0:fbba596f1039 | 184 | 0x22, 0x14, 0x08, 0x14, 0x22, 0x00, // X |
Fuzball | 0:fbba596f1039 | 185 | 0x02, 0x04, 0x38, 0x04, 0x02, 0x00, // Y |
Fuzball | 0:fbba596f1039 | 186 | 0x22, 0x32, 0x2A, 0x26, 0x22, 0x00, // Z |
Fuzball | 0:fbba596f1039 | 187 | 0x00, 0x00, 0x00, 0x3E, 0x22, 0x00, // [ 60 |
Fuzball | 0:fbba596f1039 | 188 | 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, // backslash |
Fuzball | 0:fbba596f1039 | 189 | 0x22, 0x3E, 0x00, 0x00, 0x00, 0x00, // ] |
Fuzball | 0:fbba596f1039 | 190 | 0x00, 0x04, 0x02, 0x02, 0x04, 0x00, // ^ |
Fuzball | 0:fbba596f1039 | 191 | 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, // _ |
Fuzball | 0:fbba596f1039 | 192 | 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, // ` 65 |
Fuzball | 0:fbba596f1039 | 193 | 0x18, 0x24, 0x14, 0x38, 0x00, 0x00, // a |
Fuzball | 0:fbba596f1039 | 194 | 0x1E, 0x28, 0x28, 0x10, 0x00, 0x00, // b |
Fuzball | 0:fbba596f1039 | 195 | 0x18, 0x24, 0x24, 0x00, 0x00, 0x00, // c |
Fuzball | 0:fbba596f1039 | 196 | 0x10, 0x28, 0x28, 0x1E, 0x00, 0x00, // d |
Fuzball | 0:fbba596f1039 | 197 | 0x18, 0x2C, 0x2C, 0x08, 0x00, 0x00, // e 70 |
Fuzball | 0:fbba596f1039 | 198 | 0x00, 0x3C, 0x12, 0x04, 0x00, 0x00, // f |
Fuzball | 0:fbba596f1039 | 199 | 0x24, 0x2A, 0x1E, 0x00, 0x00, 0x00, // g |
Fuzball | 0:fbba596f1039 | 200 | 0x3E, 0x08, 0x30, 0x00, 0x00, 0x00, // h |
Fuzball | 0:fbba596f1039 | 201 | 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, // i |
Fuzball | 0:fbba596f1039 | 202 | 0x10, 0x20, 0x1A, 0x00, 0x00, 0x00, // j 75 |
Fuzball | 0:fbba596f1039 | 203 | 0x3E, 0x10, 0x2C, 0x20, 0x00, 0x00, // k |
Fuzball | 0:fbba596f1039 | 204 | 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, // l |
Fuzball | 0:fbba596f1039 | 205 | 0x38, 0x08, 0x18, 0x08, 0x30, 0x00, // m |
Fuzball | 0:fbba596f1039 | 206 | 0x30, 0x08, 0x08, 0x30, 0x00, 0x00, // n |
Fuzball | 0:fbba596f1039 | 207 | 0x10, 0x28, 0x28, 0x10, 0x00, 0x00, // o 80 |
Fuzball | 0:fbba596f1039 | 208 | 0x38, 0x14, 0x14, 0x08, 0x00, 0x00, // p |
Fuzball | 0:fbba596f1039 | 209 | 0x08, 0x14, 0x14, 0x38, 0x00, 0x00, // q |
Fuzball | 0:fbba596f1039 | 210 | 0x3C, 0x08, 0x04, 0x00, 0x00, 0x00, // r |
Fuzball | 0:fbba596f1039 | 211 | 0x2C, 0x34, 0x00, 0x00, 0x00, 0x00, // s |
Fuzball | 0:fbba596f1039 | 212 | 0x08, 0x3C, 0x28, 0x00, 0x00, 0x00, // t 85 |
Fuzball | 0:fbba596f1039 | 213 | 0x18, 0x20, 0x20, 0x18, 0x00, 0x00, // u |
Fuzball | 0:fbba596f1039 | 214 | 0x08, 0x10, 0x20, 0x10, 0x08, 0x00, // v |
Fuzball | 0:fbba596f1039 | 215 | 0x18, 0x20, 0x10, 0x20, 0x18, 0x00, // w |
Fuzball | 0:fbba596f1039 | 216 | 0x28, 0x10, 0x28, 0x00, 0x00, 0x00, // x |
Fuzball | 0:fbba596f1039 | 217 | 0x2C, 0x30, 0x1C, 0x00, 0x00, 0x00, // y 90 |
Fuzball | 0:fbba596f1039 | 218 | 0x24, 0x34, 0x2C, 0x24, 0x00, 0x00, // z |
Fuzball | 0:fbba596f1039 | 219 | 0x00, 0x00, 0x08, 0x3E, 0x22, 0x00, // { |
Fuzball | 0:fbba596f1039 | 220 | 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, // | |
Fuzball | 0:fbba596f1039 | 221 | 0x22, 0x3E, 0x08, 0x00, 0x00, 0x00, // } |
Fuzball | 0:fbba596f1039 | 222 | 0x10, 0x08, 0x18, 0x10, 0x08, 0x00, // ~ 95 |
Fuzball | 0:fbba596f1039 | 223 | }; |