This program is an addition of NOKIA3300 to NokiaLCD.

Dependencies:   mbed

Committer:
nucho
Date:
Fri Jul 09 16:21:55 2010 +0000
Revision:
0:c80720cda480

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nucho 0:c80720cda480 1 /* mbed Nokia LCD Library
nucho 0:c80720cda480 2 * Copyright (c) 2007-2010, sford
nucho 0:c80720cda480 3 */
nucho 0:c80720cda480 4
nucho 0:c80720cda480 5 #include "NokiaLCD.h"
nucho 0:c80720cda480 6
nucho 0:c80720cda480 7 #include "mbed.h"
nucho 0:c80720cda480 8
nucho 0:c80720cda480 9 #define NOKIALCD_ROWS 16
nucho 0:c80720cda480 10 #define NOKIALCD_COLS 16
nucho 0:c80720cda480 11 #define NOKIALCD_WIDTH 130
nucho 0:c80720cda480 12 #define NOKIALCD_HEIGHT 130
nucho 0:c80720cda480 13 #define NOKIALCD_FREQUENCY 5000000
nucho 0:c80720cda480 14
nucho 0:c80720cda480 15 NokiaLCD::NokiaLCD(PinName mosi, PinName sclk, PinName cs, PinName rst, LCDType type)
nucho 0:c80720cda480 16 : _spi(mosi, NC, sclk)
nucho 0:c80720cda480 17 , _rst(rst)
nucho 0:c80720cda480 18 , _cs(cs) {
nucho 0:c80720cda480 19
nucho 0:c80720cda480 20 _type = type;
nucho 0:c80720cda480 21
nucho 0:c80720cda480 22 _row = 0;
nucho 0:c80720cda480 23 _column = 0;
nucho 0:c80720cda480 24 _foreground = 0x00FFFFFF;
nucho 0:c80720cda480 25 _background = 0x00000000;
nucho 0:c80720cda480 26
nucho 0:c80720cda480 27 reset();
nucho 0:c80720cda480 28 }
nucho 0:c80720cda480 29
nucho 0:c80720cda480 30 void NokiaLCD::reset() {
nucho 0:c80720cda480 31
nucho 0:c80720cda480 32 // setup the SPI interface and bring display out of reset
nucho 0:c80720cda480 33 _cs = 1;
nucho 0:c80720cda480 34 _rst = 0;
nucho 0:c80720cda480 35 _spi.format(9);
nucho 0:c80720cda480 36 _spi.frequency(NOKIALCD_FREQUENCY);
nucho 0:c80720cda480 37 wait_ms(1);
nucho 0:c80720cda480 38 _rst = 1;
nucho 0:c80720cda480 39 wait_ms(1);
nucho 0:c80720cda480 40
nucho 0:c80720cda480 41 _cs = 0;
nucho 0:c80720cda480 42
nucho 0:c80720cda480 43 switch (_type) {
nucho 0:c80720cda480 44 case LCD6100:
nucho 0:c80720cda480 45 command(0xCA); // display control
nucho 0:c80720cda480 46 data(0);
nucho 0:c80720cda480 47 data(32);
nucho 0:c80720cda480 48 data(0);
nucho 0:c80720cda480 49 command(0xBB);
nucho 0:c80720cda480 50 data(1);
nucho 0:c80720cda480 51 command(0xD1); // oscillator on
nucho 0:c80720cda480 52 command(0x94); // sleep out
nucho 0:c80720cda480 53 command(0x20); // power control
nucho 0:c80720cda480 54 data(0x0F);
nucho 0:c80720cda480 55 command(0xA7); // invert display
nucho 0:c80720cda480 56 command(0x81); // Voltage control
nucho 0:c80720cda480 57 data(39); // contrast setting: 0..63
nucho 0:c80720cda480 58 data(3); // resistance ratio
nucho 0:c80720cda480 59 wait_ms(1);
nucho 0:c80720cda480 60 command(0xBC);
nucho 0:c80720cda480 61 data(0);
nucho 0:c80720cda480 62 data(1);
nucho 0:c80720cda480 63 data(4);
nucho 0:c80720cda480 64 command(0xAF); // turn on the display
nucho 0:c80720cda480 65 break;
nucho 0:c80720cda480 66
nucho 0:c80720cda480 67 case LCD6610:
nucho 0:c80720cda480 68 command(0xCA); // display control
nucho 0:c80720cda480 69 data(0);
nucho 0:c80720cda480 70 data(31);
nucho 0:c80720cda480 71 data(0);
nucho 0:c80720cda480 72 command(0xBB);
nucho 0:c80720cda480 73 data(1);
nucho 0:c80720cda480 74 command(0xD1); // oscillator on
nucho 0:c80720cda480 75 command(0x94); // sleep out
nucho 0:c80720cda480 76 command(0x20); // power control
nucho 0:c80720cda480 77 data(0x0F);
nucho 0:c80720cda480 78 command(0xA7); // invert display
nucho 0:c80720cda480 79 command(0x81); // Voltage control
nucho 0:c80720cda480 80 data(39); // contrast setting: 0..63
nucho 0:c80720cda480 81 data(3); // resistance ratio
nucho 0:c80720cda480 82 wait_ms(1);
nucho 0:c80720cda480 83 command(0xBC);
nucho 0:c80720cda480 84 data(0);
nucho 0:c80720cda480 85 data(0);
nucho 0:c80720cda480 86 data(2);
nucho 0:c80720cda480 87 command(0xAF); // turn on the display
nucho 0:c80720cda480 88 break;
nucho 0:c80720cda480 89
nucho 0:c80720cda480 90 case LCD3300:
nucho 0:c80720cda480 91 command(0xCA); // display control
nucho 0:c80720cda480 92 data(0);
nucho 0:c80720cda480 93 data(32);
nucho 0:c80720cda480 94 data(0);
nucho 0:c80720cda480 95 command(0xBB);
nucho 0:c80720cda480 96 data(1);
nucho 0:c80720cda480 97 command(0xD1); // oscillator on
nucho 0:c80720cda480 98 command(0x94); // sleep out
nucho 0:c80720cda480 99 command(0x20); // power control
nucho 0:c80720cda480 100 data(0x0F);
nucho 0:c80720cda480 101 command(0xA7); // invert display
nucho 0:c80720cda480 102 command(0x81); // Voltage control
nucho 0:c80720cda480 103 data(39); // contrast setting: 0..63
nucho 0:c80720cda480 104 data(3); // resistance ratio
nucho 0:c80720cda480 105 wait_ms(1);
nucho 0:c80720cda480 106 command(0xBC);
nucho 0:c80720cda480 107 data(1);
nucho 0:c80720cda480 108 data(0);
nucho 0:c80720cda480 109 data(4);
nucho 0:c80720cda480 110 command(0xAF); // turn on the display
nucho 0:c80720cda480 111 break;
nucho 0:c80720cda480 112
nucho 0:c80720cda480 113 case PCF8833:
nucho 0:c80720cda480 114 command(0x11); // sleep out
nucho 0:c80720cda480 115 command(0x3A); // column mode
nucho 0:c80720cda480 116 data(0x05);
nucho 0:c80720cda480 117 command(0x36); // madctl
nucho 0:c80720cda480 118 data(0x60); // vertical RAM, flip x
nucho 0:c80720cda480 119 command(0x25); // setcon
nucho 0:c80720cda480 120 data(0x30);// contrast 0x30
nucho 0:c80720cda480 121 wait_ms(2);
nucho 0:c80720cda480 122 command(0x29);//DISPON
nucho 0:c80720cda480 123 command(0x03);//BSTRON
nucho 0:c80720cda480 124 break;
nucho 0:c80720cda480 125 }
nucho 0:c80720cda480 126
nucho 0:c80720cda480 127 _cs = 1;
nucho 0:c80720cda480 128
nucho 0:c80720cda480 129 cls();
nucho 0:c80720cda480 130 }
nucho 0:c80720cda480 131
nucho 0:c80720cda480 132 void NokiaLCD::command(int value) {
nucho 0:c80720cda480 133 _spi.write(value & 0xFF);
nucho 0:c80720cda480 134 }
nucho 0:c80720cda480 135
nucho 0:c80720cda480 136 void NokiaLCD::data(int value) {
nucho 0:c80720cda480 137 _spi.write(value | 0x100);
nucho 0:c80720cda480 138 }
nucho 0:c80720cda480 139
nucho 0:c80720cda480 140 void NokiaLCD::_window(int x, int y, int width, int height) {
nucho 0:c80720cda480 141 int x1 = x + 2;
nucho 0:c80720cda480 142 int y1 = y + 0;
nucho 0:c80720cda480 143 int x2 = x1 + width - 1;
nucho 0:c80720cda480 144 int y2 = y1 + height - 1;
nucho 0:c80720cda480 145
nucho 0:c80720cda480 146 switch (_type) {
nucho 0:c80720cda480 147 case LCD6100:
nucho 0:c80720cda480 148 case LCD6610:
nucho 0:c80720cda480 149 case LCD3300:
nucho 0:c80720cda480 150 command(0x15); // column
nucho 0:c80720cda480 151 data(x1);
nucho 0:c80720cda480 152 data(x2);
nucho 0:c80720cda480 153 command(0x75); // row
nucho 0:c80720cda480 154 data(y1);
nucho 0:c80720cda480 155 data(y2);
nucho 0:c80720cda480 156 command(0x5C); // start write to ram
nucho 0:c80720cda480 157 break;
nucho 0:c80720cda480 158 case PCF8833:
nucho 0:c80720cda480 159 command(0x2A); // column
nucho 0:c80720cda480 160 data(x1);
nucho 0:c80720cda480 161 data(x2);
nucho 0:c80720cda480 162 command(0x2B); // row
nucho 0:c80720cda480 163 data(y1);
nucho 0:c80720cda480 164 data(y2);
nucho 0:c80720cda480 165 command(0x2C); // start write to ram
nucho 0:c80720cda480 166 break;
nucho 0:c80720cda480 167 }
nucho 0:c80720cda480 168 }
nucho 0:c80720cda480 169
nucho 0:c80720cda480 170 void NokiaLCD::_putp(int colour) {
nucho 0:c80720cda480 171 int gr = ((colour >> 20) & 0x0F)
nucho 0:c80720cda480 172 | ((colour >> 8 ) & 0xF0);
nucho 0:c80720cda480 173 int nb = ((colour >> 4 ) & 0x0F);
nucho 0:c80720cda480 174 data(nb);
nucho 0:c80720cda480 175 data(gr);
nucho 0:c80720cda480 176 }
nucho 0:c80720cda480 177
nucho 0:c80720cda480 178 const unsigned char FONT8x8[97][8] = {
nucho 0:c80720cda480 179 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
nucho 0:c80720cda480 180 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
nucho 0:c80720cda480 181 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
nucho 0:c80720cda480 182 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
nucho 0:c80720cda480 183 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
nucho 0:c80720cda480 184 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
nucho 0:c80720cda480 185 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
nucho 0:c80720cda480 186 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
nucho 0:c80720cda480 187 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
nucho 0:c80720cda480 188 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
nucho 0:c80720cda480 189 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
nucho 0:c80720cda480 190 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
nucho 0:c80720cda480 191 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
nucho 0:c80720cda480 192 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
nucho 0:c80720cda480 193 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
nucho 0:c80720cda480 194 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
nucho 0:c80720cda480 195 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
nucho 0:c80720cda480 196 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
nucho 0:c80720cda480 197 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
nucho 0:c80720cda480 198 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
nucho 0:c80720cda480 199 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
nucho 0:c80720cda480 200 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
nucho 0:c80720cda480 201 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
nucho 0:c80720cda480 202 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
nucho 0:c80720cda480 203 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
nucho 0:c80720cda480 204 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
nucho 0:c80720cda480 205 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
nucho 0:c80720cda480 206 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
nucho 0:c80720cda480 207 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
nucho 0:c80720cda480 208 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
nucho 0:c80720cda480 209 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
nucho 0:c80720cda480 210 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
nucho 0:c80720cda480 211 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
nucho 0:c80720cda480 212 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40
nucho 0:c80720cda480 213 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
nucho 0:c80720cda480 214 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
nucho 0:c80720cda480 215 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
nucho 0:c80720cda480 216 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
nucho 0:c80720cda480 217 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
nucho 0:c80720cda480 218 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
nucho 0:c80720cda480 219 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
nucho 0:c80720cda480 220 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
nucho 0:c80720cda480 221 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
nucho 0:c80720cda480 222 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
nucho 0:c80720cda480 223 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
nucho 0:c80720cda480 224 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
nucho 0:c80720cda480 225 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
nucho 0:c80720cda480 226 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
nucho 0:c80720cda480 227 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
nucho 0:c80720cda480 228 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
nucho 0:c80720cda480 229 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
nucho 0:c80720cda480 230 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
nucho 0:c80720cda480 231 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
nucho 0:c80720cda480 232 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
nucho 0:c80720cda480 233 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
nucho 0:c80720cda480 234 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
nucho 0:c80720cda480 235 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
nucho 0:c80720cda480 236 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
nucho 0:c80720cda480 237 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
nucho 0:c80720cda480 238 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
nucho 0:c80720cda480 239 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
nucho 0:c80720cda480 240 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
nucho 0:c80720cda480 241 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
nucho 0:c80720cda480 242 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
nucho 0:c80720cda480 243 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
nucho 0:c80720cda480 244 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
nucho 0:c80720cda480 245 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
nucho 0:c80720cda480 246 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
nucho 0:c80720cda480 247 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
nucho 0:c80720cda480 248 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
nucho 0:c80720cda480 249 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
nucho 0:c80720cda480 250 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
nucho 0:c80720cda480 251 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
nucho 0:c80720cda480 252 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
nucho 0:c80720cda480 253 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
nucho 0:c80720cda480 254 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
nucho 0:c80720cda480 255 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
nucho 0:c80720cda480 256 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
nucho 0:c80720cda480 257 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
nucho 0:c80720cda480 258 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
nucho 0:c80720cda480 259 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
nucho 0:c80720cda480 260 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p
nucho 0:c80720cda480 261 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
nucho 0:c80720cda480 262 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
nucho 0:c80720cda480 263 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
nucho 0:c80720cda480 264 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
nucho 0:c80720cda480 265 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
nucho 0:c80720cda480 266 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
nucho 0:c80720cda480 267 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
nucho 0:c80720cda480 268 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
nucho 0:c80720cda480 269 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
nucho 0:c80720cda480 270 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
nucho 0:c80720cda480 271 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
nucho 0:c80720cda480 272 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
nucho 0:c80720cda480 273 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
nucho 0:c80720cda480 274 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
nucho 0:c80720cda480 275 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00
nucho 0:c80720cda480 276 }; // DEL
nucho 0:c80720cda480 277
nucho 0:c80720cda480 278 void NokiaLCD::locate(int column, int row) {
nucho 0:c80720cda480 279 _column = column;
nucho 0:c80720cda480 280 _row = row;
nucho 0:c80720cda480 281 }
nucho 0:c80720cda480 282
nucho 0:c80720cda480 283 void NokiaLCD::newline() {
nucho 0:c80720cda480 284 _column = 0;
nucho 0:c80720cda480 285 _row++;
nucho 0:c80720cda480 286 if (_row >= _rows) {
nucho 0:c80720cda480 287 _row = 0;
nucho 0:c80720cda480 288 }
nucho 0:c80720cda480 289 }
nucho 0:c80720cda480 290
nucho 0:c80720cda480 291 int NokiaLCD::_putc(int value) {
nucho 0:c80720cda480 292 int x = _column * 8; // FIXME: Char sizes
nucho 0:c80720cda480 293 int y = _row * 8;
nucho 0:c80720cda480 294 bitblit(x + 1, y + 1, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]));
nucho 0:c80720cda480 295
nucho 0:c80720cda480 296 _column++;
nucho 0:c80720cda480 297
nucho 0:c80720cda480 298 if (_column >= NOKIALCD_COLS) {
nucho 0:c80720cda480 299 _row++;
nucho 0:c80720cda480 300 _column = 0;
nucho 0:c80720cda480 301 }
nucho 0:c80720cda480 302
nucho 0:c80720cda480 303 if (_row >= NOKIALCD_ROWS) {
nucho 0:c80720cda480 304 _row = 0;
nucho 0:c80720cda480 305 }
nucho 0:c80720cda480 306
nucho 0:c80720cda480 307 return value;
nucho 0:c80720cda480 308 }
nucho 0:c80720cda480 309
nucho 0:c80720cda480 310 void NokiaLCD::cls() {
nucho 0:c80720cda480 311 fill(0, 0, NOKIALCD_WIDTH, NOKIALCD_HEIGHT, _background);
nucho 0:c80720cda480 312 _row = 0;
nucho 0:c80720cda480 313 _column = 0;
nucho 0:c80720cda480 314 }
nucho 0:c80720cda480 315
nucho 0:c80720cda480 316
nucho 0:c80720cda480 317 void NokiaLCD::window(int x, int y, int width, int height) {
nucho 0:c80720cda480 318 _cs = 0;
nucho 0:c80720cda480 319 _window(x, y, width, height);
nucho 0:c80720cda480 320 _cs = 1;
nucho 0:c80720cda480 321 }
nucho 0:c80720cda480 322
nucho 0:c80720cda480 323 void NokiaLCD::putp(int colour) {
nucho 0:c80720cda480 324 _cs = 0;
nucho 0:c80720cda480 325 _putp(colour);
nucho 0:c80720cda480 326 _cs = 1;
nucho 0:c80720cda480 327 }
nucho 0:c80720cda480 328
nucho 0:c80720cda480 329 void NokiaLCD::pixel(int x, int y, int colour) {
nucho 0:c80720cda480 330 _cs = 0;
nucho 0:c80720cda480 331 _window(x, y, 1, 1);
nucho 0:c80720cda480 332 _putp(colour);
nucho 0:c80720cda480 333 _cs = 1;
nucho 0:c80720cda480 334 }
nucho 0:c80720cda480 335
nucho 0:c80720cda480 336 void NokiaLCD::fill(int x, int y, int width, int height, int colour) {
nucho 0:c80720cda480 337 _cs = 0;
nucho 0:c80720cda480 338 _window(x, y, width, height);
nucho 0:c80720cda480 339 for (int i=0; i<width*height; i++) {
nucho 0:c80720cda480 340 _putp(colour);
nucho 0:c80720cda480 341 }
nucho 0:c80720cda480 342 _window(0, 0, NOKIALCD_WIDTH, NOKIALCD_HEIGHT);
nucho 0:c80720cda480 343 _cs = 1;
nucho 0:c80720cda480 344 }
nucho 0:c80720cda480 345
nucho 0:c80720cda480 346 void NokiaLCD::blit(int x, int y, int width, int height, const int* colour) {
nucho 0:c80720cda480 347 _cs = 0;
nucho 0:c80720cda480 348 _window(x, y, width, height);
nucho 0:c80720cda480 349 for (int i=0; i<width*height; i++) {
nucho 0:c80720cda480 350 _putp(colour[i]);
nucho 0:c80720cda480 351 }
nucho 0:c80720cda480 352 _window(0, 0, NOKIALCD_WIDTH, NOKIALCD_HEIGHT);
nucho 0:c80720cda480 353 _cs = 1;
nucho 0:c80720cda480 354 }
nucho 0:c80720cda480 355
nucho 0:c80720cda480 356 void NokiaLCD::bitblit(int x, int y, int width, int height, const char* bitstream) {
nucho 0:c80720cda480 357 _cs = 0;
nucho 0:c80720cda480 358 _window(x, y, width, height);
nucho 0:c80720cda480 359 for (int i=0; i<height*width; i++) {
nucho 0:c80720cda480 360 int byte = i / 8;
nucho 0:c80720cda480 361 int bit = i % 8;
nucho 0:c80720cda480 362 int colour = ((bitstream[byte] << bit) & 0x80) ? _foreground : _background;
nucho 0:c80720cda480 363 _putp(colour);
nucho 0:c80720cda480 364 }
nucho 0:c80720cda480 365 _window(0, 0, _width, _height);
nucho 0:c80720cda480 366 _cs = 1;
nucho 0:c80720cda480 367 }
nucho 0:c80720cda480 368
nucho 0:c80720cda480 369 void NokiaLCD::foreground(int c) {
nucho 0:c80720cda480 370 _foreground = c;
nucho 0:c80720cda480 371 }
nucho 0:c80720cda480 372
nucho 0:c80720cda480 373 void NokiaLCD::background(int c) {
nucho 0:c80720cda480 374 _background = c;
nucho 0:c80720cda480 375 }
nucho 0:c80720cda480 376
nucho 0:c80720cda480 377 int NokiaLCD::width() {
nucho 0:c80720cda480 378 return NOKIALCD_WIDTH;
nucho 0:c80720cda480 379 }
nucho 0:c80720cda480 380
nucho 0:c80720cda480 381 int NokiaLCD::height() {
nucho 0:c80720cda480 382 return NOKIALCD_HEIGHT;
nucho 0:c80720cda480 383 }
nucho 0:c80720cda480 384
nucho 0:c80720cda480 385 int NokiaLCD::columns() {
nucho 0:c80720cda480 386 return NOKIALCD_COLS;
nucho 0:c80720cda480 387 }
nucho 0:c80720cda480 388
nucho 0:c80720cda480 389 int NokiaLCD::rows() {
nucho 0:c80720cda480 390 return NOKIALCD_ROWS;
nucho 0:c80720cda480 391 }