﻿/********************金逸晨**************************
*****************1.3 4PIN IIC OLED FOR Arduino*************
*****3----3SCK,   4----4SDA, 5---DC   6---CS  7---RST
*****BY:
 此模块可不接CS,RST引脚，板载硬件上电复位，和CS下拉电阻
控制器GC9A01圆屏
********************************************************/
#define TFT_COLUMN_NUMBER 240
#define TFT_LINE_NUMBER 240
#define SPI_SCK_0  digitalWrite(3,LOW)
#define SPI_SCK_1  digitalWrite(3,HIGH)
#define SPI_SDA_0  digitalWrite(4,LOW)
#define SPI_SDA_1  digitalWrite(4,HIGH)
#define SPI_DC_0  digitalWrite(5,LOW)
#define SPI_DC_1  digitalWrite(5,HIGH)
#define SPI_RST_0  digitalWrite(7,LOW)
#define SPI_RST_1  digitalWrite(7,HIGH)
#define SPI_CS_0  digitalWrite(6,LOW)
#define SPI_CS_1  digitalWrite(6,HIGH)

/*****************颜色数据**************************/
#define WHITE            0xFFFF
#define BLACK            0x0000   
#define BLUE             0x001F  
#define BRED             0XF81F
#define GRED             0XFFE0
#define GBLUE            0X07FF
#define RED              0xF800
#define GREEN            0x07E0

