//Working for Banggood TFT Touch LCD Shield #define LCD_RD A0 // LCD Read goes to Analog 0 #define LCD_WR A1 // LCD Write goes to Analog 1 #define LCD_RS A2 // Command/Data goes to Analog 2, Labled LCD_RS #define LCD_CS A3 // Chip Select goes to Analog 3 #define LCD_REST A4 // Can alternately just connect to Arduino's reset pin. void Lcd_Writ_Bus(unsigned char VH) { unsigned int i,temp,data; data=VH; for(i=8;i<=9;i++) { temp=(data&0x01); if(temp) digitalWrite(i,HIGH); else digitalWrite(i,LOW); data=data>>1; } digitalWrite(LCD_WR,LOW); for(i=2;i<=7;i++) { temp=(data&0x01); if(temp) digitalWrite(i,HIGH); else digitalWrite(i,LOW); data=data>>1; } digitalWrite(LCD_WR,HIGH); } void Lcd_Write_Com(unsigned char VH) { digitalWrite(LCD_CS,LOW); digitalWrite(LCD_RS,LOW); Lcd_Writ_Bus(VH); digitalWrite(LCD_CS,HIGH); digitalWrite(LCD_RS,HIGH); } void Lcd_Write_Data(unsigned char VH) { digitalWrite(LCD_CS,LOW); digitalWrite(LCD_RS,HIGH); Lcd_Writ_Bus(VH); digitalWrite(LCD_CS,HIGH); digitalWrite(LCD_RS,HIGH); } void Lcd_Init(void) { digitalWrite(LCD_REST,HIGH); delay(5); digitalWrite(LCD_REST,LOW); delay(15); digitalWrite(LCD_REST,HIGH); delay(15); Lcd_Write_Com(0xF0);// PASSWD1 W 2 Test Key 5A 5A Lcd_Write_Data(0x5A);// This Data enable level 2 command input. Lcd_Write_Data(0x5A); //This Data enable level 2 command input. // Lcd_Write_Com(0xFC); // Unknown Command. Treated os NOP? // Lcd_Write_Data(0x5A); // Lcd_Write_Data(0x5A); // Lcd_Write_Com(0xFD); // Unknown Command. Treated os NOP? // Lcd_Write_Data(0x00); // Lcd_Write_Data(0x00); // Lcd_Write_Data(0x10); // Lcd_Write_Data(0x14); // Lcd_Write_Data(0x12); // Lcd_Write_Data(0x00); // Lcd_Write_Data(0x04); // Lcd_Write_Data(0x48); // Lcd_Write_Data(0x40); // Lcd_Write_Data(0x16); // Lcd_Write_Data(0x16); Lcd_Write_Com(0x35); // Tearing EffectLine On Lcd_Write_Com(0x36); // MADCTL (Memory Data Access Control) Lcd_Write_Data(0x28); //0x68 Page/Column Selection, RGB-BGR Order. Lcd_Write_Com(0x3A); // COLMOD (Interface Pixel Format) Lcd_Write_Data(0x55); //RGB Interface Color Format 16Bit,Control Interface Color Format 16bit. Lcd_Write_Com(0xF2); // DISCTL (Display Control) 17 Parameters Lcd_Write_Data(0x28); // Set 320 Scan Lines Lcd_Write_Data(0x5B); // Set the horizontal clock (CL1) period. Default is 148. Lcd_Write_Data(0x7F); // Select the panel driving method. All set to Inversion! Lcd_Write_Data(0x08); Lcd_Write_Data(0x08); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x15); Lcd_Write_Data(0x48); Lcd_Write_Data(0x04); Lcd_Write_Data(0x07); Lcd_Write_Data(0x01); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x63); Lcd_Write_Data(0x08); Lcd_Write_Data(0x08); Lcd_Write_Com(0xF7); //pump ratio control Lcd_Write_Data(0x01); Lcd_Write_Data(0x00); Lcd_Write_Data(0x10); Lcd_Write_Data(0x00); Lcd_Write_Com(0xF8); //? Lcd_Write_Data(0x33); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Com(0xF6); //Interface Control Lcd_Write_Data(0x01); Lcd_Write_Data(0x01); Lcd_Write_Data(0x07); Lcd_Write_Data(0x00); Lcd_Write_Data(0x01); Lcd_Write_Data(0x0C); Lcd_Write_Data(0x03); Lcd_Write_Data(0x0C); Lcd_Write_Data(0x03); Lcd_Write_Com(0xF5); //? Lcd_Write_Data(0x00); Lcd_Write_Data(0x2E); Lcd_Write_Data(0x40); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x01); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x0D); Lcd_Write_Data(0x0D); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Com(0xF4); //? Lcd_Write_Data(0x07); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x22); Lcd_Write_Data(0x64); Lcd_Write_Data(0x01); Lcd_Write_Data(0x02); Lcd_Write_Data(0x2A); Lcd_Write_Data(0x4D); Lcd_Write_Data(0x06); Lcd_Write_Data(0x2A); Lcd_Write_Data(0x00); Lcd_Write_Data(0x06); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Com(0xF3); //MANPWRSEQ (Power Control) Lcd_Write_Data(0x01); //GAMMA Lcd_Write_Com(0xF9); //? Lcd_Write_Data(0x04); Lcd_Write_Com(0xFA); //? Lcd_Write_Data(0x0A); Lcd_Write_Data(0x04); Lcd_Write_Data(0x0C); Lcd_Write_Data(0x19); Lcd_Write_Data(0x25); Lcd_Write_Data(0x33); Lcd_Write_Data(0x2D); Lcd_Write_Data(0x27); Lcd_Write_Data(0x22); Lcd_Write_Data(0x1E); Lcd_Write_Data(0x1A); Lcd_Write_Data(0x00); Lcd_Write_Com(0xFB); //? Lcd_Write_Data(0x0C); Lcd_Write_Data(0x04); Lcd_Write_Data(0x19); Lcd_Write_Data(0x1E); Lcd_Write_Data(0x20); Lcd_Write_Data(0x23); Lcd_Write_Data(0x18); Lcd_Write_Data(0x3D); Lcd_Write_Data(0x25); Lcd_Write_Data(0x19); Lcd_Write_Data(0x0B); Lcd_Write_Data(0x00); Lcd_Write_Com(0xF9); //? Lcd_Write_Data(0x02); Lcd_Write_Com(0xFA); //? Lcd_Write_Data(0x0A); Lcd_Write_Data(0x04); Lcd_Write_Data(0x0C); Lcd_Write_Data(0x19); Lcd_Write_Data(0x25); Lcd_Write_Data(0x33); Lcd_Write_Data(0x2D); Lcd_Write_Data(0x27); Lcd_Write_Data(0x22); Lcd_Write_Data(0x1E); Lcd_Write_Data(0x1A); Lcd_Write_Data(0x00); Lcd_Write_Com(0xFB); //? Lcd_Write_Data(0x0C); Lcd_Write_Data(0x04); Lcd_Write_Data(0x19); Lcd_Write_Data(0x1E); Lcd_Write_Data(0x20); Lcd_Write_Data(0x23); Lcd_Write_Data(0x18); Lcd_Write_Data(0x3D); Lcd_Write_Data(0x25); Lcd_Write_Data(0x19); Lcd_Write_Data(0x0B); Lcd_Write_Data(0x00); Lcd_Write_Com(0xF9); //? Lcd_Write_Data(0x01); Lcd_Write_Com(0xFA); //? Lcd_Write_Data(0x0A); Lcd_Write_Data(0x04); Lcd_Write_Data(0x0C); Lcd_Write_Data(0x19); Lcd_Write_Data(0x25); Lcd_Write_Data(0x33); Lcd_Write_Data(0x2D); Lcd_Write_Data(0x27); Lcd_Write_Data(0x22); Lcd_Write_Data(0x1E); Lcd_Write_Data(0x1A); Lcd_Write_Data(0x00); Lcd_Write_Com(0xFB); //? Lcd_Write_Data(0x0C); Lcd_Write_Data(0x04); Lcd_Write_Data(0x19); Lcd_Write_Data(0x1E); Lcd_Write_Data(0x20); Lcd_Write_Data(0x23); Lcd_Write_Data(0x18); Lcd_Write_Data(0x3D); Lcd_Write_Data(0x25); Lcd_Write_Data(0x19); Lcd_Write_Data(0x0B); Lcd_Write_Data(0x00); Lcd_Write_Com(0x11); //Exit Sleep delay(100); Lcd_Write_Com(0xF0);//? Lcd_Write_Data(0xA5); Lcd_Write_Data(0xA5); Lcd_Write_Com(0xFC);//? Lcd_Write_Data(0xA5); Lcd_Write_Data(0xA5); Lcd_Write_Com(0x2a);//Column Address Set Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x01);//0x01 Lcd_Write_Data(0x3f);//0x3f Lcd_Write_Com(0x2b);//Page Address Set Lcd_Write_Data(0x00); Lcd_Write_Data(0x00); Lcd_Write_Data(0x00);//0x00 Lcd_Write_Data(0xef);//0xef Lcd_Write_Com(0x29);// Display On Lcd_Write_Com(0x2c);//Memory Write } void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2) { Lcd_Write_Com(0x2a); //Column Address Set Lcd_Write_Data(x1>>8); Lcd_Write_Data(x1&0xFF); Lcd_Write_Data(x2>>8); //0x01 Lcd_Write_Data(x2&0xFF);//0x3f Lcd_Write_Com(0x2b); //Page Address Set Lcd_Write_Data(y1>>8); Lcd_Write_Data(y1&0xFF); Lcd_Write_Data(y2>>8);//0x01 Lcd_Write_Data(y2&0xFF);//0x3f Lcd_Write_Com(0x2c); //Memory Write } void H_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c) { unsigned int i,j; l=l+x; Address_set(x,y,l,y); j=l*2; for(i=1;i<=j;i++) { Lcd_Write_Data(c>>8); Lcd_Write_Data(c&0xFF); } } void V_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c) { unsigned int i,j; l=l+y; Address_set(x,y,x,l); j=l*2; for(i=1;i<=j;i++) { Lcd_Write_Data(c>>8); Lcd_Write_Data(c&0xFF); } } void Rect(unsigned int x,unsigned int y,unsigned int w,unsigned int h,unsigned int c) { H_line(x , y , w, c); H_line(x , y+h, w, c); V_line(x , y , h, c); V_line(x+w, y , h, c); } void Rectf(unsigned int x,unsigned int y,unsigned int w,unsigned int h,unsigned int c) { unsigned int i; for(i=0;i>8); Lcd_Write_Data(j); } } void setup() { for(int p=2;p<10;p++) { pinMode(p,OUTPUT); } pinMode(A0,OUTPUT); pinMode(A1,OUTPUT); pinMode(A2,OUTPUT); pinMode(A3,OUTPUT); pinMode(A4,OUTPUT); digitalWrite(A0, HIGH); digitalWrite(A1, HIGH); digitalWrite(A2, HIGH); digitalWrite(A3, HIGH); digitalWrite(A4, HIGH); Lcd_Init(); //LCD_Clear(0xF800); //delay(1000); //LCD_Clear(0x07E0); //delay(1000); //LCD_Clear(0x001F); //delay(1000); LCD_Clear(0x0000); } void loop() { int p; for(int i=0;i<1000;i++) { Rect(random(100),random(100),random(100),random(100),random(65535)); // rectangle at x, y, with, hight, color //LCD_Clear(0xf800);//RED //delay(1000); //LCD_Clear(0x07E0); //delay(1000); //LCD_Clear(0x001F); //delay(1000); //LCD_Clear(0xffff);//WHITE //delay(1000); } LCD_Clear(0x0000); }