Andrew Lindsay
/
N3310LCD_Demo
N3310LCD library demo
Fork of N3310LCD by
Revision 1:740d0a3999a9, committed 2013-03-10
- Comitter:
- SomeRandomBloke
- Date:
- Sun Mar 10 18:29:43 2013 +0000
- Parent:
- 0:36fb749b83c7
- Commit message:
- Initial commit
Changed in this revision
diff -r 36fb749b83c7 -r 740d0a3999a9 Joystick.cpp --- a/Joystick.cpp Mon Dec 07 17:24:52 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -/* -* N3310LCD. A program to interface mbed with the nuelectronics -* Nokia 3310 LCD shield from www.nuelectronics.com. Ported from -* the nuelectronics Arduino code. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of N3310LCD. -* -* N3310LCD is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* N3310LCD is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with N3310LCD. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <mbed.h> -#include "Joystick.h" - -//keypad debounce parameter -#define DEBOUNCE_MAX 15 -#define DEBOUNCE_ON 10 -#define DEBOUNCE_OFF 3 - -// values correspond to use of a 3.3V supply for the LCD shield. -const int Joystick::adcKeyVal[NUM_KEYS] = {50, // LEFT - 200, // CENTER DEPRESSED - 400, // DOWN - 600, // UP - 800 // RIGHT - // 1024 CENTER NOT DEPRESSED - }; - -Joystick::Joystick(PinName jstick) : joystick(jstick) -{ - // reset button arrays - for (int i = 0; i < NUM_KEYS; i++) - { - buttonCount[i] = 0; - buttonStatus[i] = 0; - buttonFlag[i] = 0; - } -} - -int Joystick::getKeyState(int i) -{ - int retval = 0; - - if (i < NUM_KEYS) - { - retval = buttonFlag[i]; - } - - return retval; -} - -void Joystick::resetKeyState(int i) -{ - if (i < NUM_KEYS) - { - buttonFlag[i] = 0; - } -} - -void Joystick::updateADCKey() -{ - // NOTE: the mbed analog in is 0 - 3.3V, represented as 0.0 - 1.0. It is important - // that the LCD shield is powered from a 3.3V supply in order for the 'right' joystick - // key to function correctly. - - int adcKeyIn = joystick * 1024; // scale this up so we can use int - int keyIn = getKey(adcKeyIn); - - for (int i = 0; i < NUM_KEYS; i++) - { - if (keyIn == i) //one key is pressed - { - if (buttonCount[i] < DEBOUNCE_MAX) - { - buttonCount[i]++; - if (buttonCount[i] > DEBOUNCE_ON) - { - if (buttonStatus[i] == 0) - { - buttonFlag[i] = 1; - buttonStatus[i] = 1; //button debounced to 'pressed' status - } - } - } - } - else // no button pressed - { - if (buttonCount[i] > 0) - { - buttonFlag[i] = 0; - buttonCount[i]--; - if (buttonCount[i] < DEBOUNCE_OFF) - { - buttonStatus[i] = 0; //button debounced to 'released' status - } - } - } - } -} - -// Convert ADC value to key number -int Joystick::getKey(int input) -{ - int k; - - for (k = 0; k < NUM_KEYS; k++) - { - if (input < adcKeyVal[k]) return k; - } - - if (k >= NUM_KEYS) k = -1; // No valid key pressed - - return k; -}
diff -r 36fb749b83c7 -r 740d0a3999a9 Joystick.h --- a/Joystick.h Mon Dec 07 17:24:52 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* -* N3310LCD. A program to interface mbed with the nuelectronics -* Nokia 3310 LCD shield from www.nuelectronics.com. Ported from -* the nuelectronics Arduino code. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of N3310LCD. -* -* N3310LCD is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* N3310LCD is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with N3310LCD. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef SNATCH59_JOYSTICK_H -#define SNATCH59_JOYSTICK_H - -#define NUM_KEYS 5 - -enum eJoystickKey {LEFT_KEY, CENTER_KEY, DOWN_KEY, UP_KEY, RIGHT_KEY}; - -class Joystick -{ -public: - Joystick(PinName jstick); - - int getKeyState(int i); - void resetKeyState(int i); - void updateADCKey(); // call this to initiate joystick read - -private: - // data - int buttonCount[NUM_KEYS]; // debounce counters - int buttonStatus[NUM_KEYS]; // button status - pressed/released - int buttonFlag[NUM_KEYS]; // button on flags for user program - - static const int adcKeyVal[NUM_KEYS]; - - // I/O - AnalogIn joystick; - - // functions - int getKey(int input); -}; - -#endif \ No newline at end of file
diff -r 36fb749b83c7 -r 740d0a3999a9 N3310Fonts.h --- a/N3310Fonts.h Mon Dec 07 17:24:52 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -/* -* N3310LCD. A program to interface mbed with the nuelectronics -* Nokia 3310 LCD shield from www.nuelectronics.com. Ported from -* the nuelectronics Arduino code. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of N3310LCD. -* -* N3310LCD is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* N3310LCD is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with N3310LCD. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef SNATCH59_N3310FONTS_H -#define SNATCH59_N3310FONTS_H - -// 6 x 8 font -// 1 pixel space at left and bottom -// index = ASCII - 32 - -unsigned char font6_8[][6] = -{ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp - { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! - { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // " - { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # - { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ - { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // % - { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // & - { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 }, // ' - { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( - { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) - { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * - { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + - { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // , - { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // - - { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // . - { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // / - { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 - { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 - { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2 - { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 - { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 - { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 - { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 - { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 - { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8 - { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 - { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // : - { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; - { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // < - { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // = - { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 }, // > - { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? - { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ - { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A - { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B - { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C - { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D - { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E - { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F - { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G - { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H - { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I - { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J - { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K - { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L - { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M - { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N - { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O - { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P - { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q - { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R - { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S - { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T - { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U - { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V - { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W - { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X - { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y - { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z - { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ - { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 - { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] - { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ - { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ - { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 }, // ' - { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a - { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b - { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c - { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d - { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e - { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f - { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g - { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h - { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i - { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j - { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k - { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l - { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m - { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n - { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o - { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p - { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC }, // q - { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r - { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s - { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t - { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u - { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v - { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w - { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x - { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y - { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z - { 0x00,0x00, 0x06, 0x09, 0x09, 0x06 } // horiz lines -}; - - -//******* VERY LARGE FONTS ********** -//used here for displaying numbers 0 - 9 and '+', '-', '.' - -unsigned char big_number[13][3][16] = -{ - 0,128,192,224,224,96,224,224, //'0' - 192,128,0,0,0,0,0,0 - , - 112,255,255,1,0,0,0,0, - 255,255,254,0,0,0,0,0 - , - 0,15,31,60,56,48,56,56, - 31,15,3,0,0,0,0,0 - , - - 0,0,0,0,128,224,224,0, //'1' - 0,0,0,0,0,0,0,0 - , - 0,0,3,3,3,255,255,0, - 0,0,0,0,0,0,0,0 - , - 0,0,56,56,56,63,63,56, - 56,56,0,0,0,0,0,0 - , - - 0,192,192,224,96,96,224,224, //'2' - 192,128,0,0,0,0,0,0 - , - 0,1,0,0,128,192,224,249, - 63,31,0,0,0,0,0,0 - , - 0,60,62,63,63,59,57,56, - 56,56,56,0,0,0,0,0 - , - - 0,192,224,224,96,96,224,224, //'3' - 192,192,0,0,0,0,0,0 - , - 0,1,0,0,48,48,56,125, - 239,207,0,0,0,0,0,0 - , - 0,28,56,56,48,48,56,60, - 31,15,1,0,0,0,0,0 - , - - 0,0,0,0,0,128,192,224, //'4' - 224,0,0,0,0,0,0,0 - , - 224,240,248,222,207,199,193,255, - 255,192,192,0,0,0,0,0 - , - 0,0,0,0,0,0,0,63, - 63,0,0,0,0,0,0,0 - , - - 0,224,224,224,224,224,224,224, //'5' - 224,224,224,0,0,0,0,0 - , - 0,63,63,63,56,56,48,112, - 240,224,0,0,0,0,0,0 - , - 0,28,56,56,48,48,56,60, - 31,15,1,0,0,0,0,0 - , - - 0,0,128,192,192,224,96,96, //'6' - 224,224,0,0,0,0,0,0 - , - 224,254,255,55,57,24,24,56, - 240,240,192,0,0,0,0,0 - , - 0,15,31,28,56,48,48,56, - 31,15,7,0,0,0,0,0 - , - - 0,224,224,224,224,224,224,224, //'7' - 224,224,224,0,0,0,0,0 - , - 0,0,0,0,128,224,248,126, - 31,7,1,0,0,0,0,0 - , - 0,0,56,62,31,7,1,0, - 0,0,0,0,0,0,0,0 - , - - 0,128,192,224,224,96,96,224, //'8' - 192,192,0,0,0,0,0,0 - , - 0,207,255,127,56,48,112,112, - 255,239,199,0,0,0,0,0 - , - 3,15,31,60,56,48,48,56, - 31,31,15,0,0,0,0,0 - , - - 0,128,192,224,224,96,224,224, //'9' - 192,128,0,0,0,0,0,0 - , - 12,63,127,241,224,192,192,225, - 255,255,254,0,0,0,0,0 - , - 0,0,56,48,48,56,56,30, - 15,7,0,0,0,0,0,0 - , - - - 0,0,0,0,0,0,0,0, //'.' - 0,0,0,0,0,0,0,0 - , - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0 - , - 60,60,60,0,0,0,0,0, - 0,0,0,0,0,0,0,0 - , - - 0,0,0,0,0,0,0,0, //'+' - 0,0,0,0,0,0,0,0 - , - 0,0,64,64,64,64,64,254, - 254,64,64,64,64,64,0,0 - , - 0,0,0,0,0,0,0,15, - 15,0,0,0,0,0,0,0 - , - - 0,0,0,0,0,0,0,0, //'-' - 0,0,0,0,0,0,0,0 - , - 0,64,64,64,64,64,64,0, - 0,0,0,0,0,0,0,0 - , - 0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0 -}; - -#endif
diff -r 36fb749b83c7 -r 740d0a3999a9 N3310LCD.cpp --- a/N3310LCD.cpp Mon Dec 07 17:24:52 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* -* N3310LCD. A program to interface mbed with the nuelectronics -* Nokia 3310 LCD shield from www.nuelectronics.com. Ported from -* the nuelectronics Arduino code. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of N3310LCD. -* -* N3310LCD is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* N3310LCD is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with N3310LCD. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "N3310LCD.h" -#include "N3310Fonts.h" - -N3310LCD::N3310LCD (PinName mosi, PinName miso, PinName sck, - PinName ce, PinName dat_cmd, PinName lcd_rst, PinName bl_on) : - lcdPort(mosi, miso, sck), - ceWire(ce), dcWire(dat_cmd), rstWire(lcd_rst), blWire(bl_on) -{ -} - -void N3310LCD::init() -{ - // use default SPI format - lcdPort.format(8,0); - lcdPort.frequency(1000000); - - // lcd reset - wait_ms(1); - rstWire = 0; - wait_ms(1); - rstWire = 1; - - write(0x21, CMD); - write(0xc8, CMD); - write(0x06, CMD); - write(0x13, CMD); - write(0x20, CMD); - cls(); - write(0x0c, CMD); -} - -void N3310LCD::cls() -{ - write(0x0c, CMD); - write(0x80, CMD); - - for (int i = 0; i < 504; i++) - { - write(0, DATA); - } -} - -void N3310LCD::backlight(eBacklight state) -{ - // switch off/on back light - blWire = state; -} - -void N3310LCD::write(BYTE data, eRequestType req_type) -{ - // bring CS low for write - ceWire = 0; - - if (CMD == req_type) - dcWire = 0; - else // DATA - dcWire = 1; - - lcdPort.write(data); - - // write finished - ceWire = 1; -} - -void N3310LCD::locate(BYTE xPos, BYTE yPos) -{ - write(0x40 | yPos, CMD); // column - write(0x80 | xPos, CMD); // row -} - -void N3310LCD::drawBitmap(BYTE xPos, BYTE yPos, BYTE* bitmap, BYTE bmpXSize, BYTE bmpYSize) -{ - BYTE row; - - if (0 == bmpYSize % 8) - row = bmpYSize/8; - else - row = bmpYSize/8 + 1; - - for (BYTE n = 0; n < row; n++) - { - locate(xPos, yPos); - for(BYTE i = 0; i < bmpXSize; i++) - { - write(bitmap[i + (n * bmpXSize)], DATA); - } - yPos++; - } -} - -void N3310LCD::writeString(BYTE xPos, BYTE yPos, char* string, eDisplayMode mode) -{ - locate(xPos, yPos); - - while (*string) - { - writeChar(*string++, mode); - } -} - -void N3310LCD::writeStringBig(BYTE xPos, BYTE yPos, char* string, eDisplayMode mode) -{ - while (*string) - { - writeCharBig(xPos, yPos, *string , mode); - - if('.' == *string++) - xPos += 5; - else - xPos += 12; - } -} - -void N3310LCD::writeChar(BYTE ch, eDisplayMode mode) -{ - BYTE sendByte; - - unsigned char* pFont = (unsigned char*)font6_8; - ch -= 32; - - for (BYTE line = 0; line < 6; line++) - { - sendByte = *(pFont + ch*6 + line); - write((mode == NORMAL)? sendByte: (sendByte ^ 0xff) , DATA); - } -} - -void N3310LCD::writeCharBig(BYTE xPos, BYTE yPos, BYTE ch, eDisplayMode mode) -{ - BYTE sendByte; - - unsigned char* pFont = (unsigned char *) big_number; - - if('.' == ch) - ch = 10; - else if ('+' == ch) - ch = 11; - else if ('-' == ch) - ch = 12; - else - ch = ch & 0x0f; - - for(BYTE i = 0; i < 3; i++) - { - locate(xPos, yPos + i); - - for(BYTE j = 0; j < 16; j++) - { - sendByte = *(pFont + ch*48 + i*16 + j); - write((mode == NORMAL)? sendByte : (sendByte^0xff), DATA); - } - } -}
diff -r 36fb749b83c7 -r 740d0a3999a9 N3310LCD.h --- a/N3310LCD.h Mon Dec 07 17:24:52 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* N3310LCD. A program to interface mbed with the nuelectronics -* Nokia 3310 LCD shield from www.nuelectronics.com. Ported from -* the nuelectronics Arduino code. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of N3310LCD. -* -* N3310LCD is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* N3310LCD is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with N3310LCD. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef SNATCH59_N3310LCD_H -#define SNATCH59_N3310LCD_H - -#include <mbed.h> -#include "N3310LCDDefs.h" - -class N3310LCD -{ -public: - N3310LCD(PinName mosi, PinName miso, PinName sck, - PinName ce, PinName dat_cmd, PinName lcd_rst, PinName bl_on); - - void init(); - void cls(); - void backlight(eBacklight state); - void write(BYTE data, eRequestType req_type); - void locate(BYTE xPos, BYTE yPos); - - void drawBitmap(BYTE xPos, BYTE yPos, BYTE* bitmap, BYTE bmpXSize, BYTE bmpYSize); - void writeString(BYTE xPos, BYTE yPos, char* string, eDisplayMode mode); - void writeStringBig(BYTE xPos, BYTE yPos, char* string, eDisplayMode mode); - void writeChar(BYTE ch, eDisplayMode mode); - void writeCharBig(BYTE xPos, BYTE yPos, BYTE ch, eDisplayMode mode); - -private: - // I/O - SPI lcdPort; // does SPI MOSI, MISO and SCK - DigitalOut ceWire; // does SPI CE - DigitalOut dcWire; // does 3310 DAT_CMD - DigitalOut rstWire; // does 3310 LCD_RST - DigitalOut blWire; // does 3310 BL_ON (backlight) -}; - -#endif \ No newline at end of file
diff -r 36fb749b83c7 -r 740d0a3999a9 N3310LCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/N3310LCD.lib Sun Mar 10 18:29:43 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/SomeRandomBloke/code/N3310LCD/#51961974fe55
diff -r 36fb749b83c7 -r 740d0a3999a9 N3310LCDDefs.h --- a/N3310LCDDefs.h Mon Dec 07 17:24:52 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* N3310LCD. A program to interface mbed with the nuelectronics -* Nokia 3310 LCD shield from www.nuelectronics.com. Ported from -* the nuelectronics Arduino code. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of N3310LCD. -* -* N3310LCD is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* N3310LCD is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with N3310LCD. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef SNATCH59_N3310LCDDEFS_H -#define SNATCH59_N3310LCDDEFS_H - -enum eDisplayMode {NORMAL, HIGHLIGHT}; -enum eRequestType {CMD, DATA}; -enum eBacklight {OFF, ON}; - -typedef unsigned char BYTE; - -#endif \ No newline at end of file
diff -r 36fb749b83c7 -r 740d0a3999a9 N3310SPIConfig.h --- a/N3310SPIConfig.h Mon Dec 07 17:24:52 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* N3310LCD. A program to interface mbed with the nuelectronics -* Nokia 3310 LCD shield from www.nuelectronics.com. Ported from -* the nuelectronics Arduino code. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of N3310LCD. -* -* N3310LCD is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* N3310LCD is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with N3310LCD. If not, see <http://www.gnu.org/licenses/>. -*/ - -#ifndef SNATCH59_N3310SPICONFIG_H -#define SNATCH59_N3310SPICONFIG_H - -#include <mbed.h> - -class N3310SPIPort -{ -public: - static const PinName MOSI; // Master Out Slave In - static const PinName MISO; // Master In Slave Out - static const PinName SCK; // SPI clock - static const PinName CE; // Chip Enable (aka Chip Select) - static const PinName LCD_RST; // LCD reset - static const PinName DAT_CMD; // indicates if the SPI write is command or date - static const PinName BL_ON; // Back Light On - - static const PinName AD0; // analog in for joystick -}; - -// NOTE pins have been chosen not to conflict with any I2C usage. -// MOSI = p5, MISO = p6, SCK = p7 is also an option -const PinName N3310SPIPort::MOSI = p11; -const PinName N3310SPIPort::MISO = p12; // not used for 3310 -const PinName N3310SPIPort::SCK = p13; - -const PinName N3310SPIPort::CE = p21; -const PinName N3310SPIPort::LCD_RST = p22; -const PinName N3310SPIPort::DAT_CMD = p23; -const PinName N3310SPIPort::BL_ON = p24; - -const PinName N3310SPIPort::AD0 = p20; // joystick analog - -/************************************************ -* -* Nokia 3310 LCD Shield Pins -* NOTE: the LCD shield must be powered from a 3.3V supply in order -* for the joystick to be read correctly by the mbed analog in -* (which operates on a range of 0 - 3.3V). -* -* Connector J3: -* p13: SCK -* p12: MISO (not used) -* p11: MOSI -* p10: CE -* p9: LCD_RST -* p8: DAT_CMD -* -* Connector J1: -* p7: BL_ON -* -* Connector J2: -* p1 : AD0 -* -**************************************************/ - -#endif \ No newline at end of file
diff -r 36fb749b83c7 -r 740d0a3999a9 bitmap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bitmap.h Sun Mar 10 18:29:43 2013 +0000 @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// File generated by LCD Assistant +// http://en.radzio.dxp.pl/bitmap_converter/ +//------------------------------------------------------------------------------ + +unsigned char fy1 [] = { + 0x00, 0x00, 0x00, 0x00, 0x0C, 0x08, 0xE8, 0xF8, 0xF8, 0xF8, 0x18, 0x08, 0xC8, 0xE8, 0xE8, 0xE8, + 0xFC, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + 0x04, 0x3C, 0xFC, 0xFC, 0xFE, 0xFE, 0x06, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF4, 0x84, + 0x04, 0x1C, 0x1D, 0x01, 0x01, 0x01, 0x00, 0x00, 0xE1, 0xF9, 0xFD, 0xFF, 0xFF, 0x0F, 0x03, 0x81, + 0xE0, 0xFF, 0xFF, 0xFF, 0x81, 0x81, 0x31, 0xFE, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x06, 0x0E, 0x0F, + 0x8F, 0x8F, 0x0F, 0x06, 0x00, 0xC0, 0xDF, 0xFF, 0xFF, 0xF8, 0x9C, 0x16, 0x13, 0x35, 0x3E, 0xEF, + 0xEF, 0xCF, 0x87, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x03, + 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0xB0, 0xE0, 0xE0, 0x60, 0x20, 0x20, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xF0, 0xF0, + 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x10, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x40, 0xC0, 0xE0, 0xE0, 0xE0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x3F, 0x38, 0x30, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x38, 0x38, 0x3E, 0x1F, 0x1F, 0x06, 0x20, 0xF8, 0xFC, 0xFC, 0xFA, 0x12, 0x12, 0x92, 0x92, 0x96, + 0xBE, 0x3C, 0x3C, 0x00, 0x80, 0xF0, 0xFC, 0x3E, 0x1E, 0x1E, 0x1E, 0x1C, 0x1C, 0x9C, 0xFC, 0xFC, + 0xFC, 0xFE, 0x06, 0x04, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xC0, 0x70, 0x38, 0x3C, 0xFE, 0xFE, + 0xFE, 0x30, 0x00, 0x00, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x0C, + 0x0B, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, + 0x07, 0x03, 0x0F, 0x07, 0x07, 0x07, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x08, 0x00, + 0x00, 0x08, 0x0F, 0x0F, 0x1F, 0x10, 0x10, 0x00, 0x04, 0x0E, 0x0E, 0x0E, 0x0E, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +
diff -r 36fb749b83c7 -r 740d0a3999a9 main.cpp --- a/main.cpp Mon Dec 07 17:24:52 2009 +0000 +++ b/main.cpp Sun Mar 10 18:29:43 2013 +0000 @@ -5,13 +5,15 @@ * * Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> * +* Converted to a mbed library by Andrew D. Lindsay +* * This file is part of N3310LCD. * * N3310LCD is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. -* +* * N3310LCD is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -25,69 +27,84 @@ #include "N3310LCD.h" #include "Joystick.h" #include "mbed_bmp.h" +#include "pacman.h" +#include "bitmap.h" // demo for nuelectronics Nokia 3310 LCD shield (www.nuelectronics.com) -// +// // menu starting points #define MENU_X 10 // 0-83 -#define MENU_Y 1 // 0-5 +#define MENU_Y 0 // 0-5 + +#define DEMO_ITEMS 5 -#define DEMO_ITEMS 4 +void temperature(N3310LCD* lcd, Joystick* jstick); +void charmap(N3310LCD* lcd, Joystick* jstick); +void bitmap(N3310LCD* lcd, Joystick* jstick); +void about(N3310LCD* lcd, Joystick* jstick); +void graphics(N3310LCD* lcd, Joystick* jstick); // menu definition -char menu_items[DEMO_ITEMS][12] = -{ +char menu_items[DEMO_ITEMS][12] = { "TEMPERATURE", "CHAR MAP", "BITMAP", - "ABOUT" + "GRAPHICS", + "ABOUT" }; -void temperature(N3310LCD* lcd) +void (*menu_funcs[DEMO_ITEMS])(N3310LCD*,Joystick*) = { + temperature, + charmap, + bitmap, + graphics, + about +}; + +void temperature(N3310LCD* lcd, Joystick* jstick) { lcd->writeStringBig(5, 1, "+21.12", NORMAL); lcd->writeString(73, 2, "C", NORMAL); } -void charmap(N3310LCD* lcd) +void charmap(N3310LCD* lcd, Joystick* jstick) { - for(int i = 0; i < 5; i++) - { - for(int j = 0; j < 14; j++) - { - lcd->locate(j*6, i); - lcd->writeChar(i*14 + j + 32, NORMAL); + for(int i = 0; i < 5; i++) { + for(int j = 0; j < 14; j++) { + lcd->locate(j*6, i); + lcd->writeChar(i*14 + j + 32, NORMAL); } } } -void bitmap(N3310LCD* lcd) +void bitmap(N3310LCD* lcd, Joystick* jstick) { + for( int i=0; i<10; i++ ) { + lcd->drawBitmap(20, 1, mbed_bmp, 48, 24); + wait(1); + lcd->clearBitmap(20, 1, 48, 24); + lcd->drawBitmap(0, 0, fy1, 84, 48); + wait(1); + lcd->clearBitmap(0, 0, 84, 48); + } lcd->drawBitmap(20, 1, mbed_bmp, 48, 24); } -void about(N3310LCD* lcd) +void about(N3310LCD* lcd, Joystick* jstick) { lcd->writeString(0, 1, "Nokia 3310 LCD", NORMAL); lcd->writeString(15, 2, "driven by", NORMAL); - lcd->writeString(30, 3, "mbed", NORMAL); + lcd->writeString(10, 3, "KL25Z mbed", NORMAL); } -void (*menu_funcs[DEMO_ITEMS])(N3310LCD*) = -{ - temperature, - charmap, - bitmap, - about -}; + void initMenu(N3310LCD* lcd) { lcd->writeString(MENU_X, MENU_Y, menu_items[0], HIGHLIGHT ); - - for (int i = 1; i < DEMO_ITEMS; i++) - { + + for (int i = 1; i < DEMO_ITEMS; i++) { lcd->writeString(MENU_X, MENU_Y + i, menu_items[i], NORMAL); } } @@ -97,12 +114,9 @@ lcd->writeString(38, 5, "OK", HIGHLIGHT ); int key = 0xFF; - while (key != CENTER_KEY) - { - for (int i = 0; i < NUM_KEYS; i++) - { - if (jstick->getKeyState(i) !=0) - { + while (key != CENTER_KEY) { + for (int i = 0; i < NUM_KEYS; i++) { + if (jstick->getKeyState(i) !=0) { jstick->resetKeyState(i); // reset if (CENTER_KEY == i) key = CENTER_KEY; } @@ -110,6 +124,21 @@ } } +// Check if joystick is moved or pressed +uint8_t checkKeypressed( Joystick* jstick) +{ + uint8_t key = 0xFF; + + for(int i=0; i<NUM_KEYS; i++) { + if (jstick->getKeyState(i) !=0) { + jstick->resetKeyState(i); // reset + if (CENTER_KEY == i) key = CENTER_KEY; + } + } + return key; +} + +/* void autoDemo(N3310LCD* lcd) { while (true) @@ -119,18 +148,119 @@ lcd->cls(); lcd->backlight(ON); wait(1); - + (*menu_funcs[i])(lcd); - + wait(3); - + lcd->backlight(OFF); wait(3); } } } +*/ -int main() +// Display the simple graphics demo +void graphics(N3310LCD* lcd, Joystick* jstick) +{ + lcd->writeString( 0, 1, "Text Demo", NORMAL); + lcd->writeString(24, 5, "START", HIGHLIGHT ); + checkKeypressed(jstick); + lcd->cls(); + + lcd->writeStringBig( 0, 0, "123456", NORMAL ); + lcd->writeStringBig( 0, 3, "7890+-.", NORMAL ); + wait(2); + + lcd->writeStringBig( 0, 0, "123456", HIGHLIGHT ); + lcd->writeStringBig( 0, 3, "7890+-.", HIGHLIGHT ); + wait(2); + + lcd->cls(); + + lcd->writeString( 0, 1, "Graphic Demo", NORMAL); + lcd->writeString(24, 5, "START", HIGHLIGHT ); + checkKeypressed(jstick); + lcd->cls(); + // Draw some circles pulsing in and out + for(int a=0; a< 4; a++) { + for( int r = 1; r < 49; r+=1 ) { + lcd->drawCircle(42, 24, r, PIXEL_ON ); + wait(0.010); + } + wait(0.010); + for( int r = 48; r >0; r-=1 ) { + wait(0.010); + lcd->drawCircle(42, 24, r, PIXEL_OFF ); + } + } + + // More circles + for( int xc = 10; xc < 85; xc+=15 ) { + lcd->drawCircle(xc, 24, 20, PIXEL_ON ); + } + wait( 2 ); + + // Draw diagonal lines using XOR colour + lcd->drawLine(0,0,83,47, PIXEL_XOR); + lcd->drawLine(0,43,83,0, PIXEL_XOR); + + wait( 2 ); + + // Draw a rectangle + lcd->drawRectangle(5,5,78,42, PIXEL_ON); + + wait( 2 ); + + // Draw 2 filled rectangles + lcd->drawFilledRectangle(5,3,78,20, PIXEL_ON); + lcd->drawFilledRectangle(5,25,78,42, PIXEL_ON); + + wait( 2 ); + + // Draw bitmap image + lcd->drawBitmap( 0,0, fy1,84,48); + wait(5); + + // Pacman animation + lcd->cls(); + int px = 0; + int py = 1; + float pause=0.060; + for( int p=0; p <9; p++) { + lcd->drawBitmap( px,py, pacman1,32,32); + wait( pause ); + lcd->clearBitmap( px++,py, 32,32); + lcd->drawBitmap( px,py, pacman2,32,32); + wait( pause ); + lcd->clearBitmap( px++,py, 32,32); + lcd->drawBitmap( px,py, pacman3,32,32); + wait( pause ); + lcd->clearBitmap( px++,py, 32,32); + lcd->drawBitmap( px,py, pacman4,32,32); + wait( pause ); + lcd->clearBitmap( px++,py, 32,32); + lcd->drawBitmap( px,py, pacman3,32,32); + wait( pause ); + lcd->clearBitmap( px++,py, 32,32); + lcd->drawBitmap( px,py, pacman2,32,32); + wait( pause ); + lcd->clearBitmap( px++,py, 32,32); + } + lcd->drawBitmap( px,py, pacman1,32,32); + + wait( 5 ); + + lcd->cls(); + + lcd->writeString( 0, 1, "Graphic Demo", NORMAL); + lcd->writeString( 0, 3, "The End!!", NORMAL); +// lcd->writeString(38, 5, "OK", HIGHLIGHT ); + waitforOKKey(lcd,jstick); +} + + +int main() { Joystick jstick(N3310SPIPort::AD0); N3310LCD lcd(N3310SPIPort::MOSI, N3310SPIPort::MISO, N3310SPIPort::SCK, @@ -139,60 +269,56 @@ lcd.init(); lcd.cls(); lcd.backlight(ON); - + // demo stuff // autoDemo(&lcd); - + initMenu(&lcd); int currentMenuItem = 0; Ticker jstickPoll; jstickPoll.attach(&jstick, &Joystick::updateADCKey, 0.01); // check ever 10ms - - - while (true) - { - for (int i = 0; i < NUM_KEYS; i++) - { - if (jstick.getKeyState(i) != 0) - { - jstick.resetKeyState(i); // reset button flag - switch(i) - { - case UP_KEY: - // current item to normal display - lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], NORMAL); - currentMenuItem -=1; - if (currentMenuItem <0) currentMenuItem = DEMO_ITEMS -1; - // next item to highlight display - lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], HIGHLIGHT); - break; - - case DOWN_KEY: - // current item to normal display - lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], NORMAL); - currentMenuItem +=1; - if(currentMenuItem >(DEMO_ITEMS - 1)) currentMenuItem = 0; - // next item to highlight display - lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], HIGHLIGHT); - break; - - case LEFT_KEY: - initMenu(&lcd); - currentMenuItem = 0; - break; - - case RIGHT_KEY: - lcd.cls(); - (*menu_funcs[currentMenuItem])(&lcd); - waitforOKKey(&lcd, &jstick); - lcd.cls(); - initMenu(&lcd); - currentMenuItem = 0; - break; - } + + + while (true) { + for (int i = 0; i < NUM_KEYS; i++) { + if (jstick.getKeyState(i) != 0) { + jstick.resetKeyState(i); // reset button flag + switch(i) { + case UP_KEY: + // current item to normal display + lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], NORMAL); + currentMenuItem -=1; + if (currentMenuItem <0) currentMenuItem = DEMO_ITEMS -1; + // next item to highlight display + lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], HIGHLIGHT); + break; + + case DOWN_KEY: + // current item to normal display + lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], NORMAL); + currentMenuItem +=1; + if(currentMenuItem >(DEMO_ITEMS - 1)) currentMenuItem = 0; + // next item to highlight display + lcd.writeString(MENU_X, MENU_Y + currentMenuItem, menu_items[currentMenuItem], HIGHLIGHT); + break; + + case LEFT_KEY: + initMenu(&lcd); + currentMenuItem = 0; + break; + + case RIGHT_KEY: + lcd.cls(); + (*menu_funcs[currentMenuItem])(&lcd, &jstick); + waitforOKKey(&lcd, &jstick); + lcd.cls(); + initMenu(&lcd); + currentMenuItem = 0; + break; + } + } } } - } - - return EXIT_SUCCESS; + + }
diff -r 36fb749b83c7 -r 740d0a3999a9 mbed.bld --- a/mbed.bld Mon Dec 07 17:24:52 2009 +0000 +++ b/mbed.bld Sun Mar 10 18:29:43 2013 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0 +http://mbed.org/users/mbed_official/code/mbed/builds/5e5da4a5990b \ No newline at end of file
diff -r 36fb749b83c7 -r 740d0a3999a9 mbed_bmp.h --- a/mbed_bmp.h Mon Dec 07 17:24:52 2009 +0000 +++ b/mbed_bmp.h Sun Mar 10 18:29:43 2013 +0000 @@ -11,7 +11,7 @@ * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. -* +* * N3310LCD is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -23,27 +23,25 @@ /*------------------------------------------------------------------------------ ; mbed bitmap - size 48x24 pixels, black/white image -------------------------------------------------------------------------------*/ - -unsigned char mbed_bmp[]= -{ +------------------------------------------------------------------------------*/ -0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x80, -0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, -0xF8,0xF8,0xF8,0x00,0x80,0x80,0x80,0x00, -0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80, -0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80, -0x80,0x80,0x00,0xF8,0xF8,0xF8,0x00,0x00, -0x00,0xFF,0xFF,0xFF,0x01,0x01,0xFF,0xFF, -0xFF,0x01,0x01,0xFF,0xFF,0xFF,0x00,0x00, -0xFF,0xFF,0xFF,0x83,0x01,0x83,0xFF,0xFF, -0xFE,0x00,0x00,0x7C,0xFF,0xFF,0x19,0x19, -0xDF,0xDF,0xDC,0x00,0x00,0xFE,0xFF,0xFF, -0x83,0x01,0x83,0xFF,0xFF,0xFF,0x00,0x00, -0x00,0x03,0x03,0x03,0x00,0x00,0x03,0x03, -0x03,0x00,0x00,0x03,0x03,0x03,0x00,0x00, -0x03,0x03,0x03,0x01,0x03,0x03,0x03,0x01, -0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x03, -0x03,0x01,0x00,0x00,0x00,0x00,0x01,0x03, -0x03,0x03,0x01,0x03,0x03,0x03,0x00,0x00 +unsigned char mbed_bmp[]= { + 0x00,0x80,0x80,0x80,0x00,0x80,0x80,0x80, + 0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00, + 0xF8,0xF8,0xF8,0x00,0x80,0x80,0x80,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80, + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x80,0x80,0x00,0xF8,0xF8,0xF8,0x00,0x00, + 0x00,0xFF,0xFF,0xFF,0x01,0x01,0xFF,0xFF, + 0xFF,0x01,0x01,0xFF,0xFF,0xFF,0x00,0x00, + 0xFF,0xFF,0xFF,0x83,0x01,0x83,0xFF,0xFF, + 0xFE,0x00,0x00,0x7C,0xFF,0xFF,0x19,0x19, + 0xDF,0xDF,0xDC,0x00,0x00,0xFE,0xFF,0xFF, + 0x83,0x01,0x83,0xFF,0xFF,0xFF,0x00,0x00, + 0x00,0x03,0x03,0x03,0x00,0x00,0x03,0x03, + 0x03,0x00,0x00,0x03,0x03,0x03,0x00,0x00, + 0x03,0x03,0x03,0x01,0x03,0x03,0x03,0x01, + 0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x03, + 0x03,0x01,0x00,0x00,0x00,0x00,0x01,0x03, + 0x03,0x03,0x01,0x03,0x03,0x03,0x00,0x00 }; \ No newline at end of file
diff -r 36fb749b83c7 -r 740d0a3999a9 pacman.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pacman.h Sun Mar 10 18:29:43 2013 +0000 @@ -0,0 +1,78 @@ +/* Data generated with bitmap2LCD */ +/* 18/09/2009 23:21:39 */ + +unsigned char pacman1 [] = { + 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, + 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0x7E, 0x7E, 0xFC, 0xFC, + 0xF8, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, + 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7F, 0x7F, 0x3F, 0x3C, 0x38, 0x18, 0x1C, 0x0F, + 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, + 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, + 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x1F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, + 0x1F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00 +}; + +unsigned char pacman2 [] = { + 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, + 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0x7E, 0x7E, 0xFC, 0xFC, + 0xF8, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, + 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7C, 0x78, 0x78, 0x7C, 0x7F, + 0x7F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1F, 0x00, 0x00, + 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, + 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x1F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, + 0x1F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00 +}; + +unsigned char pacman3 [] = { + 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, + 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0x7E, 0x7E, 0xFC, 0xFC, + 0xF8, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, + 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF8, 0xFC, 0xFF, + 0xFF, 0x7F, 0x7F, 0x3F, 0x3F, 0x3F, 0x3C, 0x00, + 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x1F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, + 0x1F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00 +}; + +unsigned char pacman4 [] = { + 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF0, 0xF0, 0xF8, + 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xFE, 0x7E, 0x7E, 0xFC, 0xFC, + 0xF8, 0xF0, 0xF0, 0xE0, 0x80, 0x00, 0x00, 0x00, + 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0xF8, 0xFC, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xC0, + 0x07, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x07, + 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x0F, 0x1F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, + 0x1F, 0x0F, 0x0F, 0x07, 0x01, 0x00, 0x00, 0x00 +};