//const unsigned char  picture_tab[]={
///*------------------------------------------------------------------------------
//;  源文件 / 文字 : C:\Documents and Settings\Administrator\桌面\新建文件夹 (2)\logo.bmp字模
//;  宽×高（像素）: 128×128
//------------------------------------------------------------------------------*/
//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,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,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,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,
//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,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,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,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X7F,0XFE,0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X03,0XFF,0XFF,0XC0,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X07,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X0F,0XFF,0XFF,0XFE,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X0F,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X0F,0XFF,0XFF,0XFF,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0X88,0X0F,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0X18,0X0F,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFE,0X3C,0X0F,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFC,0X7C,0X0F,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFC,0XFC,0X0F,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XF9,0XFC,0X0F,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XF1,0XFC,0X0F,0XFF,0XFF,0XFF,0XFF,0XCF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XE3,0XFC,0X0F,0XFF,0XFF,0XF0,0X03,0XC7,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XE7,0XFC,0X0F,0XFF,0XFF,0XC0,0X00,0X63,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XC7,0XFC,0X0F,0XFF,0XFF,0X07,0XFC,0X03,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XCF,0XFC,0X0F,0XFF,0XFE,0X0F,0XFF,0X01,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X9F,0XFC,0X0F,0XFF,0XFC,0X3F,0XFF,0X81,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X9F,0XFC,0X0F,0XFF,0XF8,0X7F,0XFF,0XC1,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X3F,0XFC,0X0F,0XFF,0XF0,0X7F,0XFF,0XE4,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X3F,0XFC,0X0F,0XFF,0XE0,0XFF,0XFF,0XE4,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X3F,0XFC,0X00,0X0F,0XE0,0X00,0X0F,0XF6,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X7F,0XFC,0X00,0X3F,0XC0,0X00,0X3F,0XF6,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X7F,0XFC,0X00,0XFF,0XC1,0XF0,0X7F,0XFE,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X7F,0XFC,0X01,0XFF,0X83,0XF0,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X7F,0XFC,0X00,0XFF,0X83,0XF1,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0XFF,0XFC,0X00,0XFF,0X83,0XE3,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X00,0X7F,0X83,0XE3,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X00,0X7F,0X83,0XC7,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X00,0X3F,0X83,0X8F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X00,0X1F,0X87,0X8F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X00,0X1F,0X87,0X1F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X08,0X0F,0X87,0X1F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X08,0X07,0X82,0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X0C,0X07,0X82,0X3F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFF,0XFC,0X0E,0X03,0X80,0X7F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0XFF,0XFC,0X0E,0X01,0X80,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X7F,0XFC,0X0F,0X01,0X80,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X7F,0XFC,0X0F,0X00,0XC1,0XFF,0XFF,0XFF,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X7F,0XFC,0X0F,0X80,0XC1,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X71,0XFC,0X1F,0XC0,0X41,0XFF,0XFF,0XFE,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X20,0XFC,0X1F,0XC0,0X00,0XFF,0XFF,0XFA,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X20,0XFC,0X1F,0XE0,0X00,0X7F,0XFF,0XF4,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X20,0X7C,0X3F,0XF0,0X00,0X3F,0XFF,0XE4,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X80,0X78,0X3F,0XF0,0X08,0X3F,0XFF,0XCC,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X90,0X38,0X7F,0XF8,0X1C,0X0F,0XFF,0X99,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X88,0X00,0XFF,0XF8,0X1E,0X07,0XFE,0X39,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XCE,0X03,0XFF,0XF8,0X1F,0X80,0X00,0XF3,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XE7,0XFF,0XFF,0XF8,0X1F,0XE0,0X03,0XE3,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XE7,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XE7,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XF3,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XF1,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XF8,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFC,0X7F,0XFF,0XF8,0X1F,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFE,0X3F,0XFF,0XF8,0X1F,0XFF,0XFE,0X3F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X1F,0XFF,0XFC,0X7F,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XF8,0X1F,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XC7,0XFF,0XF8,0X1F,0XFF,0XE1,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XE1,0XFF,0XF8,0X1F,0XFF,0XC7,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XF8,0X1F,0XFF,0X0F,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFC,0X3F,0XF8,0X1F,0XFC,0X1F,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X0F,0XF0,0X0F,0XF0,0X7F,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X81,0XE0,0X07,0X81,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X07,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0X00,0X00,0X3F,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X03,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,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,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,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,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,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X9F,0XFF,0XFF,0XFE,0XFF,0XFF,0XFF,0XF0,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XC0,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X8F,0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XAF,0X1F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XFE,0X0F,0XFF,0XFE,0XF3,0X1F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X03,0XFF,0XFF,0XFC,0X07,0XFF,0XFE,0X40,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X21,0XFF,0XFF,0XFC,0X47,0XFF,0XFF,0X26,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X78,0XFF,0XFE,0X3D,0X8F,0XFF,0XFF,0X28,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XFC,0X7F,0XFF,0X1F,0X13,0XFF,0XFF,0X00,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0XC6,0X1F,0XFE,0X5F,0X01,0XFF,0XFF,0X86,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XF9,0X03,0X0F,0XFF,0XF6,0X19,0XFF,0XFF,0XF0,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XF8,0X03,0X83,0XFF,0XF8,0X13,0XFF,0XFF,0X87,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XF3,0X0F,0XC0,0XFC,0X79,0X83,0XFF,0XFC,0X18,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XE7,0X03,0XE0,0X3E,0X39,0X01,0XFF,0XFC,0X21,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XEE,0XC1,0XFF,0X3F,0X38,0X3F,0XFF,0XFF,0X32,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XCE,0X07,0XFF,0XFE,0X78,0X49,0XFF,0XFF,0X70,0X3F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0X9C,0X0F,0XFF,0XFF,0X7C,0XC9,0XFF,0XFE,0X03,0X9F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0X3E,0X4C,0XFF,0XFF,0X3C,0X91,0XFF,0XFE,0XCF,0X1F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X88,0XFF,0XFF,0XB9,0XBF,0XFF,0XFC,0XC0,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X01,0XFF,0XFF,0XB3,0X9E,0X7F,0XFD,0XC0,0X7F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0X43,0XFF,0XFD,0X1F,0XC0,0X7F,0XF9,0X9F,0X1F,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFE,0XC7,0XFF,0XFE,0X00,0XFF,0XFF,0XFB,0X9C,0X83,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFF,0X80,0X3F,0XFF,0XFC,0X00,0X1F,0XF7,0X99,0XC0,0X7F,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFC,0X00,0X3F,0XFF,0XFF,0X80,0X0F,0XE7,0XD1,0XF0,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XF8,0X3F,0XFF,0XFF,0XFF,0XF8,0X7F,0XCF,0XC3,0XFF,0XFF,0XFF,0XFF,
//0XFF,0XFF,0XFF,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XE7,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,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,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,
//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,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,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,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,
//0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
//};

void delay_us(unsigned char time_us)
{
  unsigned char temp=0;
  while (time_us--)
  {
    temp++;
    temp++;
    temp++;
    temp++;
    temp++;
  }
}

