James Grant
/
NewMobileLCD
MobileLCD.cpp@0:9b63dfb366dd, 2010-07-02 (annotated)
- Committer:
- jigr69
- Date:
- Fri Jul 02 15:36:51 2010 +0000
- Revision:
- 0:9b63dfb366dd
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jigr69 | 0:9b63dfb366dd | 1 | /* mbed Library - MobileLCD |
jigr69 | 0:9b63dfb366dd | 2 | * Copyright (c) 2007, sford |
jigr69 | 0:9b63dfb366dd | 3 | */ |
jigr69 | 0:9b63dfb366dd | 4 | |
jigr69 | 0:9b63dfb366dd | 5 | #include "MobileLCD.h" |
jigr69 | 0:9b63dfb366dd | 6 | |
jigr69 | 0:9b63dfb366dd | 7 | #include "mbed.h" |
jigr69 | 0:9b63dfb366dd | 8 | |
jigr69 | 0:9b63dfb366dd | 9 | #include "Terminal.h" |
jigr69 | 0:9b63dfb366dd | 10 | |
jigr69 | 0:9b63dfb366dd | 11 | Terminal term(USBTX, USBRX); // tx, rx |
jigr69 | 0:9b63dfb366dd | 12 | |
jigr69 | 0:9b63dfb366dd | 13 | using namespace mbed; |
jigr69 | 0:9b63dfb366dd | 14 | |
jigr69 | 0:9b63dfb366dd | 15 | const unsigned char FONT6x8[97][8] = { |
jigr69 | 0:9b63dfb366dd | 16 | 0x06,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char |
jigr69 | 0:9b63dfb366dd | 17 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20 |
jigr69 | 0:9b63dfb366dd | 18 | 0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00, // ! |
jigr69 | 0:9b63dfb366dd | 19 | 0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00, // " |
jigr69 | 0:9b63dfb366dd | 20 | 0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x00, // # |
jigr69 | 0:9b63dfb366dd | 21 | 0x20,0x78,0xA0,0x70,0x28,0xF0,0x20,0x00, // $ |
jigr69 | 0:9b63dfb366dd | 22 | 0xC0,0xC8,0x10,0x20,0x40,0x98,0x18,0x00, // % |
jigr69 | 0:9b63dfb366dd | 23 | 0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x00, // & |
jigr69 | 0:9b63dfb366dd | 24 | 0x30,0x30,0x20,0x40,0x00,0x00,0x00,0x00, // ' |
jigr69 | 0:9b63dfb366dd | 25 | 0x10,0x20,0x40,0x40,0x40,0x20,0x10,0x00, // ( |
jigr69 | 0:9b63dfb366dd | 26 | 0x40,0x20,0x10,0x10,0x10,0x20,0x40,0x00, // ) |
jigr69 | 0:9b63dfb366dd | 27 | 0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00, // * |
jigr69 | 0:9b63dfb366dd | 28 | 0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00, // + |
jigr69 | 0:9b63dfb366dd | 29 | 0x00,0x00,0x00,0x00,0x30,0x30,0x20,0x40, // , |
jigr69 | 0:9b63dfb366dd | 30 | 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, // - |
jigr69 | 0:9b63dfb366dd | 31 | 0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00, // . |
jigr69 | 0:9b63dfb366dd | 32 | 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, // / (forward slash) |
jigr69 | 0:9b63dfb366dd | 33 | 0x70,0x88,0x88,0xA8,0x88,0x88,0x70,0x00, // 0 0x30 |
jigr69 | 0:9b63dfb366dd | 34 | 0x20,0x60,0x20,0x20,0x20,0x20,0x70,0x00, // 1 |
jigr69 | 0:9b63dfb366dd | 35 | 0x70,0x88,0x08,0x70,0x80,0x80,0xF8,0x00, // 2 |
jigr69 | 0:9b63dfb366dd | 36 | 0xF8,0x08,0x10,0x30,0x08,0x88,0x70,0x00, // 3 |
jigr69 | 0:9b63dfb366dd | 37 | 0x10,0x30,0x50,0x90,0xF8,0x10,0x10,0x00, // 4 |
jigr69 | 0:9b63dfb366dd | 38 | 0xF8,0x80,0xF0,0x08,0x08,0x88,0x70,0x00, // 5 |
jigr69 | 0:9b63dfb366dd | 39 | 0x38,0x40,0x80,0xF0,0x88,0x88,0x70,0x00, // 6 |
jigr69 | 0:9b63dfb366dd | 40 | 0xF8,0x08,0x08,0x10,0x20,0x40,0x80,0x00, // 7 |
jigr69 | 0:9b63dfb366dd | 41 | 0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x00, // 8 |
jigr69 | 0:9b63dfb366dd | 42 | 0x70,0x88,0x88,0x78,0x08,0x10,0xE0,0x00, // 9 |
jigr69 | 0:9b63dfb366dd | 43 | 0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00, // : |
jigr69 | 0:9b63dfb366dd | 44 | 0x00,0x00,0x20,0x00,0x20,0x20,0x40,0x00, // ; |
jigr69 | 0:9b63dfb366dd | 45 | 0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x00, // < |
jigr69 | 0:9b63dfb366dd | 46 | 0x00,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00, // = |
jigr69 | 0:9b63dfb366dd | 47 | 0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00, // > |
jigr69 | 0:9b63dfb366dd | 48 | 0x70,0x88,0x08,0x30,0x20,0x00,0x20,0x00, // ? |
jigr69 | 0:9b63dfb366dd | 49 | 0x70,0x88,0xA8,0xB8,0xB0,0x80,0x78,0x00, // @ 0x40 |
jigr69 | 0:9b63dfb366dd | 50 | 0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00, // A |
jigr69 | 0:9b63dfb366dd | 51 | 0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x00, // B |
jigr69 | 0:9b63dfb366dd | 52 | 0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00, // C |
jigr69 | 0:9b63dfb366dd | 53 | 0xF0,0x88,0x88,0x88,0x88,0x88,0xF0,0x00, // D |
jigr69 | 0:9b63dfb366dd | 54 | 0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00, // E |
jigr69 | 0:9b63dfb366dd | 55 | 0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00, // F |
jigr69 | 0:9b63dfb366dd | 56 | 0x78,0x88,0x80,0x80,0x98,0x88,0x78,0x00, // G |
jigr69 | 0:9b63dfb366dd | 57 | 0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00, // H |
jigr69 | 0:9b63dfb366dd | 58 | 0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00, // I |
jigr69 | 0:9b63dfb366dd | 59 | 0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x00, // J |
jigr69 | 0:9b63dfb366dd | 60 | 0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00, // K |
jigr69 | 0:9b63dfb366dd | 61 | 0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00, // L |
jigr69 | 0:9b63dfb366dd | 62 | 0x88,0xD8,0xA8,0xA8,0xA8,0x88,0x88,0x00, // M |
jigr69 | 0:9b63dfb366dd | 63 | 0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x00, // N |
jigr69 | 0:9b63dfb366dd | 64 | 0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00, // O |
jigr69 | 0:9b63dfb366dd | 65 | 0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x00, // P 0x50 |
jigr69 | 0:9b63dfb366dd | 66 | 0x70,0x88,0x88,0x88,0xA8,0x90,0x68,0x00, // Q |
jigr69 | 0:9b63dfb366dd | 67 | 0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x00, // R |
jigr69 | 0:9b63dfb366dd | 68 | 0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00, // S |
jigr69 | 0:9b63dfb366dd | 69 | 0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x00, // T |
jigr69 | 0:9b63dfb366dd | 70 | 0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00, // U |
jigr69 | 0:9b63dfb366dd | 71 | 0x88,0x88,0x88,0x88,0x88,0x50,0x20,0x00, // V |
jigr69 | 0:9b63dfb366dd | 72 | 0x88,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00, // W |
jigr69 | 0:9b63dfb366dd | 73 | 0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00, // X |
jigr69 | 0:9b63dfb366dd | 74 | 0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x00, // Y |
jigr69 | 0:9b63dfb366dd | 75 | 0xF8,0x08,0x10,0x70,0x40,0x80,0xF8,0x00, // Z |
jigr69 | 0:9b63dfb366dd | 76 | 0x78,0x40,0x40,0x40,0x40,0x40,0x78,0x00, // [ |
jigr69 | 0:9b63dfb366dd | 77 | 0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00, // \ (back slash) |
jigr69 | 0:9b63dfb366dd | 78 | 0x78,0x08,0x08,0x08,0x08,0x08,0x78,0x00, // ] |
jigr69 | 0:9b63dfb366dd | 79 | 0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00, // ^ |
jigr69 | 0:9b63dfb366dd | 80 | 0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00, // _ |
jigr69 | 0:9b63dfb366dd | 81 | 0x60,0x60,0x20,0x10,0x00,0x00,0x00,0x00, // ` 0x60 |
jigr69 | 0:9b63dfb366dd | 82 | 0x00,0x00,0x60,0x10,0x70,0x90,0x78,0x00, // a |
jigr69 | 0:9b63dfb366dd | 83 | 0x80,0x80,0xB0,0xC8,0x88,0xC8,0xB0,0x00, // b |
jigr69 | 0:9b63dfb366dd | 84 | 0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x00, // c |
jigr69 | 0:9b63dfb366dd | 85 | 0x08,0x08,0x68,0x98,0x88,0x98,0x68,0x00, // d |
jigr69 | 0:9b63dfb366dd | 86 | 0x00,0x00,0x70,0x88,0xF8,0x80,0x70,0x00, // e |
jigr69 | 0:9b63dfb366dd | 87 | 0x10,0x28,0x20,0x70,0x20,0x20,0x20,0x00, // f |
jigr69 | 0:9b63dfb366dd | 88 | 0x00,0x00,0x70,0x98,0x98,0x68,0x08,0x70, // g |
jigr69 | 0:9b63dfb366dd | 89 | 0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x00, // h |
jigr69 | 0:9b63dfb366dd | 90 | 0x20,0x00,0x60,0x20,0x20,0x20,0x70,0x00, // i |
jigr69 | 0:9b63dfb366dd | 91 | 0x10,0x00,0x10,0x10,0x10,0x90,0x60,0x00, // j |
jigr69 | 0:9b63dfb366dd | 92 | 0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x00, // k |
jigr69 | 0:9b63dfb366dd | 93 | 0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00, // l |
jigr69 | 0:9b63dfb366dd | 94 | 0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x00, // m |
jigr69 | 0:9b63dfb366dd | 95 | 0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x00, // n |
jigr69 | 0:9b63dfb366dd | 96 | 0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00, // o |
jigr69 | 0:9b63dfb366dd | 97 | 0x00,0x00,0xB0,0xC8,0xC8,0xB0,0x80,0x80, // p 0x70 |
jigr69 | 0:9b63dfb366dd | 98 | 0x00,0x00,0x68,0x98,0x98,0x68,0x08,0x08, // q |
jigr69 | 0:9b63dfb366dd | 99 | 0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x00, // r |
jigr69 | 0:9b63dfb366dd | 100 | 0x00,0x00,0x78,0x80,0x70,0x08,0xF0,0x00, // s |
jigr69 | 0:9b63dfb366dd | 101 | 0x20,0x20,0xF8,0x20,0x20,0x28,0x10,0x00, // t |
jigr69 | 0:9b63dfb366dd | 102 | 0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x00, // u |
jigr69 | 0:9b63dfb366dd | 103 | 0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x00, // v |
jigr69 | 0:9b63dfb366dd | 104 | 0x00,0x00,0x88,0x88,0xA8,0xA8,0x50,0x00, // w |
jigr69 | 0:9b63dfb366dd | 105 | 0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x00, // x |
jigr69 | 0:9b63dfb366dd | 106 | 0x00,0x00,0x88,0x88,0x78,0x08,0x88,0x70, // y |
jigr69 | 0:9b63dfb366dd | 107 | 0x00,0x00,0xF8,0x10,0x20,0x40,0xF8,0x00, // z |
jigr69 | 0:9b63dfb366dd | 108 | 0x10,0x20,0x20,0x40,0x20,0x20,0x10,0x00, // { |
jigr69 | 0:9b63dfb366dd | 109 | 0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x00, // | |
jigr69 | 0:9b63dfb366dd | 110 | 0x40,0x20,0x20,0x10,0x20,0x20,0x40,0x00, // } |
jigr69 | 0:9b63dfb366dd | 111 | 0x40,0xA8,0x10,0x00,0x00,0x00,0x00,0x00, // ~ |
jigr69 | 0:9b63dfb366dd | 112 | 0x70,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00 |
jigr69 | 0:9b63dfb366dd | 113 | }; // DEL |
jigr69 | 0:9b63dfb366dd | 114 | |
jigr69 | 0:9b63dfb366dd | 115 | const unsigned char FONT8x8[97][8] = { |
jigr69 | 0:9b63dfb366dd | 116 | 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char |
jigr69 | 0:9b63dfb366dd | 117 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20 |
jigr69 | 0:9b63dfb366dd | 118 | 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // ! |
jigr69 | 0:9b63dfb366dd | 119 | 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // " |
jigr69 | 0:9b63dfb366dd | 120 | 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // # |
jigr69 | 0:9b63dfb366dd | 121 | 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $ |
jigr69 | 0:9b63dfb366dd | 122 | 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // % |
jigr69 | 0:9b63dfb366dd | 123 | 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // & |
jigr69 | 0:9b63dfb366dd | 124 | 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // ' |
jigr69 | 0:9b63dfb366dd | 125 | 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // ( |
jigr69 | 0:9b63dfb366dd | 126 | 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // ) |
jigr69 | 0:9b63dfb366dd | 127 | 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // * |
jigr69 | 0:9b63dfb366dd | 128 | 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // + |
jigr69 | 0:9b63dfb366dd | 129 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // , |
jigr69 | 0:9b63dfb366dd | 130 | 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // - |
jigr69 | 0:9b63dfb366dd | 131 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // . |
jigr69 | 0:9b63dfb366dd | 132 | 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash) |
jigr69 | 0:9b63dfb366dd | 133 | 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30 |
jigr69 | 0:9b63dfb366dd | 134 | 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1 |
jigr69 | 0:9b63dfb366dd | 135 | 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2 |
jigr69 | 0:9b63dfb366dd | 136 | 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3 |
jigr69 | 0:9b63dfb366dd | 137 | 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4 |
jigr69 | 0:9b63dfb366dd | 138 | 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5 |
jigr69 | 0:9b63dfb366dd | 139 | 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6 |
jigr69 | 0:9b63dfb366dd | 140 | 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7 |
jigr69 | 0:9b63dfb366dd | 141 | 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8 |
jigr69 | 0:9b63dfb366dd | 142 | 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9 |
jigr69 | 0:9b63dfb366dd | 143 | 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // : |
jigr69 | 0:9b63dfb366dd | 144 | 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ; |
jigr69 | 0:9b63dfb366dd | 145 | 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // < |
jigr69 | 0:9b63dfb366dd | 146 | 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // = |
jigr69 | 0:9b63dfb366dd | 147 | 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // > |
jigr69 | 0:9b63dfb366dd | 148 | 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ? |
jigr69 | 0:9b63dfb366dd | 149 | 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40 |
jigr69 | 0:9b63dfb366dd | 150 | 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A |
jigr69 | 0:9b63dfb366dd | 151 | 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B |
jigr69 | 0:9b63dfb366dd | 152 | 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C |
jigr69 | 0:9b63dfb366dd | 153 | 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D |
jigr69 | 0:9b63dfb366dd | 154 | 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E |
jigr69 | 0:9b63dfb366dd | 155 | 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F |
jigr69 | 0:9b63dfb366dd | 156 | 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G |
jigr69 | 0:9b63dfb366dd | 157 | 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H |
jigr69 | 0:9b63dfb366dd | 158 | 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I |
jigr69 | 0:9b63dfb366dd | 159 | 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J |
jigr69 | 0:9b63dfb366dd | 160 | 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K |
jigr69 | 0:9b63dfb366dd | 161 | 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L |
jigr69 | 0:9b63dfb366dd | 162 | 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M |
jigr69 | 0:9b63dfb366dd | 163 | 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N |
jigr69 | 0:9b63dfb366dd | 164 | 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O |
jigr69 | 0:9b63dfb366dd | 165 | 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50 |
jigr69 | 0:9b63dfb366dd | 166 | 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q |
jigr69 | 0:9b63dfb366dd | 167 | 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R |
jigr69 | 0:9b63dfb366dd | 168 | 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S |
jigr69 | 0:9b63dfb366dd | 169 | 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T |
jigr69 | 0:9b63dfb366dd | 170 | 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U |
jigr69 | 0:9b63dfb366dd | 171 | 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V |
jigr69 | 0:9b63dfb366dd | 172 | 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W |
jigr69 | 0:9b63dfb366dd | 173 | 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X |
jigr69 | 0:9b63dfb366dd | 174 | 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y |
jigr69 | 0:9b63dfb366dd | 175 | 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z |
jigr69 | 0:9b63dfb366dd | 176 | 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [ |
jigr69 | 0:9b63dfb366dd | 177 | 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash) |
jigr69 | 0:9b63dfb366dd | 178 | 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ] |
jigr69 | 0:9b63dfb366dd | 179 | 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^ |
jigr69 | 0:9b63dfb366dd | 180 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _ |
jigr69 | 0:9b63dfb366dd | 181 | 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60 |
jigr69 | 0:9b63dfb366dd | 182 | 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a |
jigr69 | 0:9b63dfb366dd | 183 | 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b |
jigr69 | 0:9b63dfb366dd | 184 | 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c |
jigr69 | 0:9b63dfb366dd | 185 | 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d |
jigr69 | 0:9b63dfb366dd | 186 | 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e |
jigr69 | 0:9b63dfb366dd | 187 | 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f |
jigr69 | 0:9b63dfb366dd | 188 | 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g |
jigr69 | 0:9b63dfb366dd | 189 | 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h |
jigr69 | 0:9b63dfb366dd | 190 | 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i |
jigr69 | 0:9b63dfb366dd | 191 | 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j |
jigr69 | 0:9b63dfb366dd | 192 | 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k |
jigr69 | 0:9b63dfb366dd | 193 | 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l |
jigr69 | 0:9b63dfb366dd | 194 | 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m |
jigr69 | 0:9b63dfb366dd | 195 | 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n |
jigr69 | 0:9b63dfb366dd | 196 | 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o |
jigr69 | 0:9b63dfb366dd | 197 | 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p |
jigr69 | 0:9b63dfb366dd | 198 | 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q |
jigr69 | 0:9b63dfb366dd | 199 | 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r |
jigr69 | 0:9b63dfb366dd | 200 | 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s |
jigr69 | 0:9b63dfb366dd | 201 | 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t |
jigr69 | 0:9b63dfb366dd | 202 | 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u |
jigr69 | 0:9b63dfb366dd | 203 | 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v |
jigr69 | 0:9b63dfb366dd | 204 | 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w |
jigr69 | 0:9b63dfb366dd | 205 | 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x |
jigr69 | 0:9b63dfb366dd | 206 | 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y |
jigr69 | 0:9b63dfb366dd | 207 | 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z |
jigr69 | 0:9b63dfb366dd | 208 | 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // { |
jigr69 | 0:9b63dfb366dd | 209 | 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // | |
jigr69 | 0:9b63dfb366dd | 210 | 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // } |
jigr69 | 0:9b63dfb366dd | 211 | 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~ |
jigr69 | 0:9b63dfb366dd | 212 | 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00 |
jigr69 | 0:9b63dfb366dd | 213 | }; // DEL |
jigr69 | 0:9b63dfb366dd | 214 | |
jigr69 | 0:9b63dfb366dd | 215 | const unsigned char FONT8x16[97][16] = { |
jigr69 | 0:9b63dfb366dd | 216 | 0x08,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char |
jigr69 | 0:9b63dfb366dd | 217 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20 |
jigr69 | 0:9b63dfb366dd | 218 | 0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // ! |
jigr69 | 0:9b63dfb366dd | 219 | 0x00,0x63,0x63,0x63,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " |
jigr69 | 0:9b63dfb366dd | 220 | 0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00, // # |
jigr69 | 0:9b63dfb366dd | 221 | 0x0C,0x0C,0x3E,0x63,0x61,0x60,0x3E,0x03,0x03,0x43,0x63,0x3E,0x0C,0x0C,0x00,0x00, // $ |
jigr69 | 0:9b63dfb366dd | 222 | 0x00,0x00,0x00,0x00,0x00,0x61,0x63,0x06,0x0C,0x18,0x33,0x63,0x00,0x00,0x00,0x00, // % |
jigr69 | 0:9b63dfb366dd | 223 | 0x00,0x00,0x00,0x1C,0x36,0x36,0x1C,0x3B,0x6E,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // & |
jigr69 | 0:9b63dfb366dd | 224 | 0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' |
jigr69 | 0:9b63dfb366dd | 225 | 0x00,0x00,0x0C,0x18,0x18,0x30,0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00,0x00,0x00, // ( |
jigr69 | 0:9b63dfb366dd | 226 | 0x00,0x00,0x18,0x0C,0x0C,0x06,0x06,0x06,0x06,0x0C,0x0C,0x18,0x00,0x00,0x00,0x00, // ) |
jigr69 | 0:9b63dfb366dd | 227 | 0x00,0x00,0x00,0x00,0x42,0x66,0x3C,0xFF,0x3C,0x66,0x42,0x00,0x00,0x00,0x00,0x00, // * |
jigr69 | 0:9b63dfb366dd | 228 | 0x00,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00, // + |
jigr69 | 0:9b63dfb366dd | 229 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00, // , |
jigr69 | 0:9b63dfb366dd | 230 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // - |
jigr69 | 0:9b63dfb366dd | 231 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // . |
jigr69 | 0:9b63dfb366dd | 232 | 0x00,0x00,0x01,0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00, // / (forward slash) |
jigr69 | 0:9b63dfb366dd | 233 | 0x00,0x00,0x3E,0x63,0x63,0x63,0x6B,0x6B,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 0 0x30 |
jigr69 | 0:9b63dfb366dd | 234 | 0x00,0x00,0x0C,0x1C,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3F,0x00,0x00,0x00,0x00, // 1 |
jigr69 | 0:9b63dfb366dd | 235 | 0x00,0x00,0x3E,0x63,0x03,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00,0x00, // 2 |
jigr69 | 0:9b63dfb366dd | 236 | 0x00,0x00,0x3E,0x63,0x03,0x03,0x1E,0x03,0x03,0x03,0x63,0x3E,0x00,0x00,0x00,0x00, // 3 |
jigr69 | 0:9b63dfb366dd | 237 | 0x00,0x00,0x06,0x0E,0x1E,0x36,0x66,0x66,0x7F,0x06,0x06,0x0F,0x00,0x00,0x00,0x00, // 4 |
jigr69 | 0:9b63dfb366dd | 238 | 0x00,0x00,0x7F,0x60,0x60,0x60,0x7E,0x03,0x03,0x63,0x73,0x3E,0x00,0x00,0x00,0x00, // 5 |
jigr69 | 0:9b63dfb366dd | 239 | 0x00,0x00,0x1C,0x30,0x60,0x60,0x7E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 6 |
jigr69 | 0:9b63dfb366dd | 240 | 0x00,0x00,0x7F,0x63,0x03,0x06,0x06,0x0C,0x0C,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // 7 |
jigr69 | 0:9b63dfb366dd | 241 | 0x00,0x00,0x3E,0x63,0x63,0x63,0x3E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 8 |
jigr69 | 0:9b63dfb366dd | 242 | 0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x3F,0x03,0x03,0x06,0x3C,0x00,0x00,0x00,0x00, // 9 |
jigr69 | 0:9b63dfb366dd | 243 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // : |
jigr69 | 0:9b63dfb366dd | 244 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00, // ; |
jigr69 | 0:9b63dfb366dd | 245 | 0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00, // < |
jigr69 | 0:9b63dfb366dd | 246 | 0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00, // = |
jigr69 | 0:9b63dfb366dd | 247 | 0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00, // > |
jigr69 | 0:9b63dfb366dd | 248 | 0x00,0x00,0x3E,0x63,0x63,0x06,0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00, // ? |
jigr69 | 0:9b63dfb366dd | 249 | 0x00,0x00,0x3E,0x63,0x63,0x6F,0x6B,0x6B,0x6E,0x60,0x60,0x3E,0x00,0x00,0x00,0x00, // @ 0x40 |
jigr69 | 0:9b63dfb366dd | 250 | 0x00,0x00,0x08,0x1C,0x36,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // A |
jigr69 | 0:9b63dfb366dd | 251 | 0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x33,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,0x00, // B |
jigr69 | 0:9b63dfb366dd | 252 | 0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x60,0x60,0x61,0x33,0x1E,0x00,0x00,0x00,0x00, // C |
jigr69 | 0:9b63dfb366dd | 253 | 0x00,0x00,0x7C,0x36,0x33,0x33,0x33,0x33,0x33,0x33,0x36,0x7C,0x00,0x00,0x00,0x00, // D |
jigr69 | 0:9b63dfb366dd | 254 | 0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x31,0x33,0x7F,0x00,0x00,0x00,0x00, // E |
jigr69 | 0:9b63dfb366dd | 255 | 0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // F |
jigr69 | 0:9b63dfb366dd | 256 | 0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x6F,0x63,0x63,0x37,0x1D,0x00,0x00,0x00,0x00, // G |
jigr69 | 0:9b63dfb366dd | 257 | 0x00,0x00,0x63,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // H |
jigr69 | 0:9b63dfb366dd | 258 | 0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // I |
jigr69 | 0:9b63dfb366dd | 259 | 0x00,0x00,0x0F,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00, // J |
jigr69 | 0:9b63dfb366dd | 260 | 0x00,0x00,0x73,0x33,0x36,0x36,0x3C,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // K |
jigr69 | 0:9b63dfb366dd | 261 | 0x00,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x33,0x7F,0x00,0x00,0x00,0x00, // L |
jigr69 | 0:9b63dfb366dd | 262 | 0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // M |
jigr69 | 0:9b63dfb366dd | 263 | 0x00,0x00,0x63,0x63,0x73,0x7B,0x7F,0x6F,0x67,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // N |
jigr69 | 0:9b63dfb366dd | 264 | 0x00,0x00,0x1C,0x36,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,0x00,0x00, // O |
jigr69 | 0:9b63dfb366dd | 265 | 0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // P 0x50 |
jigr69 | 0:9b63dfb366dd | 266 | 0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x6B,0x6F,0x3E,0x06,0x07,0x00,0x00, // Q |
jigr69 | 0:9b63dfb366dd | 267 | 0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // R |
jigr69 | 0:9b63dfb366dd | 268 | 0x00,0x00,0x3E,0x63,0x63,0x30,0x1C,0x06,0x03,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // S |
jigr69 | 0:9b63dfb366dd | 269 | 0x00,0x00,0xFF,0xDB,0x99,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // T |
jigr69 | 0:9b63dfb366dd | 270 | 0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // U |
jigr69 | 0:9b63dfb366dd | 271 | 0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,0x00,0x00, // V |
jigr69 | 0:9b63dfb366dd | 272 | 0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x36,0x00,0x00,0x00,0x00, // W |
jigr69 | 0:9b63dfb366dd | 273 | 0x00,0x00,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x3C,0x66,0xC3,0xC3,0x00,0x00,0x00,0x00, // X |
jigr69 | 0:9b63dfb366dd | 274 | 0x00,0x00,0xC3,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // Y |
jigr69 | 0:9b63dfb366dd | 275 | 0x00,0x00,0x7F,0x63,0x43,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00,0x00, // Z |
jigr69 | 0:9b63dfb366dd | 276 | 0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00,0x00,0x00,0x00, // [ |
jigr69 | 0:9b63dfb366dd | 277 | 0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00, // \ (back slash) |
jigr69 | 0:9b63dfb366dd | 278 | 0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x00,0x00, // ] |
jigr69 | 0:9b63dfb366dd | 279 | 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^ |
jigr69 | 0:9b63dfb366dd | 280 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00, // _ |
jigr69 | 0:9b63dfb366dd | 281 | 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` 0x60 |
jigr69 | 0:9b63dfb366dd | 282 | 0x00,0x00,0x00,0x00,0x00,0x3C,0x46,0x06,0x3E,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // a |
jigr69 | 0:9b63dfb366dd | 283 | 0x00,0x00,0x70,0x30,0x30,0x3C,0x36,0x33,0x33,0x33,0x33,0x6E,0x00,0x00,0x00,0x00, // b |
jigr69 | 0:9b63dfb366dd | 284 | 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x60,0x60,0x60,0x63,0x3E,0x00,0x00,0x00,0x00, // c |
jigr69 | 0:9b63dfb366dd | 285 | 0x00,0x00,0x0E,0x06,0x06,0x1E,0x36,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // d |
jigr69 | 0:9b63dfb366dd | 286 | 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x7E,0x60,0x63,0x3E,0x00,0x00,0x00,0x00, // e |
jigr69 | 0:9b63dfb366dd | 287 | 0x00,0x00,0x1C,0x36,0x32,0x30,0x7C,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // f |
jigr69 | 0:9b63dfb366dd | 288 | 0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x66,0x3C,0x00,0x00, // g |
jigr69 | 0:9b63dfb366dd | 289 | 0x00,0x00,0x70,0x30,0x30,0x36,0x3B,0x33,0x33,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // h |
jigr69 | 0:9b63dfb366dd | 290 | 0x00,0x00,0x0C,0x0C,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00, // i |
jigr69 | 0:9b63dfb366dd | 291 | 0x00,0x00,0x06,0x06,0x00,0x0E,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00, // j |
jigr69 | 0:9b63dfb366dd | 292 | 0x00,0x00,0x70,0x30,0x30,0x33,0x33,0x36,0x3C,0x36,0x33,0x73,0x00,0x00,0x00,0x00, // k |
jigr69 | 0:9b63dfb366dd | 293 | 0x00,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00, // l |
jigr69 | 0:9b63dfb366dd | 294 | 0x00,0x00,0x00,0x00,0x00,0x6E,0x7F,0x6B,0x6B,0x6B,0x6B,0x6B,0x00,0x00,0x00,0x00, // m |
jigr69 | 0:9b63dfb366dd | 295 | 0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00,0x00, // n |
jigr69 | 0:9b63dfb366dd | 296 | 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // o |
jigr69 | 0:9b63dfb366dd | 297 | 0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x3E,0x30,0x30,0x78,0x00,0x00, // p 0x70 |
jigr69 | 0:9b63dfb366dd | 298 | 0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x06,0x0F,0x00,0x00, // q |
jigr69 | 0:9b63dfb366dd | 299 | 0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0x33,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // r |
jigr69 | 0:9b63dfb366dd | 300 | 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x38,0x0E,0x03,0x63,0x3E,0x00,0x00,0x00,0x00, // s |
jigr69 | 0:9b63dfb366dd | 301 | 0x00,0x00,0x08,0x18,0x18,0x7E,0x18,0x18,0x18,0x18,0x1B,0x0E,0x00,0x00,0x00,0x00, // t |
jigr69 | 0:9b63dfb366dd | 302 | 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // u |
jigr69 | 0:9b63dfb366dd | 303 | 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x36,0x36,0x1C,0x1C,0x08,0x00,0x00,0x00,0x00, // v |
jigr69 | 0:9b63dfb366dd | 304 | 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x00,0x00,0x00,0x00, // w |
jigr69 | 0:9b63dfb366dd | 305 | 0x00,0x00,0x00,0x00,0x00,0x63,0x36,0x1C,0x1C,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // x |
jigr69 | 0:9b63dfb366dd | 306 | 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x3F,0x03,0x06,0x3C,0x00,0x00, // y |
jigr69 | 0:9b63dfb366dd | 307 | 0x00,0x00,0x00,0x00,0x00,0x7F,0x66,0x0C,0x18,0x30,0x63,0x7F,0x00,0x00,0x00,0x00, // z |
jigr69 | 0:9b63dfb366dd | 308 | 0x00,0x00,0x0E,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00, // { |
jigr69 | 0:9b63dfb366dd | 309 | 0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00, // | |
jigr69 | 0:9b63dfb366dd | 310 | 0x00,0x00,0x70,0x18,0x18,0x18,0x0E,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00,0x00, // } |
jigr69 | 0:9b63dfb366dd | 311 | 0x00,0x00,0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~ |
jigr69 | 0:9b63dfb366dd | 312 | 0x00,0x70,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // DELL |
jigr69 | 0:9b63dfb366dd | 313 | }; |
jigr69 | 0:9b63dfb366dd | 314 | |
jigr69 | 0:9b63dfb366dd | 315 | void MobileLCD::command(int value) { |
jigr69 | 0:9b63dfb366dd | 316 | _spi.write(value & 0xFF); |
jigr69 | 0:9b63dfb366dd | 317 | } |
jigr69 | 0:9b63dfb366dd | 318 | |
jigr69 | 0:9b63dfb366dd | 319 | void MobileLCD::data(int value) { |
jigr69 | 0:9b63dfb366dd | 320 | _spi.write(value | 0x100); |
jigr69 | 0:9b63dfb366dd | 321 | } |
jigr69 | 0:9b63dfb366dd | 322 | |
jigr69 | 0:9b63dfb366dd | 323 | void MobileLCD::_select() { |
jigr69 | 0:9b63dfb366dd | 324 | _cs = 0; |
jigr69 | 0:9b63dfb366dd | 325 | } |
jigr69 | 0:9b63dfb366dd | 326 | |
jigr69 | 0:9b63dfb366dd | 327 | void MobileLCD::_deselect() { |
jigr69 | 0:9b63dfb366dd | 328 | _cs = 1; |
jigr69 | 0:9b63dfb366dd | 329 | } |
jigr69 | 0:9b63dfb366dd | 330 | |
jigr69 | 0:9b63dfb366dd | 331 | int MobileLCD::width() { |
jigr69 | 0:9b63dfb366dd | 332 | return _width; |
jigr69 | 0:9b63dfb366dd | 333 | } |
jigr69 | 0:9b63dfb366dd | 334 | |
jigr69 | 0:9b63dfb366dd | 335 | int MobileLCD::height() { |
jigr69 | 0:9b63dfb366dd | 336 | return _height; |
jigr69 | 0:9b63dfb366dd | 337 | } |
jigr69 | 0:9b63dfb366dd | 338 | |
jigr69 | 0:9b63dfb366dd | 339 | void MobileLCD::foreground(int v) { |
jigr69 | 0:9b63dfb366dd | 340 | _foreground = v; |
jigr69 | 0:9b63dfb366dd | 341 | } |
jigr69 | 0:9b63dfb366dd | 342 | |
jigr69 | 0:9b63dfb366dd | 343 | void MobileLCD::background(int v) { |
jigr69 | 0:9b63dfb366dd | 344 | _background = v; |
jigr69 | 0:9b63dfb366dd | 345 | } |
jigr69 | 0:9b63dfb366dd | 346 | |
jigr69 | 0:9b63dfb366dd | 347 | |
jigr69 | 0:9b63dfb366dd | 348 | /*************************************************************************/ |
jigr69 | 0:9b63dfb366dd | 349 | |
jigr69 | 0:9b63dfb366dd | 350 | MobileLCD::MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst) |
jigr69 | 0:9b63dfb366dd | 351 | : _spi(mosi, miso, clk) |
jigr69 | 0:9b63dfb366dd | 352 | , _rst(rst) |
jigr69 | 0:9b63dfb366dd | 353 | , _cs(cs) { |
jigr69 | 0:9b63dfb366dd | 354 | |
jigr69 | 0:9b63dfb366dd | 355 | _width = 130; |
jigr69 | 0:9b63dfb366dd | 356 | _height = 130; |
jigr69 | 0:9b63dfb366dd | 357 | foreground(0xFFFFFF); |
jigr69 | 0:9b63dfb366dd | 358 | background(0x000000); |
jigr69 | 0:9b63dfb366dd | 359 | reset(); |
jigr69 | 0:9b63dfb366dd | 360 | } |
jigr69 | 0:9b63dfb366dd | 361 | |
jigr69 | 0:9b63dfb366dd | 362 | void MobileLCD::reset() { |
jigr69 | 0:9b63dfb366dd | 363 | |
jigr69 | 0:9b63dfb366dd | 364 | _cs = 1; |
jigr69 | 0:9b63dfb366dd | 365 | _rst = 0; |
jigr69 | 0:9b63dfb366dd | 366 | _spi.format(9); |
jigr69 | 0:9b63dfb366dd | 367 | _spi.frequency(5000000); |
jigr69 | 0:9b63dfb366dd | 368 | |
jigr69 | 0:9b63dfb366dd | 369 | wait_ms(1); |
jigr69 | 0:9b63dfb366dd | 370 | |
jigr69 | 0:9b63dfb366dd | 371 | _rst = 1; |
jigr69 | 0:9b63dfb366dd | 372 | |
jigr69 | 0:9b63dfb366dd | 373 | wait_ms(1); |
jigr69 | 0:9b63dfb366dd | 374 | |
jigr69 | 0:9b63dfb366dd | 375 | _select(); |
jigr69 | 0:9b63dfb366dd | 376 | |
jigr69 | 0:9b63dfb366dd | 377 | command(DISCTL); // display control |
jigr69 | 0:9b63dfb366dd | 378 | data(0x0); |
jigr69 | 0:9b63dfb366dd | 379 | data(31); |
jigr69 | 0:9b63dfb366dd | 380 | data(0x0); |
jigr69 | 0:9b63dfb366dd | 381 | |
jigr69 | 0:9b63dfb366dd | 382 | command(COMSCN); // scan |
jigr69 | 0:9b63dfb366dd | 383 | data(0x1); |
jigr69 | 0:9b63dfb366dd | 384 | |
jigr69 | 0:9b63dfb366dd | 385 | command(OSCON); // oscillator on |
jigr69 | 0:9b63dfb366dd | 386 | command(SLPOUT); // sleep out |
jigr69 | 0:9b63dfb366dd | 387 | command(PWRCTR); // power control |
jigr69 | 0:9b63dfb366dd | 388 | data(0x0F); |
jigr69 | 0:9b63dfb366dd | 389 | |
jigr69 | 0:9b63dfb366dd | 390 | command(DISINV); // invert display |
jigr69 | 0:9b63dfb366dd | 391 | |
jigr69 | 0:9b63dfb366dd | 392 | command(VOLCTR); // Voltage control |
jigr69 | 0:9b63dfb366dd | 393 | data(39); // contrast setting: 0..63 |
jigr69 | 0:9b63dfb366dd | 394 | data(3); // resistance ratio |
jigr69 | 0:9b63dfb366dd | 395 | |
jigr69 | 0:9b63dfb366dd | 396 | wait_ms(1); |
jigr69 | 0:9b63dfb366dd | 397 | |
jigr69 | 0:9b63dfb366dd | 398 | command(DATCTL); // data control |
jigr69 | 0:9b63dfb366dd | 399 | data(0x0); // scan dirs |
jigr69 | 0:9b63dfb366dd | 400 | data(0x0); // RGB |
jigr69 | 0:9b63dfb366dd | 401 | data(0x2); // grayscale |
jigr69 | 0:9b63dfb366dd | 402 | |
jigr69 | 0:9b63dfb366dd | 403 | command(DISON); // turn on the display |
jigr69 | 0:9b63dfb366dd | 404 | |
jigr69 | 0:9b63dfb366dd | 405 | _deselect(); |
jigr69 | 0:9b63dfb366dd | 406 | |
jigr69 | 0:9b63dfb366dd | 407 | cls(); |
jigr69 | 0:9b63dfb366dd | 408 | } |
jigr69 | 0:9b63dfb366dd | 409 | |
jigr69 | 0:9b63dfb366dd | 410 | void MobileLCD::cls() |
jigr69 | 0:9b63dfb366dd | 411 | { |
jigr69 | 0:9b63dfb366dd | 412 | fill(0, 0, 130, 130, _background); |
jigr69 | 0:9b63dfb366dd | 413 | } |
jigr69 | 0:9b63dfb366dd | 414 | |
jigr69 | 0:9b63dfb366dd | 415 | void MobileLCD::_window(int x, int y, int width, int height) |
jigr69 | 0:9b63dfb366dd | 416 | { |
jigr69 | 0:9b63dfb366dd | 417 | int x1, x2, y1, y2; |
jigr69 | 0:9b63dfb366dd | 418 | x1 = x + 0; |
jigr69 | 0:9b63dfb366dd | 419 | y1 = y + 2; |
jigr69 | 0:9b63dfb366dd | 420 | x2 = x1 + width - 1; |
jigr69 | 0:9b63dfb366dd | 421 | y2 = y1 + height - 1; |
jigr69 | 0:9b63dfb366dd | 422 | |
jigr69 | 0:9b63dfb366dd | 423 | command(CASET); // column |
jigr69 | 0:9b63dfb366dd | 424 | data(x1); |
jigr69 | 0:9b63dfb366dd | 425 | data(x2); |
jigr69 | 0:9b63dfb366dd | 426 | |
jigr69 | 0:9b63dfb366dd | 427 | command(PASET); // page |
jigr69 | 0:9b63dfb366dd | 428 | data(y1); |
jigr69 | 0:9b63dfb366dd | 429 | data(y2); |
jigr69 | 0:9b63dfb366dd | 430 | |
jigr69 | 0:9b63dfb366dd | 431 | command(RAMWR); // start write to ram |
jigr69 | 0:9b63dfb366dd | 432 | } |
jigr69 | 0:9b63dfb366dd | 433 | |
jigr69 | 0:9b63dfb366dd | 434 | void MobileLCD::fill(int x, int y, int width, int height, int colour) |
jigr69 | 0:9b63dfb366dd | 435 | { |
jigr69 | 0:9b63dfb366dd | 436 | int i = 0; |
jigr69 | 0:9b63dfb366dd | 437 | |
jigr69 | 0:9b63dfb366dd | 438 | _select(); |
jigr69 | 0:9b63dfb366dd | 439 | _window(x, y, width, height); |
jigr69 | 0:9b63dfb366dd | 440 | |
jigr69 | 0:9b63dfb366dd | 441 | int r4 = (colour >> (16 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 442 | int g4 = (colour >> (8 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 443 | int b4 = (colour >> (0 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 444 | |
jigr69 | 0:9b63dfb366dd | 445 | int d1 = (r4 << 4) | g4; |
jigr69 | 0:9b63dfb366dd | 446 | int d2 = (b4 << 4) | r4; |
jigr69 | 0:9b63dfb366dd | 447 | int d3 = (g4 << 4) | b4; |
jigr69 | 0:9b63dfb366dd | 448 | |
jigr69 | 0:9b63dfb366dd | 449 | for(i=0; i<(width*height+1)/2; i++) |
jigr69 | 0:9b63dfb366dd | 450 | { |
jigr69 | 0:9b63dfb366dd | 451 | data(d1); |
jigr69 | 0:9b63dfb366dd | 452 | data(d2); |
jigr69 | 0:9b63dfb366dd | 453 | data(d3); |
jigr69 | 0:9b63dfb366dd | 454 | } |
jigr69 | 0:9b63dfb366dd | 455 | |
jigr69 | 0:9b63dfb366dd | 456 | _deselect(); |
jigr69 | 0:9b63dfb366dd | 457 | } |
jigr69 | 0:9b63dfb366dd | 458 | |
jigr69 | 0:9b63dfb366dd | 459 | void MobileLCD::pixel(int x, int y, int colour) { |
jigr69 | 0:9b63dfb366dd | 460 | fill(x, y, 1, 1, colour); |
jigr69 | 0:9b63dfb366dd | 461 | } |
jigr69 | 0:9b63dfb366dd | 462 | |
jigr69 | 0:9b63dfb366dd | 463 | void MobileLCD::setpixel(int x, int y, int colour) { |
jigr69 | 0:9b63dfb366dd | 464 | |
jigr69 | 0:9b63dfb366dd | 465 | _select(); |
jigr69 | 0:9b63dfb366dd | 466 | |
jigr69 | 0:9b63dfb366dd | 467 | int r4 = (colour >> (16 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 468 | int g4 = (colour >> (8 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 469 | int b4 = (colour >> (0 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 470 | |
jigr69 | 0:9b63dfb366dd | 471 | int d1 = (r4 << 4) | g4; |
jigr69 | 0:9b63dfb366dd | 472 | int d2 = (b4 << 4) | r4; |
jigr69 | 0:9b63dfb366dd | 473 | int d3 = (g4 << 4) | b4; |
jigr69 | 0:9b63dfb366dd | 474 | |
jigr69 | 0:9b63dfb366dd | 475 | command(CASET); // column |
jigr69 | 0:9b63dfb366dd | 476 | data(x); |
jigr69 | 0:9b63dfb366dd | 477 | data(x); |
jigr69 | 0:9b63dfb366dd | 478 | |
jigr69 | 0:9b63dfb366dd | 479 | command(PASET); // page |
jigr69 | 0:9b63dfb366dd | 480 | data(y); |
jigr69 | 0:9b63dfb366dd | 481 | data(y); |
jigr69 | 0:9b63dfb366dd | 482 | |
jigr69 | 0:9b63dfb366dd | 483 | command(RAMWR); // start write to ram |
jigr69 | 0:9b63dfb366dd | 484 | |
jigr69 | 0:9b63dfb366dd | 485 | data(d1); |
jigr69 | 0:9b63dfb366dd | 486 | data(d2); |
jigr69 | 0:9b63dfb366dd | 487 | data(d3); |
jigr69 | 0:9b63dfb366dd | 488 | |
jigr69 | 0:9b63dfb366dd | 489 | _deselect(); |
jigr69 | 0:9b63dfb366dd | 490 | } |
jigr69 | 0:9b63dfb366dd | 491 | |
jigr69 | 0:9b63dfb366dd | 492 | void MobileLCD::setline(int x0, int y0, int x1, int y1, int color) { |
jigr69 | 0:9b63dfb366dd | 493 | int dy = y1 - y0; |
jigr69 | 0:9b63dfb366dd | 494 | int dx = x1 - x0; |
jigr69 | 0:9b63dfb366dd | 495 | int stepx, stepy; |
jigr69 | 0:9b63dfb366dd | 496 | |
jigr69 | 0:9b63dfb366dd | 497 | if(dy < 0) |
jigr69 | 0:9b63dfb366dd | 498 | { |
jigr69 | 0:9b63dfb366dd | 499 | dy = -dy; |
jigr69 | 0:9b63dfb366dd | 500 | stepy = -1; |
jigr69 | 0:9b63dfb366dd | 501 | } |
jigr69 | 0:9b63dfb366dd | 502 | else |
jigr69 | 0:9b63dfb366dd | 503 | stepy = 1; |
jigr69 | 0:9b63dfb366dd | 504 | |
jigr69 | 0:9b63dfb366dd | 505 | if(dx < 0) |
jigr69 | 0:9b63dfb366dd | 506 | { |
jigr69 | 0:9b63dfb366dd | 507 | dx = -dx; |
jigr69 | 0:9b63dfb366dd | 508 | stepx = -1; |
jigr69 | 0:9b63dfb366dd | 509 | } |
jigr69 | 0:9b63dfb366dd | 510 | else |
jigr69 | 0:9b63dfb366dd | 511 | stepx = 1; |
jigr69 | 0:9b63dfb366dd | 512 | |
jigr69 | 0:9b63dfb366dd | 513 | dy <<= 1; // dy is now 2*dy |
jigr69 | 0:9b63dfb366dd | 514 | dx <<= 1; // dx is now 2*dx |
jigr69 | 0:9b63dfb366dd | 515 | |
jigr69 | 0:9b63dfb366dd | 516 | setpixel(x0, y0, color); |
jigr69 | 0:9b63dfb366dd | 517 | if (dx > dy) |
jigr69 | 0:9b63dfb366dd | 518 | { |
jigr69 | 0:9b63dfb366dd | 519 | int fraction = dy - (dx >> 1); // same as 2*dy - dx |
jigr69 | 0:9b63dfb366dd | 520 | while (x0 != x1) |
jigr69 | 0:9b63dfb366dd | 521 | { |
jigr69 | 0:9b63dfb366dd | 522 | if (fraction >= 0) |
jigr69 | 0:9b63dfb366dd | 523 | { |
jigr69 | 0:9b63dfb366dd | 524 | y0 += stepy; |
jigr69 | 0:9b63dfb366dd | 525 | fraction -= dx; // same as fraction -= 2*dx |
jigr69 | 0:9b63dfb366dd | 526 | } |
jigr69 | 0:9b63dfb366dd | 527 | x0 += stepx; |
jigr69 | 0:9b63dfb366dd | 528 | fraction += dy; // same as fraction -= 2*dy |
jigr69 | 0:9b63dfb366dd | 529 | setpixel(x0, y0, color); |
jigr69 | 0:9b63dfb366dd | 530 | } |
jigr69 | 0:9b63dfb366dd | 531 | } |
jigr69 | 0:9b63dfb366dd | 532 | else |
jigr69 | 0:9b63dfb366dd | 533 | { |
jigr69 | 0:9b63dfb366dd | 534 | int fraction = dx - (dy >> 1); |
jigr69 | 0:9b63dfb366dd | 535 | while (y0 != y1) |
jigr69 | 0:9b63dfb366dd | 536 | { |
jigr69 | 0:9b63dfb366dd | 537 | if (fraction >= 0) |
jigr69 | 0:9b63dfb366dd | 538 | { |
jigr69 | 0:9b63dfb366dd | 539 | x0 += stepx; |
jigr69 | 0:9b63dfb366dd | 540 | fraction -= dy; |
jigr69 | 0:9b63dfb366dd | 541 | } |
jigr69 | 0:9b63dfb366dd | 542 | y0 += stepy; |
jigr69 | 0:9b63dfb366dd | 543 | fraction += dx; |
jigr69 | 0:9b63dfb366dd | 544 | setpixel(x0, y0, color); |
jigr69 | 0:9b63dfb366dd | 545 | } |
jigr69 | 0:9b63dfb366dd | 546 | } |
jigr69 | 0:9b63dfb366dd | 547 | } |
jigr69 | 0:9b63dfb366dd | 548 | |
jigr69 | 0:9b63dfb366dd | 549 | void MobileLCD::setrect(int x0, int y0, int x1, int y1, unsigned char tmpNum, int color) { |
jigr69 | 0:9b63dfb366dd | 550 | |
jigr69 | 0:9b63dfb366dd | 551 | int xmin, xmax, ymin, ymax; |
jigr69 | 0:9b63dfb366dd | 552 | |
jigr69 | 0:9b63dfb366dd | 553 | // check if the rectangle is to be filled |
jigr69 | 0:9b63dfb366dd | 554 | if (tmpNum == FILL) |
jigr69 | 0:9b63dfb366dd | 555 | { |
jigr69 | 0:9b63dfb366dd | 556 | // best way to create a filled rectangle is to define a drawing box |
jigr69 | 0:9b63dfb366dd | 557 | // and loop two pixels at a time |
jigr69 | 0:9b63dfb366dd | 558 | // calculate the min and max for x and y directions |
jigr69 | 0:9b63dfb366dd | 559 | xmin = (x0 <= x1) ? x0 : x1; |
jigr69 | 0:9b63dfb366dd | 560 | xmax = (x0 > x1) ? x0 : x1; |
jigr69 | 0:9b63dfb366dd | 561 | ymin = (y0 <= y1) ? y0 : y1; |
jigr69 | 0:9b63dfb366dd | 562 | ymax = (y0 > y1) ? y0 : y1; |
jigr69 | 0:9b63dfb366dd | 563 | |
jigr69 | 0:9b63dfb366dd | 564 | fill(xmin, ymin, (xmax - xmin), (ymax - ymin), color); |
jigr69 | 0:9b63dfb366dd | 565 | } |
jigr69 | 0:9b63dfb366dd | 566 | else |
jigr69 | 0:9b63dfb366dd | 567 | { |
jigr69 | 0:9b63dfb366dd | 568 | // best way to draw un unfilled rectangle is to draw four lines |
jigr69 | 0:9b63dfb366dd | 569 | setline(x0, y0, x1, y0, color); |
jigr69 | 0:9b63dfb366dd | 570 | setline(x0, y1, x1, y1, color); |
jigr69 | 0:9b63dfb366dd | 571 | setline(x0, y0, x0, y1, color); |
jigr69 | 0:9b63dfb366dd | 572 | setline(x1, y0, x1, y1, color); |
jigr69 | 0:9b63dfb366dd | 573 | } |
jigr69 | 0:9b63dfb366dd | 574 | } |
jigr69 | 0:9b63dfb366dd | 575 | |
jigr69 | 0:9b63dfb366dd | 576 | void MobileLCD::setcircle(int x0, int y0, int radius, int color) { |
jigr69 | 0:9b63dfb366dd | 577 | |
jigr69 | 0:9b63dfb366dd | 578 | int f = 1 - radius; |
jigr69 | 0:9b63dfb366dd | 579 | int ddF_x = 0; |
jigr69 | 0:9b63dfb366dd | 580 | int ddF_y = -2 * radius; |
jigr69 | 0:9b63dfb366dd | 581 | int x = 0; |
jigr69 | 0:9b63dfb366dd | 582 | int y = radius; |
jigr69 | 0:9b63dfb366dd | 583 | |
jigr69 | 0:9b63dfb366dd | 584 | setpixel(x0, y0 + radius, color); |
jigr69 | 0:9b63dfb366dd | 585 | setpixel(x0, y0 - radius, color); |
jigr69 | 0:9b63dfb366dd | 586 | setpixel(x0 + radius, y0, color); |
jigr69 | 0:9b63dfb366dd | 587 | setpixel(x0 - radius, y0, color); |
jigr69 | 0:9b63dfb366dd | 588 | |
jigr69 | 0:9b63dfb366dd | 589 | while(x < y) |
jigr69 | 0:9b63dfb366dd | 590 | { |
jigr69 | 0:9b63dfb366dd | 591 | if(f >= 0) |
jigr69 | 0:9b63dfb366dd | 592 | { |
jigr69 | 0:9b63dfb366dd | 593 | y--; |
jigr69 | 0:9b63dfb366dd | 594 | ddF_y += 2; |
jigr69 | 0:9b63dfb366dd | 595 | f += ddF_y; |
jigr69 | 0:9b63dfb366dd | 596 | } |
jigr69 | 0:9b63dfb366dd | 597 | x++; |
jigr69 | 0:9b63dfb366dd | 598 | ddF_x += 2; |
jigr69 | 0:9b63dfb366dd | 599 | f += ddF_x + 1; |
jigr69 | 0:9b63dfb366dd | 600 | |
jigr69 | 0:9b63dfb366dd | 601 | setpixel(x0 + x, y0 + y, color); |
jigr69 | 0:9b63dfb366dd | 602 | setpixel(x0 - x, y0 + y, color); |
jigr69 | 0:9b63dfb366dd | 603 | setpixel(x0 + x, y0 - y, color); |
jigr69 | 0:9b63dfb366dd | 604 | setpixel(x0 - x, y0 - y, color); |
jigr69 | 0:9b63dfb366dd | 605 | setpixel(x0 + y, y0 + x, color); |
jigr69 | 0:9b63dfb366dd | 606 | setpixel(x0 - y, y0 + x, color); |
jigr69 | 0:9b63dfb366dd | 607 | setpixel(x0 + y, y0 - x, color); |
jigr69 | 0:9b63dfb366dd | 608 | setpixel(x0 - y, y0 - x, color); |
jigr69 | 0:9b63dfb366dd | 609 | } |
jigr69 | 0:9b63dfb366dd | 610 | } |
jigr69 | 0:9b63dfb366dd | 611 | |
jigr69 | 0:9b63dfb366dd | 612 | void MobileLCD::bitblit(int x, int y, int width, int height, const char* bitstream, int fColor, int bColor) { |
jigr69 | 0:9b63dfb366dd | 613 | _select(); |
jigr69 | 0:9b63dfb366dd | 614 | _window(x, y, width, height); |
jigr69 | 0:9b63dfb366dd | 615 | for(int i=0; i<height*width/2; i++) { |
jigr69 | 0:9b63dfb366dd | 616 | int byte1 = (i*2) / 8; |
jigr69 | 0:9b63dfb366dd | 617 | int bit1 = (i*2) % 8; |
jigr69 | 0:9b63dfb366dd | 618 | int colour1 = ((bitstream[byte1] << bit1) & 0x80) ? fColor : bColor; |
jigr69 | 0:9b63dfb366dd | 619 | int byte2 = (i*2+1) / 8; |
jigr69 | 0:9b63dfb366dd | 620 | int bit2 = (i*2+1) % 8; |
jigr69 | 0:9b63dfb366dd | 621 | int colour2 = ((bitstream[byte2] << bit2) & 0x80) ? fColor : bColor; |
jigr69 | 0:9b63dfb366dd | 622 | |
jigr69 | 0:9b63dfb366dd | 623 | int r41 = (colour1 >> (16 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 624 | int g41 = (colour1 >> (8 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 625 | int b41 = (colour1 >> (0 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 626 | |
jigr69 | 0:9b63dfb366dd | 627 | int r42 = (colour2 >> (16 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 628 | int g42 = (colour2 >> (8 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 629 | int b42 = (colour2 >> (0 + 4)) & 0xF; |
jigr69 | 0:9b63dfb366dd | 630 | int d1 = (r41 << 4) | g41; |
jigr69 | 0:9b63dfb366dd | 631 | int d2 = (b41 << 4) | r42; |
jigr69 | 0:9b63dfb366dd | 632 | int d3 = (g42 << 4) | b42; |
jigr69 | 0:9b63dfb366dd | 633 | data(d1); |
jigr69 | 0:9b63dfb366dd | 634 | data(d2); |
jigr69 | 0:9b63dfb366dd | 635 | data(d3); |
jigr69 | 0:9b63dfb366dd | 636 | } |
jigr69 | 0:9b63dfb366dd | 637 | _deselect(); |
jigr69 | 0:9b63dfb366dd | 638 | } |
jigr69 | 0:9b63dfb366dd | 639 | |
jigr69 | 0:9b63dfb366dd | 640 | void MobileLCD::putchar(int x, int y, int size, int value, int fColor, int bColor) { |
jigr69 | 0:9b63dfb366dd | 641 | |
jigr69 | 0:9b63dfb366dd | 642 | switch(size) |
jigr69 | 0:9b63dfb366dd | 643 | { |
jigr69 | 0:9b63dfb366dd | 644 | case SMALL : bitblit(x, y, 8, 8, (char*)&(FONT6x8[value - 0x1F][0]), fColor, bColor); |
jigr69 | 0:9b63dfb366dd | 645 | break; |
jigr69 | 0:9b63dfb366dd | 646 | case MEDIUM : bitblit(x, y, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]), fColor, bColor); |
jigr69 | 0:9b63dfb366dd | 647 | break; |
jigr69 | 0:9b63dfb366dd | 648 | case LARGE : bitblit(x, y, 8, 16, (char*)&(FONT8x16[value - 0x1F][0]), fColor, bColor); |
jigr69 | 0:9b63dfb366dd | 649 | break; |
jigr69 | 0:9b63dfb366dd | 650 | } |
jigr69 | 0:9b63dfb366dd | 651 | |
jigr69 | 0:9b63dfb366dd | 652 | } |