1 /*==========================================================================
2 The LCD connection is the same as Nokia LCD5110 and is a“8 Bit Pant Demo“
4 Just for ElecFreaks TFT01-2.2SP, which use SPI serial port and 240x320 pixel.
8 ==========================================================================*/
9 #include "pins_arduino.h"
11 #define LCD_WR 9 //SCL
12 #define LCD_RS 10 //SDA
13 #define LCD_DC 11 //A0
14 #define LCD_REST 12 //RESET
15 #define LCD_CS 13 //CSE
17 volatile uint8_t *P_SCK, *P_MOSI, *P_DC, *P_RST, *P_CS;
18 volatile uint8_t B_SCK, B_MOSI, B_DC, B_RST, B_CS;
20 void LCD_Writ_Bus(char data)
23 for (unsigned char c=0; c<8; c++)
37 void LCD_Write_COM(char VL)
39 digitalWrite(LCD_DC,LOW);
43 void LCD_Write_DATA(char VL)
45 digitalWrite(LCD_DC,HIGH);
49 void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
52 LCD_Write_DATA(x1>>8);
54 LCD_Write_DATA(x2>>8);
58 LCD_Write_DATA(y1>>8);
60 LCD_Write_DATA(y2>>8);
68 P_SCK = portOutputRegister(digitalPinToPort(LCD_WR));
69 B_SCK = digitalPinToBitMask(LCD_WR);
70 P_MOSI = portOutputRegister(digitalPinToPort(LCD_RS));
71 B_MOSI = digitalPinToBitMask(LCD_RS);
72 P_DC = portOutputRegister(digitalPinToPort(LCD_DC));
73 B_DC = digitalPinToBitMask(LCD_DC);
74 P_RST = portOutputRegister(digitalPinToPort(LCD_REST));
75 B_RST = digitalPinToBitMask(LCD_REST);
76 P_CS = portOutputRegister(digitalPinToPort(LCD_CS));
77 B_CS = digitalPinToBitMask(LCD_CS);
101 LCD_Write_DATA(0x00);
102 LCD_Write_DATA(0x00);
105 LCD_Write_DATA(0x64);
106 LCD_Write_DATA(0x03);
107 LCD_Write_DATA(0X12);
108 LCD_Write_DATA(0X81);
111 LCD_Write_DATA(0x20);
113 LCD_Write_COM(0xC0); //Power control
114 LCD_Write_DATA(0x23); //VRH[5:0]
116 LCD_Write_COM(0xC1); //Power control
117 LCD_Write_DATA(0x10); //SAP[2:0];BT[3:0]
119 LCD_Write_COM(0xC5); //VCM control
120 LCD_Write_DATA(0x3e); //Contrast
121 LCD_Write_DATA(0x28);
123 LCD_Write_COM(0xC7); //VCM control2
124 LCD_Write_DATA(0x86); //--
126 LCD_Write_COM(0x36); // Memory Access Control
127 LCD_Write_DATA(0x48); //C8 //48 68竖屏//28 E8 横屏
130 LCD_Write_DATA(0x55);
133 LCD_Write_DATA(0x00);
134 LCD_Write_DATA(0x18);
136 LCD_Write_COM(0xB6); // Display Function Control
137 LCD_Write_DATA(0x08);
138 LCD_Write_DATA(0x82);
139 LCD_Write_DATA(0x27);
141 LCD_Write_COM(0xF2); // 3Gamma Function Disable
142 LCD_Write_DATA(0x00);
144 LCD_Write_COM(0x26); //Gamma curve selected
145 LCD_Write_DATA(0x01);
147 LCD_Write_COM(0xE0); //Set Gamma
148 LCD_Write_DATA(0x0F);
149 LCD_Write_DATA(0x31);
150 LCD_Write_DATA(0x2B);
151 LCD_Write_DATA(0x0C);
152 LCD_Write_DATA(0x0E);
153 LCD_Write_DATA(0x08);
154 LCD_Write_DATA(0x4E);
155 LCD_Write_DATA(0xF1);
156 LCD_Write_DATA(0x37);
157 LCD_Write_DATA(0x07);
158 LCD_Write_DATA(0x10);
159 LCD_Write_DATA(0x03);
160 LCD_Write_DATA(0x0E);
161 LCD_Write_DATA(0x09);
162 LCD_Write_DATA(0x00);
164 LCD_Write_COM(0XE1); //Set Gamma
165 LCD_Write_DATA(0x00);
166 LCD_Write_DATA(0x0E);
167 LCD_Write_DATA(0x14);
168 LCD_Write_DATA(0x03);
169 LCD_Write_DATA(0x11);
170 LCD_Write_DATA(0x07);
171 LCD_Write_DATA(0x31);
172 LCD_Write_DATA(0xC1);
173 LCD_Write_DATA(0x48);
174 LCD_Write_DATA(0x08);
175 LCD_Write_DATA(0x0F);
176 LCD_Write_DATA(0x0C);
177 LCD_Write_DATA(0x31);
178 LCD_Write_DATA(0x36);
179 LCD_Write_DATA(0x0F);
181 LCD_Write_COM(0x11); //Exit Sleep
184 LCD_Write_COM(0x29); //Display on
191 Address_set(0,0,240,320);