aboutsummaryrefslogtreecommitdiff
path: root/src/core/maryoled.cpp
diff options
context:
space:
mode:
authorlynxeyed-atsu <lynxeyed@xj9.so-net.ne.jp>2012-09-25 21:32:32 +0900
committerlynxeyed-atsu <lynxeyed@xj9.so-net.ne.jp>2012-09-25 21:32:32 +0900
commit5c9eb1b24ed4cfa7eae59ffbc24bdbbce814ba35 (patch)
tree621f90d90f4a046136411c75b3ebc4889b640f23 /src/core/maryoled.cpp
parentedb6aabe187a08cb67947fcfce13fefd26e42bb6 (diff)
apply a patch made by audin to a src/coreHEADmaster
audin fixed some bugs about Print class and gpio function with interruption for us. thank you!
Diffstat (limited to 'src/core/maryoled.cpp')
-rwxr-xr-xsrc/core/maryoled.cpp484
1 files changed, 0 insertions, 484 deletions
diff --git a/src/core/maryoled.cpp b/src/core/maryoled.cpp
deleted file mode 100755
index 8df935c..0000000
--- a/src/core/maryoled.cpp
+++ /dev/null
@@ -1,484 +0,0 @@
-/* mbed Nokia LCD Library
- * Atsu
- */
-
-#include "delay.h"
-#include "maryoled.h"
-#include <math.h>
-
-/** General parameters for MARMEX_OB_oled */
-
-#define MARYOLED_ROWS 15
-#define MARYOLED_COLS 16
-#define MARYOLED_WIDTH 128
-#define MARYOLED_HEIGHT 128
-#define MARYOLED_FREQUENCY 20000000
-
-//MARY Pin Assign
-//#define OLED_VCC_ON C21
-//#define OLED_CS C33
-//#define OLED_RES C31
-
-//LPCXpresso pin Assign (MARMEX-SLOT1)
-//#define OLED_VCC_ON P0_7
-//#define OLED_CS P0_2
-//#define OLED_RES P0_1
-
-MARYOLED oled;
-
-MARYOLED::MARYOLED() //default : MARY
-{
- this->OLED_VCC_ON = C21;
- this->OLED_CS = C33;
- this->OLED_RES = C31;
- this->device = OLED;
- port = marySSP0;
- _row = 0;
- _column = 0;
- _foreground = 0x00FFFFFF;
- _background = 0x00000000;
-
-}
-
-MARYOLED::~MARYOLED()
-{
-}
-void MARYOLED::reset(SSP_PORT port)
-{
- this->port = port;
- if(port==LPCXSSP0) //LPCXpresso 1114 + MAPLE
- {
- this->OLED_VCC_ON = P0_7;
- this->OLED_CS = P0_2;
- this->OLED_RES = P0_1;
- }
- pinMode(OLED_VCC_ON,OUTPUT);
- pinMode(OLED_RES,OUTPUT);
- pinMode(OLED_CS,OUTPUT);
-
- digitalWrite(OLED_RES,HIGH);
- digitalWrite(OLED_VCC_ON,LOW);
-
- reset();
- return;
-}
-void MARYOLED::reset() {
- #define GAMMA_LUT_SIZE 63
- //unsigned char gamma_LUT[ GAMMA_LUT_SIZE ];
-
- //for ( int i = 0; i < GAMMA_LUT_SIZE; i++ )
- //gamma_LUT[ i ] = (unsigned char)(powf( ((float)i / 62.0), (1.0 / 0.58) ) * 178.0 + 2.0);
- unsigned char gamma_LUT[63] =
- {
- 0x02, 0x03, 0x04, 0x05,
- 0x06, 0x07, 0x08, 0x09,
- 0x0a, 0x0b, 0x0c, 0x0d,
- 0x0e, 0x0f, 0x10, 0x11,
- //
- 0x12, 0x13, 0x15, 0x17,
- 0x19, 0x1b, 0x1d, 0x1f,
- 0x21, 0x23, 0x25, 0x27,
- 0x2a, 0x2d, 0x30, 0x33,
- //
- 0x36, 0x39, 0x3c, 0x3f,
- 0x42, 0x45, 0x48, 0x4c,
- 0x50, 0x54, 0x58, 0x5c,
- 0x60, 0x64, 0x68, 0x6c,
- //
- 0x70, 0x74, 0x78, 0x7d,
- 0x82, 0x87, 0x8c, 0x91,
- 0x96, 0x9b, 0xa0, 0xa5,
- 0xaa, 0xaf, 0xb4
- };
-
- // setup the _spi interface and bring display out of reset
- digitalWrite( OLED_CS, HIGH );
- digitalWrite( OLED_RES, LOW );
-
-
- SPI.setBitLength( 9 ); //9bit mode
- SPI.setDataMode(SPI_MODE3);
- SPI.setClockDivider( SPI_CLOCK_DIV2 );
- SPI.begin(port);
- //ssp_begin(SPI_CLOCK_DIV1, SPI_MODE0, 9);
-
- delay( 100 ); //wait 100ms
- digitalWrite( OLED_RES, LOW );
- delay( 100 );
- digitalWrite( OLED_RES, HIGH ); //RESET
-
- command( SET_DISPLAY_MODE_ALL_OFF );
-
- command( SET_COMMAND_LOCK );
- data( 0x12 );
-
- command( SET_COMMAND_LOCK );
- data( 0xb1 );
-
- command( SET_SLEEP_MODE_ON );
-
- command( FRONT_CLOCK_DRIVER_OSC_FREQ );
- data( 0xF1 );
-
- command( SET_MUX_RATIO );
- data( 0x7F );
-
- command( SET_DISPAY_OFFSET );
- data( 0x00 );
-
- command( SET_DISPAY_START_LINE );
- data( 0x00 );
-
- command( SET_REMAP_COLOR_DEPTH );
- data( 0x74 );
-
- command( SET_GPIO );
- data( 0x00);
-
- command( FUNCTION_SELECTION );
- data( 0x01 );
-
- command( SET_SEGMENT_LOW_VOLTAGE );
- data( 0xA0 );
- data( 0xB5 );
- data( 0x55 );
-
- command( SET_CONTRAST_CURRENT_FOR_COLOR_ABC );
- data( 0xC8 );
- data( 0x80 );
- data( 0xC8 );
-
- command( MASTER_CONTRAST_CURRENT_CONTROL );
- data( 0x0F );
-
- command( LOOKUP_TABLE_FOR_GRAYSCALE_PULSE_WIDTH );
- for ( int i = 0; i < GAMMA_LUT_SIZE; i++ )
- data( gamma_LUT[ i ] );
-
- //command( USE_BUILT_IN_LINEAR_LUT );
-
- command( SET_RESET_PRECHARGE_PERIOD );
- data( 0x32 );
-
- command( ENHANCE_DRIVING_SCHEME_CAPABILITY );
- data( 0xA4 );//data( 0x04 );
- data( 0x00 );
- data( 0x00 );
-
- command( SET_PRECHARGE_VOLTAGE );
- data( 0x17 );
-
- command( SET_SECOND_PRECHARGE_VOLTAGE );
- data( 0x01 );
-
- command( SET_VCOMH_VOLTAGE );
- data( 0x05 );
- command( SET_DISPLAY_MODE_RESET );
-
- command( SET_COLUMN_ADDRESS );
- data( 0x00 );
- data( 0x7f );
-
- command( SET_ROW_ADDRESS );
- data( 0x00 );
- data( 0x7f );
-
- cls();
- //WindowReset();
-
- digitalWrite(OLED_VCC_ON,HIGH);
-
- delay( 200 ); //wait 200ms
-
- command( SET_SLEEP_MODE_OFF );
- return;
-}
-
-void MARYOLED::command(int value) {
-
- digitalWrite(OLED_CS,LOW);
- SPI.transfer(value & 0xff);
- //ssp_transfer(value & 0xFF);
- digitalWrite(OLED_CS,HIGH);
-}
-
-void MARYOLED::data(int value) {
- digitalWrite(OLED_CS,LOW);
- SPI.transfer(value | 0x100);
- //ssp_transfer(value | 0x100);
- digitalWrite(OLED_CS,HIGH);
-}
-
-void MARYOLED::_window( int x, int y, int width, int height )
-{
- int x1 = x + 0;
- int y1 = y + 0;
- int x2 = x1 + width - 1;
- int y2 = y1 + height - 1;
-
- command( SET_COLUMN_ADDRESS );
- data( x1 );
- data( x2 );
- command( SET_ROW_ADDRESS );
- data( y1 );
- data( y2 );
- command( WRITE_RAM_COMMAND );
-
-}
-
-void MARYOLED::WindowReset(void)
-{
- command( SET_COLUMN_ADDRESS );
- data( 0 );
- data( 127 );
- command( SET_ROW_ADDRESS );
- data( 0 );
- data( 127 );
- command( WRITE_RAM_COMMAND );
-}
-
-
-
-
-const unsigned char FONT8x8[97][8] = {
- {0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00}, // columns, rows, num_bytes_per_char
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // space 0x20
- {0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00}, // !
- {0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00}, // "
- {0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00}, // #
- {0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00}, // $
- {0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00}, // %
- {0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00}, // &
- {0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00}, // '
- {0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00}, // (
- {0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00}, // )
- {0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00}, // *
- {0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00}, // +
- {0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30}, // ,
- {0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00}, // -
- {0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00}, // .
- {0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00}, // / (forward slash)
- {0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00}, // 0 0x30
- {0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00}, // 1
- {0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00}, // 2
- {0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00}, // 3
- {0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00}, // 4
- {0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00}, // 5
- {0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00}, // 6
- {0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00}, // 7
- {0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00}, // 8
- {0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00}, // 9
- {0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00}, // :
- {0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30}, // ;
- {0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00}, // <
- {0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00}, // =
- {0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00}, // >
- {0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00}, // ?
- {0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00}, // @ 0x40
- {0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00}, // A
- {0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00}, // B
- {0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00}, // C
- {0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00}, // D
- {0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00}, // E
- {0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00}, // F
- {0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00}, // G
- {0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00}, // H
- {0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00}, // I
- {0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00}, // J
- {0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00}, // K
- {0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00}, // L
- {0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00}, // M
- {0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00}, // N
- {0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00}, // O
- {0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00}, // P 0x50
- {0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00}, // Q
- {0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00}, // R
- {0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00}, // S
- {0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00}, // T
- {0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00}, // U
- {0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00}, // V
- {0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00}, // W
- {0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00}, // X
- {0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00}, // Y
- {0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00}, // Z
- {0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00}, // [
- {0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00}, // \ (back slash)
- {0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00}, // ]
- {0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00}, // ^
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF}, // _
- {0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00}, // ` 0x60
- {0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00}, // a
- {0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00}, // b
- {0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00}, // c
- {0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00}, // d
- {0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00}, // e
- {0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00}, // f
- {0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C}, // g
- {0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00}, // h
- {0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00}, // i
- {0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C}, // j
- {0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00}, // k
- {0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00}, // l
- {0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00}, // m
- {0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00}, // n
- {0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00}, // o
- {0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78}, // p
- {0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F}, // q
- {0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00}, // r
- {0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00}, // s
- {0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00}, // t
- {0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00}, // u
- {0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00}, // v
- {0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00}, // w
- {0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00}, // x
- {0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C}, // y
- {0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00}, // z
- {0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00}, // {
- {0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00}, // |
- {0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00}, // }
- {0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00}, // ~
- {0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00}
-}; // DEL
-
-void MARYOLED::locate(int column, int row) {
- _column = column;
- _row = row;
-}
-
-void MARYOLED::newline() {
- _column = 0;
- _row++;
- if (_row >= rows() ) {
- _row = 0;
- }
-}
-
-void MARYOLED::_putp( int colour ) {
- /*int cnv = 0;
-
- cnv = (colour >> 8) & 0xf800;
- cnv |= (colour >> 5) & 0x07e0;
- cnv |= (colour >> 3) & 0x001f;
-
- data( cnv >> 8);
- data( cnv );
- */
- unsigned long data1, data2;
- data1 = ((colour >> 8) & 0xff) | 0x100;
- data2 = (colour & 0x0ff) | 0x100;
- data(data1);
- data(data2);
- }
-int MARYOLED::_putc(int value) {
- int x = _column * 8; // FIXME: Char sizes
- int y = _row * 8;
- bitblit(x + 1, y + 1, 8, 8, (char*)&(FONT8x8[value - 0x1F][0]));
-
- _column++;
-
- if (_column >= MARYOLED_COLS) {
- _row++;
- _column = 0;
- }
-
- if (_row >= MARYOLED_ROWS) {
- _row = 0;
- }
-
- return value;
-}
-
-void MARYOLED::cls( void ) {
- fill( 0, 0, MARYOLED_WIDTH , MARYOLED_HEIGHT, _background );
- _row = 0;
- _column = 0;
-}
-
-
-void MARYOLED::window(int x, int y, int width, int height) {
- // digitalWrite( OLED_CS, LOW );
- _window(x, y, width, height);
- //digitalWrite( OLED_CS, HIGH );
-}
-
-void MARYOLED::putp(int colour) {
- //digitalWrite( OLED_CS, LOW );
- _putp(colour);
- //digitalWrite( OLED_CS, HIGH );
-}
-
-
-void MARYOLED::pixel(int x, int y, int colour) {
- //digitalWrite( OLED_CS, LOW );
- _window(x, y, 1, 1);
- _putp(colour);
- //digitalWrite( OLED_CS, HIGH );
-}
-
-void MARYOLED::fill( int x, int y, int width, int height, int colour )
-{
- digitalWrite( OLED_CS, LOW );
- _window( x, y, width, height );
-
- for (int i = 0; i < width * height; i++ ) {
- _putp( colour );
- }
-
- _window( 0, 0, MARYOLED_WIDTH, MARYOLED_HEIGHT );
- digitalWrite( OLED_CS, HIGH );
-}
-
-
-void MARYOLED::blit( int x, int y, int width, int height, const int* colour ) {
- digitalWrite( OLED_CS, LOW );
- _window( x, y, width, height );
-
- for (int i = 0; i < width * height; i++ ) {
- _putp( colour[i] );
- }
- _window( 0, 0, MARYOLED_WIDTH, MARYOLED_HEIGHT );
- digitalWrite( OLED_CS, HIGH );
-}
-
-
-void MARYOLED::bitblit( int x, int y, int width, int height, const char* bitstream ) {
- digitalWrite( OLED_CS, LOW );
- _window( x, y, width, height );
-
- for (int i = 0; i < height * width; i++ ) {
- int byte = i / 8;
- int bit = i % 8;
- int colour = ((bitstream[ byte ] << bit) & 0x80) ? _foreground : _background;
- _putp( colour );
- }
- _window( 0, 0, _width, _height );
- digitalWrite( OLED_CS, HIGH );
-}
-
-void MARYOLED::foreground(int c) {
- _foreground = c;
- return;
-}
-
-void MARYOLED::background(int c) {
- _background = c;
- return;
-}
-
-int MARYOLED::width() {
- return MARYOLED_WIDTH;
-}
-
-int MARYOLED::height() {
- return MARYOLED_HEIGHT;
-}
-
-int MARYOLED::columns() {
- return MARYOLED_COLS;
-}
-
-int MARYOLED::rows() {
- return MARYOLED_ROWS;
-}
-
-