Dependencies:   mbed

Committer:
simon
Date:
Tue Sep 15 10:02:04 2009 +0000
Revision:
0:cc002f2fad97

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:cc002f2fad97 1 /* mbed MobileLCD (Sparkfun Nokia) Display Library
simon 0:cc002f2fad97 2 * Copyright (c) 2007-2009 sford
simon 0:cc002f2fad97 3 * Released under the MIT License: http://mbed.org/license/mit
simon 0:cc002f2fad97 4 */
simon 0:cc002f2fad97 5
simon 0:cc002f2fad97 6 #include "MobileLCD.h"
simon 0:cc002f2fad97 7
simon 0:cc002f2fad97 8 MobileLCD::MobileLCD(PinName mosi, PinName sclk, PinName cs, PinName rst) : _spi(mosi, NC, sclk), _cs(cs), _rst(rst) {
simon 0:cc002f2fad97 9 _cs = 1;
simon 0:cc002f2fad97 10 _rst = 0;
simon 0:cc002f2fad97 11 _spi.format(9);
simon 0:cc002f2fad97 12 _spi.frequency(5000000);
simon 0:cc002f2fad97 13 wait(0.001);
simon 0:cc002f2fad97 14 _rst = 1;
simon 0:cc002f2fad97 15 wait(0.001);
simon 0:cc002f2fad97 16 _cs = 0;
simon 0:cc002f2fad97 17
simon 0:cc002f2fad97 18 command(0xCA); // display control
simon 0:cc002f2fad97 19 data(0);
simon 0:cc002f2fad97 20 data(32);
simon 0:cc002f2fad97 21 data(0);
simon 0:cc002f2fad97 22
simon 0:cc002f2fad97 23 command(0xBB);
simon 0:cc002f2fad97 24 data(1);
simon 0:cc002f2fad97 25
simon 0:cc002f2fad97 26 command(0xD1); // oscillator on
simon 0:cc002f2fad97 27 command(0x94); // sleep out
simon 0:cc002f2fad97 28 command(0x20); // power control
simon 0:cc002f2fad97 29 data(0x0F);
simon 0:cc002f2fad97 30
simon 0:cc002f2fad97 31 command(0xA7); // invert display
simon 0:cc002f2fad97 32 command(0x81); // Voltage control
simon 0:cc002f2fad97 33 data(39); // contrast setting: 0..63
simon 0:cc002f2fad97 34 data(3); // resistance ratio
simon 0:cc002f2fad97 35 wait(0.001);
simon 0:cc002f2fad97 36
simon 0:cc002f2fad97 37 command(0xBC); // data control
simon 0:cc002f2fad97 38 data(3); // scan dirs
simon 0:cc002f2fad97 39 data(1); // RGB
simon 0:cc002f2fad97 40 data(4); // grayscale
simon 0:cc002f2fad97 41
simon 0:cc002f2fad97 42 command(0xAF); // turn on the display
simon 0:cc002f2fad97 43 _cs = 1;
simon 0:cc002f2fad97 44
simon 0:cc002f2fad97 45 cls();
simon 0:cc002f2fad97 46 }
simon 0:cc002f2fad97 47
simon 0:cc002f2fad97 48 void MobileLCD::pixel(int x, int y, int colour) {
simon 0:cc002f2fad97 49 _cs = 0;
simon 0:cc002f2fad97 50
simon 0:cc002f2fad97 51 command(0x15); // column
simon 0:cc002f2fad97 52 data(2 + x);
simon 0:cc002f2fad97 53 data(2 + x);
simon 0:cc002f2fad97 54 command(0x75); // page
simon 0:cc002f2fad97 55 data(y);
simon 0:cc002f2fad97 56 data(y);
simon 0:cc002f2fad97 57 command(0x5C); // start write to ram
simon 0:cc002f2fad97 58
simon 0:cc002f2fad97 59 int gr = ((colour >> 20) & 0x0F)
simon 0:cc002f2fad97 60 | ((colour >> 8 ) & 0xF0);
simon 0:cc002f2fad97 61 int nb = ((colour >> 4 ) & 0x0F);
simon 0:cc002f2fad97 62 data(nb);
simon 0:cc002f2fad97 63 data(gr);
simon 0:cc002f2fad97 64
simon 0:cc002f2fad97 65 _cs = 1;
simon 0:cc002f2fad97 66 }
simon 0:cc002f2fad97 67
simon 0:cc002f2fad97 68 int MobileLCD::width() { return 130; }
simon 0:cc002f2fad97 69 int MobileLCD::height() { return 130; }
simon 0:cc002f2fad97 70
simon 0:cc002f2fad97 71 void MobileLCD::command(int value) {
simon 0:cc002f2fad97 72 _spi.write(value & 0xFF);
simon 0:cc002f2fad97 73 }
simon 0:cc002f2fad97 74
simon 0:cc002f2fad97 75 void MobileLCD::data(int value) {
simon 0:cc002f2fad97 76 _spi.write(value | 0x100);
simon 0:cc002f2fad97 77 }
simon 0:cc002f2fad97 78
simon 0:cc002f2fad97 79 #ifdef MBED_MOBILELCD_FASTER
simon 0:cc002f2fad97 80 void MobileLCD::window(int x, int y, int w, int h) {
simon 0:cc002f2fad97 81 _cs = 0;
simon 0:cc002f2fad97 82 command(0x15); // column
simon 0:cc002f2fad97 83 data(2 + x);
simon 0:cc002f2fad97 84 data(2 + x + w - 1);
simon 0:cc002f2fad97 85 command(0x75); // page
simon 0:cc002f2fad97 86 data(y);
simon 0:cc002f2fad97 87 data(y + h - 1);
simon 0:cc002f2fad97 88 command(0x5C); // start write to ram
simon 0:cc002f2fad97 89 _cs = 1;
simon 0:cc002f2fad97 90 }
simon 0:cc002f2fad97 91
simon 0:cc002f2fad97 92 void MobileLCD::putp(int colour) {
simon 0:cc002f2fad97 93 _cs = 0;
simon 0:cc002f2fad97 94 int gr = ((colour >> 20) & 0x0F)
simon 0:cc002f2fad97 95 | ((colour >> 8 ) & 0xF0);
simon 0:cc002f2fad97 96 int nb = ((colour >> 4 ) & 0x0F);
simon 0:cc002f2fad97 97 data(nb);
simon 0:cc002f2fad97 98 data(gr);
simon 0:cc002f2fad97 99 _cs = 1;
simon 0:cc002f2fad97 100 }
simon 0:cc002f2fad97 101
simon 0:cc002f2fad97 102 #endif