#include "display.h" #include "definitions.h" #include #include #include static const unsigned char disctl[9] = {0x4C, 0x01, 0x53, 0x00, 0x02, 0xB4, 0xB0, 0x02, 0x00}; static const unsigned char gcp64_0[29] = {0x11, 0x27, 0x3C, 0x4C, 0x5D, 0x6C, 0x78, 0x84, 0x90, 0x99, 0xA2, 0xAA, 0xB2, 0xBA, 0xC0, 0xC7, 0xCC, 0xD2, 0xD7, 0xDC, 0xE0, 0xE4, 0xE8, 0xED, 0xF0, 0xF4, 0xF7, 0xFB, 0xFE}; static const unsigned char gcp64_1[34] = {0x01, 0x03, 0x06, 0x09, 0x0B, 0x0E, 0x10, 0x13, 0x15, 0x17, 0x19, 0x1C, 0x1E, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2A, 0x2C, 0x2D, 0x2F, 0x31, 0x33, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x42, 0x44, 0x47, 0x5E}; static const unsigned char gcp16[15] = {0x13, 0x23, 0x2D, 0x33, 0x38, 0x3C, 0x40, 0x43, 0x46, 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x64}; static const unsigned char asciiCommon[96][14] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32) { 0x00, 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00}, //! { 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //" { 0x00, 0x00, 0x00, 0x36, 0x36, 0x7F, 0x36, 0x36, 0x36, 0x7F, 0x36, 0x36, 0x00, 0x00}, //# { 0x00, 0x18, 0x18, 0x3E, 0x63, 0x43, 0x03, 0x3E, 0x60, 0x61, 0x63, 0x3E, 0x18, 0x18}, //$ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x63, 0x30, 0x18, 0x0C, 0x66, 0x63, 0x00, 0x00}, // % { 0x00, 0x00, 0x00, 0x1C, 0x36, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x33, 0x6E, 0x00, 0x00}, // & { 0x00, 0x18, 0x18, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' { 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00, 0x00}, // ( { 0x00, 0x00, 0x00, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00, 0x00}, // ) { 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, 0x00, 0x00}, // * { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00}, // + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x0C, 0x00}, // ´ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00}, // . { 0x00, 0x00, 0x00, 0x40, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00}, // / { 0x00, 0x00, 0x00, 0x1C, 0x36, 0x63, 0x63, 0x6B, 0x63, 0x63, 0x36, 0x1C, 0x00, 0x00}, // 0 (48-32) { 0x00, 0x00, 0x00, 0x18, 0x1C, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x63, 0x7F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x60, 0x60, 0x3C, 0x60, 0x60, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x30, 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x30, 0x78, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x7F, 0x03, 0x03, 0x03, 0x3F, 0x60, 0x60, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x1C, 0x06, 0x03, 0x03, 0x3F, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x7F, 0x63, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x3E, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x7E, 0x60, 0x60, 0x30, 0x1E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x0C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x30, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x7B, 0x7B, 0x7B, 0x3B, 0x03, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x08, 0x1C, 0x36, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x63, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x66, 0x3F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3C, 0x66, 0x43, 0x03, 0x03, 0x03, 0x43, 0x66, 0x3C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x1F, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x7F, 0x66, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x66, 0x7F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x7F, 0x66, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x06, 0x0F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3C, 0x66, 0x43, 0x03, 0x03, 0x7B, 0x63, 0x66, 0x5C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x7F, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x67, 0x66, 0x36, 0x36, 0x1E, 0x36, 0x36, 0x66, 0x67, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x0F, 0x06, 0x06, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x63, 0x67, 0x6F, 0x7F, 0x7B, 0x73, 0x63, 0x63, 0x63, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x06, 0x0F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x63, 0x6B, 0x7B, 0x3E, 0x70, 0x00}, { 0x00, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x66, 0x67, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x06, 0x1C, 0x30, 0x63, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x08, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x6B, 0x6B, 0x7F, 0x36, 0x36, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x3E, 0x1C, 0x3E, 0x63, 0x63, 0x63, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x7F, 0x63, 0x31, 0x18, 0x0C, 0x06, 0x43, 0x63, 0x7F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0x60, 0x40, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00, 0x00}, { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, { 0x00, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x33, 0x6E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x07, 0x06, 0x06, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x03, 0x03, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x38, 0x30, 0x30, 0x3C, 0x36, 0x33, 0x33, 0x33, 0x6E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x7F, 0x03, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x38, 0x6C, 0x4C, 0x0C, 0x3E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x33, 0x1E}, { 0x00, 0x00, 0x00, 0x07, 0x06, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x66, 0x67, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x70, 0x60, 0x60, 0x60, 0x60, 0x66, 0x66, 0x3C}, { 0x00, 0x00, 0x00, 0x07, 0x06, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x7F, 0x6B, 0x6B, 0x6B, 0x6B, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x30, 0x78}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x06, 0x0F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x63, 0x0E, 0x38, 0x63, 0x3E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x08, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x0C, 0x6C, 0x38, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x08, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x6B, 0x6B, 0x7F, 0x36, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x7E, 0x60, 0x30, 0x1E}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x33, 0x18, 0x0C, 0x66, 0x7F, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x0E, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x0E, 0x00, 0x00}, { 0x00, 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x36, 0x63, 0x63, 0x7F, 0x00, 0x00, 0x00}, }; static const unsigned char asciiSmall[96][7] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32) { 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x20}, //! { 0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00}, //" { 0x50, 0x50, 0xF8, 0x50, 0xF8, 0x50, 0x50}, //# { 0x20, 0xF0, 0x28, 0x70, 0xA0, 0x78, 0x20}, //$ { 0x18, 0x98, 0x40, 0x20, 0x10, 0xC8, 0xC0}, // % { 0x30, 0x48, 0x28, 0x10, 0xA8, 0x48, 0xB0}, // & { 0x30, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00}, // ' { 0x40, 0x20, 0x10, 0x10, 0x10, 0x20, 0x40}, // ( { 0x10, 0x20, 0x40, 0x40, 0x40, 0x20, 0x10}, // ) { 0x00, 0x20, 0xA8, 0x70, 0xA8, 0x20, 0x00}, // * { 0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00}, // + { 0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x10}, // ´ { 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00}, // - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30}, // . { 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00}, // / { 0x70, 0x88, 0xC8, 0xA8, 0x98, 0x88, 0x70}, // 0 (48-32) { 0x20, 0x30, 0x20, 0x20, 0x20, 0x20, 0x70}, { 0x70, 0x88, 0x80, 0x40, 0x20, 0x10, 0xF8}, { 0xF8, 0x40, 0x20, 0x40, 0x80, 0x88, 0x70}, { 0x40, 0x60, 0x50, 0x48, 0xF8, 0x40, 0x40}, { 0xF8, 0x08, 0x78, 0x80, 0x80, 0x88, 0x70}, { 0x60, 0x10, 0x08, 0x78, 0x88, 0x88, 0x70}, { 0xF8, 0x80, 0x40, 0x20, 0x10, 0x10, 0x10}, { 0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70}, { 0x70, 0x88, 0x88, 0xF0, 0x80, 0x40, 0x30}, { 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00}, { 0x00, 0x30, 0x30, 0x00, 0x30, 0x20, 0x10}, { 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40}, { 0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00}, { 0x10, 0x20, 0x40, 0x80, 0x40, 0x20, 0x10}, { 0x70, 0x88, 0x80, 0x40, 0x20, 0x00, 0x20}, { 0x70, 0x88, 0x80, 0xB0, 0xA8, 0xA8, 0x70}, { 0x70, 0x88, 0x88, 0x88, 0xF8, 0x88, 0x88}, { 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78}, { 0x70, 0x88, 0x08, 0x08, 0x08, 0x88, 0x70}, { 0x38, 0x48, 0x88, 0x88, 0x88, 0x48, 0x38}, { 0xF8, 0x08, 0x08, 0x78, 0x08, 0x08, 0xF8}, { 0xF8, 0x08, 0x08, 0x78, 0x08, 0x08, 0x08}, { 0x70, 0x88, 0x08, 0xE8, 0x88, 0x88, 0xF0}, { 0x88, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x88}, { 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70}, { 0xE0, 0x40, 0x40, 0x40, 0x40, 0x48, 0x30}, { 0x88, 0x48, 0x28, 0x18, 0x28, 0x48, 0x88}, { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xF8}, { 0x88, 0xD8, 0xA8, 0xA8, 0x88, 0x88, 0x88}, { 0x88, 0x88, 0x98, 0xA8, 0xC8, 0x88, 0x88}, { 0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70}, { 0x78, 0x88, 0x88, 0x78, 0x08, 0x08, 0x08}, { 0x70, 0x88, 0x88, 0x88, 0xA8, 0x48, 0xB0}, { 0x78, 0x88, 0x88, 0x78, 0x28, 0x48, 0x88}, { 0xF0, 0x08, 0x08, 0x70, 0x80, 0x80, 0x78}, { 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}, { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70}, { 0x88, 0x88, 0x88, 0x88, 0x88, 0x50, 0x20}, { 0x88, 0x88, 0x88, 0xA8, 0xA8, 0xA8, 0x50}, { 0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88}, { 0x88, 0x88, 0x88, 0x50, 0x20, 0x20, 0x20}, { 0xF8, 0x80, 0x40, 0x20, 0x10, 0x08, 0xF8}, { 0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x70}, { 0x88, 0x50, 0xF8, 0x20, 0xF8, 0x20, 0x20}, { 0x70, 0x40, 0x40, 0x40, 0x40, 0x40, 0x70}, { 0x20, 0x50, 0x88, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8}, { 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x70, 0x80, 0xF0, 0x88, 0xF0}, { 0x08, 0x08, 0x68, 0x98, 0x88, 0x88, 0x78}, { 0x00, 0x00, 0x70, 0x08, 0x08, 0x88, 0x70}, { 0x80, 0x80, 0xB0, 0xC8, 0x88, 0x88, 0xF0}, { 0x00, 0x00, 0x70, 0x88, 0xF8, 0x08, 0x70}, { 0x60, 0x90, 0x10, 0x38, 0x10, 0x10, 0x10}, { 0x00, 0xF0, 0x88, 0x88, 0xF0, 0x80, 0x70}, { 0x08, 0x08, 0x68, 0x98, 0x88, 0x88, 0x88}, { 0x20, 0x00, 0x30, 0x20, 0x20, 0x20, 0x70}, { 0x40, 0x00, 0x60, 0x40, 0x40, 0x48, 0x30}, { 0x08, 0x08, 0x48, 0x28, 0x18, 0x28, 0x48}, { 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70}, { 0x00, 0x00, 0x58, 0xA8, 0xA8, 0x88, 0x88}, { 0x00, 0x00, 0x68, 0x98, 0x88, 0x88, 0x88}, { 0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70}, { 0x00, 0x00, 0x78, 0x88, 0x78, 0x08, 0x08}, { 0x00, 0x00, 0xB0, 0xC8, 0xF0, 0x80, 0x80}, { 0x00, 0x00, 0x68, 0x98, 0x08, 0x08, 0x08}, { 0x00, 0x00, 0x70, 0x08, 0x70, 0x80, 0x78}, { 0x10, 0x10, 0x38, 0x10, 0x10, 0x90, 0x60}, { 0x00, 0x00, 0x88, 0x88, 0x88, 0xC8, 0xB0}, { 0x00, 0x00, 0x88, 0x88, 0x88, 0x50, 0x20}, { 0x00, 0x00, 0x88, 0x88, 0xA8, 0xA8, 0x50}, { 0x00, 0x00, 0x88, 0x50, 0x20, 0x50, 0x88}, { 0x00, 0x00, 0x88, 0x88, 0xF0, 0x80, 0x70}, { 0x00, 0x00, 0xF8, 0x40, 0x20, 0x10, 0xF8}, { 0x40, 0x20, 0x20, 0x10, 0x20, 0x20, 0x40}, { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20}, { 0x10, 0x20, 0x20, 0x40, 0x20, 0x20, 0x10}, { 0x00, 0x20, 0x40, 0xF8, 0x40, 0x20, 0x00}, { 0x00, 0x20, 0x10, 0xF8, 0x10, 0x20, 0x00}, }; void lcdSendCommand(unsigned char dat) { while (!IFS0bits.SPI1IF) { } SPI1STATbits.SPIROV = 0; IFS0bits.SPI1IF = 0; RS = 0; SPI1BUF = dat; while (!IFS0bits.SPI1IF) { } SPI1STATbits.SPIROV = 0; IFS0bits.SPI1IF = 0; SPI1BUF = 0x00; } void lcdSendData(unsigned char dat) { while (!IFS0bits.SPI1IF) { } RS = 1; SPI1STATbits.SPIROV = 0; IFS0bits.SPI1IF = 0; SPI1BUF = dat; while (!IFS0bits.SPI1IF) { } SPI1STATbits.SPIROV = 0; IFS0bits.SPI1IF = 0; SPI1BUF = 0x00; } void lcdSendData16(unsigned int dat) { while (!IFS0bits.SPI1IF) { } RS = 1; SPI1STATbits.SPIROV = 0; IFS0bits.SPI1IF = 0; SPI1BUF = dat >> 8; while (!IFS0bits.SPI1IF) { } SPI1STATbits.SPIROV = 0; IFS0bits.SPI1IF = 0; SPI1BUF = dat; } void lcdPulseCS() { CS = 1; __delay_us(1); CS = 0; } void lcdInit() { unsigned int i; REST = 0; CS = 1; RS = 1; __delay_ms(10); REST = 1; __delay_ms(10); __delay_ms(10); CS = 0; IFS0bits.SPI1IF = 1; lcdSendCommand(DATCTL); lcdSendData(0x2B); lcdPulseCS(); lcdSendCommand(DISCTL); for (i = 0; i < 9; i++) { lcdSendData(disctl[i]); } lcdSendCommand(GCP64); for (i = 0; i < 29; i++) { lcdSendData(gcp64_0[i]); lcdSendData(0x00); } for (i = 0; i < 34; i++) { lcdSendData(gcp64_1[i]); lcdSendData(0x01); } lcdSendCommand(GCP16); for (i = 0; i < 15; i++) { lcdSendData(gcp16[i]); } lcdSendCommand(GSSET); lcdSendData(0x00); lcdSendCommand(OSSEL); lcdSendData(0x00); lcdSendCommand(SLPOUT); lcdSendCommand(CASET); lcdSendData(0x08); lcdSendData(0x01); lcdSendData(0x8B); lcdSendData(0x01); lcdSendCommand(PASET); lcdSendData(0x00); lcdSendData(0x8F); lcdSendCommand(ASCSET); lcdSendData(0x00); lcdSendData(0xAF); lcdSendData(0xAF); lcdSendData(0x03); lcdSendCommand(SCSTART); lcdSendData(0x00); lcdSendCommand(DISON); while (!IFS0bits.SPI1IF) { } CS = 1; } void lcdWriteScreen(unsigned int collor) { unsigned int i; CS = 0; lcdSendCommand(CASET); lcdSendData(0x08); lcdSendData(0x01); lcdSendData(0x8B); lcdSendData(0x01); lcdSendCommand(PASET); lcdSendData(0x00); lcdSendData(0xAF); lcdSendCommand(RAMWR); for (i = 0; i < 23232; i++) //lcdSendData16(130*(i/132)); //lcd_dat16(0x00FF); lcdSendData16(collor); while (!IFS0bits.SPI1IF) { } CS = 1; } void lcdPutChar(unsigned char x, unsigned char y, char c, unsigned char size, unsigned int backCollor, unsigned int fontCollor) { unsigned char h, ch = 0, p, mask, i; CS = 0; lcdSendCommand(CASET); lcdSendData(0x8B - x - (8 * size) + 1); lcdSendData(0x01); lcdSendData(0x8B - x); lcdSendData(0x01); lcdSendCommand(PASET); lcdSendData(y); lcdSendData(y + (14 * size) - 1); lcdSendCommand(RAMWR); for (h = 0; h < 14 * size; h++) { if (h % size == 0) ch = asciiCommon[ c - 32 ][h / size]; mask = 0x80; for (p = 0; p < 8; p++) { if (ch & mask) { for (i = 0; i < size; i++) lcdSendData16(fontCollor); } else { for (i = 0; i < size; i++) lcdSendData16(backCollor); } mask = mask / 2; } } while (!IFS0bits.SPI1IF) { } CS = 1; } void lcdPutCharSmall(unsigned char x, unsigned char y, char c, unsigned char size, unsigned int backCollor, unsigned int fontCollor) { unsigned char h, ch = 0, p, mask, i; CS = 0; lcdSendCommand(CASET); lcdSendData(0x8B - x - (5 * size) + 1); lcdSendData(0x01); lcdSendData(0x8B - x); lcdSendData(0x01); lcdSendCommand(PASET); lcdSendData(y); lcdSendData(y + (7 * size) - 1); lcdSendCommand(RAMWR); for (h = 0; h < 7 * size; h++) { if (h % size == 0) ch = asciiSmall[ c - 32 ][h / size]; mask = 0x80; for (p = 0; p < 5; p++) { if (ch & mask) { for (i = 0; i < size; i++) { lcdSendData16(fontCollor); } } else { for (i = 0; i < size; i++) { lcdSendData16(backCollor); } } mask = mask / 2; } } while (!IFS0bits.SPI1IF) { } CS = 1; }