Library for Nuelectronics Nokia 3310/5110 LCD Display and joystick.

Dependents:   LEDFun NetTester

Fork of N3310LCD by Andrew Lindsay

Library for Nuelectronics Nokia 3310/5110 LCD Display and joystick.

N3310LCD.h

Committer:
SomeRandomBloke
Date:
2013-03-24
Revision:
3:9808f63fd2fe
Parent:
1:51961974fe55
Child:
4:90dce6032a37

File content as of revision 3:9808f63fd2fe:

/*
* 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>
*
* 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
* 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"

#define LCDCOLMAX   84
#define LCDROWMAX   6
#define LCDPIXELROWMAX  48
#define PIXEL_OFF 0
#define PIXEL_ON  1
#define PIXEL_XOR 2
#define FONT_5x7  0
#define FONT_6x8  1

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 writeCommand(BYTE data);
    void writeData(BYTE data);
    void locate(BYTE xPos, BYTE yPos);

    void drawBitmap(BYTE xPos, BYTE yPos, BYTE* bitmap, BYTE bmpXSize, BYTE bmpYSize);
    void clearBitmap(BYTE xPos,BYTE yPos, BYTE size_x, BYTE size_y);
    void setFont(BYTE font );
    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);

    void setPixel( BYTE x, BYTE y, BYTE c );
    void drawLine(BYTE x1, BYTE y1, BYTE x2, BYTE y2, BYTE c);
    void drawRectangle(BYTE x1, BYTE y1,BYTE x2, BYTE y2, BYTE c);
    void drawFilledRectangle(BYTE x1, BYTE y1, BYTE x2, BYTE y2, BYTE c);
    void drawCircle(BYTE xc, BYTE yc, BYTE r, BYTE c);

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