Library for interfacing to Nokia 5110 LCD display (as found on the SparkFun website).

Dependents:   LV7_LCDtest LV7_Grupa5_Tim003_Zadatak1 lv7_Grupa5_Tim008_zad1 LV7_PAI_Grupa5_tim10_Zadatak1 ... more

This library is designed to make it easy to interface an mbed with a Nokia 5110 LCD display.

These can be found at Sparkfun (https://www.sparkfun.com/products/10168) and Adafruit (http://www.adafruit.com/product/338).

The library uses the SPI peripheral on the mbed which means it is much faster sending data to the display than other libraries available on other platforms that use software SPI.

The library can print strings as well as controlling individual pixels, meaning that both text and primitive graphics can be displayed.

Committer:
eencae
Date:
Tue Mar 10 19:18:20 2015 +0000
Revision:
13:908644099648
Parent:
11:fc7d89b33e4c
Child:
15:ee645611ff94
Modified printChar() so that the character pixel data is written to the buffer, rather than being sent directly to the display. Means chars and setPixel() can be used together.; ; Expanded example code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 1:df68f34cd32d 1 /**
eencae 2:e93021cfb0a9 2 @file N5110.h
eencae 1:df68f34cd32d 3
eencae 5:6ea180eef702 4 @brief Header file containing member functions and variables
eencae 4:e923c54c1c7d 5
eencae 0:d563e74f0ae9 6 */
eencae 0:d563e74f0ae9 7
eencae 0:d563e74f0ae9 8 #ifndef N5110_H
eencae 0:d563e74f0ae9 9 #define N5110_H
eencae 0:d563e74f0ae9 10
eencae 0:d563e74f0ae9 11 // Command Bytes - taken from Chris Yan's library
eencae 2:e93021cfb0a9 12 // More information can be found in the display datasheet
eencae 2:e93021cfb0a9 13 // H = 0 - Basic instructions
eencae 0:d563e74f0ae9 14 #define CMD_DC_CLEAR_DISPLAY 0x08
eencae 0:d563e74f0ae9 15 #define CMD_DC_NORMAL_MODE 0x0C
eencae 0:d563e74f0ae9 16 #define CMD_DC_FILL_DISPLAY 0x09
eencae 0:d563e74f0ae9 17 #define CMD_DC_INVERT_VIDEO 0x0D
eencae 0:d563e74f0ae9 18 #define CMD_FS_HORIZONTAL_MODE 0x00
eencae 0:d563e74f0ae9 19 #define CMD_FS_VERTICAL_MODE 0x02
eencae 0:d563e74f0ae9 20 #define CMD_FS_BASIC_MODE 0x00
eencae 0:d563e74f0ae9 21 #define CMD_FS_EXTENDED_MODE 0x01
eencae 0:d563e74f0ae9 22 #define CMD_FS_ACTIVE_MODE 0x00
eencae 0:d563e74f0ae9 23 #define CMD_FS_POWER_DOWN_MODE 0x04
eencae 2:e93021cfb0a9 24 // H = 1 - Extended instructions
eencae 0:d563e74f0ae9 25 #define CMD_TC_TEMP_0 0x04
eencae 0:d563e74f0ae9 26 #define CMD_TC_TEMP_1 0x05
eencae 0:d563e74f0ae9 27 #define CMD_TC_TEMP_2 0x06
eencae 0:d563e74f0ae9 28 #define CMD_TC_TEMP_3 0x07
eencae 0:d563e74f0ae9 29 #define CMD_BI_MUX_24 0x15
eencae 0:d563e74f0ae9 30 #define CMD_BI_MUX_48 0x13
eencae 0:d563e74f0ae9 31 #define CMD_BI_MUX_100 0x10
eencae 0:d563e74f0ae9 32 #define CMD_VOP_6V06 0xB2
eencae 0:d563e74f0ae9 33 #define CMD_VOP_7V38 0xC8
eencae 0:d563e74f0ae9 34
eencae 13:908644099648 35 // number of pixels on display
eencae 13:908644099648 36 #define WIDTH 84
eencae 13:908644099648 37 #define HEIGHT 48
eencae 13:908644099648 38
eencae 0:d563e74f0ae9 39 #include "mbed.h"
eencae 0:d563e74f0ae9 40
eencae 5:6ea180eef702 41 /**
eencae 5:6ea180eef702 42 @brief Simple library for interfacing with Nokia 5110 LCD display (https://www.sparkfun.com/products/10168) using the hardware SPI on the mbed.
eencae 5:6ea180eef702 43 @brief The display is powered from a GPIO pin meaning it can be controlled via software. The LED backlight is also software-controllable (via PWM pin).
eencae 5:6ea180eef702 44 @brief Can print characters and strings to the display using the included 5x7 font.
eencae 5:6ea180eef702 45 @brief The library also implements a screen buffer so that individual pixels on the display (84 x 48) can be set, cleared and read.
eencae 5:6ea180eef702 46
eencae 5:6ea180eef702 47 @brief Acknowledgements to Chris Yan's Nokia_5110 Library.
eencae 5:6ea180eef702 48
eencae 5:6ea180eef702 49 @brief Revision 1.0
eencae 5:6ea180eef702 50
eencae 5:6ea180eef702 51 @author Craig A. Evans
eencae 5:6ea180eef702 52 @date January 2014
eencae 2:e93021cfb0a9 53 *
eencae 2:e93021cfb0a9 54 * Example:
eencae 2:e93021cfb0a9 55 * @code
eencae 6:adb79338d40f 56
eencae 13:908644099648 57 #include "mbed.h"
eencae 13:908644099648 58 #include "N5110.h"
eencae 13:908644099648 59
eencae 13:908644099648 60 // VCC,SCE,RST,D/C,MOSI,SCLK,LED
eencae 13:908644099648 61 N5110 lcd(p7,p8,p9,p10,p11,p13,p21);
eencae 13:908644099648 62 // Can also power (VCC) directly from VOUT (3.3 V) -
eencae 13:908644099648 63 // Can give better performance due to current limitation from GPIO pin
eencae 13:908644099648 64
eencae 13:908644099648 65 int main()
eencae 13:908644099648 66 {
eencae 13:908644099648 67 // first need to initialise display
eencae 13:908644099648 68 lcd.init();
eencae 13:908644099648 69
eencae 13:908644099648 70 while(1) {
eencae 13:908644099648 71
eencae 13:908644099648 72 char buffer[14]; // each character is 6 pixels wide, screen is 84 pixels (84/6 = 14)
eencae 13:908644099648 73 // so can display a string of a maximum 14 characters in length
eencae 13:908644099648 74
eencae 13:908644099648 75 lcd.clear(); // clear display
eencae 13:908644099648 76 // these are default settings so not strictly needed
eencae 13:908644099648 77 lcd.normalMode(); // normal colour mode
eencae 13:908644099648 78 lcd.setBrightness(0.5); // put LED backlight on full
eencae 13:908644099648 79
eencae 13:908644099648 80 // can directly print strings at specified co-ordinates
eencae 13:908644099648 81 lcd.printString("Hello, World!",0,0);
eencae 13:908644099648 82
eencae 13:908644099648 83 // or create formatted strings - ensure they aren't more than 14 characters long
eencae 13:908644099648 84 int temperature = 27;
eencae 13:908644099648 85 int length = sprintf(buffer,"T = %2d C",temperature); // print formatted data to buffer
eencae 13:908644099648 86 // it is important the format specifier ensures the length will fit in the buffer
eencae 13:908644099648 87 if (length <= 14) // if string will fit on display
eencae 13:908644099648 88 lcd.printString(buffer,0,1); // display on screen
eencae 13:908644099648 89
eencae 13:908644099648 90 float pressure = 1012.3; // same idea with floats
eencae 13:908644099648 91 length = sprintf(buffer,"P = %.2f mb",pressure);
eencae 13:908644099648 92 if (length <= 14)
eencae 13:908644099648 93 lcd.printString(buffer,0,2);
eencae 6:adb79338d40f 94
eencae 13:908644099648 95 // can also print individual characters
eencae 13:908644099648 96 lcd.printChar('X',5,3);
eencae 13:908644099648 97
eencae 13:908644099648 98 // draw a line across the display at y = 40 pixels (origin top-left)
eencae 13:908644099648 99 for (int i = 0; i < WIDTH; i++) {
eencae 13:908644099648 100 lcd.setPixel(i,40);
eencae 13:908644099648 101 }
eencae 13:908644099648 102 // need to refresh display after setting pixels
eencae 13:908644099648 103 lcd.refresh();
eencae 13:908644099648 104
eencae 13:908644099648 105 // can also check status of pixels using getPixel(x,y)
eencae 13:908644099648 106
eencae 13:908644099648 107 wait(5.0);
eencae 13:908644099648 108
eencae 13:908644099648 109 lcd.clear(); // clear display
eencae 13:908644099648 110 lcd.inverseMode(); // invert colours
eencae 13:908644099648 111 lcd.setBrightness(1.0); // put LED backlight on full
eencae 13:908644099648 112
eencae 13:908644099648 113 float array[84];
eencae 13:908644099648 114
eencae 13:908644099648 115 for (int i = 0; i < 84; i++) {
eencae 13:908644099648 116 array[i] = 0.5 + 0.5*sin(i*2*3.14/84);
eencae 13:908644099648 117 }
eencae 13:908644099648 118
eencae 13:908644099648 119 // can also plot graphs - 84 elements only
eencae 13:908644099648 120 // values must be in range 0.0 - 1.0
eencae 13:908644099648 121 lcd.plotArray(array);
eencae 13:908644099648 122
eencae 13:908644099648 123 wait(5.0);
eencae 10:6f3abb40202b 124
eencae 13:908644099648 125 }
eencae 13:908644099648 126 }
eencae 13:908644099648 127
eencae 6:adb79338d40f 128
eencae 2:e93021cfb0a9 129 * @endcode
eencae 2:e93021cfb0a9 130 */
eencae 1:df68f34cd32d 131 class N5110
eencae 1:df68f34cd32d 132 {
eencae 0:d563e74f0ae9 133
eencae 1:df68f34cd32d 134 public:
eencae 1:df68f34cd32d 135 /** Create a N5110 object connected to the specified pins
eencae 1:df68f34cd32d 136 *
eencae 1:df68f34cd32d 137 * @param pwr Pin connected to Vcc on the LCD display (pin 1)
eencae 1:df68f34cd32d 138 * @param sce Pin connected to chip enable (pin 3)
eencae 1:df68f34cd32d 139 * @param rst Pin connected to reset (pin 4)
eencae 1:df68f34cd32d 140 * @param dc Pin connected to data/command select (pin 5)
eencae 1:df68f34cd32d 141 * @param mosi Pin connected to data input (MOSI) (pin 6)
eencae 1:df68f34cd32d 142 * @param sclk Pin connected to serial clock (SCLK) (pin 7)
eencae 1:df68f34cd32d 143 * @param led Pin connected to LED backlight (must be PWM) (pin 8)
eencae 1:df68f34cd32d 144 *
eencae 1:df68f34cd32d 145 */
eencae 1:df68f34cd32d 146 N5110(PinName pwrPin, PinName scePin, PinName rstPin, PinName dcPin, PinName mosiPin, PinName sclkPin, PinName ledPin);
eencae 1:df68f34cd32d 147
eencae 1:df68f34cd32d 148 /** Initialise display
eencae 1:df68f34cd32d 149 *
eencae 1:df68f34cd32d 150 * Powers up the display and turns on backlight (50% brightness default).
eencae 1:df68f34cd32d 151 * Sets the display up in horizontal addressing mode and with normal video mode.
eencae 1:df68f34cd32d 152 */
eencae 1:df68f34cd32d 153 void init();
eencae 1:df68f34cd32d 154
eencae 1:df68f34cd32d 155 /** Turn off
eencae 1:df68f34cd32d 156 *
eencae 1:df68f34cd32d 157 * Powers down the display and turns of the backlight.
eencae 1:df68f34cd32d 158 * Needs to be reinitialised before being re-used.
eencae 1:df68f34cd32d 159 */
eencae 1:df68f34cd32d 160 void turnOff();
eencae 1:df68f34cd32d 161
eencae 1:df68f34cd32d 162 /** Clears
eencae 1:df68f34cd32d 163 *
eencae 1:df68f34cd32d 164 * Clears the screen.
eencae 1:df68f34cd32d 165 */
eencae 1:df68f34cd32d 166 void clear();
eencae 1:df68f34cd32d 167
eencae 1:df68f34cd32d 168 /** Turn on normal video mode (default)
eencae 1:df68f34cd32d 169 * Black on white
eencae 1:df68f34cd32d 170 */
eencae 1:df68f34cd32d 171 void normalMode();
eencae 1:df68f34cd32d 172
eencae 1:df68f34cd32d 173 /** Turn on inverse video mode (default)
eencae 1:df68f34cd32d 174 * White on black
eencae 1:df68f34cd32d 175 */
eencae 1:df68f34cd32d 176 void inverseMode();
eencae 1:df68f34cd32d 177
eencae 1:df68f34cd32d 178 /** Set Brightness
eencae 1:df68f34cd32d 179 *
eencae 1:df68f34cd32d 180 * Sets brightness of LED backlight.
eencae 1:df68f34cd32d 181 * @param brightness - float in range 0.0 to 1.0
eencae 1:df68f34cd32d 182 */
eencae 1:df68f34cd32d 183 void setBrightness(float brightness);
eencae 1:df68f34cd32d 184
eencae 2:e93021cfb0a9 185 /** Print String
eencae 2:e93021cfb0a9 186 *
eencae 2:e93021cfb0a9 187 * Prints a string of characters to the display.
eencae 2:e93021cfb0a9 188 * @param x - the column number (0 to 83)
eencae 2:e93021cfb0a9 189 * @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
eencae 2:e93021cfb0a9 190 */
eencae 1:df68f34cd32d 191 void printString(const char * str,int x,int y);
eencae 1:df68f34cd32d 192
eencae 1:df68f34cd32d 193 /** Print Character
eencae 1:df68f34cd32d 194 *
eencae 13:908644099648 195 * Sends a character to the display. Printed at the specified location
eencae 1:df68f34cd32d 196 * @param c - the character to print. Can print ASCII as so printChar('C').
eencae 13:908644099648 197 * @param x - the column number (0 to 83)
eencae 13:908644099648 198 * @param y - the row number (0 to 5) - the display is split into 6 banks - each bank can be considered a row
eencae 1:df68f34cd32d 199 */
eencae 13:908644099648 200 void printChar(char c,int x,int y);
eencae 1:df68f34cd32d 201
eencae 6:adb79338d40f 202 /** Set a Pixel
eencae 6:adb79338d40f 203 *
eencae 6:adb79338d40f 204 * This function sets a pixel in the display. A call to refresh() must be made
eencae 6:adb79338d40f 205 * to update the display to reflect the change in pixels.
eencae 6:adb79338d40f 206 * @param x - the x co-ordinate of the pixel (0 to 83)
eencae 6:adb79338d40f 207 * @param y - the y co-ordinate of the pixel (0 to 47)
eencae 6:adb79338d40f 208 */
eencae 1:df68f34cd32d 209 void setPixel(int x, int y);
eencae 6:adb79338d40f 210
eencae 6:adb79338d40f 211 /** Clear a Pixel
eencae 6:adb79338d40f 212 *
eencae 6:adb79338d40f 213 * This function clears pixel in the display. A call to refresh() must be made
eencae 6:adb79338d40f 214 * to update the display to reflect the change in pixels.
eencae 6:adb79338d40f 215 * @param x - the x co-ordinate of the pixel (0 to 83)
eencae 6:adb79338d40f 216 * @param y - the y co-ordinate of the pixel (0 to 47)
eencae 6:adb79338d40f 217 */
eencae 1:df68f34cd32d 218 void clearPixel(int x, int y);
eencae 6:adb79338d40f 219
eencae 6:adb79338d40f 220 /** Get a Pixel
eencae 6:adb79338d40f 221 *
eencae 6:adb79338d40f 222 * This function gets the status of a pixel in the display.
eencae 6:adb79338d40f 223 * @param x - the x co-ordinate of the pixel (0 to 83)
eencae 6:adb79338d40f 224 * @param y - the y co-ordinate of the pixel (0 to 47)
eencae 6:adb79338d40f 225 * @returns
eencae 6:adb79338d40f 226 * 0 - pixel is clear
eencae 6:adb79338d40f 227 * non-zero - pixel is set
eencae 6:adb79338d40f 228 */
eencae 7:3010f24e0a81 229 int getPixel(int x, int y);
eencae 2:e93021cfb0a9 230
eencae 6:adb79338d40f 231 /** Refresh display
eencae 6:adb79338d40f 232 *
eencae 6:adb79338d40f 233 * This functions refreshes the display to reflect the current data in the buffer.
eencae 6:adb79338d40f 234 */
eencae 6:adb79338d40f 235 void refresh();
eencae 2:e93021cfb0a9 236
eencae 6:adb79338d40f 237 /** Randomise buffer
eencae 6:adb79338d40f 238 *
eencae 6:adb79338d40f 239 * This function fills the buffer with random data. Can be used to test the display.
eencae 6:adb79338d40f 240 * A call to refresh() must be made to update the display to reflect the change in pixels.
eencae 6:adb79338d40f 241 * The seed is not set and so the generated pattern will probably be the same each time.
eencae 6:adb79338d40f 242 * TODO: Randomise the seed - maybe using the noise on the AnalogIn pins.
eencae 6:adb79338d40f 243 */
eencae 1:df68f34cd32d 244 void randomiseBuffer();
eencae 8:40abe5736eca 245
eencae 8:40abe5736eca 246 /** Plot Array
eencae 8:40abe5736eca 247 *
eencae 8:40abe5736eca 248 * This function plots a one-dimensional array on the display. The values in the array
eencae 8:40abe5736eca 249 * correspond to the y values of the plot and these are plotted along the x-axis (one
eencae 8:40abe5736eca 250 * value per pixel along the x-axis of the display. This means only the first 84 values are
eencae 8:40abe5736eca 251 * plotted. y values in the array should be normalised in the range 0.0 to 1.0.
eencae 8:40abe5736eca 252 */
eencae 8:40abe5736eca 253 void plotArray(float array[]);
eencae 1:df68f34cd32d 254
eencae 1:df68f34cd32d 255 private:
eencae 13:908644099648 256
eencae 13:908644099648 257 void setXYAddress(int x, int y);
eencae 1:df68f34cd32d 258 void initSPI();
eencae 1:df68f34cd32d 259 void turnOn();
eencae 1:df68f34cd32d 260 void reset();
eencae 1:df68f34cd32d 261 void clearRAM();
eencae 6:adb79338d40f 262 void clearBuffer();
eencae 1:df68f34cd32d 263 void sendCommand(unsigned char command);
eencae 1:df68f34cd32d 264 void sendData(unsigned char data);
eencae 1:df68f34cd32d 265
eencae 1:df68f34cd32d 266 public:
eencae 1:df68f34cd32d 267 unsigned char buffer[84][6]; // screen buffer - the 6 is for the banks - each one is 8 bits;
eencae 1:df68f34cd32d 268
eencae 1:df68f34cd32d 269 private: // private variables
eencae 1:df68f34cd32d 270 SPI* spi;
eencae 1:df68f34cd32d 271 PwmOut* led;
eencae 1:df68f34cd32d 272 DigitalOut* pwr;
eencae 1:df68f34cd32d 273 DigitalOut* sce;
eencae 1:df68f34cd32d 274 DigitalOut* rst;
eencae 1:df68f34cd32d 275 DigitalOut* dc;
eencae 0:d563e74f0ae9 276
eencae 0:d563e74f0ae9 277 };
eencae 0:d563e74f0ae9 278
eencae 0:d563e74f0ae9 279 const unsigned char font5x7[480] = {
eencae 0:d563e74f0ae9 280 0x00, 0x00, 0x00, 0x00, 0x00,// (space)
eencae 0:d563e74f0ae9 281 0x00, 0x00, 0x5F, 0x00, 0x00,// !
eencae 0:d563e74f0ae9 282 0x00, 0x07, 0x00, 0x07, 0x00,// "
eencae 0:d563e74f0ae9 283 0x14, 0x7F, 0x14, 0x7F, 0x14,// #
eencae 0:d563e74f0ae9 284 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
eencae 0:d563e74f0ae9 285 0x23, 0x13, 0x08, 0x64, 0x62,// %
eencae 0:d563e74f0ae9 286 0x36, 0x49, 0x55, 0x22, 0x50,// &
eencae 0:d563e74f0ae9 287 0x00, 0x05, 0x03, 0x00, 0x00,// '
eencae 0:d563e74f0ae9 288 0x00, 0x1C, 0x22, 0x41, 0x00,// (
eencae 0:d563e74f0ae9 289 0x00, 0x41, 0x22, 0x1C, 0x00,// )
eencae 0:d563e74f0ae9 290 0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
eencae 0:d563e74f0ae9 291 0x08, 0x08, 0x3E, 0x08, 0x08,// +
eencae 0:d563e74f0ae9 292 0x00, 0x50, 0x30, 0x00, 0x00,// ,
eencae 0:d563e74f0ae9 293 0x08, 0x08, 0x08, 0x08, 0x08,// -
eencae 0:d563e74f0ae9 294 0x00, 0x60, 0x60, 0x00, 0x00,// .
eencae 0:d563e74f0ae9 295 0x20, 0x10, 0x08, 0x04, 0x02,// /
eencae 0:d563e74f0ae9 296 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
eencae 0:d563e74f0ae9 297 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
eencae 0:d563e74f0ae9 298 0x42, 0x61, 0x51, 0x49, 0x46,// 2
eencae 0:d563e74f0ae9 299 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
eencae 0:d563e74f0ae9 300 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
eencae 0:d563e74f0ae9 301 0x27, 0x45, 0x45, 0x45, 0x39,// 5
eencae 0:d563e74f0ae9 302 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
eencae 0:d563e74f0ae9 303 0x01, 0x71, 0x09, 0x05, 0x03,// 7
eencae 0:d563e74f0ae9 304 0x36, 0x49, 0x49, 0x49, 0x36,// 8
eencae 0:d563e74f0ae9 305 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
eencae 0:d563e74f0ae9 306 0x00, 0x36, 0x36, 0x00, 0x00,// :
eencae 0:d563e74f0ae9 307 0x00, 0x56, 0x36, 0x00, 0x00,// ;
eencae 0:d563e74f0ae9 308 0x00, 0x08, 0x14, 0x22, 0x41,// <
eencae 0:d563e74f0ae9 309 0x14, 0x14, 0x14, 0x14, 0x14,// =
eencae 0:d563e74f0ae9 310 0x41, 0x22, 0x14, 0x08, 0x00,// >
eencae 0:d563e74f0ae9 311 0x02, 0x01, 0x51, 0x09, 0x06,// ?
eencae 0:d563e74f0ae9 312 0x32, 0x49, 0x79, 0x41, 0x3E,// @
eencae 0:d563e74f0ae9 313 0x7E, 0x11, 0x11, 0x11, 0x7E,// A
eencae 0:d563e74f0ae9 314 0x7F, 0x49, 0x49, 0x49, 0x36,// B
eencae 0:d563e74f0ae9 315 0x3E, 0x41, 0x41, 0x41, 0x22,// C
eencae 0:d563e74f0ae9 316 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
eencae 0:d563e74f0ae9 317 0x7F, 0x49, 0x49, 0x49, 0x41,// E
eencae 0:d563e74f0ae9 318 0x7F, 0x09, 0x09, 0x01, 0x01,// F
eencae 0:d563e74f0ae9 319 0x3E, 0x41, 0x41, 0x51, 0x32,// G
eencae 0:d563e74f0ae9 320 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
eencae 0:d563e74f0ae9 321 0x00, 0x41, 0x7F, 0x41, 0x00,// I
eencae 0:d563e74f0ae9 322 0x20, 0x40, 0x41, 0x3F, 0x01,// J
eencae 0:d563e74f0ae9 323 0x7F, 0x08, 0x14, 0x22, 0x41,// K
eencae 0:d563e74f0ae9 324 0x7F, 0x40, 0x40, 0x40, 0x40,// L
eencae 0:d563e74f0ae9 325 0x7F, 0x02, 0x04, 0x02, 0x7F,// M
eencae 0:d563e74f0ae9 326 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
eencae 0:d563e74f0ae9 327 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
eencae 0:d563e74f0ae9 328 0x7F, 0x09, 0x09, 0x09, 0x06,// P
eencae 0:d563e74f0ae9 329 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
eencae 0:d563e74f0ae9 330 0x7F, 0x09, 0x19, 0x29, 0x46,// R
eencae 0:d563e74f0ae9 331 0x46, 0x49, 0x49, 0x49, 0x31,// S
eencae 0:d563e74f0ae9 332 0x01, 0x01, 0x7F, 0x01, 0x01,// T
eencae 0:d563e74f0ae9 333 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
eencae 0:d563e74f0ae9 334 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
eencae 0:d563e74f0ae9 335 0x7F, 0x20, 0x18, 0x20, 0x7F,// W
eencae 0:d563e74f0ae9 336 0x63, 0x14, 0x08, 0x14, 0x63,// X
eencae 0:d563e74f0ae9 337 0x03, 0x04, 0x78, 0x04, 0x03,// Y
eencae 0:d563e74f0ae9 338 0x61, 0x51, 0x49, 0x45, 0x43,// Z
eencae 0:d563e74f0ae9 339 0x00, 0x00, 0x7F, 0x41, 0x41,// [
eencae 0:d563e74f0ae9 340 0x02, 0x04, 0x08, 0x10, 0x20,// "\"
eencae 0:d563e74f0ae9 341 0x41, 0x41, 0x7F, 0x00, 0x00,// ]
eencae 0:d563e74f0ae9 342 0x04, 0x02, 0x01, 0x02, 0x04,// ^
eencae 0:d563e74f0ae9 343 0x40, 0x40, 0x40, 0x40, 0x40,// _
eencae 0:d563e74f0ae9 344 0x00, 0x01, 0x02, 0x04, 0x00,// `
eencae 0:d563e74f0ae9 345 0x20, 0x54, 0x54, 0x54, 0x78,// a
eencae 0:d563e74f0ae9 346 0x7F, 0x48, 0x44, 0x44, 0x38,// b
eencae 0:d563e74f0ae9 347 0x38, 0x44, 0x44, 0x44, 0x20,// c
eencae 0:d563e74f0ae9 348 0x38, 0x44, 0x44, 0x48, 0x7F,// d
eencae 0:d563e74f0ae9 349 0x38, 0x54, 0x54, 0x54, 0x18,// e
eencae 0:d563e74f0ae9 350 0x08, 0x7E, 0x09, 0x01, 0x02,// f
eencae 0:d563e74f0ae9 351 0x08, 0x14, 0x54, 0x54, 0x3C,// g
eencae 0:d563e74f0ae9 352 0x7F, 0x08, 0x04, 0x04, 0x78,// h
eencae 0:d563e74f0ae9 353 0x00, 0x44, 0x7D, 0x40, 0x00,// i
eencae 0:d563e74f0ae9 354 0x20, 0x40, 0x44, 0x3D, 0x00,// j
eencae 0:d563e74f0ae9 355 0x00, 0x7F, 0x10, 0x28, 0x44,// k
eencae 0:d563e74f0ae9 356 0x00, 0x41, 0x7F, 0x40, 0x00,// l
eencae 0:d563e74f0ae9 357 0x7C, 0x04, 0x18, 0x04, 0x78,// m
eencae 0:d563e74f0ae9 358 0x7C, 0x08, 0x04, 0x04, 0x78,// n
eencae 0:d563e74f0ae9 359 0x38, 0x44, 0x44, 0x44, 0x38,// o
eencae 0:d563e74f0ae9 360 0x7C, 0x14, 0x14, 0x14, 0x08,// p
eencae 0:d563e74f0ae9 361 0x08, 0x14, 0x14, 0x18, 0x7C,// q
eencae 0:d563e74f0ae9 362 0x7C, 0x08, 0x04, 0x04, 0x08,// r
eencae 0:d563e74f0ae9 363 0x48, 0x54, 0x54, 0x54, 0x20,// s
eencae 0:d563e74f0ae9 364 0x04, 0x3F, 0x44, 0x40, 0x20,// t
eencae 0:d563e74f0ae9 365 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
eencae 0:d563e74f0ae9 366 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
eencae 0:d563e74f0ae9 367 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
eencae 0:d563e74f0ae9 368 0x44, 0x28, 0x10, 0x28, 0x44,// x
eencae 0:d563e74f0ae9 369 0x0C, 0x50, 0x50, 0x50, 0x3C,// y
eencae 0:d563e74f0ae9 370 0x44, 0x64, 0x54, 0x4C, 0x44,// z
eencae 0:d563e74f0ae9 371 0x00, 0x08, 0x36, 0x41, 0x00,// {
eencae 0:d563e74f0ae9 372 0x00, 0x00, 0x7F, 0x00, 0x00,// |
eencae 0:d563e74f0ae9 373 0x00, 0x41, 0x36, 0x08, 0x00,// }
eencae 0:d563e74f0ae9 374 0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
eencae 0:d563e74f0ae9 375 0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
eencae 0:d563e74f0ae9 376 };
eencae 0:d563e74f0ae9 377
eencae 0:d563e74f0ae9 378 #endif