mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-22 21:23:07 +03:00
223 lines
6.3 KiB
C++
223 lines
6.3 KiB
C++
/*
|
|
2012 Copyright (c) Seeed Technology Inc.
|
|
|
|
Authors: Albert.Miao & Loovee,
|
|
Visweswara R (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
|
|
|
|
Modified by Sermus for ESP8266
|
|
*/
|
|
#ifndef TFTv2_h
|
|
#define TFTv2_h
|
|
|
|
#if defined(ARDUINO) && ARDUINO >= 100
|
|
#define SEEEDUINO
|
|
#include <Arduino.h>
|
|
#else
|
|
#include <WProgram.h>
|
|
#endif
|
|
#include <pgmspace.h>
|
|
#include <SPI.h>
|
|
|
|
//Basic Colors
|
|
#define RED 0xf800
|
|
#define GREEN 0x07e0
|
|
#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
|
|
|
|
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
|
|
|
|
#define TFT_CS_LOW {DDRE |= 0x08;PORTE &=~ 0x08;}
|
|
#define TFT_CS_HIGH {DDRE |= 0x08;PORTE |= 0x08;}
|
|
#define TFT_DC_LOW {DDRH |= 0x08;PORTH &=~ 0x08;}
|
|
#define TFT_DC_HIGH {DDRH |= 0x08;PORTH |= 0x08;}
|
|
#define TFT_BL_OFF {DDRH |= 0x10;PORTH &=~ 0x10;}
|
|
#define TFT_BL_ON {DDRH |= 0x10;PORTH |= 0x10;}
|
|
|
|
#define YP A2 // must be an analog pin, use "An" notation!
|
|
#define XM A1 // must be an analog pin, use "An" notation!
|
|
#define YM 54 // can be a digital pin, this is A0
|
|
#define XP 57 // can be a digital pin, this is A3
|
|
|
|
#elif defined(__AVR_ATmega32U4__)
|
|
|
|
#define TFT_CS_LOW {DDRC |= 0x40;PORTC &=~ 0x40;}
|
|
#define TFT_CS_HIGH {DDRC |= 0x40;PORTC |= 0x40;}
|
|
#define TFT_DC_LOW {DDRD |= 0x80;PORTD &=~ 0x80;}
|
|
#define TFT_DC_HIGH {DDRD |= 0x80;PORTD |= 0x80;}
|
|
#define TFT_BL_OFF {DDRE |= 0x40;PORTE &=~ 0x40;}
|
|
#define TFT_BL_ON {DDRE |= 0x40;PORTE |= 0x40;}
|
|
|
|
#define YP A2 // must be an analog pin, use "An" notation!
|
|
#define XM A1 // must be an analog pin, use "An" notation!
|
|
#define YM 18 // can be a digital pin, this is A0
|
|
#define XP 21 // can be a digital pin, this is A3
|
|
|
|
#else
|
|
#define TFT_CS_LOW digitalWrite(15, 0);
|
|
#define TFT_CS_HIGH digitalWrite(15, 1);
|
|
#define TFT_DC_LOW digitalWrite(2, 0);
|
|
#define TFT_DC_HIGH digitalWrite(2, 1);
|
|
#define TFT_BL_OFF digitalWrite(4, 0);
|
|
#define TFT_BL_ON digitalWrite(4, 1);
|
|
|
|
#define YP A2 // must be an analog pin, use "An" notation!
|
|
#define XM A1 // must be an analog pin, use "An" notation!
|
|
#define YM 14 // can be a digital pin, this is A0
|
|
#define XP 17 // can be a digital pin, this is A3
|
|
|
|
#endif
|
|
|
|
#define TS_MINX 116*2
|
|
#define TS_MAXX 890*2
|
|
#define TS_MINY 83*2
|
|
#define TS_MAXY 913*2
|
|
|
|
#ifndef INT8U
|
|
#define INT8U unsigned char
|
|
#endif
|
|
#ifndef INT16U
|
|
#define INT16U unsigned int
|
|
#endif
|
|
|
|
#define FONT_SPACE 6
|
|
#define FONT_X 8
|
|
#define FONT_Y 8
|
|
|
|
|
|
extern INT8U simpleFont[][8];
|
|
|
|
class TFT
|
|
{
|
|
|
|
private:
|
|
|
|
|
|
|
|
public:
|
|
|
|
inline void sendCMD(INT8U index)
|
|
{
|
|
TFT_DC_LOW;
|
|
TFT_CS_LOW;
|
|
SPI.transfer(index);
|
|
TFT_CS_HIGH;
|
|
}
|
|
|
|
inline void WRITE_DATA(INT8U data)
|
|
{
|
|
TFT_DC_HIGH;
|
|
TFT_CS_LOW;
|
|
SPI.transfer(data);
|
|
TFT_CS_HIGH;
|
|
}
|
|
|
|
inline void sendData(INT16U data)
|
|
{
|
|
INT8U data1 = data>>8;
|
|
INT8U data2 = data&0xff;
|
|
TFT_DC_HIGH;
|
|
TFT_CS_LOW;
|
|
SPI.transfer(data1);
|
|
SPI.transfer(data2);
|
|
TFT_CS_HIGH;
|
|
}
|
|
|
|
void WRITE_Package(INT16U *data, INT8U howmany)
|
|
{
|
|
INT16U data1 = 0;
|
|
INT8U data2 = 0;
|
|
|
|
TFT_DC_HIGH;
|
|
TFT_CS_LOW;
|
|
INT8U count=0;
|
|
for(count=0;count<howmany;count++)
|
|
{
|
|
data1 = data[count]>>8;
|
|
data2 = data[count]&0xff;
|
|
SPI.transfer(data1);
|
|
SPI.transfer(data2);
|
|
}
|
|
TFT_CS_HIGH;
|
|
}
|
|
|
|
INT8U Read_Register(INT8U Addr, INT8U xParameter)
|
|
{
|
|
INT8U data=0;
|
|
sendCMD(0xd9); /* ext command */
|
|
WRITE_DATA(0x10+xParameter); /* 0x11 is the first Parameter */
|
|
TFT_DC_LOW;
|
|
TFT_CS_LOW;
|
|
SPI.transfer(Addr);
|
|
TFT_DC_HIGH;
|
|
data = SPI.transfer(0);
|
|
TFT_CS_HIGH;
|
|
return data;
|
|
}
|
|
|
|
|
|
void TFTinit (void);
|
|
void setCol(INT16U StartCol,INT16U EndCol);
|
|
void setPage(INT16U StartPage,INT16U EndPage);
|
|
void setXY(INT16U poX, INT16U poY);
|
|
void setPixel(INT16U poX, INT16U poY,INT16U color);
|
|
|
|
void fillScreen(INT16U XL,INT16U XR,INT16U YU,INT16U YD,INT16U color);
|
|
void fillScreen(void);
|
|
INT8U readID(void);
|
|
|
|
void drawChar(INT8U ascii,INT16U poX, INT16U poY,INT16U size, INT16U fgcolor);
|
|
void drawString(char *string,INT16U poX, INT16U poY,INT16U size,INT16U fgcolor);
|
|
void fillRectangle(INT16U poX, INT16U poY, INT16U length, INT16U width, INT16U color);
|
|
|
|
void drawLine(INT16U x0,INT16U y0,INT16U x1,INT16U y1,INT16U color);
|
|
void drawVerticalLine(INT16U poX, INT16U poY,INT16U length,INT16U color);
|
|
void drawHorizontalLine(INT16U poX, INT16U poY,INT16U length,INT16U color);
|
|
void drawRectangle(INT16U poX, INT16U poY, INT16U length,INT16U width,INT16U color);
|
|
|
|
void drawCircle(int poX, int poY, int r,INT16U color);
|
|
void fillCircle(int poX, int poY, int r,INT16U color);
|
|
|
|
void drawTraingle(int poX1, int poY1, int poX2, int poY2, int poX3, int poY3, INT16U color);
|
|
|
|
INT8U drawNumber(long long_num,INT16U poX, INT16U poY,INT16U size,INT16U fgcolor);
|
|
INT8U drawFloat(float floatNumber,INT8U decimal,INT16U poX, INT16U poY,INT16U size,INT16U fgcolor);
|
|
INT8U drawFloat(float floatNumber,INT16U poX, INT16U poY,INT16U size,INT16U fgcolor);
|
|
|
|
};
|
|
|
|
extern TFT Tft;
|
|
|
|
#endif
|
|
|
|
/*********************************************************************************************************
|
|
END FILE
|
|
*********************************************************************************************************/
|