Code for Nokia LCD (text ) based on Epson controller. This is on the new Sparkfun board with the two switches.sx

Dependencies:   mbed

Committer:
TimV
Date:
Tue May 25 23:02:44 2010 +0000
Revision:
0:d6d054c554ae

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TimV 0:d6d054c554ae 1 /* mbed Library - Nokia_Epson
TimV 0:d6d054c554ae 2 * Copyright (c) 2007, sford
TimV 0:d6d054c554ae 3 */
TimV 0:d6d054c554ae 4
TimV 0:d6d054c554ae 5 #include "Nokia_Epson.h"
TimV 0:d6d054c554ae 6
TimV 0:d6d054c554ae 7 #include "mbed.h"
TimV 0:d6d054c554ae 8
TimV 0:d6d054c554ae 9 using namespace mbed;
TimV 0:d6d054c554ae 10
TimV 0:d6d054c554ae 11 const unsigned char FONT8x8[97][8] = {
TimV 0:d6d054c554ae 12 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
TimV 0:d6d054c554ae 13 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
TimV 0:d6d054c554ae 14 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
TimV 0:d6d054c554ae 15 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
TimV 0:d6d054c554ae 16 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
TimV 0:d6d054c554ae 17 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
TimV 0:d6d054c554ae 18 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
TimV 0:d6d054c554ae 19 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
TimV 0:d6d054c554ae 20 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
TimV 0:d6d054c554ae 21 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
TimV 0:d6d054c554ae 22 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
TimV 0:d6d054c554ae 23 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
TimV 0:d6d054c554ae 24 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
TimV 0:d6d054c554ae 25 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
TimV 0:d6d054c554ae 26 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
TimV 0:d6d054c554ae 27 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
TimV 0:d6d054c554ae 28 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
TimV 0:d6d054c554ae 29 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
TimV 0:d6d054c554ae 30 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
TimV 0:d6d054c554ae 31 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
TimV 0:d6d054c554ae 32 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
TimV 0:d6d054c554ae 33 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
TimV 0:d6d054c554ae 34 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
TimV 0:d6d054c554ae 35 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
TimV 0:d6d054c554ae 36 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
TimV 0:d6d054c554ae 37 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
TimV 0:d6d054c554ae 38 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
TimV 0:d6d054c554ae 39 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
TimV 0:d6d054c554ae 40 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
TimV 0:d6d054c554ae 41 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
TimV 0:d6d054c554ae 42 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
TimV 0:d6d054c554ae 43 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
TimV 0:d6d054c554ae 44 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
TimV 0:d6d054c554ae 45 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40
TimV 0:d6d054c554ae 46 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
TimV 0:d6d054c554ae 47 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
TimV 0:d6d054c554ae 48 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
TimV 0:d6d054c554ae 49 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
TimV 0:d6d054c554ae 50 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
TimV 0:d6d054c554ae 51 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
TimV 0:d6d054c554ae 52 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
TimV 0:d6d054c554ae 53 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
TimV 0:d6d054c554ae 54 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
TimV 0:d6d054c554ae 55 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
TimV 0:d6d054c554ae 56 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
TimV 0:d6d054c554ae 57 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
TimV 0:d6d054c554ae 58 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
TimV 0:d6d054c554ae 59 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
TimV 0:d6d054c554ae 60 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
TimV 0:d6d054c554ae 61 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
TimV 0:d6d054c554ae 62 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
TimV 0:d6d054c554ae 63 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
TimV 0:d6d054c554ae 64 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
TimV 0:d6d054c554ae 65 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
TimV 0:d6d054c554ae 66 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
TimV 0:d6d054c554ae 67 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
TimV 0:d6d054c554ae 68 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
TimV 0:d6d054c554ae 69 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
TimV 0:d6d054c554ae 70 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
TimV 0:d6d054c554ae 71 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
TimV 0:d6d054c554ae 72 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
TimV 0:d6d054c554ae 73 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
TimV 0:d6d054c554ae 74 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
TimV 0:d6d054c554ae 75 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
TimV 0:d6d054c554ae 76 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
TimV 0:d6d054c554ae 77 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
TimV 0:d6d054c554ae 78 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
TimV 0:d6d054c554ae 79 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
TimV 0:d6d054c554ae 80 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
TimV 0:d6d054c554ae 81 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
TimV 0:d6d054c554ae 82 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
TimV 0:d6d054c554ae 83 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
TimV 0:d6d054c554ae 84 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
TimV 0:d6d054c554ae 85 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
TimV 0:d6d054c554ae 86 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
TimV 0:d6d054c554ae 87 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
TimV 0:d6d054c554ae 88 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
TimV 0:d6d054c554ae 89 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
TimV 0:d6d054c554ae 90 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
TimV 0:d6d054c554ae 91 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
TimV 0:d6d054c554ae 92 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
TimV 0:d6d054c554ae 93 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p
TimV 0:d6d054c554ae 94 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
TimV 0:d6d054c554ae 95 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
TimV 0:d6d054c554ae 96 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
TimV 0:d6d054c554ae 97 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
TimV 0:d6d054c554ae 98 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
TimV 0:d6d054c554ae 99 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
TimV 0:d6d054c554ae 100 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
TimV 0:d6d054c554ae 101 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
TimV 0:d6d054c554ae 102 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
TimV 0:d6d054c554ae 103 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
TimV 0:d6d054c554ae 104 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
TimV 0:d6d054c554ae 105 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
TimV 0:d6d054c554ae 106 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
TimV 0:d6d054c554ae 107 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
TimV 0:d6d054c554ae 108 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00}; // DEL
TimV 0:d6d054c554ae 109
TimV 0:d6d054c554ae 110 void Nokia_Epson::command(int value) {
TimV 0:d6d054c554ae 111 _spi.write(value & 0xFF);
TimV 0:d6d054c554ae 112 }
TimV 0:d6d054c554ae 113
TimV 0:d6d054c554ae 114 void Nokia_Epson::data(int value) {
TimV 0:d6d054c554ae 115 _spi.write(value | 0x100);
TimV 0:d6d054c554ae 116 }
TimV 0:d6d054c554ae 117
TimV 0:d6d054c554ae 118 void Nokia_Epson::_select() {
TimV 0:d6d054c554ae 119 _cs = 0;
TimV 0:d6d054c554ae 120 }
TimV 0:d6d054c554ae 121
TimV 0:d6d054c554ae 122 void Nokia_Epson::_deselect() {
TimV 0:d6d054c554ae 123 _cs = 1;
TimV 0:d6d054c554ae 124 }
TimV 0:d6d054c554ae 125
TimV 0:d6d054c554ae 126 int Nokia_Epson::width() {
TimV 0:d6d054c554ae 127 return _width;
TimV 0:d6d054c554ae 128 }
TimV 0:d6d054c554ae 129
TimV 0:d6d054c554ae 130 int Nokia_Epson::height() {
TimV 0:d6d054c554ae 131 return _height;
TimV 0:d6d054c554ae 132 }
TimV 0:d6d054c554ae 133
TimV 0:d6d054c554ae 134 int Nokia_Epson::columns() {
TimV 0:d6d054c554ae 135 return _columns;
TimV 0:d6d054c554ae 136 }
TimV 0:d6d054c554ae 137
TimV 0:d6d054c554ae 138 int Nokia_Epson::rows() {
TimV 0:d6d054c554ae 139 return _rows;
TimV 0:d6d054c554ae 140 }
TimV 0:d6d054c554ae 141
TimV 0:d6d054c554ae 142 void Nokia_Epson::foreground(int v) {
TimV 0:d6d054c554ae 143 _foreground = v;
TimV 0:d6d054c554ae 144 }
TimV 0:d6d054c554ae 145
TimV 0:d6d054c554ae 146 void Nokia_Epson::background(int v) {
TimV 0:d6d054c554ae 147 _background = v;
TimV 0:d6d054c554ae 148 }
TimV 0:d6d054c554ae 149
TimV 0:d6d054c554ae 150 void Nokia_Epson::locate(int column, int row) {
TimV 0:d6d054c554ae 151 _row = row;
TimV 0:d6d054c554ae 152 _column = column;
TimV 0:d6d054c554ae 153 }
TimV 0:d6d054c554ae 154
TimV 0:d6d054c554ae 155 void Nokia_Epson::newline() {
TimV 0:d6d054c554ae 156 _column = 0;
TimV 0:d6d054c554ae 157 _row++;
TimV 0:d6d054c554ae 158 if(_row >= _rows) {
TimV 0:d6d054c554ae 159 _row = 0;
TimV 0:d6d054c554ae 160 }
TimV 0:d6d054c554ae 161 }
TimV 0:d6d054c554ae 162
TimV 0:d6d054c554ae 163 /*************************************************************************/
TimV 0:d6d054c554ae 164
TimV 0:d6d054c554ae 165 Nokia_Epson::Nokia_Epson(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst)
TimV 0:d6d054c554ae 166 : _spi(mosi, miso, clk)
TimV 0:d6d054c554ae 167 , _rst(rst)
TimV 0:d6d054c554ae 168 , _cs(cs) {
TimV 0:d6d054c554ae 169
TimV 0:d6d054c554ae 170 _row = 0;
TimV 0:d6d054c554ae 171 _column = 0;
TimV 0:d6d054c554ae 172 _rows = 16;
TimV 0:d6d054c554ae 173 _columns = 16;
TimV 0:d6d054c554ae 174 _width = 130;
TimV 0:d6d054c554ae 175 _height = 130;
TimV 0:d6d054c554ae 176 foreground(0xFFFFFF);
TimV 0:d6d054c554ae 177 background(0x000000);
TimV 0:d6d054c554ae 178 reset();
TimV 0:d6d054c554ae 179 }
TimV 0:d6d054c554ae 180
TimV 0:d6d054c554ae 181 void Nokia_Epson::reset() {
TimV 0:d6d054c554ae 182
TimV 0:d6d054c554ae 183 _cs = 1;
TimV 0:d6d054c554ae 184 _rst = 0;
TimV 0:d6d054c554ae 185 _spi.format(9);
TimV 0:d6d054c554ae 186 _spi.frequency(5000000);
TimV 0:d6d054c554ae 187
TimV 0:d6d054c554ae 188 wait_ms(1);
TimV 0:d6d054c554ae 189
TimV 0:d6d054c554ae 190 _rst = 1;
TimV 0:d6d054c554ae 191
TimV 0:d6d054c554ae 192 wait_ms(1);
TimV 0:d6d054c554ae 193
TimV 0:d6d054c554ae 194 _select();
TimV 0:d6d054c554ae 195
TimV 0:d6d054c554ae 196 command(0xCA); // display control
TimV 0:d6d054c554ae 197 data(0x0);
TimV 0:d6d054c554ae 198 data(31);
TimV 0:d6d054c554ae 199 data(0x0);
TimV 0:d6d054c554ae 200
TimV 0:d6d054c554ae 201 command(0xBB); // scan
TimV 0:d6d054c554ae 202 data(0x1);
TimV 0:d6d054c554ae 203
TimV 0:d6d054c554ae 204 command(0xD1); // oscillator on
TimV 0:d6d054c554ae 205 command(0x94); // sleep out
TimV 0:d6d054c554ae 206 command(0x20); // power control
TimV 0:d6d054c554ae 207 data(0x0F);
TimV 0:d6d054c554ae 208
TimV 0:d6d054c554ae 209 command(0xA7); // invert display
TimV 0:d6d054c554ae 210
TimV 0:d6d054c554ae 211 command(0x81); // Voltage control
TimV 0:d6d054c554ae 212 data(39); // contrast setting: 0..63
TimV 0:d6d054c554ae 213 data(3); // resistance ratio
TimV 0:d6d054c554ae 214
TimV 0:d6d054c554ae 215 wait_ms(1);
TimV 0:d6d054c554ae 216
TimV 0:d6d054c554ae 217 command(0xBC); // data control
TimV 0:d6d054c554ae 218 data(0x0); // scan dirs
TimV 0:d6d054c554ae 219 data(0x0); // RGB
TimV 0:d6d054c554ae 220 data(0x2); // grayscale
TimV 0:d6d054c554ae 221
TimV 0:d6d054c554ae 222 command(0xAF); // turn on the display
TimV 0:d6d054c554ae 223
TimV 0:d6d054c554ae 224 _deselect();
TimV 0:d6d054c554ae 225
TimV 0:d6d054c554ae 226 cls();
TimV 0:d6d054c554ae 227 }
TimV 0:d6d054c554ae 228
TimV 0:d6d054c554ae 229 void Nokia_Epson::_window(int x, int y, int width, int height) {
TimV 0:d6d054c554ae 230 int x1, x2, y1, y2;
TimV 0:d6d054c554ae 231 x1 = x + 0;
TimV 0:d6d054c554ae 232 y1 = y + 2;
TimV 0:d6d054c554ae 233 x2 = x1 + width - 1;
TimV 0:d6d054c554ae 234 y2 = y1 + height - 1;
TimV 0:d6d054c554ae 235 command(0x15); // column
TimV 0:d6d054c554ae 236 data(x1);
TimV 0:d6d054c554ae 237 data(x2);
TimV 0:d6d054c554ae 238 command(0x75); // page
TimV 0:d6d054c554ae 239 data(y1);
TimV 0:d6d054c554ae 240 data(y2);
TimV 0:d6d054c554ae 241 command(0x5C); // start write to ram
TimV 0:d6d054c554ae 242 }
TimV 0:d6d054c554ae 243
TimV 0:d6d054c554ae 244 void Nokia_Epson::fill(int x, int y, int width, int height, int colour) {
TimV 0:d6d054c554ae 245 _select();
TimV 0:d6d054c554ae 246 _window(x, y, width, height);
TimV 0:d6d054c554ae 247
TimV 0:d6d054c554ae 248 int r4 = (colour >> (16 + 4)) & 0xF;
TimV 0:d6d054c554ae 249 int g4 = (colour >> (8 + 4)) & 0xF;
TimV 0:d6d054c554ae 250 int b4 = (colour >> (0 + 4)) & 0xF;
TimV 0:d6d054c554ae 251
TimV 0:d6d054c554ae 252 int d1 = (r4 << 4) | g4;
TimV 0:d6d054c554ae 253 int d2 = (b4 << 4) | r4;
TimV 0:d6d054c554ae 254 int d3 = (g4 << 4) | b4;
TimV 0:d6d054c554ae 255
TimV 0:d6d054c554ae 256 for(int i=0; i<(width*height+1)/2; i++) {
TimV 0:d6d054c554ae 257 data(d1);
TimV 0:d6d054c554ae 258 data(d2);
TimV 0:d6d054c554ae 259 data(d3);
TimV 0:d6d054c554ae 260 }
TimV 0:d6d054c554ae 261 _deselect();
TimV 0:d6d054c554ae 262 }
TimV 0:d6d054c554ae 263
TimV 0:d6d054c554ae 264 void Nokia_Epson::bitblit(int x, int y, int width, int height, const char* bitstream) {
TimV 0:d6d054c554ae 265 _select();
TimV 0:d6d054c554ae 266 _window(x, y, width, height);
TimV 0:d6d054c554ae 267 for(int i=0; i<height*width/2; i++) {
TimV 0:d6d054c554ae 268 int byte1 = (i*2) / 8;
TimV 0:d6d054c554ae 269 int bit1 = (i*2) % 8;
TimV 0:d6d054c554ae 270 int colour1 = ((bitstream[byte1] << bit1) & 0x80) ? _foreground : _background;
TimV 0:d6d054c554ae 271 int byte2 = (i*2+1) / 8;
TimV 0:d6d054c554ae 272 int bit2 = (i*2+1) % 8;
TimV 0:d6d054c554ae 273 int colour2 = ((bitstream[byte2] << bit2) & 0x80) ? _foreground : _background;
TimV 0:d6d054c554ae 274
TimV 0:d6d054c554ae 275 int r41 = (colour1 >> (16 + 4)) & 0xF;
TimV 0:d6d054c554ae 276 int g41 = (colour1 >> (8 + 4)) & 0xF;
TimV 0:d6d054c554ae 277 int b41 = (colour1 >> (0 + 4)) & 0xF;
TimV 0:d6d054c554ae 278
TimV 0:d6d054c554ae 279 int r42 = (colour2 >> (16 + 4)) & 0xF;
TimV 0:d6d054c554ae 280 int g42 = (colour2 >> (8 + 4)) & 0xF;
TimV 0:d6d054c554ae 281 int b42 = (colour2 >> (0 + 4)) & 0xF;
TimV 0:d6d054c554ae 282 int d1 = (r41 << 4) | g41;
TimV 0:d6d054c554ae 283 int d2 = (b41 << 4) | r42;
TimV 0:d6d054c554ae 284 int d3 = (g42 << 4) | b42;
TimV 0:d6d054c554ae 285 data(d1);
TimV 0:d6d054c554ae 286 data(d2);
TimV 0:d6d054c554ae 287 data(d3);
TimV 0:d6d054c554ae 288 }
TimV 0:d6d054c554ae 289 _deselect();
TimV 0:d6d054c554ae 290 }
TimV 0:d6d054c554ae 291
TimV 0:d6d054c554ae 292 void Nokia_Epson::cls() {
TimV 0:d6d054c554ae 293 fill(0, 0, 130, 130, _background);
TimV 0:d6d054c554ae 294 _row = 0;
TimV 0:d6d054c554ae 295 _column = 0;
TimV 0:d6d054c554ae 296 }
TimV 0:d6d054c554ae 297
TimV 0:d6d054c554ae 298 int Nokia_Epson::_putc(int value) {
TimV 0:d6d054c554ae 299 int x = _column * 8; // FIXME: Char sizes
TimV 0:d6d054c554ae 300 int y = _row * 8;
TimV 0:d6d054c554ae 301 bitblit(x + 1, y + 1, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]));
TimV 0:d6d054c554ae 302
TimV 0:d6d054c554ae 303 _column++;
TimV 0:d6d054c554ae 304
TimV 0:d6d054c554ae 305 if(_column >= _columns) {
TimV 0:d6d054c554ae 306 _row++;
TimV 0:d6d054c554ae 307 _column = 0;
TimV 0:d6d054c554ae 308 }
TimV 0:d6d054c554ae 309
TimV 0:d6d054c554ae 310 if(_row >= _rows) {
TimV 0:d6d054c554ae 311 _row = 0;
TimV 0:d6d054c554ae 312 }
TimV 0:d6d054c554ae 313
TimV 0:d6d054c554ae 314 return value;
TimV 0:d6d054c554ae 315 }
TimV 0:d6d054c554ae 316
TimV 0:d6d054c554ae 317 void Nokia_Epson::pixel(int x, int y, int colour) {
TimV 0:d6d054c554ae 318 fill(x, y, 1, 1, colour);
TimV 0:d6d054c554ae 319 }
TimV 0:d6d054c554ae 320