void SPI_SendByte(unsigned char byte)
{
  
  unsigned char counter;
   
  for(counter=0;counter<8;counter++)
  { 
    SPI_SCK_0;
    
    if((byte&0x80)==0)
    {
      SPI_SDA_0;
    }
    else SPI_SDA_1;
    byte=byte<<1;
  
    SPI_SCK_1;  
    
  } 
}

void TFT_send_cmd(unsigned char o_command)
  {
    SPI_DC_0;
    //SPI_CS_0;
    SPI_SendByte(o_command);
    //SPI_CS_1;
  SPI_DC_1;
  }
void TFT_send_data(unsigned char o_data)
  { 
    //SPI_DC_1;
    //SPI_CS_0;
    SPI_SendByte(o_data);
    //SPI_CS_1;
    
   }

void TFT_init(void) //GC9A01
  {
    SPI_RST_0;//复位 
    delay(100); 
    SPI_RST_1; 
    SPI_CS_0;
    delay(100); 
    
    TFT_send_cmd(0xEF);     //使用指令2
    TFT_send_cmd(0xEB);     //
    TFT_send_data(0x14);
    
    TFT_send_cmd(0xFE);     //使用指令1
    TFT_send_cmd(0xEF);     //使用指令2  设置inter指令可用完成，复位之后才可关闭
    
    TFT_send_cmd(0xEB); 
    TFT_send_data(0x14); 
    
    TFT_send_cmd(0x84); 
    TFT_send_data(0x40); 
    TFT_send_cmd(0x85); 
    TFT_send_data(0xFF); 
    TFT_send_cmd(0x86); 
    TFT_send_data(0xFF); 
    TFT_send_cmd(0x87); 
    TFT_send_data(0xFF); 
    TFT_send_cmd(0x88); 
    TFT_send_data(0x0A); 
    TFT_send_cmd(0x89); 
    TFT_send_data(0x21);
    
    TFT_send_cmd(0x8A); 
    TFT_send_data(0x00);
    
    TFT_send_cmd(0x8B); 
    TFT_send_data(0x80);
    
    TFT_send_cmd(0x8C); 
    TFT_send_data(0x01);
    
    TFT_send_cmd(0x8D); 
    TFT_send_data(0x01);
    
    TFT_send_cmd(0x8E); 
    TFT_send_data(0xFF);
    
    TFT_send_cmd(0x8F); 
    TFT_send_data(0xFF);
    
    TFT_send_cmd(0xB6);   //外部指令  显示功能控制
    TFT_send_data(0x00);    //扫描方向控制S1-S360 G1-32
    TFT_send_data(0x20);    
    
    TFT_send_cmd(0x36);   //调整指令 存储控制 Memory Access Control
    TFT_send_data(0x08);    //MY MX MV ML BGR MH X X
    
    TFT_send_cmd(0x3A);   //调整指令  Pixel Format Set
    TFT_send_data(0x05);      //16bit MCU数据模式
    
    TFT_send_cmd(0x90);   //xxx
    TFT_send_data(0x08); 
    TFT_send_data(0x08); 
    TFT_send_data(0x08); 
    TFT_send_data(0x08);
    
    TFT_send_cmd(0xBD);   //XXX
    TFT_send_data(0x06);
    
    TFT_send_cmd(0xBC);   //XXX
    TFT_send_data(0x00); 
    
    TFT_send_cmd(0xFF);   //XXX 
    TFT_send_data(0x60); 
    TFT_send_data(0x01); 
    TFT_send_data(0x04);
    
    TFT_send_cmd(0xC3);   //  Vreg1a voltage Control
    TFT_send_data(0x13);
    
    TFT_send_cmd(0xC4);   // Vreg1b voltage Control
    TFT_send_data(0x13);
    
    TFT_send_cmd(0xC9);   //Vreg2a voltage Control
    TFT_send_data(0x22);
    
    TFT_send_cmd(0xBE);   //XXX
    TFT_send_data(0x11); 
    
    TFT_send_cmd(0xE1);   //XXX
    TFT_send_data(0x10);
    TFT_send_data(0x0E); 
    
    TFT_send_cmd(0xDF);   //XXX
    TFT_send_data(0x21); 
    TFT_send_data(0x0c); 
    TFT_send_data(0x02); 
    
    TFT_send_cmd(0xF0);   //GAMMA1
    TFT_send_data(0x45); 
    TFT_send_data(0x09); 
    TFT_send_data(0x08); 
    TFT_send_data(0x08); 
    TFT_send_data(0x26); 
    TFT_send_data(0x2A); 
    
    TFT_send_cmd(0xF1);   //GAMMA2
    TFT_send_data(0x43); 
    TFT_send_data(0x70); 
    TFT_send_data(0x72); 
    TFT_send_data(0x36); 
    TFT_send_data(0x37); 
    TFT_send_data(0x6F); 
    
    TFT_send_cmd(0xF2);   //GAMMA3
    TFT_send_data(0x45); 
    TFT_send_data(0x09); 
    TFT_send_data(0x08); 
    TFT_send_data(0x08); 
    TFT_send_data(0x26); 
    TFT_send_data(0x2A); 
    
    TFT_send_cmd(0xF3);   ////GAMMA4
    TFT_send_data(0x43); 
    TFT_send_data(0x70); 
    TFT_send_data(0x72); 
    TFT_send_data(0x36); 
    TFT_send_data(0x37); 
    TFT_send_data(0x6F);
    
    TFT_send_cmd(0xED);   //XXX
    TFT_send_data(0x1B); 
    TFT_send_data(0x0B);
    
    TFT_send_cmd(0xAE);   //XXX
    TFT_send_data(0x77);
    
    TFT_send_cmd(0xCD);   //XXX
    TFT_send_data(0x63);
    
    TFT_send_cmd(0x70); 
    TFT_send_data(0x07); 
    TFT_send_data(0x07); 
    TFT_send_data(0x04); 
    TFT_send_data(0x0E); 
    TFT_send_data(0x0F); 
    TFT_send_data(0x09); 
    TFT_send_data(0x07); 
    TFT_send_data(0x08); 
    TFT_send_data(0x03); 
    
    TFT_send_cmd(0xE8);   //Frame Rate
    TFT_send_data(0x34);
    
    TFT_send_cmd(0x62);   //XXX
    TFT_send_data(0x18); 
    TFT_send_data(0x0D); 
    TFT_send_data(0x71); 
    TFT_send_data(0xED); 
    TFT_send_data(0x70); 
    TFT_send_data(0x70); 
    TFT_send_data(0x18); 
    TFT_send_data(0x0F); 
    TFT_send_data(0x71); 
    TFT_send_data(0xEF); 
    TFT_send_data(0x70); 
    TFT_send_data(0x70); 
    
    TFT_send_cmd(0x63);   //XXX
    TFT_send_data(0x18); 
    TFT_send_data(0x11); 
    TFT_send_data(0x71); 
    TFT_send_data(0xF1); 
    TFT_send_data(0x70); 
    TFT_send_data(0x70); 
    TFT_send_data(0x18); 
    TFT_send_data(0x13); 
    TFT_send_data(0x71); 
    TFT_send_data(0xF3); 
    TFT_send_data(0x70); 
    TFT_send_data(0x70); 
    
    TFT_send_cmd(0x64);   //XXX
    TFT_send_data(0x28); 
    TFT_send_data(0x29); 
    TFT_send_data(0xF1); 
    TFT_send_data(0x01); 
    TFT_send_data(0xF1); 
    TFT_send_data(0x00); 
    TFT_send_data(0x07);
    
    TFT_send_cmd(0x66);   //XXX
    TFT_send_data(0x3C); 
    TFT_send_data(0x00); 
    TFT_send_data(0xCD); 
    TFT_send_data(0x67); 
    TFT_send_data(0x45); 
    TFT_send_data(0x45); 
    TFT_send_data(0x10); 
    TFT_send_data(0x00); 
    TFT_send_data(0x00); 
    TFT_send_data(0x00); 
    
    TFT_send_cmd(0x67);   //XXX
    TFT_send_data(0x00); 
    TFT_send_data(0x3C); 
    TFT_send_data(0x00); 
    TFT_send_data(0x00); 
    TFT_send_data(0x00); 
    TFT_send_data(0x01); 
    TFT_send_data(0x54); 
    TFT_send_data(0x10); 
    TFT_send_data(0x32); 
    TFT_send_data(0x98);
    
    TFT_send_cmd(0x74);   //XXX
    TFT_send_data(0x10); 
    TFT_send_data(0x85); 
    TFT_send_data(0x80); 
    TFT_send_data(0x00); 
    TFT_send_data(0x00); 
    TFT_send_data(0x4E); 
    TFT_send_data(0x00);
    
    TFT_send_cmd(0x98);     //XXX
    TFT_send_data(0x3e); 
    TFT_send_data(0x07); 
    
    TFT_send_cmd(0x34);   //Tearing Effect Line Off
    TFT_send_cmd(0x21);   //Display Inversion ON
    TFT_send_cmd(0x11);   //唤醒
    //TFT_send_cmd(0x38); //Idle Mode OFF
    delay(120); 
    TFT_send_cmd(0x29);   //显示开
    delay(20);
  }
