Revision 0:9b63dfb366dd, committed 2010-07-02
- Comitter:
- jigr69
- Date:
- Fri Jul 02 15:36:51 2010 +0000
- Commit message:
Changed in this revision
diff -r 000000000000 -r 9b63dfb366dd MobileLCD.cpp
--- /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
diff -r 000000000000 -r 9b63dfb366dd MobileLCD.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MobileLCD.h Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,136 @@
+
+#ifndef MBED_MOBILELCD_H
+#define MBED_MOBILELCD_H
+
+#include "mbed.h"
+
+class MobileLCD {
+
+public:
+
+ MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst);
+
+ void cls();
+ int width();
+ int height();
+ void foreground(int v);
+ void background(int v);
+ void fill(int x, int y, int width, int height, int colour);
+ void reset();
+ void pixel(int x, int y, int colour);
+ void setpixel(int x, int y, int colour);
+ void setline(int x0, int y0, int x1, int y1, int color);
+ void setrect(int x0, int y0, int x1, int y1, unsigned char fill, int color);
+ void setcircle(int x0, int y0, int radius, int color);
+ void putchar(int x, int y, int size, int value, int fColor, int bColor);
+ void bitblit(int x, int y, int width, int height, const char* bitstream, int fColor, int bColor);
+
+protected:
+
+ SPI _spi;
+ DigitalOut _rst;
+ DigitalOut _cs;
+
+ void _select();
+ void _deselect();
+ void _window(int x, int y, int width, int height);
+ void command(int value);
+ void data(int value);
+
+ int _foreground, _background, _width, _height;
+};
+
+#define DISON 0xAF // Display on
+#define DISOFF 0xAE // Display off
+#define DISNOR 0xA6 // Normal display
+#define DISINV 0xA7 // Inverse display
+#define COMSCN 0xBB // Common scan direction
+#define DISCTL 0xCA // Display control
+#define SLPIN 0x95 // Sleep in
+#define SLPOUT 0x94 // Sleep out
+#define PASET 0x75 // Page address set
+#define CASET 0x15 // Column address set
+#define DATCTL 0xBC // Data scan direction, etc.
+#define RGBSET8 0xCE // 256-color position set
+#define RAMWR 0x5C // Writing to memory
+#define RAMRD 0x5D // Reading from memory
+#define PTLIN 0xA8 // Partial display in
+#define PTLOUT 0xA9 // Partial display out
+#define RMWIN 0xE0 // Read and modify write
+#define RMWOUT 0xEE // End
+#define ASCSET 0xAA // Area scroll set
+#define SCSTART 0xAB // Scroll start set
+#define OSCON 0xD1 // Internal oscillation on
+#define OSCOFF 0xD2 // Internal oscillation off
+#define PWRCTR 0x20 // Power control
+#define VOLCTR 0x81 // Electronic volume control
+#define VOLUP 0xD6 // Increment electronic control by 1
+#define VOLDOWN 0xD7 // Decrement electronic control by 1
+#define TMPGRD 0x82 // Temperature gradient set
+#define EPCTIN 0xCD // Control EEPROM
+#define EPCOUT 0xCC // Cancel EEPROM control
+#define EPMWR 0xFC // Write into EEPROM
+#define EPMRD 0xFD // Read from EEPROM
+#define EPSRRD1 0x7C // Read register 1
+#define EPSRRD2 0x7D // Read register 2
+#define NOP 0x25 // NOP instruction
+
+// backlight control
+#define BKLGHT_LCD_ON 1
+#define BKLGHT_LCD_OFF 2
+
+// Booleans
+#define NOFILL 0
+#define FILL 1
+#define SMALL 0
+#define MEDIUM 1
+#define LARGE 2
+
+// mask definitions
+#define BIT0 0x00000001
+#define BIT1 0x00000002
+#define BIT2 0x00000004
+#define BIT3 0x00000008
+#define BIT4 0x00000010
+#define BIT5 0x00000020
+#define BIT6 0x00000040
+#define BIT7 0x00000080
+#define BIT8 0x00000100
+#define BIT9 0x00000200
+#define BIT10 0x00000400
+#define BIT11 0x00000800
+#define BIT12 0x00001000
+#define BIT13 0x00002000
+#define BIT14 0x00004000
+#define BIT15 0x00008000
+#define BIT16 0x00010000
+#define BIT17 0x00020000
+#define BIT18 0x00040000
+#define BIT19 0x00080000
+#define BIT20 0x00100000
+#define BIT21 0x00200000
+#define BIT22 0x00400000
+#define BIT23 0x00800000
+#define BIT24 0x01000000
+#define BIT25 0x02000000
+#define BIT26 0x04000000
+#define BIT27 0x08000000
+#define BIT28 0x10000000
+#define BIT29 0x20000000
+#define BIT30 0x40000000
+#define BIT31 0x80000000
+
+// 12-bit color definitions
+#define WHITE 0xFFFFFF
+#define BLACK 0x000000
+#define RED 0xFF0000
+#define GREEN 0x00FF00
+#define BLUE 0x0000FF
+#define CYAN 0x00FFFF
+#define MAGENTA 0xFF00FF
+#define YELLOW 0xFFFF00
+#define BROWN 0xBB2222
+#define ORANGE 0xFFAA00
+#define PINK 0xFF66AA
+
+#endif // Lcd_h
diff -r 000000000000 -r 9b63dfb366dd Terminal.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Terminal.cpp Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,40 @@
+/* mbed ANSI/VT100 Terminal Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#include "Terminal.h"
+
+#include "mbed.h"
+
+Terminal::Terminal(PinName tx, PinName rx) : Serial(tx, rx) {}
+
+void Terminal::cls() {
+ this->printf("\033[2J");
+}
+
+void Terminal::locate(int column, int row) {
+ // Cursor Home <ESC>[{ROW};{COLUMN}H
+ this->printf("\033[%d;%dH%c", row + 1, column + 1);
+}
+
+static int rgb888tobgr111(int colour) {
+ int r = (colour >> 23) & 1;
+ int g = (colour >> 15) & 1;
+ int b = (colour >> 7) & 1;
+ return (b << 2) | (g << 1) | (r << 0);
+}
+
+void Terminal::foreground(int colour) {
+ // Set Attribute Mode <ESC>[{n}m
+ // Foreground Colours : 30 + bgr
+ int c = 30 + rgb888tobgr111(colour);
+ this->printf("\033[%dm", c);
+}
+
+void Terminal::background(int colour) {
+ // Set Attribute Mode <ESC>[{n}m
+ // Background Colours : 40 + bgr
+ int c = 40 + rgb888tobgr111(colour);
+ this->printf("\033[%dm", c);
+}
\ No newline at end of file
diff -r 000000000000 -r 9b63dfb366dd Terminal.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Terminal.h Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,27 @@
+/* mbed Terminal TextDisplay Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ *
+ * Implementation of ANSI/VT100 Terminal escape codes
+ * for use with e.g. Teraterm, Hyperterminal
+ */
+
+#include "mbed.h"
+
+#ifndef MBED_TERMINAL_H
+#define MBED_TERMINAL_H
+
+class Terminal : public Serial {
+public:
+
+ Terminal(PinName tx, PinName rx);
+
+ // printf(), put(), baud() etc - inherited from Serial
+
+ void cls();
+ void locate(int column, int row);
+ void foreground(int colour);
+ void background(int colour);
+};
+
+#endif
diff -r 000000000000 -r 9b63dfb366dd main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,17 @@
+#include "mbed.h"
+#include "MobileLCD.h"
+
+MobileLCD lcd(p5, p6, p7, p8, p9);
+
+int main() {
+
+ // clear the screen
+ lcd.cls();
+ lcd.setcircle(50, 50, 25, YELLOW);
+ lcd.putchar(50, 50, SMALL, 65, 0x000000, 0xFFFFFF);
+ lcd.putchar(60, 60, MEDIUM, 65, 0xFFFFFF, 0x000000);
+ lcd.putchar(70, 70, LARGE, 'A', 0xFF0000, 0x0000FF);
+ lcd.putchar(80, 80, LARGE, '0', 0xFFFFFF, 0x111111);
+
+// lcd.putchar('E', 50, 50, SMALL, BLUE, YELLOW);
+}
\ No newline at end of file
diff -r 000000000000 -r 9b63dfb366dd mbed.bld
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld Fri Jul 02 15:36:51 2010 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0