エレキジャックweb mbed入門 Nokia LCD3300@aitendo テストプログラム

Dependencies:   mbed

Committer:
takeuchi
Date:
Sun Oct 03 10:21:07 2010 +0000
Revision:
0:327cf35353c3

        

Who changed what in which revision?

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