void Add_set(unsigned char x_start,unsigned char y_start,unsigned char x_end,unsigned char y_end)
  {
    TFT_send_cmd(0x2A);    //设置列地址
    TFT_send_data(0);   //列地址起始 
    TFT_send_data(x_start);
    TFT_send_data(0);   //列地址结束
    TFT_send_data(x_end);
    TFT_send_cmd(0x2B);    //设置行地址
    TFT_send_data(0);   //行地址起始 
    TFT_send_data(y_start);
    TFT_send_data(0);   //行地址结束
    TFT_send_data(y_end);
    TFT_send_cmd(0x2C);    //准备写入显示数据      
  }

void TFT_clear(void)
  {
    unsigned char Line,column;
    Add_set(0,0,TFT_COLUMN_NUMBER-1,TFT_LINE_NUMBER-1);
    for(Line=0;Line<TFT_LINE_NUMBER;Line++)             //Line loop
      {     
          for(column=0;column<TFT_COLUMN_NUMBER;column++) //column loop
            {
                TFT_send_data(0x00);
        TFT_send_data(0x00);
            }
      }
  }
void TFT_full(unsigned int color)
  {
    unsigned char Line,column;
    Add_set(0,0,TFT_COLUMN_NUMBER-1,TFT_LINE_NUMBER-1);
    for(Line=0;Line<TFT_LINE_NUMBER;Line++)             //Line loop
      { 
      
    for(column=0;column<TFT_COLUMN_NUMBER;column++) //column loop
          {
              TFT_send_data(color>>8);
        TFT_send_data(color);
          }
      }
  }
