Dependencies:   mbed

Committer:
jigr69
Date:
Fri Jul 02 15:36:51 2010 +0000
Revision:
0:9b63dfb366dd

        

Who changed what in which revision?

UserRevisionLine numberNew 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 }