MobileLCD.cpp
- Committer:
- simon
- Date:
- 2009-09-15
- Revision:
- 0:cc002f2fad97
File content as of revision 0:cc002f2fad97:
/* mbed MobileLCD (Sparkfun Nokia) Display Library
* Copyright (c) 2007-2009 sford
* Released under the MIT License: http://mbed.org/license/mit
*/
#include "MobileLCD.h"
MobileLCD::MobileLCD(PinName mosi, PinName sclk, PinName cs, PinName rst) : _spi(mosi, NC, sclk), _cs(cs), _rst(rst) {
_cs = 1;
_rst = 0;
_spi.format(9);
_spi.frequency(5000000);
wait(0.001);
_rst = 1;
wait(0.001);
_cs = 0;
command(0xCA); // display control
data(0);
data(32);
data(0);
command(0xBB);
data(1);
command(0xD1); // oscillator on
command(0x94); // sleep out
command(0x20); // power control
data(0x0F);
command(0xA7); // invert display
command(0x81); // Voltage control
data(39); // contrast setting: 0..63
data(3); // resistance ratio
wait(0.001);
command(0xBC); // data control
data(3); // scan dirs
data(1); // RGB
data(4); // grayscale
command(0xAF); // turn on the display
_cs = 1;
cls();
}
void MobileLCD::pixel(int x, int y, int colour) {
_cs = 0;
command(0x15); // column
data(2 + x);
data(2 + x);
command(0x75); // page
data(y);
data(y);
command(0x5C); // start write to ram
int gr = ((colour >> 20) & 0x0F)
| ((colour >> 8 ) & 0xF0);
int nb = ((colour >> 4 ) & 0x0F);
data(nb);
data(gr);
_cs = 1;
}
int MobileLCD::width() { return 130; }
int MobileLCD::height() { return 130; }
void MobileLCD::command(int value) {
_spi.write(value & 0xFF);
}
void MobileLCD::data(int value) {
_spi.write(value | 0x100);
}
#ifdef MBED_MOBILELCD_FASTER
void MobileLCD::window(int x, int y, int w, int h) {
_cs = 0;
command(0x15); // column
data(2 + x);
data(2 + x + w - 1);
command(0x75); // page
data(y);
data(y + h - 1);
command(0x5C); // start write to ram
_cs = 1;
}
void MobileLCD::putp(int colour) {
_cs = 0;
int gr = ((colour >> 20) & 0x0F)
| ((colour >> 8 ) & 0xF0);
int nb = ((colour >> 4 ) & 0x0F);
data(nb);
data(gr);
_cs = 1;
}
#endif
Simon Ford