Diff: MobileLCD.cpp
- Revision:
- 0:9b63dfb366dd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MobileLCD.cpp Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,652 @@
+/* mbed Library - MobileLCD
+ * Copyright (c) 2007, sford
+ */
+
+#include "MobileLCD.h"
+
+#include "mbed.h"
+
+#include "Terminal.h"
+
+Terminal term(USBTX, USBRX); // tx, rx
+
+using namespace mbed;
+
+const unsigned char FONT6x8[97][8] = {
+ 0x06,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
+ 0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00, // !
+ 0x50,0x50,0x50,0x00,0x00,0x00,0x00,0x00, // "
+ 0x50,0x50,0xF8,0x50,0xF8,0x50,0x50,0x00, // #
+ 0x20,0x78,0xA0,0x70,0x28,0xF0,0x20,0x00, // $
+ 0xC0,0xC8,0x10,0x20,0x40,0x98,0x18,0x00, // %
+ 0x40,0xA0,0xA0,0x40,0xA8,0x90,0x68,0x00, // &
+ 0x30,0x30,0x20,0x40,0x00,0x00,0x00,0x00, // '
+ 0x10,0x20,0x40,0x40,0x40,0x20,0x10,0x00, // (
+ 0x40,0x20,0x10,0x10,0x10,0x20,0x40,0x00, // )
+ 0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00, // *
+ 0x00,0x20,0x20,0xF8,0x20,0x20,0x00,0x00, // +
+ 0x00,0x00,0x00,0x00,0x30,0x30,0x20,0x40, // ,
+ 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, // -
+ 0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00, // .
+ 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00, // / (forward slash)
+ 0x70,0x88,0x88,0xA8,0x88,0x88,0x70,0x00, // 0 0x30
+ 0x20,0x60,0x20,0x20,0x20,0x20,0x70,0x00, // 1
+ 0x70,0x88,0x08,0x70,0x80,0x80,0xF8,0x00, // 2
+ 0xF8,0x08,0x10,0x30,0x08,0x88,0x70,0x00, // 3
+ 0x10,0x30,0x50,0x90,0xF8,0x10,0x10,0x00, // 4
+ 0xF8,0x80,0xF0,0x08,0x08,0x88,0x70,0x00, // 5
+ 0x38,0x40,0x80,0xF0,0x88,0x88,0x70,0x00, // 6
+ 0xF8,0x08,0x08,0x10,0x20,0x40,0x80,0x00, // 7
+ 0x70,0x88,0x88,0x70,0x88,0x88,0x70,0x00, // 8
+ 0x70,0x88,0x88,0x78,0x08,0x10,0xE0,0x00, // 9
+ 0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00, // :
+ 0x00,0x00,0x20,0x00,0x20,0x20,0x40,0x00, // ;
+ 0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x00, // <
+ 0x00,0x00,0xF8,0x00,0xF8,0x00,0x00,0x00, // =
+ 0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00, // >
+ 0x70,0x88,0x08,0x30,0x20,0x00,0x20,0x00, // ?
+ 0x70,0x88,0xA8,0xB8,0xB0,0x80,0x78,0x00, // @ 0x40
+ 0x20,0x50,0x88,0x88,0xF8,0x88,0x88,0x00, // A
+ 0xF0,0x88,0x88,0xF0,0x88,0x88,0xF0,0x00, // B
+ 0x70,0x88,0x80,0x80,0x80,0x88,0x70,0x00, // C
+ 0xF0,0x88,0x88,0x88,0x88,0x88,0xF0,0x00, // D
+ 0xF8,0x80,0x80,0xF0,0x80,0x80,0xF8,0x00, // E
+ 0xF8,0x80,0x80,0xF0,0x80,0x80,0x80,0x00, // F
+ 0x78,0x88,0x80,0x80,0x98,0x88,0x78,0x00, // G
+ 0x88,0x88,0x88,0xF8,0x88,0x88,0x88,0x00, // H
+ 0x70,0x20,0x20,0x20,0x20,0x20,0x70,0x00, // I
+ 0x38,0x10,0x10,0x10,0x10,0x90,0x60,0x00, // J
+ 0x88,0x90,0xA0,0xC0,0xA0,0x90,0x88,0x00, // K
+ 0x80,0x80,0x80,0x80,0x80,0x80,0xF8,0x00, // L
+ 0x88,0xD8,0xA8,0xA8,0xA8,0x88,0x88,0x00, // M
+ 0x88,0x88,0xC8,0xA8,0x98,0x88,0x88,0x00, // N
+ 0x70,0x88,0x88,0x88,0x88,0x88,0x70,0x00, // O
+ 0xF0,0x88,0x88,0xF0,0x80,0x80,0x80,0x00, // P 0x50
+ 0x70,0x88,0x88,0x88,0xA8,0x90,0x68,0x00, // Q
+ 0xF0,0x88,0x88,0xF0,0xA0,0x90,0x88,0x00, // R
+ 0x70,0x88,0x80,0x70,0x08,0x88,0x70,0x00, // S
+ 0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x00, // T
+ 0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00, // U
+ 0x88,0x88,0x88,0x88,0x88,0x50,0x20,0x00, // V
+ 0x88,0x88,0x88,0xA8,0xA8,0xA8,0x50,0x00, // W
+ 0x88,0x88,0x50,0x20,0x50,0x88,0x88,0x00, // X
+ 0x88,0x88,0x50,0x20,0x20,0x20,0x20,0x00, // Y
+ 0xF8,0x08,0x10,0x70,0x40,0x80,0xF8,0x00, // Z
+ 0x78,0x40,0x40,0x40,0x40,0x40,0x78,0x00, // [
+ 0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00, // \ (back slash)
+ 0x78,0x08,0x08,0x08,0x08,0x08,0x78,0x00, // ]
+ 0x20,0x50,0x88,0x00,0x00,0x00,0x00,0x00, // ^
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00, // _
+ 0x60,0x60,0x20,0x10,0x00,0x00,0x00,0x00, // ` 0x60
+ 0x00,0x00,0x60,0x10,0x70,0x90,0x78,0x00, // a
+ 0x80,0x80,0xB0,0xC8,0x88,0xC8,0xB0,0x00, // b
+ 0x00,0x00,0x70,0x88,0x80,0x88,0x70,0x00, // c
+ 0x08,0x08,0x68,0x98,0x88,0x98,0x68,0x00, // d
+ 0x00,0x00,0x70,0x88,0xF8,0x80,0x70,0x00, // e
+ 0x10,0x28,0x20,0x70,0x20,0x20,0x20,0x00, // f
+ 0x00,0x00,0x70,0x98,0x98,0x68,0x08,0x70, // g
+ 0x80,0x80,0xB0,0xC8,0x88,0x88,0x88,0x00, // h
+ 0x20,0x00,0x60,0x20,0x20,0x20,0x70,0x00, // i
+ 0x10,0x00,0x10,0x10,0x10,0x90,0x60,0x00, // j
+ 0x80,0x80,0x90,0xA0,0xC0,0xA0,0x90,0x00, // k
+ 0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00, // l
+ 0x00,0x00,0xD0,0xA8,0xA8,0xA8,0xA8,0x00, // m
+ 0x00,0x00,0xB0,0xC8,0x88,0x88,0x88,0x00, // n
+ 0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00, // o
+ 0x00,0x00,0xB0,0xC8,0xC8,0xB0,0x80,0x80, // p 0x70
+ 0x00,0x00,0x68,0x98,0x98,0x68,0x08,0x08, // q
+ 0x00,0x00,0xB0,0xC8,0x80,0x80,0x80,0x00, // r
+ 0x00,0x00,0x78,0x80,0x70,0x08,0xF0,0x00, // s
+ 0x20,0x20,0xF8,0x20,0x20,0x28,0x10,0x00, // t
+ 0x00,0x00,0x88,0x88,0x88,0x98,0x68,0x00, // u
+ 0x00,0x00,0x88,0x88,0x88,0x50,0x20,0x00, // v
+ 0x00,0x00,0x88,0x88,0xA8,0xA8,0x50,0x00, // w
+ 0x00,0x00,0x88,0x50,0x20,0x50,0x88,0x00, // x
+ 0x00,0x00,0x88,0x88,0x78,0x08,0x88,0x70, // y
+ 0x00,0x00,0xF8,0x10,0x20,0x40,0xF8,0x00, // z
+ 0x10,0x20,0x20,0x40,0x20,0x20,0x10,0x00, // {
+ 0x20,0x20,0x20,0x00,0x20,0x20,0x20,0x00, // |
+ 0x40,0x20,0x20,0x10,0x20,0x20,0x40,0x00, // }
+ 0x40,0xA8,0x10,0x00,0x00,0x00,0x00,0x00, // ~
+ 0x70,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00
+}; // DEL
+
+const unsigned char FONT8x8[97][8] = {
+ 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
+ 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
+ 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
+ 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
+ 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
+ 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
+ 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
+ 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
+ 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
+ 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
+ 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
+ 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
+ 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
+ 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
+ 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
+ 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
+ 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
+ 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
+ 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
+ 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
+ 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
+ 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
+ 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
+ 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
+ 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
+ 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
+ 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
+ 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
+ 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
+ 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
+ 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
+ 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
+ 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40
+ 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
+ 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
+ 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
+ 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
+ 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
+ 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
+ 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
+ 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
+ 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
+ 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
+ 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
+ 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
+ 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
+ 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
+ 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
+ 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
+ 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
+ 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
+ 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
+ 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
+ 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
+ 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
+ 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
+ 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
+ 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
+ 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
+ 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
+ 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
+ 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
+ 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
+ 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
+ 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
+ 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
+ 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
+ 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
+ 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
+ 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
+ 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
+ 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
+ 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
+ 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
+ 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
+ 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
+ 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
+ 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
+ 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
+ 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p
+ 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
+ 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
+ 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
+ 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
+ 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
+ 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
+ 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
+ 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
+ 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
+ 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
+ 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
+ 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
+ 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
+ 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
+ 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00
+}; // DEL
+
+const unsigned char FONT8x16[97][16] = {
+ 0x08,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
+ 0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // !
+ 0x00,0x63,0x63,0x63,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
+ 0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00, // #
+ 0x0C,0x0C,0x3E,0x63,0x61,0x60,0x3E,0x03,0x03,0x43,0x63,0x3E,0x0C,0x0C,0x00,0x00, // $
+ 0x00,0x00,0x00,0x00,0x00,0x61,0x63,0x06,0x0C,0x18,0x33,0x63,0x00,0x00,0x00,0x00, // %
+ 0x00,0x00,0x00,0x1C,0x36,0x36,0x1C,0x3B,0x6E,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // &
+ 0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
+ 0x00,0x00,0x0C,0x18,0x18,0x30,0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00,0x00,0x00, // (
+ 0x00,0x00,0x18,0x0C,0x0C,0x06,0x06,0x06,0x06,0x0C,0x0C,0x18,0x00,0x00,0x00,0x00, // )
+ 0x00,0x00,0x00,0x00,0x42,0x66,0x3C,0xFF,0x3C,0x66,0x42,0x00,0x00,0x00,0x00,0x00, // *
+ 0x00,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x00,0x00,0x00,0x00,0x00, // +
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00, // ,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // .
+ 0x00,0x00,0x01,0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00, // / (forward slash)
+ 0x00,0x00,0x3E,0x63,0x63,0x63,0x6B,0x6B,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 0 0x30
+ 0x00,0x00,0x0C,0x1C,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3F,0x00,0x00,0x00,0x00, // 1
+ 0x00,0x00,0x3E,0x63,0x03,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00,0x00, // 2
+ 0x00,0x00,0x3E,0x63,0x03,0x03,0x1E,0x03,0x03,0x03,0x63,0x3E,0x00,0x00,0x00,0x00, // 3
+ 0x00,0x00,0x06,0x0E,0x1E,0x36,0x66,0x66,0x7F,0x06,0x06,0x0F,0x00,0x00,0x00,0x00, // 4
+ 0x00,0x00,0x7F,0x60,0x60,0x60,0x7E,0x03,0x03,0x63,0x73,0x3E,0x00,0x00,0x00,0x00, // 5
+ 0x00,0x00,0x1C,0x30,0x60,0x60,0x7E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 6
+ 0x00,0x00,0x7F,0x63,0x03,0x06,0x06,0x0C,0x0C,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // 7
+ 0x00,0x00,0x3E,0x63,0x63,0x63,0x3E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // 8
+ 0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x3F,0x03,0x03,0x06,0x3C,0x00,0x00,0x00,0x00, // 9
+ 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00, // :
+ 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00,0x00, // ;
+ 0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00, // <
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00, // =
+ 0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00,0x00, // >
+ 0x00,0x00,0x3E,0x63,0x63,0x06,0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00, // ?
+ 0x00,0x00,0x3E,0x63,0x63,0x6F,0x6B,0x6B,0x6E,0x60,0x60,0x3E,0x00,0x00,0x00,0x00, // @ 0x40
+ 0x00,0x00,0x08,0x1C,0x36,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // A
+ 0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x33,0x33,0x33,0x33,0x7E,0x00,0x00,0x00,0x00, // B
+ 0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x60,0x60,0x61,0x33,0x1E,0x00,0x00,0x00,0x00, // C
+ 0x00,0x00,0x7C,0x36,0x33,0x33,0x33,0x33,0x33,0x33,0x36,0x7C,0x00,0x00,0x00,0x00, // D
+ 0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x31,0x33,0x7F,0x00,0x00,0x00,0x00, // E
+ 0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // F
+ 0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x6F,0x63,0x63,0x37,0x1D,0x00,0x00,0x00,0x00, // G
+ 0x00,0x00,0x63,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // H
+ 0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // I
+ 0x00,0x00,0x0F,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00, // J
+ 0x00,0x00,0x73,0x33,0x36,0x36,0x3C,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // K
+ 0x00,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x33,0x7F,0x00,0x00,0x00,0x00, // L
+ 0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // M
+ 0x00,0x00,0x63,0x63,0x73,0x7B,0x7F,0x6F,0x67,0x63,0x63,0x63,0x00,0x00,0x00,0x00, // N
+ 0x00,0x00,0x1C,0x36,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,0x00,0x00, // O
+ 0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // P 0x50
+ 0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x6B,0x6F,0x3E,0x06,0x07,0x00,0x00, // Q
+ 0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // R
+ 0x00,0x00,0x3E,0x63,0x63,0x30,0x1C,0x06,0x03,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // S
+ 0x00,0x00,0xFF,0xDB,0x99,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // T
+ 0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // U
+ 0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,0x00,0x00, // V
+ 0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x36,0x00,0x00,0x00,0x00, // W
+ 0x00,0x00,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x3C,0x66,0xC3,0xC3,0x00,0x00,0x00,0x00, // X
+ 0x00,0x00,0xC3,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00,0x00, // Y
+ 0x00,0x00,0x7F,0x63,0x43,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00,0x00, // Z
+ 0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00,0x00,0x00,0x00, // [
+ 0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00, // \ (back slash)
+ 0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,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,0x00,0xFF,0x00,0x00,0x00, // _
+ 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` 0x60
+ 0x00,0x00,0x00,0x00,0x00,0x3C,0x46,0x06,0x3E,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // a
+ 0x00,0x00,0x70,0x30,0x30,0x3C,0x36,0x33,0x33,0x33,0x33,0x6E,0x00,0x00,0x00,0x00, // b
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x60,0x60,0x60,0x63,0x3E,0x00,0x00,0x00,0x00, // c
+ 0x00,0x00,0x0E,0x06,0x06,0x1E,0x36,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // d
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x7E,0x60,0x63,0x3E,0x00,0x00,0x00,0x00, // e
+ 0x00,0x00,0x1C,0x36,0x32,0x30,0x7C,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // f
+ 0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x66,0x3C,0x00,0x00, // g
+ 0x00,0x00,0x70,0x30,0x30,0x36,0x3B,0x33,0x33,0x33,0x33,0x73,0x00,0x00,0x00,0x00, // h
+ 0x00,0x00,0x0C,0x0C,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00, // i
+ 0x00,0x00,0x06,0x06,0x00,0x0E,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00, // j
+ 0x00,0x00,0x70,0x30,0x30,0x33,0x33,0x36,0x3C,0x36,0x33,0x73,0x00,0x00,0x00,0x00, // k
+ 0x00,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00,0x00, // l
+ 0x00,0x00,0x00,0x00,0x00,0x6E,0x7F,0x6B,0x6B,0x6B,0x6B,0x6B,0x00,0x00,0x00,0x00, // m
+ 0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00,0x00, // n
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00,0x00, // o
+ 0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x3E,0x30,0x30,0x78,0x00,0x00, // p 0x70
+ 0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x06,0x0F,0x00,0x00, // q
+ 0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0x33,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0x00, // r
+ 0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x38,0x0E,0x03,0x63,0x3E,0x00,0x00,0x00,0x00, // s
+ 0x00,0x00,0x08,0x18,0x18,0x7E,0x18,0x18,0x18,0x18,0x1B,0x0E,0x00,0x00,0x00,0x00, // t
+ 0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00,0x00, // u
+ 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x36,0x36,0x1C,0x1C,0x08,0x00,0x00,0x00,0x00, // v
+ 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x00,0x00,0x00,0x00, // w
+ 0x00,0x00,0x00,0x00,0x00,0x63,0x36,0x1C,0x1C,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // x
+ 0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x3F,0x03,0x06,0x3C,0x00,0x00, // y
+ 0x00,0x00,0x00,0x00,0x00,0x7F,0x66,0x0C,0x18,0x30,0x63,0x7F,0x00,0x00,0x00,0x00, // z
+ 0x00,0x00,0x0E,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00,0x00, // {
+ 0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00, // |
+ 0x00,0x00,0x70,0x18,0x18,0x18,0x0E,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00,0x00, // }
+ 0x00,0x00,0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
+ 0x00,0x70,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // DELL
+};
+
+void MobileLCD::command(int value) {
+ _spi.write(value & 0xFF);
+}
+
+void MobileLCD::data(int value) {
+ _spi.write(value | 0x100);
+}
+
+void MobileLCD::_select() {
+ _cs = 0;
+}
+
+void MobileLCD::_deselect() {
+ _cs = 1;
+}
+
+int MobileLCD::width() {
+ return _width;
+}
+
+int MobileLCD::height() {
+ return _height;
+}
+
+void MobileLCD::foreground(int v) {
+ _foreground = v;
+}
+
+void MobileLCD::background(int v) {
+ _background = v;
+}
+
+
+/*************************************************************************/
+
+MobileLCD::MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst)
+ : _spi(mosi, miso, clk)
+ , _rst(rst)
+ , _cs(cs) {
+
+ _width = 130;
+ _height = 130;
+ foreground(0xFFFFFF);
+ background(0x000000);
+ reset();
+}
+
+void MobileLCD::reset() {
+
+ _cs = 1;
+ _rst = 0;
+ _spi.format(9);
+ _spi.frequency(5000000);
+
+ wait_ms(1);
+
+ _rst = 1;
+
+ wait_ms(1);
+
+ _select();
+
+ command(DISCTL); // display control
+ data(0x0);
+ data(31);
+ data(0x0);
+
+ command(COMSCN); // scan
+ data(0x1);
+
+ command(OSCON); // oscillator on
+ command(SLPOUT); // sleep out
+ command(PWRCTR); // power control
+ data(0x0F);
+
+ command(DISINV); // invert display
+
+ command(VOLCTR); // Voltage control
+ data(39); // contrast setting: 0..63
+ data(3); // resistance ratio
+
+ wait_ms(1);
+
+ command(DATCTL); // data control
+ data(0x0); // scan dirs
+ data(0x0); // RGB
+ data(0x2); // grayscale
+
+ command(DISON); // turn on the display
+
+ _deselect();
+
+ cls();
+}
+
+void MobileLCD::cls()
+{
+ fill(0, 0, 130, 130, _background);
+}
+
+void MobileLCD::_window(int x, int y, int width, int height)
+{
+ int x1, x2, y1, y2;
+ x1 = x + 0;
+ y1 = y + 2;
+ x2 = x1 + width - 1;
+ y2 = y1 + height - 1;
+
+ command(CASET); // column
+ data(x1);
+ data(x2);
+
+ command(PASET); // page
+ data(y1);
+ data(y2);
+
+ command(RAMWR); // start write to ram
+}
+
+void MobileLCD::fill(int x, int y, int width, int height, int colour)
+{
+ int i = 0;
+
+ _select();
+ _window(x, y, width, height);
+
+ int r4 = (colour >> (16 + 4)) & 0xF;
+ int g4 = (colour >> (8 + 4)) & 0xF;
+ int b4 = (colour >> (0 + 4)) & 0xF;
+
+ int d1 = (r4 << 4) | g4;
+ int d2 = (b4 << 4) | r4;
+ int d3 = (g4 << 4) | b4;
+
+ for(i=0; i<(width*height+1)/2; i++)
+ {
+ data(d1);
+ data(d2);
+ data(d3);
+ }
+
+ _deselect();
+}
+
+void MobileLCD::pixel(int x, int y, int colour) {
+ fill(x, y, 1, 1, colour);
+}
+
+void MobileLCD::setpixel(int x, int y, int colour) {
+
+ _select();
+
+ int r4 = (colour >> (16 + 4)) & 0xF;
+ int g4 = (colour >> (8 + 4)) & 0xF;
+ int b4 = (colour >> (0 + 4)) & 0xF;
+
+ int d1 = (r4 << 4) | g4;
+ int d2 = (b4 << 4) | r4;
+ int d3 = (g4 << 4) | b4;
+
+ command(CASET); // column
+ data(x);
+ data(x);
+
+ command(PASET); // page
+ data(y);
+ data(y);
+
+ command(RAMWR); // start write to ram
+
+ data(d1);
+ data(d2);
+ data(d3);
+
+ _deselect();
+}
+
+void MobileLCD::setline(int x0, int y0, int x1, int y1, int color) {
+ int dy = y1 - y0;
+ int dx = x1 - x0;
+ int stepx, stepy;
+
+ if(dy < 0)
+ {
+ dy = -dy;
+ stepy = -1;
+ }
+ else
+ stepy = 1;
+
+ if(dx < 0)
+ {
+ dx = -dx;
+ stepx = -1;
+ }
+ else
+ stepx = 1;
+
+ dy <<= 1; // dy is now 2*dy
+ dx <<= 1; // dx is now 2*dx
+
+ setpixel(x0, y0, color);
+ if (dx > dy)
+ {
+ int fraction = dy - (dx >> 1); // same as 2*dy - dx
+ while (x0 != x1)
+ {
+ if (fraction >= 0)
+ {
+ y0 += stepy;
+ fraction -= dx; // same as fraction -= 2*dx
+ }
+ x0 += stepx;
+ fraction += dy; // same as fraction -= 2*dy
+ setpixel(x0, y0, color);
+ }
+ }
+ else
+ {
+ int fraction = dx - (dy >> 1);
+ while (y0 != y1)
+ {
+ if (fraction >= 0)
+ {
+ x0 += stepx;
+ fraction -= dy;
+ }
+ y0 += stepy;
+ fraction += dx;
+ setpixel(x0, y0, color);
+ }
+ }
+}
+
+void MobileLCD::setrect(int x0, int y0, int x1, int y1, unsigned char tmpNum, int color) {
+
+ int xmin, xmax, ymin, ymax;
+
+ // check if the rectangle is to be filled
+ if (tmpNum == FILL)
+ {
+ // best way to create a filled rectangle is to define a drawing box
+ // and loop two pixels at a time
+ // calculate the min and max for x and y directions
+ xmin = (x0 <= x1) ? x0 : x1;
+ xmax = (x0 > x1) ? x0 : x1;
+ ymin = (y0 <= y1) ? y0 : y1;
+ ymax = (y0 > y1) ? y0 : y1;
+
+ fill(xmin, ymin, (xmax - xmin), (ymax - ymin), color);
+ }
+ else
+ {
+ // best way to draw un unfilled rectangle is to draw four lines
+ setline(x0, y0, x1, y0, color);
+ setline(x0, y1, x1, y1, color);
+ setline(x0, y0, x0, y1, color);
+ setline(x1, y0, x1, y1, color);
+ }
+}
+
+void MobileLCD::setcircle(int x0, int y0, int radius, int color) {
+
+ int f = 1 - radius;
+ int ddF_x = 0;
+ int ddF_y = -2 * radius;
+ int x = 0;
+ int y = radius;
+
+ setpixel(x0, y0 + radius, color);
+ setpixel(x0, y0 - radius, color);
+ setpixel(x0 + radius, y0, color);
+ setpixel(x0 - radius, y0, color);
+
+ while(x < y)
+ {
+ if(f >= 0)
+ {
+ y--;
+ ddF_y += 2;
+ f += ddF_y;
+ }
+ x++;
+ ddF_x += 2;
+ f += ddF_x + 1;
+
+ setpixel(x0 + x, y0 + y, color);
+ setpixel(x0 - x, y0 + y, color);
+ setpixel(x0 + x, y0 - y, color);
+ setpixel(x0 - x, y0 - y, color);
+ setpixel(x0 + y, y0 + x, color);
+ setpixel(x0 - y, y0 + x, color);
+ setpixel(x0 + y, y0 - x, color);
+ setpixel(x0 - y, y0 - x, color);
+ }
+}
+
+void MobileLCD::bitblit(int x, int y, int width, int height, const char* bitstream, int fColor, int bColor) {
+ _select();
+ _window(x, y, width, height);
+ for(int i=0; i<height*width/2; i++) {
+ int byte1 = (i*2) / 8;
+ int bit1 = (i*2) % 8;
+ int colour1 = ((bitstream[byte1] << bit1) & 0x80) ? fColor : bColor;
+ int byte2 = (i*2+1) / 8;
+ int bit2 = (i*2+1) % 8;
+ int colour2 = ((bitstream[byte2] << bit2) & 0x80) ? fColor : bColor;
+
+ int r41 = (colour1 >> (16 + 4)) & 0xF;
+ int g41 = (colour1 >> (8 + 4)) & 0xF;
+ int b41 = (colour1 >> (0 + 4)) & 0xF;
+
+ int r42 = (colour2 >> (16 + 4)) & 0xF;
+ int g42 = (colour2 >> (8 + 4)) & 0xF;
+ int b42 = (colour2 >> (0 + 4)) & 0xF;
+ int d1 = (r41 << 4) | g41;
+ int d2 = (b41 << 4) | r42;
+ int d3 = (g42 << 4) | b42;
+ data(d1);
+ data(d2);
+ data(d3);
+ }
+ _deselect();
+}
+
+void MobileLCD::putchar(int x, int y, int size, int value, int fColor, int bColor) {
+
+ switch(size)
+ {
+ case SMALL : bitblit(x, y, 8, 8, (char*)&(FONT6x8[value - 0x1F][0]), fColor, bColor);
+ break;
+ case MEDIUM : bitblit(x, y, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]), fColor, bColor);
+ break;
+ case LARGE : bitblit(x, y, 8, 16, (char*)&(FONT8x16[value - 0x1F][0]), fColor, bColor);
+ break;
+ }
+
+}
\ No newline at end of file