Demo for MAXREFDES99

Dependencies:   MAX7219 mbed

Revision:
3:41bdbc9b3cec
Parent:
2:9fdd01cf0f88
Child:
6:00aabe967e51
--- a/maxrefdes99.cpp	Thu Mar 24 23:35:56 2016 +0000
+++ b/maxrefdes99.cpp	Mon Apr 11 16:19:13 2016 +0000
@@ -3,13 +3,13 @@
 *
 * @author Justin Jordan
 *
-* @version 0.0
+* @version 0.1
 *
 * Started: 08JAN16
 *
-* Updated: 
+* Updated: 11APR16,Pradip Vatharkar
 *
-* @brief Source file for maxrefdes99 demo
+* @brief Source file for maxrefdes99 demo with 5x7 & 16x16 fonts  
 ***********************************************************************
 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
 *
@@ -145,14 +145,501 @@
     {0x00,0x0C,0x02,0x0C,0x10,0x0C}     // ~
 };
 
+// 16*16 character bit map for Aerial bold fonts
 
-static uint8_t display_buff[256];
+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}, // ~
+};
+
+
+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 display_buff[256];
 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 uint8_t buff_end = 0;
 
 static const uint32_t MAX_STRING_LENGTH = 32;
 static char str[MAX_STRING_LENGTH];
@@ -596,6 +1083,256 @@
     }
 }
 
+/********************************************************************/
+void get_16x16_character(char c, uint8_t *char_buff)
+{
+    uint8_t idx;
+
+    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];
+    }
+}
+
+
+void print_char_16x16(Max7219 *p_display, uint16_t position, char c)
+{
+   
+    uint8_t idx;
+    uint8_t char_buff[32]; 
+    uint8_t device;
+    uint16_t buff_start = position;
+    
+    get_16x16_character(c, char_buff);
+    
+    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 buff 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 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)
+{
+    uint16_t idx=0,idy=0;
+    
+    while(s[idx] != '\0')
+    {
+        print_char_16x16(p_display, (idx*32), s[idx]);
+        idx++;
+        wait_ms(200);
+    } 
+    
+    //Arrange character data in upper and lower row data 
+    for (idy=0;idy<buff_end/32;idy++)
+    {
+      for(idx=0;idx<16;idx++)
+      {
+      disp_buff1[idx+16*idy] = display_buff[idx+32*idy];
+      disp_buff2[idx+16*idy] = display_buff[idx+16+32*idy];
+      }
+    }
+   
+   // Clear buffer
+   for(idx=0;idx<1024;idx++)
+   display_buff[idx] = 0;
+              
+}
+
+//*********************************************************************
+void shift_display_right_16x16(Max7219 *p_display, uint8_t count, uint8_t delay)
+{
+    uint16_t idx, idy;
+    uint8_t position;
+    int device;
+                 
+    for(idx = 0; idx < count; idx++)
+    {
+       
+        for(idy = 0; idy < buff_end/2; idy++)
+        {
+                if(idy ==(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[idy + 1] = disp_buff1[idy];
+                   temp_buff2[idy + 1] = disp_buff2[idy];
+                }
+       
+        }
+     for(idy = 0; idy < buff_end/2; idy++) 
+     { 
+        disp_buff1[idy] = temp_buff1[idy]; 
+        disp_buff2[idy] = temp_buff2[idy]; 
+ 
+     }
+        for(idy = 0; idy < 16; idy++) 
+        {
+          display_buff_16x16[idy] = disp_buff1[idy];
+          display_buff_16x16[idy+16] = disp_buff2[idy];
+        }
+        
+       position = 0; 
+       for(device =1;device<5;device++)
+        {
+         for(idy = 0; idy < 8; idy++)
+         {
+          p_display->write_digit(device, idy+1,display_buff_16x16[idy+position]); 
+         }
+         position+=8; 
+       } 
+        wait_ms(delay);  
+     }
+    
+}
+
+void shift_display_left_16x16(Max7219 *p_display, uint8_t count, uint8_t delay)
+{
+    uint16_t idx, idy;
+    uint8_t position;
+    int device;
+        
+    for(idx = 0; idx < count; idx++)
+    {
+        for(idy = 0; idy < buff_end/2; idy++)
+        {
+                if(idy == 0)
+                {
+                  temp_buff1[buff_end/2-1] = disp_buff1[idy];
+                  temp_buff2[buff_end/2-1] = disp_buff2[idy];
+               
+                }
+                else 
+                {
+                   temp_buff1[idy - 1] = disp_buff1[idy];
+                   temp_buff2[idy - 1] = disp_buff2[idy];
+                   
+                }
+       
+        } 
+      for(idy = 0; idy < buff_end/2; idy++) 
+      { 
+        disp_buff1[idy] = temp_buff1[idy]; 
+        disp_buff2[idy] = temp_buff2[idy]; 
+    
+      }
+        for(idy = 0; idy < 16; idy++) 
+        {
+          display_buff_16x16[idy] = disp_buff1[idy];
+          display_buff_16x16[idy+16] = disp_buff2[idy];  
+        }
+        position = 0; 
+        for(device =1;device<5;device++)
+        {
+         for(idy = 0; idy < 8; idy++)
+         {
+          p_display->write_digit(device, idy+1,display_buff_16x16[idy+position]); 
+         }
+         position+=8; 
+       }
+   
+        wait_ms(delay);
+    }
+ 
+}
+
+//*********************************************************************
+void demo_16x16(Max7219 *display, max7219_configuration_t display_config, bool endless_loop)
+{
+    uint8_t idx = 0;
+    
+    do
+    {
+        all_off(display);
+        
+        for(idx = 0x20; idx < 0x7F; idx++)
+        {
+            print_char_16x16(display, 0, (char) idx);
+            wait(0.25);
+        }
+              
+        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);
+        
+        all_on(display);
+        wait_ms(500);
+        print_char_16x16(display,0,'A');
+        wait_ms(500);
+        shift_display_right_16x16(display, 32, 100);
+        shift_display_left_16x16(display, 32, 100);
+        all_off(display);
+        wait_ms(100);
+        
+        print_string_16x16(display, "Maxim");
+        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)
@@ -603,13 +1340,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");
     
@@ -630,7 +1367,7 @@
         
         //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))
         {
@@ -663,8 +1400,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))
         {
@@ -701,3 +1439,4 @@
     return(str);
 }
 
+