Documente Academic
Documente Profesional
Documente Cultură
Pay an attention!
This code is designed for Arduino Mega board.
**********************************************/
/**********************************************
Define zone
**********************************************/
#define RS A5
#define WR A4
#define CS A3
#define RST A2
#define
#define
#define
#define
#define
T_CLK 8
T_CS 9
T_DIN 10
T_DOUT A1
T_IRQ A0
13.78
411
#define PixSizeY
#define PixOffsY
11.01
378
#define
#define
#define
#define
#define
#define
#define
WINDOW_XADDR_START
WINDOW_XADDR_END
WINDOW_YADDR_START
WINDOW_YADDR_END
GRAM_XADDR
GRAM_YADDR
GRAMWR
/* LCD color */
#define White
#define Black
#define Blue
#define Blue2
#define Red
#define Magenta
#define Green
#define Cyan
#define Yellow
0xFFFF
0x0000
0x001F
0x051F
0xF800
0xF81F
0x07E0
0x7FFF
0xFFE0
/**********************************************
Val Zone
**********************************************/
int TP_X,TP_Y;
/**********************************************
Write_Command_Data(0x0008,0x0207);
Write_Command_Data(0x0009,0x0000);
Write_Command_Data(0x000A,0x0000);
Write_Command_Data(0x000C,0x0000);
Write_Command_Data(0x000D,0x0000);
Write_Command_Data(0x000F,0x0000);
//power on sequence VGHVGL
Write_Command_Data(0x0010,0x0000);
Write_Command_Data(0x0011,0x0007);
Write_Command_Data(0x0012,0x0000);
Write_Command_Data(0x0013,0x0000);
//vgh
Write_Command_Data(0x0010,0x1290);
Write_Command_Data(0x0011,0x0227);
//delays(100);
//vregiout
Write_Command_Data(0x0012,0x001d); //0x001b
//delays(100);
//vom amplitude
Write_Command_Data(0x0013,0x1500);
//delays(100);
//vom H
Write_Command_Data(0x0029,0x0018);
Write_Command_Data(0x002B,0x000D);
//gamma
Write_Command_Data(0x0030,0x0004);
Write_Command_Data(0x0031,0x0307);
Write_Command_Data(0x0032,0x0002);// 0006
Write_Command_Data(0x0035,0x0206);
Write_Command_Data(0x0036,0x0408);
Write_Command_Data(0x0037,0x0507);
Write_Command_Data(0x0038,0x0204);//0200
Write_Command_Data(0x0039,0x0707);
Write_Command_Data(0x003C,0x0405);// 0504
Write_Command_Data(0x003D,0x0F02);
//ram
Write_Command_Data(0x0050,0x0000);
Write_Command_Data(0x0051,0x00EF);
Write_Command_Data(0x0052,0x0000);
Write_Command_Data(0x0053,0x013F);
Write_Command_Data(0x0060,0xA700);
Write_Command_Data(0x0061,0x0001);
Write_Command_Data(0x006A,0x0000);
//
Write_Command_Data(0x0080,0x0000);
Write_Command_Data(0x0081,0x0000);
Write_Command_Data(0x0082,0x0000);
Write_Command_Data(0x0083,0x0000);
Write_Command_Data(0x0084,0x0000);
Write_Command_Data(0x0085,0x0000);
//
Write_Command_Data(0x0090,0x0010);
Write_Command_Data(0x0092,0x0600);
Write_Command_Data(0x0093,0x0003);
Write_Command_Data(0x0095,0x0110);
Write_Command_Data(0x0097,0x0000);
Write_Command_Data(0x0098,0x0000);
Write_Command_Data(0x0007,0x0133);
}
void SetXY(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
{
Write_Command_Data(WINDOW_XADDR_START,x0);
Write_Command_Data(WINDOW_XADDR_END,x1);
Write_Command_Data(WINDOW_YADDR_START,y0);
Write_Command_Data(WINDOW_YADDR_END,y1);
Write_Command_Data(GRAM_XADDR,x0);
Write_Command_Data(GRAM_YADDR,y0);
Write_Command (0x0022);//LCD_WriteCMD(GRAMWR);
}
void Pant(unsigned int color)
{
int i,j;
SetXY(0,240,0,320);
for(i=0;i<320;i++)
{
for (j=0;j<240;j++)
{
Write_Data(color);
}
}
}
void LCD_clear()
{
unsigned int i,j;
SetXY(0,240,0,320);
for(i=0;i<X_CONST;i++)
{
for(j=0;j<Y_CONST;j++)
{
Write_Data(0x0000);
}
}
}
void Touch_Init(void)
{
pinMode(T_CLK, OUTPUT);
pinMode(T_CS, OUTPUT);
pinMode(T_DIN, OUTPUT);
pinMode(T_DOUT, INPUT);
pinMode(T_IRQ, INPUT);
digitalWrite(T_CS,
digitalWrite(T_CLK,
digitalWrite(T_DIN,
digitalWrite(T_CLK,
HIGH);
HIGH);
HIGH);
HIGH);
}
void Touch_WriteData(unsigned char data)
{
unsigned char temp;
unsigned char nop;
unsigned char count;
temp=data;
digitalWrite(T_CLK,LOW);
avail = !digitalRead(T_IRQ);
return avail;
}
int Touch_GetX()
{
int value;
value = ((TP_X-PixOffsX)/PixSizeX);
if (value < 0)
value = 0;
return value;
}
int Touch_GetY()
{
int value;
value = ((TP_Y-PixOffsY)/PixSizeY);
if (value < 0)
value = 0;
return value;
}
/**********************************************
Arduino functions zone
**********************************************/
void setup()
{
Lcd_Init();
Touch_Init();
LCD_clear();
Pant(0xf800);
Pant(0x07e0);
Pant(0x001f);
Pant(0xffff);
Pant(0x0000);
}
void loop()
{
unsigned int i,j;
while(Touch_DataAvailable() == 1)
{
Touch_Read();
i = Touch_GetX();
j = Touch_GetY();
SetXY(i,i,j,j);
Write_Data(0xFFFF);
}
}