void TFT_dispoint(unsigned char x,unsigned char y,unsigned int color)
{
  Add_set(x,y,x,y);
  TFT_send_data(color>>8);
  TFT_send_data(color);
  
}


void Picture_display(u16 x,u16 y,u16 length,u16 width,const unsigned char *ptr_pic)
{
  u16 i,j;
  Add_set(x,y,x+length-1,y+width-1);
  for(i=0;i<length;i++)
  {
    for(j=0;j<width;j++)
    {

            TFT_send_data(*ptr_pic++);
      TFT_send_data(*ptr_pic++);
    }
  }     
}
void Logo_display(const unsigned char *ptr_pic,unsigned int Bcolor,unsigned int Ccolor)
{
  u16 i,j,k;
  unsigned char x;
  Add_set(55,55,182,182);
  for(i=0;i<16;i++)
  {
    for(j=0;j<128;j++)
    {
      x = *ptr_pic++;
      for(k=0;k<8;k++)
      {
        if(x&0x80)
        {
          TFT_send_data(Bcolor>>8);
          TFT_send_data(Bcolor);
        }
        else 
        {
          TFT_send_data(Ccolor>>8);
          TFT_send_data(Ccolor);
        }
        x <<=1;
      }
    }
  }     
}
void  IO_init(void )
{
pinMode(3,OUTPUT);//设置数字脚为输出
pinMode(4,OUTPUT);//设置数字脚为输出
pinMode(5,OUTPUT);//设置数字脚为输出
pinMode(6,OUTPUT);//设置数字脚为输出
pinMode(7,OUTPUT);//设置数字脚为输出


}

void  setup() 
{
   IO_init();
  TFT_init();
  TFT_clear();

}

void  loop() 
{

  TFT_full(GREEN);
  delay(1000);
  TFT_full(RED);
  delay(1000);
  TFT_full(BLUE);
  delay(1000);
  TFT_full(WHITE);
  delay(1000);
    TFT_clear();
//   Logo_display(&picture_tab[0],RED,GREEN);
//  delay(1000);
   /*  Picture_display(0,0,240,240,gImage_BP);
    delay(10000); */
//    Picture_display(0,0,240,240,gImage_TKR);
//    delay(10000);


}
