Library to support using the 2.8" TFT Touch Shield v1.0 - made by Seeed Studio - for Arduino This shield uses either the SPFD5408A or ST7781R display chip.

tft.h

Committer:
tj4shee
Date:
2015-02-05
Revision:
0:93976d4026d3

File content as of revision 0:93976d4026d3:

/*
 SPFD5408A or ST7781R TFT Library. 
 
 2015 Copyright (c) Bluegrass Digital Inc.
 
 Authors: TJ Forshee (with initializtion code from TFT vendor)

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.
 
 This library 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
 Lesser General Public License for more details.
 
 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

*/

#ifndef TFT_h
#define TFT_h

#include "mbed.h"

//Basic Colors
#define RED         0xf800
#define GREEN       0x7e00
#define BLUE        0x001f
#define BLACK       0x0000
#define YELLOW      0xffe0
#define WHITE       0xffff

//Other Colors
#define CYAN        0x07ff  
#define BRIGHT_RED  0xf810  
#define GRAY1       0x8410  
#define GRAY2       0x4208  

//TFT resolution 240*320
#define MIN_X   0
#define MIN_Y   0
#define MAX_X   239
#define MAX_Y   319

//========================================
//#define DDR_CS      DDRB
//#define PORT_CS     PORTB
//#define CS_BIT      0x04 // B.2 = D10
// {DDR_CS|=CS_BIT;}
// {PORT_CS|=CS_BIT;}
// {PORT_CS&=~CS_BIT;}

//-----------------------------------------

//#define DDR_RS      DDRB
//#define PORT_RS     PORTB
//#define RS_BIT      0x08 // B.3 = D11
// {DDR_RS|=RS_BIT;}
// {PORT_RS|=RS_BIT;}
// {PORT_RS&=~RS_BIT;}

//-----------------------------------------

//#define DDR_WR      DDRB
//#define PORT_WR     PORTB
//#define WR_BIT      0x10 // B.4 = D12
// {DDR_WR|=WR_BIT;}
// {PORT_WR|=WR_BIT;}
// {PORT_WR&=~WR_BIT;}
// {PORT_WR|=WR_BIT;PORT_WR&=~WR_BIT;}

//-----------------------------------------

//#define DDR_RD      DDRB
//#define PORT_RD     PORTB
//#define RD_BIT      0x20 // B.5 = D13
// {DDR_RD|=RD_BIT;}
// {PORT_RD|=RD_BIT;}
// {PORT_RD&=~RD_BIT;}
// {PORT_RD|=RD_BIT;PORT_RD&=~RD_BIT;}
//========================================

extern unsigned char simpleFont[][8];

class TFT
{
public:

    unsigned int IC_CODE; //Stores Driver IC ID (either SPFD5408A  or ST7781R)

    void init (void);
    void sendCommand(unsigned int index);
    void sendData(unsigned int data);
    void pushData(unsigned char data);
    unsigned char getData(void);
    unsigned int readRegister(unsigned int index);

    unsigned int constrain(unsigned int val2chk, unsigned int lowval, unsigned int highval);
    void setXY(unsigned int poX, unsigned int poY);
    void setPixel(unsigned int poX, unsigned int poY,unsigned int color);
    void drawLine(unsigned int x0,unsigned int y0,unsigned int x1,unsigned int y1,unsigned int color);
    void drawVerticalLine(unsigned int poX, unsigned int poY,unsigned int length,unsigned int color);
    void drawHorizontalLine(unsigned int poX, unsigned int poY,unsigned int length,unsigned int color);
    void drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width,unsigned int color);
    void fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, unsigned int color);
    void drawCircle(int poX, int poY, int r,unsigned int color);
    void fillCircle(int poX, int poY, int r,unsigned int color);
    void drawChar(unsigned char ascii,unsigned int poX, unsigned int poY,unsigned int size, unsigned int fgcolor);
    void drawString(char *string,unsigned int poX, unsigned int poY,unsigned int size,unsigned int fgcolor);
    unsigned char drawNumber(long long_num,unsigned int poX, unsigned int poY,unsigned int size,unsigned int fgcolor);
    unsigned char drawFloat(float floatNumber,unsigned char decimal,unsigned int poX, unsigned int poY,unsigned int size,unsigned int fgcolor);
    unsigned char drawFloat(float floatNumber,unsigned int poX, unsigned int poY,unsigned int size,unsigned int fgcolor);
    
    void all_pin_input(void);
    void all_pin_output(void);
    void all_pin_low(void);
    void CS_HIGH(void);
    void CS_LOW(void);
    void RS_HIGH(void);
    void RS_LOW(void);
    void WR_HIGH(void);
    void WR_LOW(void);
    void WR_RISING(void);
    void RD_HIGH(void);
    void RD_LOW(void);
    void RD_RISING(void);

    void setOrientation(unsigned int HV);
};

extern TFT Tft;

#endif