Use the MAXREFDES99 to display the time from a DS3231 RTC. Requires the DS3231 RTC, or a MAXREFDES72 which has the rtc on it.
Dependencies: MAX7219 ds3231 mbed
Revision 1:ce6a3accca77, committed 2016-05-31
- Comitter:
- j3
- Date:
- Tue May 31 22:32:53 2016 +0000
- Parent:
- 0:52f9ecc09233
- Commit message:
- Updated libraries
Changed in this revision
diff -r 52f9ecc09233 -r ce6a3accca77 MAX7219.lib --- a/MAX7219.lib Fri Mar 25 22:50:52 2016 +0000 +++ b/MAX7219.lib Tue May 31 22:32:53 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/Maxim-Integrated/code/MAX7219/#90a7cf4e7d26 +https://developer.mbed.org/teams/Maxim-Integrated/code/MAX7219/#b5e4379a3d90
diff -r 52f9ecc09233 -r ce6a3accca77 main.cpp --- a/main.cpp Fri Mar 25 22:50:52 2016 +0000 +++ b/main.cpp Tue May 31 22:32:53 2016 +0000 @@ -45,13 +45,7 @@ //rtc object Ds3231 rtc(D14, D15); - //switch for setting clock, requires tera term interface at 9600 8N1 - DigitalIn sw(SW3); - - if(sw.read() == 0) - { - set_rtc(rtc); - } + set_rtc(rtc); Max7219 display(D11, D12, D13, D10);
diff -r 52f9ecc09233 -r ce6a3accca77 maxrefdes99.cpp --- a/maxrefdes99.cpp Fri Mar 25 22:50:52 2016 +0000 +++ b/maxrefdes99.cpp Tue May 31 22:32:53 2016 +0000 @@ -1,16 +1,5 @@ /******************************************************************//** * @file maxrefdes99.cpp -* -* @author Justin Jordan -* -* @version 0.0 -* -* Started: 08JAN16 -* -* Updated: -* -* @brief Source file for maxrefdes99 demo -*********************************************************************** * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -48,138 +37,1092 @@ //5x7 character bit map static const uint8_t font_5x7[95][6] = { - {0x00,0x00,0x00,0x00,0x00,0x00}, // SPACE - {0x00,0x00,0x00,0x4F,0x00,0x00}, // ! - {0x00,0x00,0x07,0x00,0x07,0x00}, // " - {0x00,0x14,0x7F,0x14,0x7F,0x14}, // # - {0x00,0x24,0x2A,0x7F,0x2A,0x12}, // $ - {0x00,0x23,0x13,0x08,0x64,0x62}, // % - {0x00,0x36,0x49,0x55,0x22,0x50}, // & - {0x00,0x00,0x05,0x03,0x00,0x00}, // ' - {0x00,0x00,0x1C,0x22,0x41,0x00}, // ( - {0x00,0x00,0x41,0x22,0x1C,0x00}, // ) - {0x00,0x14,0x08,0x3E,0x08,0x14}, // * - {0x00,0x08,0x08,0x3E,0x08,0x08}, // + - {0x00,0x00,0x50,0x30,0x00,0x00}, // , - {0x00,0x08,0x08,0x08,0x08,0x08}, // - - {0x00,0x00,0x60,0x60,0x00,0x00}, // . - {0x00,0x20,0x10,0x08,0x04,0x02}, // / - {0x00,0x3E,0x51,0x49,0x45,0x3E}, // 0 - {0x00,0x00,0x42,0x7F,0x40,0x00}, // 1 - {0x00,0x42,0x61,0x51,0x49,0x46}, // 2 - {0x00,0x21,0x41,0x45,0x4B,0x31}, // 3 - {0x00,0x18,0x14,0x12,0x7F,0x10}, // 4 - {0x00,0x27,0x45,0x45,0x45,0x39}, // 5 - {0x00,0x3C,0x4A,0x49,0x49,0x30}, // 6 - {0x00,0x01,0x71,0x09,0x05,0x03}, // 7 - {0x00,0x36,0x49,0x49,0x49,0x36}, // 8 - {0x00,0x06,0x49,0x49,0x29,0x1E}, // 9 - {0x00,0x36,0x36,0x00,0x00,0x00}, // : - {0x00,0x56,0x36,0x00,0x00,0x00}, // ; - {0x00,0x08,0x14,0x22,0x41,0x00}, // < - {0x00,0x14,0x14,0x14,0x14,0x14}, // = - {0x00,0x00,0x41,0x22,0x14,0x08}, // > - {0x00,0x02,0x01,0x51,0x09,0x06}, // ? - {0x00,0x30,0x49,0x79,0x41,0x3E}, // @ - {0x00,0x7E,0x11,0x11,0x11,0x7E}, // A - {0x00,0x7F,0x49,0x49,0x49,0x36}, // B - {0x00,0x3E,0x41,0x41,0x41,0x22}, // C - {0x00,0x7F,0x41,0x41,0x22,0x1C}, // D - {0x00,0x7F,0x49,0x49,0x49,0x41}, // E - {0x00,0x7F,0x09,0x09,0x09,0x01}, // F - {0x00,0x3E,0x41,0x49,0x49,0x7A}, // G - {0x00,0x7F,0x08,0x08,0x08,0x7F}, // H - {0x00,0x00,0x41,0x7F,0x41,0x00}, // I - {0x00,0x20,0x40,0x41,0x3F,0x01}, // J - {0x00,0x7F,0x08,0x14,0x22,0x41}, // K - {0x00,0x7F,0x40,0x40,0x40,0x40}, // L - {0x00,0x7F,0x02,0x0C,0x02,0x7F}, // M - {0x00,0x7F,0x04,0x08,0x10,0x7F}, // N - {0x00,0x3E,0x41,0x41,0x41,0x3E}, // O - {0x00,0x7F,0x09,0x09,0x09,0x06}, // P - {0x00,0x3E,0x41,0x51,0x21,0x5E}, // Q - {0x00,0x7F,0x09,0x19,0x29,0x46}, // R - {0x00,0x46,0x49,0x49,0x49,0x31}, // S - {0x00,0x01,0x01,0x7F,0x01,0x01}, // T - {0x00,0x3F,0x40,0x40,0x40,0x3F}, // U - {0x00,0x1F,0x20,0x40,0x20,0x1F}, // V - {0x00,0x3F,0x40,0x30,0x40,0x3F}, // W - {0x00,0x63,0x14,0x08,0x14,0x63}, // X - {0x00,0x07,0x08,0x70,0x08,0x07}, // Y - {0x00,0x61,0x51,0x49,0x45,0x43}, // Z - {0x00,0x00,0x7F,0x41,0x41,0x00}, // [ - {0x00,0x02,0x04,0x08,0x10,0x20}, // backslash - {0x00,0x00,0x41,0x41,0x7F,0x00}, // ] - {0x00,0x04,0x02,0x01,0x02,0x04}, // ^ - {0x00,0x40,0x40,0x40,0x40,0x40}, // _ - {0x00,0x00,0x01,0x02,0x04,0x00}, // ` - {0x00,0x20,0x54,0x54,0x54,0x78}, // a - {0x00,0x7F,0x50,0x48,0x48,0x30}, // b - {0x00,0x38,0x44,0x44,0x44,0x20}, // c - {0x00,0x38,0x44,0x44,0x48,0x7F}, // d - {0x00,0x38,0x54,0x54,0x54,0x18}, // e - {0x00,0x08,0x7E,0x09,0x01,0x02}, // f - {0x00,0x0C,0x52,0x52,0x52,0x3E}, // g - {0x00,0x7F,0x08,0x04,0x04,0x78}, // h - {0x00,0x00,0x44,0x7D,0x40,0x00}, // i - {0x00,0x20,0x40,0x44,0x3D,0x00}, // j - {0x00,0x7F,0x10,0x28,0x44,0x00}, // k - {0x00,0x00,0x41,0x7F,0x40,0x00}, // l - {0x00,0x78,0x04,0x58,0x44,0x78}, // m - {0x00,0x7C,0x08,0x04,0x04,0x78}, // n - {0x00,0x38,0x44,0x44,0x44,0x38}, // o - {0x00,0x7C,0x14,0x14,0x14,0x08}, // p - {0x00,0x08,0x14,0x14,0x18,0x7C}, // q - {0x00,0x7C,0x08,0x04,0x04,0x08}, // r - {0x00,0x48,0x54,0x54,0x54,0x20}, // s - {0x00,0x04,0x3F,0x44,0x40,0x20}, // t - {0x00,0x3C,0x40,0x40,0x20,0x7C}, // u - {0x00,0x1C,0x20,0x40,0x20,0x1C}, // v - {0x00,0x3C,0x40,0x30,0x40,0x3C}, // w - {0x00,0x44,0x28,0x10,0x28,0x44}, // x - {0x00,0x0C,0x50,0x50,0x50,0x3C}, // y - {0x00,0x44,0x64,0x54,0x4C,0x44}, // z - {0x00,0x00,0x08,0x36,0x41,0x00}, // { - {0x00,0x00,0x00,0x7F,0x00,0x00}, // | - {0x00,0x00,0x41,0x36,0x08,0x00}, // } - {0x00,0x0C,0x02,0x0C,0x10,0x0C} // ~ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //SPACE + {0x00, 0x00, 0x00, 0xf2, 0x00, 0x00}, //! + {0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00}, //" + {0x00, 0x28, 0xfe, 0x28, 0xfe, 0x28}, //# + {0x00, 0x24, 0x54, 0xfe, 0x54, 0x48}, //$ + {0x00, 0xc4, 0xc8, 0x10, 0x26, 0x46}, //% + {0x00, 0x6c, 0x92, 0xaa, 0x44, 0x0a}, //& + {0x00, 0x00, 0xa0, 0xc0, 0x00, 0x00}, //' + {0x00, 0x00, 0x38, 0x44, 0x82, 0x00}, //( + {0x00, 0x00, 0x82, 0x44, 0x38, 0x00}, //) + {0x00, 0x28, 0x10, 0x7c, 0x10, 0x28}, //* + {0x00, 0x10, 0x10, 0x7c, 0x10, 0x10}, //+ + {0x00, 0x00, 0x0a, 0x0c, 0x00, 0x00}, //, + {0x00, 0x10, 0x10, 0x10, 0x10, 0x10}, //- + {0x00, 0x00, 0x06, 0x06, 0x00, 0x00}, //. + {0x00, 0x04, 0x08, 0x10, 0x20, 0x40}, /// + {0x00, 0x7c, 0x8a, 0x92, 0xa2, 0x7c}, //0 + {0x00, 0x00, 0x42, 0xfe, 0x02, 0x00}, //1 + {0x00, 0x42, 0x86, 0x8a, 0x92, 0x62}, //2 + {0x00, 0x84, 0x82, 0xa2, 0xd2, 0x8c}, //3 + {0x00, 0x18, 0x28, 0x48, 0xfe, 0x08}, //4 + {0x00, 0xe4, 0xa2, 0xa2, 0xa2, 0x9c}, //5 + {0x00, 0x3c, 0x52, 0x92, 0x92, 0x0c}, //6 + {0x00, 0x80, 0x8e, 0x90, 0xa0, 0xc0}, //7 + {0x00, 0x6c, 0x92, 0x92, 0x92, 0x6c}, //8 + {0x00, 0x60, 0x92, 0x92, 0x94, 0x78}, //9 + {0x00, 0x6c, 0x6c, 0x00, 0x00, 0x00}, //: + {0x00, 0x6a, 0x6c, 0x00, 0x00, 0x00}, //; + {0x00, 0x10, 0x28, 0x44, 0x82, 0x00}, //< + {0x00, 0x28, 0x28, 0x28, 0x28, 0x28}, //= + {0x00, 0x00, 0x82, 0x44, 0x28, 0x10}, //> + {0x00, 0x40, 0x80, 0x8a, 0x90, 0x60}, //? + {0x00, 0x0c, 0x92, 0x9e, 0x82, 0x7c}, //@ + {0x00, 0x7e, 0x88, 0x88, 0x88, 0x7e}, //A + {0x00, 0xfe, 0x92, 0x92, 0x92, 0x6c}, //B + {0x00, 0x7c, 0x82, 0x82, 0x82, 0x44}, //C + {0x00, 0xfe, 0x82, 0x82, 0x44, 0x38}, //D + {0x00, 0xfe, 0x92, 0x92, 0x92, 0x82}, //E + {0x00, 0xfe, 0x90, 0x90, 0x90, 0x80}, //F + {0x00, 0x7c, 0x82, 0x92, 0x92, 0x5e}, //G + {0x00, 0xfe, 0x10, 0x10, 0x10, 0xfe}, //H + {0x00, 0x00, 0x82, 0xfe, 0x82, 0x00}, //I + {0x00, 0x04, 0x02, 0x82, 0xfc, 0x80}, //J + {0x00, 0xfe, 0x10, 0x28, 0x44, 0x82}, //K + {0x00, 0xfe, 0x02, 0x02, 0x02, 0x02}, //L + {0x00, 0xfe, 0x40, 0x30, 0x40, 0xfe}, //M + {0x00, 0xfe, 0x20, 0x10, 0x08, 0xfe}, //N + {0x00, 0x7c, 0x82, 0x82, 0x82, 0x7c}, //O + {0x00, 0xfe, 0x90, 0x90, 0x90, 0x60}, //P + {0x00, 0x7c, 0x82, 0x8a, 0x84, 0x7a}, //Q + {0x00, 0xfe, 0x90, 0x98, 0x94, 0x62}, //R + {0x00, 0x62, 0x92, 0x92, 0x92, 0x8c}, //S + {0x00, 0x80, 0x80, 0xfe, 0x80, 0x80}, //T + {0x00, 0xfc, 0x02, 0x02, 0x02, 0xfc}, //U + {0x00, 0xf8, 0x04, 0x02, 0x04, 0xf8}, //V + {0x00, 0xfc, 0x02, 0x0c, 0x02, 0xfc}, //W + {0x00, 0xc6, 0x28, 0x10, 0x28, 0xc6}, //X + {0x00, 0xe0, 0x10, 0x0e, 0x10, 0xe0}, //Y + {0x00, 0x86, 0x8a, 0x92, 0xa2, 0xc2}, //Z + {0x00, 0x00, 0xfe, 0x82, 0x82, 0x00}, //[ + {0x00, 0x40, 0x20, 0x10, 0x08, 0x04}, //backslash + {0x00, 0x00, 0x82, 0x82, 0xfe, 0x00}, //] + {0x00, 0x20, 0x40, 0x80, 0x40, 0x20}, //^ + {0x00, 0x02, 0x02, 0x02, 0x02, 0x02}, //_ + {0x00, 0x00, 0x80, 0x40, 0x20, 0x00}, //` + {0x00, 0x04, 0x2a, 0x2a, 0x2a, 0x1e}, //a + {0x00, 0xfe, 0x0a, 0x12, 0x12, 0x0c}, //b + {0x00, 0x1c, 0x22, 0x22, 0x22, 0x04}, //c + {0x00, 0x1c, 0x22, 0x22, 0x12, 0xfe}, //d + {0x00, 0x1c, 0x2a, 0x2a, 0x2a, 0x18}, //e + {0x00, 0x10, 0x7e, 0x90, 0x80, 0x40}, //f + {0x00, 0x30, 0x4a, 0x4a, 0x4a, 0x7c}, //g + {0x00, 0xfe, 0x10, 0x20, 0x20, 0x1e}, //h + {0x00, 0x00, 0x22, 0xbe, 0x02, 0x00}, //i + {0x00, 0x04, 0x02, 0x22, 0xbc, 0x00}, //j + {0x00, 0xfe, 0x08, 0x14, 0x22, 0x00}, //k + {0x00, 0x00, 0x82, 0xfe, 0x02, 0x00}, //l + {0x00, 0x1e, 0x20, 0x1a, 0x22, 0x1e}, //m + {0x00, 0x3e, 0x10, 0x20, 0x20, 0x1e}, //n + {0x00, 0x1c, 0x22, 0x22, 0x22, 0x1c}, //o + {0x00, 0x3e, 0x28, 0x28, 0x28, 0x10}, //p + {0x00, 0x10, 0x28, 0x28, 0x18, 0x3e}, //q + {0x00, 0x3e, 0x10, 0x20, 0x20, 0x10}, //r + {0x00, 0x12, 0x2a, 0x2a, 0x2a, 0x04}, //s + {0x00, 0x20, 0xfc, 0x22, 0x02, 0x04}, //t + {0x00, 0x3c, 0x02, 0x02, 0x04, 0x3e}, //u + {0x00, 0x38, 0x04, 0x02, 0x04, 0x38}, //v + {0x00, 0x3c, 0x02, 0x0c, 0x02, 0x3c}, //w + {0x00, 0x22, 0x14, 0x08, 0x14, 0x22}, //x + {0x00, 0x30, 0x0a, 0x0a, 0x0a, 0x3c}, //y + {0x00, 0x22, 0x26, 0x2a, 0x32, 0x22}, //z + {0x00, 0x00, 0x10, 0x6c, 0x82, 0x00}, //{ + {0x00, 0x00, 0x00, 0xfe, 0x00, 0x00}, //| + {0x00, 0x00, 0x82, 0x6c, 0x10, 0x00}, //} + {0x00, 0x30, 0x40, 0x30, 0x08, 0x30} //~ }; -static uint8_t display_buff[256]; +/******************************************************************************* +* 16*16 character bit map for Aerial bold fonts +* These font data taken from the rinkydinkelectronic.com +* All fonts are considered Public Domain. This means that +* you are free to use them as you see fit in any project, +* commercial or not. +* Important note: Commercial projects will still need a +* commercial license for any libraries used +*********************************************************************************/ + +static const uint8_t Aerial_bold_font_16x16[95][32] = { + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // SPACE + + {0x0,0x0,0x0,0x0,0x0,0x0,0x3F,0x3F, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xEC,0xEC, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ! + + {0x0,0x0,0x0,0x0,0x0,0x3C,0x3C,0x0, + 0x0,0x3C,0x3C,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" + + {0x0,0x0,0x6,0x6,0x6,0xF,0x3F,0x36, + 0xF,0x3F,0x36,0x6,0x0,0x0,0x0,0x0, + 0x0,0x0,0x60,0x6C,0xFC,0xF0,0x6C,0xFC, + 0xF0,0x60,0x60,0x60,0x0,0x0,0x0,0x0},// # + + {0x0,0x0,0x0,0x0,0xE,0x1F,0x33,0x7F, + 0x31,0x18,0x8,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x30,0x38,0x8C,0xFE, + 0xCC,0xF8,0x70,0x0,0x0,0x0,0x0,0x0}, //$ + + {0x0,0x1E,0x3F,0x21,0x21,0x3F,0x1E,0x0, + 0x3,0x7,0x1C,0x38,0x20,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x4,0xC,0x38,0xF0, + 0xC0,0x0,0x78,0xFC,0x84,0x84,0xFC,0x78},//% + + {0x0,0x0,0x0,0x0,0x1C,0x3F,0x33,0x33, + 0x33,0x3E,0x1C,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x70,0xF8,0x8C,0xC,0xCC, + 0xEC,0x78,0x38,0xF8,0x5C,0x8,0x0,0x0},//& + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3C, + 0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//' + + {0x0,0x0,0x0,0x0,0x0,0xF,0x3F,0x70, + 0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xE0,0xF8,0x1C, + 0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//( + + {0x0,0x0,0x0,0x0,0x0,0x40,0x70,0x3F, + 0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x4,0x1C,0xF8, + 0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //} + + {0x0,0x0,0x3,0x3,0x1,0x1,0xF,0xF, + 0xF,0x1,0x1,0x3,0x3,0x0,0x0,0x0, + 0x0,0x0,0x0,0x10,0x30,0xF8,0xE0,0xC0, + 0xE0,0xF8,0x30,0x10,0x0,0x0,0x0,0x0},//* + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x7,0x7,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,0xC0, + 0xF8,0xF8,0xC0,0xC0,0xC0,0x0,0x0,0x0},//+ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x32,0x3C, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //, + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0,0x0},// - + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // . + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0xF,0x3F,0x30,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xC,0xFC, + 0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // / + + {0x0,0x0,0x0,0x0,0xF,0x1F,0x38,0x30, + 0x30,0x38,0x1F,0xF,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xF0,0xF8,0x1C,0xC, + 0xC,0x1C,0xF8,0xF0,0x0,0x0,0x0,0x0}, // 0 + + {0x0,0x0,0x0,0x0,0x6,0xC,0x18,0x3F, + 0x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC, + 0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // 1 + + {0x0,0x0,0x0,0x0,0xC,0x1C,0x38,0x30, + 0x30,0x31,0x1F,0xE,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xC,0x1C,0x3C,0x6C, + 0xEC,0xCC,0x8C,0xC,0x0,0x0,0x0,0x0},// 2 + + {0x0,0x0,0x0,0x0,0x8,0x18,0x38,0x33, + 0x33,0x33,0x3F,0x1C,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x30,0x38,0x1C,0xC, + 0xC,0x9C,0xF8,0xF0,0x0,0x0,0x0,0x0}, // 3 + + {0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x7, + 0x1C,0x3F,0x3F,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x70,0xF0,0xB0,0x30, + 0x30,0xFC,0xFC,0x30,0x0,0x0,0x0,0x0},//4 + + {0x0,0x0,0x0,0x0,0x7,0x3F,0x3B,0x33, + 0x33,0x33,0x31,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xB0,0xB8,0x1C,0xC, + 0xC,0x9C,0xF8,0xF0,0x0,0x0,0x0,0x0}, //5 + + {0x0,0x0,0x0,0x0,0x7,0x1F,0x39,0x33, + 0x33,0x33,0x39,0x18,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xE0,0xF8,0x9C,0xC, + 0xC,0x8C,0xF8,0xF0,0x0,0x0,0x0,0x0}, //6 + + {0x0,0x0,0x0,0x0,0x30,0x30,0x30,0x31, + 0x37,0x3E,0x38,0x30,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x3C,0xFC, + 0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // 7 + + {0x0,0x0,0x0,0x0,0xE,0x1F,0x31,0x31, + 0x31,0x31,0x1F,0xE,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x70,0xF8,0x8C,0x8C, + 0x8C,0x8C,0xF8,0x70,0x0,0x0,0x0,0x0}, //8 + + {0x0,0x0,0x0,0x0,0xF,0x1F,0x31,0x30, + 0x30,0x39,0x1F,0x7,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x18,0x9C,0xCC,0xCC, + 0xCC,0x9C,0xF8,0xE0,0x0,0x0,0x0,0x0}, //9 + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18, + 0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30, + 0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // : + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18, + 0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x32, + 0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ; + + {0x0,0x0,0x0,0x0,0x1,0x1,0x3,0x3, + 0x6,0x6,0xC,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x80,0xC0,0xC0,0x60,0x60, + 0x30,0x30,0x18,0x0,0x0,0x0,0x0,0x0}, // < + + {0x0,0x0,0x0,0xC,0xC,0xC,0xC,0xC, + 0xC,0xC,0xC,0xC,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0}, // = + + {0x0,0x0,0x0,0x0,0xC,0x6,0x6,0x3, + 0x3,0x1,0x1,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x60, + 0x60,0xC0,0xC0,0x80,0x0,0x0,0x0,0x0}, // > + + {0x0,0x0,0x0,0x0,0xC,0x1C,0x38,0x30, + 0x31,0x33,0x1F,0xE,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xEC, + 0xEC,0x80,0x0,0x0,0x0,0x0,0x0,0x0}, // ? + + {0x0,0x0,0x7,0x18,0x27,0x6F,0x58,0x58, + 0x4F,0x5F,0x38,0x30,0x1F,0x0,0x0,0x0, + 0x0,0x0,0xC0,0x20,0x90,0xC8,0xC8,0x88, + 0xC8,0xC8,0x48,0x90,0x20,0x0,0x0,0x0}, //@ + + {0x0,0x0,0x0,0x0,0x1,0xF,0x3E,0x30, + 0x3E,0xF,0x1,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x4,0x3C,0xF8,0xE0,0x60,0x60, + 0x60,0xE0,0xF8,0x3C,0x4,0x0,0x0,0x0}, // A + + {0x0,0x0,0x0,0x3F,0x3F,0x31,0x31,0x31, + 0x31,0x31,0x3F,0x1E,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFC,0xFC,0x8C,0x8C,0x8C, + 0x8C,0x8C,0x8C,0xF8,0x70,0x0,0x0,0x0}, // B + + {0x0,0x0,0x0,0x7,0x1F,0x1C,0x30,0x30, + 0x30,0x30,0x38,0x1C,0x8,0x0,0x0,0x0, + 0x0,0x0,0x0,0xE0,0xF8,0x38,0xC,0xC, + 0xC,0xC,0x1C,0x38,0x10,0x0,0x0,0x0}, // C + + {0x0,0x0,0x0,0x3F,0x3F,0x30,0x30,0x30, + 0x30,0x30,0x18,0x1F,0x7,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFC,0xFC,0xC,0xC,0xC, + 0xC,0xC,0x18,0xF8,0xE0,0x0,0x0,0x0}, // D + + {0x0,0x0,0x0,0x0,0x3F,0x3F,0x31,0x31, + 0x31,0x31,0x31,0x31,0x31,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xFC,0xFC,0x8C,0x8C, + 0x8C,0x8C,0x8C,0x8C,0x8C,0x0,0x0,0x0}, // E + + {0x0,0x0,0x0,0x0,0x3F,0x3F,0x31,0x31, + 0x31,0x31,0x31,0x30,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xFC,0xFC,0x80,0x80, + 0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0}, // F + + {0x0,0x0,0x7,0x1F,0x1C,0x30,0x30,0x30, + 0x30,0x30,0x38,0x1C,0x8,0x0,0x0,0x0, + 0x0,0x0,0xE0,0xF8,0x38,0xC,0xC,0xC, + 0xCC,0xCC,0xDC,0xF8,0xF8,0x0,0x0,0x0}, //G + + {0x0,0x0,0x0,0x3F,0x3F,0x1,0x1,0x1, + 0x1,0x1,0x1,0x3F,0x3F,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFC,0xFC,0x80,0x80,0x80, + 0x80,0x80,0x80,0xFC,0xFC,0x0,0x0,0x0}, //H + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3F, + 0x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC, + 0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // I + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x3F,0x3F,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x30,0x38,0x1C,0xC, + 0xC,0x1C,0xF8,0xF0,0x0,0x0,0x0,0x0}, // J + + {0x0,0x0,0x0,0x3F,0x3F,0x0,0x1,0x3, + 0x7,0xD,0x18,0x30,0x20,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFC,0xFC,0xC0,0x80,0x0, + 0x80,0xE0,0x70,0x3C,0xC,0x0,0x0,0x0}, //K + + {0x0,0x0,0x0,0x0,0x3F,0x3F,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xFC,0xFC,0xC,0xC, + 0xC,0xC,0xC,0xC,0x0,0x0,0x0,0x0}, // L + + {0x0,0x0,0x3F,0x3F,0x3C,0xF,0x1,0x0, + 0x1,0xF,0x3C,0x3F,0x3F,0x0,0x0,0x0, + 0x0,0x0,0xFC,0xFC,0x0,0xC0,0xF8,0x3C, + 0xF8,0xC0,0x0,0xFC,0xFC,0x0,0x0,0x0}, // M + + {0x0,0x0,0x0,0x3F,0x3F,0x1C,0xE,0x3, + 0x1,0x0,0x0,0x3F,0x3F,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFC,0xFC,0x0,0x0,0x80, + 0xC0,0x70,0x38,0xFC,0xFC,0x0,0x0,0x0}, // N + + {0x0,0x0,0x7,0x1F,0x18,0x30,0x30,0x30, + 0x30,0x30,0x18,0x1F,0x7,0x0,0x0,0x0, + 0x0,0x0,0xE0,0xF8,0x18,0xC,0xC,0xC, + 0xC,0xC,0x18,0xF8,0xE0,0x0,0x0,0x0}, // O + + {0x0,0x0,0x0,0x0,0x3F,0x3F,0x31,0x31, + 0x31,0x31,0x3B,0x1F,0xE,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xFC,0xFC,0x80,0x80, + 0x80,0x80,0x80,0x0,0x0,0x0,0x0,0x0}, // P + + {0x0,0x0,0x7,0x1F,0x18,0x30,0x30,0x30, + 0x30,0x30,0x18,0x1F,0x7,0x0,0x0,0x0, + 0x0,0x0,0xE0,0xF8,0x18,0xC,0xC,0x2C, + 0x3C,0x18,0x3C,0xFE,0xE2,0x0,0x0,0x0},// Q + + {0x0,0x0,0x0,0x3F,0x3F,0x31,0x31,0x31, + 0x31,0x31,0x3B,0x1F,0xE,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFC,0xFC,0x80,0x80,0x80, + 0xC0,0xE0,0x78,0x3C,0xC,0x4,0x0,0x0}, // R + + {0x0,0x0,0x0,0x0,0xE,0x1F,0x3B,0x33, + 0x31,0x31,0x39,0x1C,0xC,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x30,0x38,0x1C,0x8C, + 0x8C,0x8C,0xDC,0xF8,0x70,0x0,0x0,0x0}, //S + + {0x0,0x0,0x0,0x30,0x30,0x30,0x30,0x3F, + 0x3F,0x30,0x30,0x30,0x30,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC, + 0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //T + + {0x0,0x0,0x0,0x3F,0x3F,0x0,0x0,0x0, + 0x0,0x0,0x0,0x3F,0x3F,0x0,0x0,0x0, + 0x0,0x0,0x0,0xF0,0xF8,0x1C,0xC,0xC, + 0xC,0xC,0x1C,0xF8,0xF0,0x0,0x0,0x0}, //U + + {0x0,0x0,0x20,0x3C,0x1F,0x3,0x0,0x0, + 0x0,0x3,0x1F,0x3C,0x20,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x80,0xE0,0xFC,0x1C, + 0xFC,0xE0,0x80,0x0,0x0,0x0,0x0,0x0},//V + + {0x0,0x0,0x38,0x3F,0x7,0x0,0x7,0x3F, + 0x38,0x3F,0x7,0x0,0x7,0x3F,0x38,0x0, + 0x0,0x0,0x0,0xC0,0xFC,0x3C,0xFC,0xC0, + 0x0,0xC0,0xFC,0x3C,0xFC,0xC0,0x0,0x0}, // W + + {0x0,0x0,0x0,0x30,0x38,0x1E,0x7,0x3, + 0x7,0x1E,0x38,0x30,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xC,0x1C,0x78,0xE0,0xC0, + 0xE0,0x78,0x1C,0xC,0x0,0x0,0x0,0x0}, // X + + {0x0,0x0,0x0,0x30,0x38,0x1E,0x7,0x1, + 0x1,0x7,0x1E,0x38,0x30,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC, + 0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // Y + + {0x0,0x0,0x0,0x0,0x0,0x30,0x30,0x30, + 0x33,0x37,0x3E,0x38,0x30,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xC,0x1C,0x7C,0xEC, + 0xCC,0xC,0xC,0xC,0xC,0x0,0x0,0x0}, // Z + + {0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0x7F, + 0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xFE,0xFE, + 0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0}, // [ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x3F, + 0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0xF0,0xFC,0xC,0x0,0x0,0x0,0x0,0x0}, // backslash + + {0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60, + 0x7F,0x7F,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6, + 0xFE,0xFE,0x0,0x0,0x0,0x0,0x0,0x0}, // ] + + {0x0,0x0,0x0,0x0,0x1,0xF,0x3E,0x70, + 0x70,0x3E,0xF,0x1,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ^ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6, + 0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6}, // _ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20, + 0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ` + + {0x0,0x0,0x0,0x0,0x6,0xE,0xC,0xD, + 0xD,0xF,0x7,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x70,0xF8,0xD8,0x98, + 0x98,0xF0,0xF8,0x8,0x0,0x0,0x0,0x0}, // a + + {0x0,0x0,0x0,0x0,0x7F,0x7F,0x6,0xC, + 0xC,0xE,0x7,0x3,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xF8,0xF8,0x30,0x18, + 0x18,0x38,0xF0,0xE0,0x0,0x0,0x0,0x0}, // b + + {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC, + 0xC,0xE,0x6,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18, + 0x18,0x38,0x30,0x0,0x0,0x0,0x0,0x0}, //c + + {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC, + 0xC,0x6,0x7F,0x7F,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18, + 0x18,0x30,0xF8,0xF8,0x0,0x0,0x0,0x0}, // d + + {0x0,0x0,0x0,0x0,0x3,0x7,0xD,0xD, + 0xD,0x7,0x3,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xE0,0xF0,0xB8,0x98, + 0x98,0xB0,0xA0,0x0,0x0,0x0,0x0,0x0}, // e + + {0x0,0x0,0x0,0x0,0xC,0x3F,0x7F,0x6C, + 0x6C,0x60,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xF8,0xF8,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // f + + {0x0,0x0,0x0,0x7,0xF,0x1C,0x18,0x18, + 0xC,0x1F,0x1F,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xCC,0xEE,0x76,0x36,0x36, + 0x66,0xFE,0xFC,0x0,0x0,0x0,0x0,0x0}, // g + + {0x0,0x0,0x0,0x0,0x7F,0x7F,0x6,0xC, + 0xC,0xC,0xF,0x7,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xF8,0xF8,0x0,0x0, + 0x0,0x0,0xF8,0xF8,0x0,0x0,0x0,0x0}, //h + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37, + 0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF8, + 0xF8,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // i + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37, + 0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x3,0x3,0xFF, + 0xFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // j + + {0x0,0x0,0x0,0x0,0x7F,0x7F,0x1,0x3, + 0x7,0xC,0x8,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xF8,0xF8,0xC0,0x80, + 0xE0,0xF8,0x18,0x0,0x0,0x0,0x0,0x0}, // k + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F, + 0x7F,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF8, + 0xF8,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // l + + {0x0,0x0,0xF,0xF,0x6,0xC,0xC,0xF, + 0x7,0x6,0xC,0xC,0xF,0x7,0x0,0x0, + 0x0,0x0,0xF8,0xF8,0x0,0x0,0x0,0xF8, + 0xF8,0x0,0x0,0x0,0xF8,0xF8,0x0,0x0},// m + + 0x0,0x0,0x0,0x0,0xF,0xF,0x6,0xC, + 0xC,0xC,0xF,0x7,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xF8,0xF8,0x0,0x0, + 0x0,0x0,0xF8,0xF8,0x0,0x0,0x0,0x0, // n + + {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC, + 0xC,0xE,0x7,0x3,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18, + 0x18,0x38,0xF0,0xE0,0x0,0x0,0x0,0x0}, // o + + {0x0,0x0,0x0,0x0,0xF,0xF,0x6,0xC, + 0xC,0xE,0x7,0x3,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xFF,0xFF,0x30,0x18, + 0x18,0x38,0xF0,0xE0,0x0,0x0,0x0,0x0}, // p + + {0x0,0x0,0x0,0x0,0x3,0x7,0xE,0xC, + 0xC,0x6,0xF,0xF,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xE0,0xF0,0x38,0x18, + 0x18,0x30,0xFF,0xFF,0x0,0x0,0x0,0x0}, //q + + {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0xF, + 0x6,0xC,0xC,0xC,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xF8,0xF8, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //r + + {0x0,0x0,0x0,0x0,0x7,0xF,0xD,0xD, + 0xC,0xE,0x6,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x30,0xB8,0x98,0x98, + 0xD8,0xF8,0x70,0x0,0x0,0x0,0x0,0x0}, // s + + {0x0,0x0,0x0,0x0,0x0,0xC,0x3F,0x7F, + 0xC,0xC,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xF0,0xF8, + 0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0}, // t + + {0x0,0x0,0x0,0x0,0xF,0xF,0x0,0x0, + 0x0,0x0,0xF,0xF,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0xF0,0xF8,0x18,0x18, + 0x18,0x30,0xF8,0xF8,0x0,0x0,0x0,0x0}, // u + + {0x0,0x0,0x0,0x0,0x0,0xE,0xF,0x1, + 0x0,0x1,0xF,0xE,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xF8, + 0x38,0xF8,0xC0,0x0,0x0,0x0,0x0,0x0}, // v + + {0x0,0x0,0xC,0xF,0x3,0x0,0x1,0xF, + 0xE,0xF,0x1,0x0,0x3,0xF,0xC,0x0, + 0x0,0x0,0x0,0xC0,0xF8,0x38,0xF8,0xC0, + 0x0,0xC0,0xF8,0x38,0xF8,0xC0,0x0,0x0}, // w + + {0x0,0x0,0x0,0x0,0x0,0xC,0xE,0x7, + 0x1,0x7,0xE,0xC,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x18,0x38,0xF0, + 0xC0,0xF0,0x38,0x18,0x0,0x0,0x0,0x0}, // x + + {0x0,0x0,0x0,0x0,0xC,0xF,0x3,0x0, + 0x0,0x0,0x3,0xF,0xC,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x3,0xE3,0xFF, + 0x3E,0xF8,0xE0,0x0,0x0,0x0,0x0,0x0}, // y + + {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0xC, + 0xC,0xD,0xF,0xF,0xC,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x78, + 0xF8,0xD8,0x98,0x18,0x18,0x0,0x0,0x0}, //z + + {0x0,0x0,0x0,0x0,0x3,0x3,0x7F,0xFC, + 0xC0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xFC,0xFE, + 0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0}, // { + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF, + 0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF, + 0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // | + + {0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0, + 0xFC,0x7F,0x3,0x3,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6, + 0xFE,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // } + + {0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x30, + 0x38,0x18,0x18,0x18,0x30,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ~ +}; + +// Manually created 16*16 character bit map +static const uint8_t Manual_font_16x16[95][32] = { + + // Note: Number 0-9, char A-Z and char a-z bit map data created manually, other + // font bit map data taken from Aerial_bold font + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // SPACE + + {0x0,0x0,0x0,0x0,0x0,0x0,0x3F,0x3F, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xEC,0xEC, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ! + + {0x0,0x0,0x0,0x0,0x0,0x3C,0x3C,0x0, + 0x0,0x3C,0x3C,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" + + {0x0,0x0,0x6,0x6,0x6,0xF,0x3F,0x36, + 0xF,0x3F,0x36,0x6,0x0,0x0,0x0,0x0, + 0x0,0x0,0x60,0x6C,0xFC,0xF0,0x6C,0xFC, + 0xF0,0x60,0x60,0x60,0x0,0x0,0x0,0x0},// # + + {0x0,0x0,0x0,0x0,0xE,0x1F,0x33,0x7F, + 0x31,0x18,0x8,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x30,0x38,0x8C,0xFE, + 0xCC,0xF8,0x70,0x0,0x0,0x0,0x0,0x0}, //$ + + {0x0,0x1E,0x3F,0x21,0x21,0x3F,0x1E,0x0, + 0x3,0x7,0x1C,0x38,0x20,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x4,0xC,0x38,0xF0, + 0xC0,0x0,0x78,0xFC,0x84,0x84,0xFC,0x78},//% + + {0x0,0x0,0x0,0x0,0x1C,0x3F,0x33,0x33, + 0x33,0x3E,0x1C,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x70,0xF8,0x8C,0xC,0xCC, + 0xEC,0x78,0x38,0xF8,0x5C,0x8,0x0,0x0},//& + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3C, + 0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//' + + {0x0,0x0,0x0,0x0,0x0,0xF,0x3F,0x70, + 0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xE0,0xF8,0x1C, + 0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0},//( + + {0x0,0x0,0x0,0x0,0x0,0x40,0x70,0x3F, + 0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x4,0x1C,0xF8, + 0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //} + + {0x0,0x0,0x3,0x3,0x1,0x1,0xF,0xF, + 0xF,0x1,0x1,0x3,0x3,0x0,0x0,0x0, + 0x0,0x0,0x0,0x10,0x30,0xF8,0xE0,0xC0, + 0xE0,0xF8,0x30,0x10,0x0,0x0,0x0,0x0},//* + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x7,0x7,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0xC0,0xC0,0xC0, + 0xF8,0xF8,0xC0,0xC0,0xC0,0x0,0x0,0x0},//+ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x32,0x3C, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //, + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0,0x0},// - + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // . + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0xF,0x3F,0x30,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xC,0xFC, + 0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // / + + {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, + 0x61,0x63,0x66,0x7F,0x7F,0x3F,0x00,0x00, + 0x00,0x00,0xFE,0xFF,0xFF,0x33,0x63,0xC3, + 0x83,0x03,0x03,0xFF,0xFF,0x0FE,0x00,0x00}, // 0 + + {0x00,0x00,0x00,0x00,0x08,0x18,0x3F,0x7F, + 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF, + 0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00 }, // 1 + + {0x00,0x00,0x30,0x70,0x60,0x60,0x60,0x60, + 0x61,0x63,0x66,0x7C,0x38,0x30,0x00,0x00, + 0x00,0x00,0x06,0x0E,0x1E,0x36,0x66,0xC6, + 0x86,0x06,0x06,0x06,0x06,0x06,0x00,0x00 }, // 2 + + {0x00,0x00,0x30,0x70,0x60,0x60,0x60,0x60, + 0x61,0x63,0x66,0x7E,0x7C,0x38,0x00,0x00, + 0x00,0x00,0x0C,0x0E,0x06,0x06,0x06,0x06, + 0x86,0xC6,0x66,0x7E,0x3E,0x1C,0x00,0x00 }, // 3 + + {0x00,0x00,0x00,0x01,0x03,0x06,0xC,0x18, + 0x30,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00, + 0x00,0x00,0xE0,0xE0,0x60,0x60,0x60,0x60, + 0x60,0xFE,0xFE,0xFE,0x60,0x60,0x00,0x00 }, // 4 + + {0x00,0x00,0x7F,0x7F,0x7F,0x61,0x61,0x61, + 0x61,0x61,0x61,0x61,0x61,0x60,0x00,0x00, + 0x00,0x00,0x04,0x86,0x86,0x86,0x86,0x86, + 0x86,0x86,0x86,0xFE,0xFE,0xFC,0x00,0x00 }, // 5 + + {0x00,0x00,0x3F,0x7F,0x7F,0x61,0x61,0x61, + 0x61,0x61,0x61,0x61,0x61,0x20,0x00,0x00, + 0x00,0x00,0xFC,0xFE,0xFE,0x86,0x86,0x86, + 0x86,0x86,0x86,0xFE,0xFE,0xFC,0x00,0x00 }, // 6 + + {0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x31,0x3F,0x3E,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x06,0x0C,0x18,0x30, + 0x60,0xC0,0x80,0x00,0x00,0x00,0x00,0x00 }, // 7 + + {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, + 0x00,0x00,0x3E,0xFF,0xFF,0xC3,0xC3,0xC3, + 0xC3,0xC3,0xC3,0xFF,0xFF,0x03E,0x00,0x00}, // 8 + + {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, + 0x00,0x00,0x86,0xC7,0xC3,0xC3,0xC3,0xC3, + 0xC3,0xC3,0xC3,0xFF,0xFF,0x0FE,0x00,0x00}, // 9 + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18, + 0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30, + 0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // : + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18, + 0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x32, + 0x3C,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ; + + {0x0,0x0,0x0,0x0,0x1,0x1,0x3,0x3, + 0x6,0x6,0xC,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x80,0xC0,0xC0,0x60,0x60, + 0x30,0x30,0x18,0x0,0x0,0x0,0x0,0x0}, // < + + {0x0,0x0,0x0,0xC,0xC,0xC,0xC,0xC, + 0xC,0xC,0xC,0xC,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xC0,0xC0,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xC0,0x0,0x0,0x0,0x0}, // = + + {0x0,0x0,0x0,0x0,0xC,0x6,0x6,0x3, + 0x3,0x1,0x1,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x60, + 0x60,0xC0,0xC0,0x80,0x0,0x0,0x0,0x0}, // > + + {0x0,0x0,0x0,0x0,0xC,0x1C,0x38,0x30, + 0x31,0x33,0x1F,0xE,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xEC, + 0xEC,0x80,0x0,0x0,0x0,0x0,0x0,0x0}, // ? + + {0x0,0x0,0x7,0x18,0x27,0x6F,0x58,0x58, + 0x4F,0x5F,0x38,0x30,0x1F,0x0,0x0,0x0, + 0x0,0x0,0xC0,0x20,0x90,0xC8,0xC8,0x88, + 0xC8,0xC8,0x48,0x90,0x20,0x0,0x0,0x0}, //@ + + {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0x60,0x60,0x60, + 0x60,0x60,0x60,0xFF,0xFF,0xFF,0x00,0x00 }, // A + + {0x00,0x00,0x7F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7F,0x07F,0x3E,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xC3,0xC3,0xC3, + 0xC3,0xC3,0xC3,0xFF,0xFF,0x3E,0x00,0x00}, // B + + {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x70,0x30,0x00,0x00,0x00, + 0x00,0x00,0xFE,0xFF,0xFF,0x03,0x03,0x03, + 0x03,0x03,0x03,0x07,0x06,0x00,0x00,0x00}, // C + + {0x00,0x00,0x7F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x70,0x3F,0x1F,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0x03,0x03,0x03, + 0x03,0x03,0x03,0x07,0xFE,0x0FC,0x00,0x00}, // D + + {0x00,0x00,0x07F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x60,0x60,0x060,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xC3,0xC3,0xC3, + 0xC3,0xC3,0xC3,0xC3,0x03,0x03,0x00,0x00}, // E + + {0x00,0x00,0x7F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x60,0x60,0x060,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00}, // F + + {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x78,0x38,0x18,0x00,0x00, + 0x00,0x00,0xFE,0xFF,0xFF,0x03,0x03,0x03, + 0x03,0x23,0x33,0x3F,0x3F,0x3F,0x00,0x00}, // G + + {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0x00,0x00 }, // H + + {0x00,0x00,0x00,0x00,0x60,0x60,0x7F,0x7F, + 0x7F,0x7F,0x60,0x60,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x03,0xFF,0xFF, + 0xFF,0xFF,0x03,0x03,0x00,0x00,0x00,0x00 }, // I + + {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, + 0x00,0x00,0x00,0x01E,0x1F,0x1F,0x03,0x03, + 0x03,0x03,0x03,0xFF,0xFF,0xFE,0x00,0x00 }, // J + + {0x00,0x00,0x7F,0x7F,0x7F,0x03,0x03,0x06, + 0x0C,0x18,0x30,0x60,0x60,0x00,0x00,0x00, + 0x00,0x00,0xFE,0xFE,0xFE,0xC0,0xC0,0x60, + 0x30,0x18,0x0C,0x06,0x06,0x00,0x00,0x00 }, // K + + {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0x03,0x03,0x03, + 0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00 }, // L + + {0x00,0x00,0x7F,0x7F,0x7F,0x1C,0x0E,0x07, + 0x07,0x0E,0x1C,0x7F,0x7F,0x7F,0x00,0x00, + 0x00,0x00,0xFC,0xFC,0xFC,0x00,0x00,0x80, + 0x80,0x00,0x00,0xFC,0xFC,0xFC,0x00,0x00 }, // M + + {0x00,0x00,0x7F,0x7F,0x7F,0x38,0x1C,0x07, + 0x03,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, + 0x00,0x00,0xFC,0xFC,0xFC,0x00,0x00,0x00, + 0x80,0xE0,0x70,0xFC,0xFC,0xFC,0x00,0x00 }, // N + + {0x00,0x00,0x3F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7F,0x7F,0x3F,0x00,0x00, + 0x00,0x00,0xFE,0xFF,0xFF,0x03,0x03,0x03, + 0x03,0x03,0x03,0xFF,0xFF,0x0FE,0x00,0x00}, // O + + {0x00,0x00,0x07F,0x7F,0x7F,0x60,0x60,0x60, + 0x60,0x60,0x60,0x7F,0x7F,0x03F,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0, + 0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00}, // P + + {0x00,0x00,0x3F,0x7F,0x60,0x60,0x60,0x60, + 0x60,0x60,0x60,0x60,0x7F,0x3F,0x00,0x00, + 0x00,0x00,0xF8,0xFC,0x0C,0x0C,0x0C,0x0C, + 0x0C,0x0C,0x3C,0x3C,0xFE,0xFF,0x03,0x00}, // Q + + {0x00,0x00,0x07F,0x7F,0x7F,0x61,0x61,0x61, + 0x61,0x61,0x61,0x7F,0x7F,0x03F,0x00,0x00, + 0x00,0x00,0xFF,0xFF,0xFF,0xC0,0xE0,0xF0, + 0xB8,0x9C,0x8E,0x87,0x83,0x03,0x00,0x00}, // R + + {0x00,0x00,0x1E,0x3F,0x73,0x61,0x61,0x61, + 0x61,0x61,0x61,0x70,0x30,0x00,0x00,0x00, + 0x00,0x00,0x0C,0x0C,0x86,0x86,0x86,0x86, + 0x86,0x86,0xC6,0xFC,0x78,0x00,0x00,0x00}, // S + + {0x00,0x00,0x10,0x30,0x30,0x30,0x30,0x3F, + 0x3F,0x30,0x30,0x30,0x30,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, + 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, // T + + {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, + 0x00,0x00,0xFC,0xFE,0xFE,0x06,0x06,0x06, + 0x06,0x06,0x06,0xFE,0xFE,0xFC,0x00,0x00 }, // U + + {0x60,0x70,0x1C,0x0F,0x03,0x00,0x00, + 0x00,0x00,0x00,0x00,0x03,0x0F,0x1C,0x70,0x60, + 0x00,0x00,0x00,0x00,0xC0,0xF0,0x3C,0x06, + 0x06,0x3C,0xF0,0xC0,0x00,0x00,0x00,0x00 }, // V + + {0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00,0x00, + 0x00,0x00,0x00,0x7F,0x7F,0x7F,0x00,0x00, + 0x00,0x00,0xFC,0xFE,0xFE,0x1C,0x38,0x70, + 0x70,0x38,0x1C,0xFE,0xFE,0xFC,0x00,0x00 }, // W + + {0x00,0x00,0x60,0x70,0x78,0x0E,0x07,0x03, + 0x03,0x07,0x0E,0x78,0x70,0x60,0x00,0x00, + 0x00,0x00,0x06,0x0E,0x1E,0x70,0xE0,0xC0, + 0xC0,0xE0,0x70,0x1E,0x0E,0x06,0x00,0x00 }, // X + + {0x00,0x00,0x20,0x30,0x18,0x0C,0x06,0x03, + 0x03,0x06,0x0C,0x18,0x30,0x20,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC, + 0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, // Y + + {0x00,0x00,0x70,0x70,0x60,0x60,0x60,0x61, + 0x63,0x67,0x6E,0x78,0x70,0x60,0x00,0x00, + 0x00,0x00,0x06,0x0E,0x3E,0x76,0xE6,0xC6, + 0x86,0x06,0x06,0x06,0x0E,0x0E,0x00,0x00 }, // Z + + {0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0x7F, + 0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xFE,0xFE, + 0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0}, // [ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x3F, + 0xF,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0xF0,0xFC,0xC,0x0,0x0,0x0,0x0,0x0}, // backslash + + {0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60, + 0x7F,0x7F,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6, + 0xFE,0xFE,0x0,0x0,0x0,0x0,0x0,0x0}, // ] + + {0x0,0x0,0x0,0x0,0x1,0xF,0x3E,0x70, + 0x70,0x3E,0xF,0x1,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ^ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6, + 0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x6}, // _ + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20, + 0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ` + + {0x0,0x0,0x0,0x04,0x09,0x19,0x19,0x19, + 0x0F,0x07,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xE0,0xB0,0x30,0x30,0x20, + 0xF0,0xF0,0x10,0x0,0x0,0x0,0x0,0x0}, // a + + {0x0,0x0,0xFF,0xFF,0xFC,0x8,0x18,0x18, + 0x1C,0xF,0x3,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xF0,0xF0,0x60,0x30,0x30,0x30, + 0x60,0xE0,0x80,0x0,0x0,0x0,0x0,0x0}, // b + + {0x0,0x0,0x07,0x0F,0x0C,0x18,0x18,0x18, + 0xC,0x4,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xC0,0xE0,0x60,0x30,0x30,0x30, + 0x60,0x40,0x0,0x0,0x0,0x0,0x0,0x0}, // c + + {0x0,0x0,0x03,0x07,0x0C,0x18,0x18,0x18, + 0xFF,0xFF,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xC0,0xE0,0x60,0x30,0x30,0x30, + 0xF8,0xF8,0x0,0x0,0x0,0x0,0x0,0x0}, // d + + {0x0,0x0,0x03,0x0F,0x0D,0x19,0x19,0x19, + 0x19,0x0F,0x06,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xC0,0xE0,0x30,0x30,0x10,0x30, + 0x30,0x60,0x40,0x0,0x0,0x0,0x0,0x0}, // e + + {0x0,0x0,0x0,0x0,0x00,0x03,0x03,0x3F, + 0x7F,0x43,0x03,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x00,0xFE, + 0xFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // f + + {0x0,0x0,0x01,0x07,0x0E,0x08,0x08,0x0C, + 0x0F,0x1F,0x00,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x84,0xE2,0x62,0x23,0x23,0x63, + 0xFE,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // g + + {0x0,0x0,0x00,0x3F,0x3F,0x03,0x02,0x03, + 0x03,0x01,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFC,0xFC,0x0,0x0,0x0, + 0xFC,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // h + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x06F, + 0x6F,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF0, + 0xF0,0x00,0x0,0x0,0x0,0x0,0x0,0x0}, // i + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xDF, + 0xDF,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x08,0x0C,0xFC, + 0xF8,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // j + + {0x0,0x0,0xFF,0xFF,0x03,0x03,0x07,0x0C, + 0x18,0x30,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xF0,0xF0,0x80,0x0,0x80,0xE0, + 0x30,0x10,0x0,0x0,0x0,0x0,0x0,0x0}, // k + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3F, + 0x3F,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFC, + 0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // l + + {0x0,0x0,0x08,0x1F,0x1F,0x18,0x18,0x18, + 0x1F,0x1F,0x18,0x18,0x18,0x1F,0x0F,0x0, + 0x0,0x0,0x0,0xF0,0xF0,0x0,0x0,0x0, + 0xF0,0xF0,0x0,0x0,0x0,0xF0,0xF0,0x0}, // m + + {0x0,0x0,0x1F,0x0F,0x0C,0x18,0x18,0x1C, + 0x0F,0x07,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xF0,0xF0,0x0,0x0,0x0,0x0, + 0xF0,0xF0,0x0,0x0,0x0,0x0,0x0,0x0}, // n + + {0x0,0x0,0x03,0x07,0x0C,0x18,0x18,0x18, + 0x0C,0x07,0x03,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x80,0xC0,0x60,0x30,0x30,0x30, + 0x60,0xC0,0x80,0x0,0x0,0x0,0x0,0x0}, // o + + {0x0,0x0,0x0,0x1F,0x1F,0x0C,0x08,0x08, + 0x0C,0x07,0x03,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0xFE,0xFE,0x30,0x10,0x10, + 0x30,0xE0,0xC0,0x0,0x0,0x0,0x0,0x0}, // p + + {0x0,0x0,0x01,0x07,0x0C,0x08,0x08,0x0C, + 0x1F,0x1F,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x80,0xE0,0x30,0x10,0x10,0x30, + 0xFE,0xFE,0x0,0x0,0x0,0x0,0x0,0x0}, // q + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1F, + 0x1F,0x0C,0x08,0x0C,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF0, + 0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // r + + {0x0,0x0,0x0,0x07,0x0F,0x19,0x19,0x0D, + 0x04,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x60,0x30,0x18,0x98,0xB0, + 0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // s + + {0x0,0x0,0x0,0x0,0x0,0x0,0x03,0x3F, + 0x3F,0x03,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF8, + 0xFC,0x0C,0x08,0x0,0x0,0x0,0x0,0x0}, // t + + {0x0,0x0,0x1F,0x1F,0x0,0x0,0x0,0x0, + 0x1F,0x1F,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0xC0,0xE0,0x70,0x30,0x30,0x60, + 0xF0,0xF0,0x0,0x0,0x0,0x0,0x0,0x0}, // u + + {0x0,0x0,0x0C,0x0F,0x01,0x0,0x0,0x01, + 0x0F,0x0C,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x80,0xE0,0x30,0x30,0xE0, + 0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // v + + {0x0,0x0,0x18,0x1F,0x0,0x0,0x07,0x0E, + 0x07,0x0,0x0,0x1F,0x18,0x0,0x0,0x0, + 0x0,0x0,0x0,0xC0,0x60,0x60,0xC0,0x0, + 0xC0,0x60,0x60,0xC0,0x0,0x0,0x0,0x0}, // w + + {0x0,0x0,0x0,0x0,0x08,0x0C,0x06,0x03, + 0x03,0x06,0x0C,0x08,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x10,0x30,0x60,0xC0, + 0xC0,0x60,0x30,0x10,0x0,0x0,0x0,0x0}, // x + + {0x0,0x0,0x08,0x0C,0x06,0x03,0x01,0x01, + 0x03,0x06,0x0C,0x08,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0C,0x18,0x30,0x60,0xC0,0x80, + 0x00,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // y + + {0x0,0x0,0x08,0x08,0x08,0x09,0x0B,0x0E, + 0x0C,0x08,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x30,0x070,0xD0,0x90,0x10,0x10, + 0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0}, // z + + {0x0,0x0,0x0,0x0,0x3,0x3,0x7F,0xFC, + 0xC0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0xFC,0xFE, + 0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0}, // { + + {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF, + 0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF, + 0xFF,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // | + + {0x0,0x0,0x0,0x0,0x0,0x0,0xC0,0xC0, + 0xFC,0x7F,0x3,0x3,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6, + 0xFE,0xFC,0x0,0x0,0x0,0x0,0x0,0x0}, // } + + {0x0,0x0,0x0,0x0,0x18,0x30,0x30,0x30, + 0x38,0x18,0x18,0x18,0x30,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, // ~ + }; + + + +static uint8_t display_buff[1024]; +static uint8_t display_buff_16x16[32]; +static uint16_t buff_end =0; +static uint8_t disp_buff1[512]; +static uint8_t disp_buff2[512]; +static uint8_t temp_buff1[512]; +static uint8_t temp_buff2[512]; static uint8_t temp_buff[256]; static const uint8_t DISPLAY_BUFF_START = 0; static const uint8_t DISPLAY_BUFF_END = 31; - -static uint8_t buff_end = 0; - static const uint32_t MAX_STRING_LENGTH = 32; static char str[MAX_STRING_LENGTH]; //********************************************************************* -void get_5x7_character(char c, uint8_t *char_buff) -{ - uint16_t temp_data; - uint8_t idx, idy; - - for(idx = 0; idx < 6; idx++) - { - //get byte of char from map and flip it, bit 0 becomes bit 7 and so on - temp_data = (0x00FF & (font_5x7[c - 0x20][idx])); - for(idy = 0; idy < 8; idy++) - { - temp_data = (temp_data | (((temp_data & (1 << idy)) << (15 - (idy*2))))); - } - temp_data = ((temp_data >> 8) & 0x00FF); - - char_buff[idx] = ((uint8_t) temp_data); - } -} - - -//********************************************************************* void print_char(Max7219 *p_display, uint8_t position99, char c) { uint8_t idx; @@ -189,77 +1132,73 @@ uint8_t wrap_idx; uint8_t buff_start = position99; - get_5x7_character(c, char_buff); + memcpy(char_buff, &(font_5x7[c - 0x20][0]), 6); if(position99 < 33) { - //get device and device_position - if(position99 > 8) - { - if(position99%8) - { - device = ((position99/8) + 1); - position99 = position99%8; - } - else - { - device = position99/8; - position99 = 8; - } - } - else - { - device = 1; - } - - //check for dispaly wrap around - //(moving to next 8x8 grid cause character doesn't fit on current one) - if(position99 > 3) - { - wrap_idx = (9 - position99); - if(device < 4) - { - wrap_device = (device + 1); - } - else - { - wrap_device = 1; - } - } - else - { - wrap_idx = 6; //make bigger than idx, not used - wrap_device = 0; //not used - } - - //print character to position - for(idx = 0; idx < 6; idx++) - { - //check for wrap - if((idx >= wrap_idx) && (device != 4)) - { - p_display->write_digit(wrap_device, ((idx - wrap_idx) + 1), char_buff[idx]); - } - else - { - p_display->write_digit(device, (position99 + idx), char_buff[idx]); - } - - buff_end = ((buff_start - 1) + idx); - display_buff[buff_end] = char_buff[idx]; - } + //get device and device_position + if(position99 > 8) + { + if(position99%8) + { + device = ((position99/8) + 1); + position99 = position99%8; + } + else + { + device = position99/8; + position99 = 8; + } + } + else + { + device = 1; + } + //check for dispaly wrap around + //(moving to next 8x8 grid cause character doesn't fit on current one) + if(position99 > 3) + { + wrap_idx = (9 - position99); + if(device < 4) + { + wrap_device = (device + 1); + } + else + { + wrap_device = 1; + } + } + else + { + wrap_idx = 6; //make bigger than idx, not used + wrap_device = 0; //not used + } + //print character to position + for(idx = 0; idx < 6; idx++) + { + //check for wrap + if((idx >= wrap_idx) && (device != 4)) + { + p_display->write_digit(wrap_device, ((idx - wrap_idx) + 1), char_buff[idx]); + } + else + { + p_display->write_digit(device, (position99 + idx), char_buff[idx]); + } + buff_end = ((buff_start - 1) + idx); + display_buff[buff_end] = char_buff[idx]; + } } else { - for(idx = 0; idx < 6; idx++) - { - buff_end = ((buff_start - 1) + idx); - display_buff[buff_end] = char_buff[idx]; - } + for(idx = 0; idx < 6; idx++) + { + buff_end = ((buff_start - 1) + idx); + display_buff[buff_end] = char_buff[idx]; + } } } - //********************************************************************* void print_string(Max7219 *p_display, uint8_t position, const char *s) { @@ -272,7 +1211,6 @@ } } - //********************************************************************* void shift_display_right(Max7219 *p_display, uint8_t count, uint8_t ms_delay) { @@ -292,12 +1230,10 @@ temp_buff[idy + 1] = display_buff[idy]; } } - for(idy = 0; idy < (buff_end + 1); idy++) { //save shifted display in buffer display_buff[idy] = temp_buff[idy]; - if(idy <= DISPLAY_BUFF_END) { position99 = ((idy - DISPLAY_BUFF_START) + 1); @@ -333,7 +1269,7 @@ } else { - position99 = 8; + position99 = 8; } p_display->write_digit(2, position99, display_buff[idy]); } @@ -343,12 +1279,10 @@ } } } - wait_ms(ms_delay); } } - //********************************************************************* void shift_display_left(Max7219 *p_display, uint8_t count, uint8_t ms_delay) { @@ -368,12 +1302,10 @@ temp_buff[idy - 1] = display_buff[idy]; } } - for(idy = 0; idy < (buff_end + 1); idy++) { //save shifted display in buffer display_buff[idy] = temp_buff[idy]; - if(idy <= DISPLAY_BUFF_END) { position99 = ((idy - DISPLAY_BUFF_START) + 1); @@ -409,7 +1341,7 @@ } else { - position99 = 8; + position99 = 8; } p_display->write_digit(2, position99, display_buff[idy]); } @@ -419,7 +1351,6 @@ } } } - wait_ms(ms_delay); } } @@ -442,16 +1373,13 @@ display_buff[idx + DISPLAY_BUFF_START] = 0xFF; } } - if(buff_end < (quad * 8)) { - buff_end = (quad * 8); + buff_end = (quad * 8); } - p_display->device_all_on(quad); } - //********************************************************************* void quad_all_off(Max7219 *p_display, uint8_t quad) { @@ -473,14 +1401,12 @@ //is buff_end in the quad? if((((quad - 1) * 8) < buff_end) && ((quad * 8) > buff_end)) { - buff_end = ((quad - 1) * 8); + buff_end = ((quad - 1) * 8); } //leave it alone otherwise - p_display->device_all_off(quad); } - //********************************************************************* void all_on(Max7219 *p_display) { @@ -488,16 +1414,13 @@ { display_buff[idx] = 0xFF; } - if(buff_end < 32) { - buff_end = 32; + buff_end = 32; } - p_display->display_all_on(); } - //********************************************************************* void all_off(Max7219 *p_display) { @@ -505,66 +1428,45 @@ { display_buff[idx] = 0; } - if(buff_end < 32) { - buff_end = 0; + buff_end = 0; } - p_display->display_all_off(); } - -void clear_buffer(void) -{ - buff_end = 0; - - for(uint16_t idx = 0; idx < 256; idx++) - { - display_buff[idx] = 0; - } -} - - //********************************************************************* void demo(Max7219 *display, max7219_configuration_t display_config, bool endless_loop) { uint8_t position = 1; uint8_t idx = 0; - do { all_off(display); - if(position > 25) { position = 1; } printf("\nPosition = %d\n", position); - for(idx = 0x20; idx < 0x7F; idx++) { print_char(display, position, (char) idx); wait(0.25); } position = (position + 8); - all_on(display); - for(idx = 0; idx < 16; idx++) { display_config.intensity = 15 - idx; display->init_display(display_config); wait_ms(50); } - for(idx = 0; idx < 16; idx++) { display_config.intensity = idx; display->init_display(display_config); wait_ms(100); } - wait_ms(100); all_off(display); wait_ms(100); @@ -585,7 +1487,6 @@ while(endless_loop); } - //********************************************************************* void endless_scroll_display(Max7219 *display, uint32_t scroll_right) { @@ -607,6 +1508,255 @@ } } +/********************************************************************/ +void get_16x16_character(char c, uint8_t *char_buff, uint8_t font_type) +{ + uint8_t idx; + + switch(font_type) + { + case 1: // Use 16x16 Aerial bold font + for(idx = 0; idx < 32; idx++) + { + //Get byte of char from map & store in buffer + char_buff[idx] = Aerial_bold_font_16x16[c - 0x20][idx]; + } + break; + case 2: // Use For 16x16 manual font + for(idx = 0; idx < 32; idx++) + { + //Get byte of char from map & store in buffer + char_buff[idx] = Manual_font_16x16[c - 0x20][idx]; + } + break; + default : //Use 16x16 Aerial bold font + for(idx = 0; idx < 32; idx++) + { + //Get byte of char from map & store in buffer + char_buff[idx] = Aerial_bold_font_16x16[c - 0x20][idx]; + } + break; + } //end of switch +} + +void print_char_16x16(Max7219 *p_display, uint16_t position, char c, uint8_t font_type) +{ + + uint8_t idx,device; + uint8_t char_buff[32]; + uint16_t buff_start = position; + + get_16x16_character(c, char_buff,font_type); + //Write bit map data to display device and store it in buffer + for(device = 1; device < 5; device++) + { + for(idx = 0; idx < 8; idx++) + { + p_display->write_digit(device, (idx+1), char_buff[idx + ( device - 1) * 8]); + //Get index for display buffer, keeps image of display for shifting + buff_end = (device - 1) * 8 + idx + buff_start; + //Wrap buffer back around + if(buff_end > 1023) + { + buff_end -= 1023; + } + display_buff[buff_end] = char_buff[idx + ( device - 1) * 8]; + } + } + buff_end +=1; + //Arrange single character data in buffers as upper and lower row + for(idx = 0;idx < 16; idx++) + { + disp_buff1[idx] = display_buff[idx]; + disp_buff2[idx] = display_buff[idx+16]; + } +} + +void print_string_16x16(Max7219 *p_display, char *s,uint8_t font_type) +{ + uint16_t idx1=0,idy1=0; + + while(s[idx1] != '\0') + { + print_char_16x16(p_display, (idx1 * 32), s[idx1], font_type); + idx1++; + wait_ms(200); + } + //Arrange character data in upper and lower row data + for (idy1=0; idy1 < (buff_end/32); idy1++) + { + for(idx1 = 0; idx1 < 16; idx1++) + { + disp_buff1[idx1 + (16 * idy1)] = display_buff[idx1 + (32 * idy1)]; + disp_buff2[idx1 + (16 * idy1)] = display_buff[idx1 + 16 + (32 * idy1)]; + } + } + // Clear buffer for next iteration + for(idx1 = 0; idx1 < 1024; idx1++) + display_buff[idx1] = 0; +} + +//********************************************************************* +void shift_display_right_16x16(Max7219 *p_display, uint8_t count, uint8_t delay) +{ + uint16_t idx1, idy1; + uint8_t position,device; + + for(idx1 = 0; idx1 < count; idx1++) + { + // Right shift data in display buffer 1 & 2 + for(idy1 = 0; idy1 < buff_end/2; idy1++) + { + if(idy1 == ((buff_end/2)-1)) + { + temp_buff1[0] = disp_buff1[(buff_end/2) - 1]; + temp_buff2[0] = disp_buff2[(buff_end/2) - 1]; + } + else + { + temp_buff1[idy1 + 1] = disp_buff1[idy1]; + temp_buff2[idy1 + 1] = disp_buff2[idy1]; + } + } + // Save shifted data in the display buffer 1 & 2 + for(idy1 = 0; idy1 < buff_end/2; idy1++) + { + disp_buff1[idy1] = temp_buff1[idy1]; + disp_buff2[idy1] = temp_buff2[idy1]; + } + for(idy1 = 0; idy1 < 16; idy1++) + { + display_buff_16x16[idy1] = disp_buff1[idy1]; + display_buff_16x16[idy1 + 16] = disp_buff2[idy1]; + } + position = 0; + for(device = 1; device < 5; device++) + { + for(idy1 = 0; idy1 < 8; idy1++) + { + p_display->write_digit(device, (idy1 + 1), display_buff_16x16[idy1 + position]); + } + position+= 8; + } + wait_ms(delay); + } +} + +//********************************************************************* +void shift_display_left_16x16(Max7219 *p_display, uint8_t count, uint8_t delay) +{ + uint16_t idx1,idy1; + uint8_t position,device; + + for(idx1 = 0; idx1 < count; idx1++) + { + // Left shift data in display buffer 1 & 2 + for(idy1 = 0; idy1 < buff_end/2; idy1++) + { + if(idy1 == 0) + { + temp_buff1[(buff_end/2) - 1] = disp_buff1[idy1]; + temp_buff2[(buff_end/2) - 1] = disp_buff2[idy1]; + } + else + { + temp_buff1[idy1 - 1] = disp_buff1[idy1]; + temp_buff2[idy1 - 1] = disp_buff2[idy1]; + } + } + // Save shifted data in the display buffer 1 & 2 + for(idy1 = 0; idy1 < buff_end/2; idy1++) + { + disp_buff1[idy1] = temp_buff1[idy1]; + disp_buff2[idy1] = temp_buff2[idy1]; + } + for(idy1 = 0; idy1 < 16; idy1++) + { + display_buff_16x16[idy1] = disp_buff1[idy1]; + display_buff_16x16[idy1 + 16] = disp_buff2[idy1]; + } + position = 0; + for(device = 1; device < 5; device++) + { + for(idy1 = 0; idy1 < 8; idy1++) + { + p_display->write_digit(device, (idy1+1), display_buff_16x16[idy1 + position]); + } + position+= 8; + } + wait_ms(delay); + } +} + +//********************************************************************* +void demo_16x16(Max7219 *display, max7219_configuration_t display_config, uint8_t font_type, bool endless_loop) +{ + uint8_t index = 0; + + do + { + all_off(display); + for(index = 0x20; index < 0x7F; index++) + { + print_char_16x16(display, 0, (char) index, font_type); + wait(0.25); + } + all_on(display); + for(index = 0; index < 16; index++) + { + display_config.intensity = 15 - index; + display->init_display(display_config); + wait_ms(50); + } + for(index = 0; index < 16; index++) + { + display_config.intensity = index; + display->init_display(display_config); + wait_ms(100); + } + wait_ms(100); + all_off(display); + wait_ms(100); + + all_on(display); + wait_ms(500); + // Display character then shift right and left + print_char_16x16(display, 0, 'A', font_type); + wait_ms(500); + shift_display_right_16x16(display, 32, 100); + shift_display_left_16x16(display, 32, 100); + all_off(display); + wait_ms(100); + // Display string then shift right and left + print_string_16x16(display, "Maxim", font_type); + wait_ms(500); + shift_display_right_16x16(display, 32, 100); + shift_display_left_16x16(display, 32, 100); + wait_ms(100); + } + while(endless_loop); +} + +//********************************************************************* +void endless_scroll_display_16x16(Max7219 *display, uint32_t scroll_right) +{ + if(scroll_right) + { + printf("\nScrolling Right\n"); + while(1) + { + shift_display_right_16x16(display, 1, 100); + } + } + else + { + printf("\nScrolling Left\n"); + while(1) + { + shift_display_left_16x16(display, 1, 100); + } + } +} //********************************************************************* uint32_t print_menu(void) @@ -614,13 +1764,13 @@ uint32_t user_input; printf("\nPlease select an option below:\n"); - printf("%t1. Set Brightness\n"); - printf("%t2. Print a characther to given position\n"); - printf("%t3. Print a string to position\n");//TODO fix this case - printf("%t4. Shift display given number of position and direction\n"); //TODO fix this case - printf("%t5. Clear display\n"); - printf("%t6. Run the Demo Rotuine\n"); - printf("%t7. Run the Demo Rotuine In Endless Loop\n"); + printf("%t1. Select font\n"); + printf("%t2. Set Brightness\n"); + printf("%t3. Print a character to given position\n"); + printf("%t4. Print a string to position\n"); + printf("%t5. Shift display given number of position and direction\n"); + printf("%t6. Clear display\n"); + printf("%t7. Run the Demo Routine\n"); printf("%t8. Scroll Display In Endless Loop, left or right\n"); printf("%t9. Quit\n\n"); @@ -629,7 +1779,6 @@ return(user_input); } - //********************************************************************* uint32_t get_user_input(char *msg, uint32_t max_val) { @@ -641,30 +1790,26 @@ //get user input fgets(str, MAX_STRING_LENGTH, stdin); - + //Remove trailing newline and CR, if there. if((strlen(str) > 0 ) && (str[strlen(str) - 1] == 0x0A) && (str[strlen(str) - 2] == 0x0D)) { str[strlen(str) - 1] = '\0'; str[strlen(str) - 1] = '\0'; } - user_input = strtoul(str, NULL, 0); - printf("\nYou entered = %d\n", user_input); if(user_input > max_val) { printf("\nOut of range\n"); } - } while(user_input > max_val); return(user_input); } - //********************************************************************* char get_user_char(char *msg) { @@ -674,8 +1819,9 @@ printf(msg); //get user input + fflush(stdin); fgets(str, 4, stdin); - + fflush(stdin); //Remove trailing newline and CR, if there. if((strlen(str) > 0 ) && (str[strlen(str) - 1] == 0x0A) && (str[strlen(str) - 2] == 0x0D)) { @@ -712,3 +1858,13 @@ return(str); } + +void clear_buffer(void) +{ + buff_end = 0; + + for(uint16_t idx = 0; idx < 256; idx++) + { + display_buff[idx] = 0; + } +}
diff -r 52f9ecc09233 -r ce6a3accca77 maxrefdes99.h --- a/maxrefdes99.h Fri Mar 25 22:50:52 2016 +0000 +++ b/maxrefdes99.h Tue May 31 22:32:53 2016 +0000 @@ -1,16 +1,5 @@ /******************************************************************//** * @file maxrefdes99.h -* -* @author Justin Jordan -* -* @version 0.0 -* -* Started: 08JAN16 -* -* Updated: -* -* @brief Header file for maxrefdes99 demo -*********************************************************************** * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -42,19 +31,16 @@ * ownership rights. **********************************************************************/ - #ifndef MAXREFDES99_H #define MAXREFDES99_H #include "mbed.h" #include "max7219.h" - -#define ESC 0x1B /**********************************************************//** -* @brief gets character bitmap fom memory +* @brief Gets character bitmap fom memory * * @details * @@ -64,13 +50,13 @@ * must be at least 6 bytes * * On Exit: -* @return none +* @return None **************************************************************/ void get_5x7_character(char c, uint8_t *char_buff); /**********************************************************//** -* @brief prints character to MAXREFDES99 at given position +* @brief Prints character to MAXREFDES99 at given position * * @details * @@ -82,13 +68,13 @@ * @param[in] c - char to print * * On Exit: -* @return none +* @return None **************************************************************/ void print_char(Max7219 *p_display, uint8_t position, char c); /**********************************************************//** -* @brief prints given string to MAXREFDES99 at given position +* @brief Prints given string to MAXREFDES99 at given position * * @details * @@ -100,13 +86,13 @@ * @param[in] s - pointer to string to print * * On Exit: -* @return none +* @return None **************************************************************/ void print_string(Max7219 *p_display, uint8_t position, const char *s); /**********************************************************//** -* @brief shifts display right 'count' positions with given +* @brief Shifts display right 'count' positions with given * delay between shifts * * @details @@ -117,13 +103,13 @@ * @param[in] delay - delay between shifts * * On Exit: -* @return none +* @return None **************************************************************/ void shift_display_right(Max7219 *p_display, uint8_t count, uint8_t delay); /**********************************************************//** -* @brief shifts display left 'count' positions with given +* @brief Shifts display left 'count' positions with given * delay between shifts * * @details @@ -134,13 +120,13 @@ * @param[in] delay - delay between shifts * * On Exit: -* @return none +* @return None **************************************************************/ void shift_display_left(Max7219 *p_display, uint8_t count, uint8_t delay); /**********************************************************//** -* @brief turns on all leds for given quadrant, with quad 1 being +* @brief Turns on all leds for given quadrant, with quad 1 being * top left and quad 4 being bottom right * * @details @@ -150,13 +136,13 @@ * @param[in] quad - see brief * * On Exit: -* @return none +* @return None **************************************************************/ void quad_all_on(Max7219 *p_display, uint8_t quad); /**********************************************************//** -* @brief turns off all leds for given quadrant, with quad 1 being +* @brief Turns off all leds for given quadrant, with quad 1 being * top left and quad 4 being bottom right * * @details @@ -166,13 +152,13 @@ * @param[in] quad - see brief * * On Exit: -* @return none +* @return None **************************************************************/ void quad_all_off(Max7219 *p_display, uint8_t quad); /**********************************************************//** -* @brief turns all leds for whole display on +* @brief Turns all leds for whole display on * * @details * @@ -180,13 +166,13 @@ * @param[in] p_display - pointer to Max7219 object * * On Exit: -* @return none +* @return None **************************************************************/ void all_on(Max7219 *p_display); /**********************************************************//** -* @brief turns all leds for whole display off +* @brief Turns all leds for whole display off * * @details * @@ -194,16 +180,13 @@ * @param[in] p_display - pointer to Max7219 object * * On Exit: -* @return none +* @return None **************************************************************/ void all_off(Max7219 *p_display); -void clear_buffer(void); - - /**********************************************************//** -* @brief demo loop for MAXREFDES99 +* @brief Demo loop for MAXREFDES99 * * @details * @@ -213,13 +196,13 @@ * @param[in] endless_loop - if true run demo in endless loop * * On Exit: -* @return none +* @return None **************************************************************/ void demo(Max7219 *display, max7219_configuration_t display_config, bool endless_loop); /**********************************************************//** -* @brief shift display in given direction forever +* @brief Shift display in given direction forever * * @details * @@ -228,26 +211,140 @@ * @param[in] scroll_right - if true shift right, else shift left * * On Exit: -* @return none +* @return None **************************************************************/ void endless_scroll_display(Max7219 *display, uint32_t scroll_right); +/**********************************************************//** +* @brief Gets 16x16 character bitmap fom memory +* +* @details +* +* On Entry: +* @param[in] c - character to get bitmap for +* @param[in] char_buff - pointer to buffer to store bitmap +* Buffer should be 32 bytes +* @param[in] font_type - 16x16 font type used for display +* On Exit: +* @return None +**************************************************************/ +void get_16x16_character(char c, uint8_t *char_buff, uint8_t font_type); + + +/**********************************************************//** +* @brief Prints character to MAXREFDES99 16x16 LED display +* +* @details +* +* On Entry: +* @param[in] p_display - pointer to Max7219 object + @param[in] position - for single char print this value is zero, + for string case it is multiple of 32 bytes as each char data is 32 bytes, +* @param[in] c - char to print +* @param[in] font_type - 16x16 font type used for display +* +* On Exit: +* @return None +**************************************************************/ +void print_char_16x16(Max7219 *p_display, uint16_t position, char c, uint8_t font_type); + + +/**********************************************************//** +* @brief Prints given string to MAXREFDES99 16x16 LED display +* +* @details +* +* On Entry: +* @param[in] p_display - pointer to Max7219 object +* @param[in] s - pointer to string to print +* @param[in] font_type - 16x16 font type used for display +* +* On Exit: +* @return None +**************************************************************/ +void print_string_16x16(Max7219 *p_display, char *s, uint8_t font_type); + /**********************************************************//** -* @brief print demo menu +* @brief Shifts 16x16 font display right 'count' positions with given +* delay between shifts +* +* @details +* +* On Entry: +* @param[in] p_display - pointer to Max7219 object +* @param[in] count - number of positions to shift +* @param[in] delay - delay between shifts in milliseconds +* +* On Exit: +* @return None +**************************************************************/ +void shift_display_right_16x16(Max7219 *p_display, uint8_t count, uint8_t delay); + + +/**********************************************************//** +* @brief Shifts 16x16 font display left 'count' positions with given +* delay between shifts +* +* @details +* +* On Entry: +* @param[in] p_display - pointer to Max7219 object +* @param[in] count - number of positions to shift +* @param[in] delay - delay between shifts in milliseconds +* +* On Exit: +* @return None +**************************************************************/ +void shift_display_left_16x16(Max7219 *p_display, uint8_t count, uint8_t delay); + +/**********************************************************//** +* @brief Demo loop for MAXREFDES99 with 16x16 font display +* +* @details +* +* On Entry: +* @param[in] p_display - pointer to Max7219 object +* @param[in] display_config - structure holding configuration data +* @param[in] font_type - 16x16 font type used for display +* @param[in] endless_loop - if true run demo in endless loop +* +* On Exit: +* @return None +**************************************************************/ +void demo_16x16(Max7219 *display, max7219_configuration_t display_config, uint8_t font_type, bool endless_loop); + + +/**********************************************************//** +* @brief Shift 16x16 font display in given direction forever +* +* @details +* +* On Entry: +* @param[in] p_display - pointer to Max7219 object +* @param[in] scroll_right - if true shift right, else shift left +* +* On Exit: +* @return None +**************************************************************/ +void endless_scroll_display_16x16(Max7219 *display, uint32_t scroll_right); + + +/**********************************************************//** +* @brief Print demo menu * * @details * * On Entry: * * On Exit: -* @return user entry +* @return User entry **************************************************************/ uint32_t print_menu(void); /**********************************************************//** -* @brief get integer value from user +* @brief Get integer value from user * * @details * @@ -256,13 +353,13 @@ * @param[in] max_val - maximum allowable input * * On Exit: -* @return user entry +* @return User entry **************************************************************/ uint32_t get_user_input(char *msg, uint32_t max_val); /**********************************************************//** -* @brief get char from user +* @brief Get char from user * * @details * @@ -270,13 +367,13 @@ * @param[in] msg - prompt for user * * On Exit: -* @return user entry +* @return User entry **************************************************************/ char get_user_char(char *msg); /**********************************************************//** -* @brief get string from user +* @brief Get string from user * * @details * @@ -284,10 +381,13 @@ * @param[in] msg - prompt for user * * On Exit: -* @return user entry +* @return User entry **************************************************************/ char * get_user_string(char *msg); +void clear_buffer(void); + + #endif /*MAXREFDES99_H*/
diff -r 52f9ecc09233 -r ce6a3accca77 mbed.bld --- a/mbed.bld Fri Mar 25 22:50:52 2016 +0000 +++ b/mbed.bld Tue May 31 22:32:53 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/c0f6e94411f5 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/6c34061e7c34 \ No newline at end of file