mirror of
				https://github.com/esp8266/Arduino.git
				synced 2025-11-03 14:33:37 +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
 | 
						|
*********************************************************************************************************/
 |