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 // Arduino ProMini pinout
12 // MISO - D12 not connected
28 volatile uint8_t *P_SCK, *P_MOSI, *P_DC, *P_RST, *P_CS;
29 volatile uint8_t B_SCK, B_MOSI, B_DC, B_RST, B_CS;
31 void LCD_Writ_Bus(char data)
34 for (unsigned char c=0; c<8; c++)
48 void LCD_Write_COM(char VL)
50 digitalWrite(LCD_DC,LOW);
54 void LCD_Write_DATA(char VL)
56 digitalWrite(LCD_DC,HIGH);
60 void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
63 LCD_Write_DATA(x1>>8);
65 LCD_Write_DATA(x2>>8);
69 LCD_Write_DATA(y1>>8);
71 LCD_Write_DATA(y2>>8);
79 P_SCK = portOutputRegister(digitalPinToPort(LCD_SCK));
80 B_SCK = digitalPinToBitMask(LCD_SCK);
81 P_MOSI = portOutputRegister(digitalPinToPort(LCD_MOSI));
82 B_MOSI = digitalPinToBitMask(LCD_MOSI);
83 P_DC = portOutputRegister(digitalPinToPort(LCD_DC));
84 B_DC = digitalPinToBitMask(LCD_DC);
85 P_RST = portOutputRegister(digitalPinToPort(LCD_REST));
86 B_RST = digitalPinToBitMask(LCD_REST);
87 P_CS = portOutputRegister(digitalPinToPort(LCD_CS));
88 B_CS = digitalPinToBitMask(LCD_CS);
102 LCD_Write_DATA(0x00);
103 LCD_Write_DATA(0XC1);
104 LCD_Write_DATA(0X30);
107 LCD_Write_DATA(0x85);
108 LCD_Write_DATA(0x00);
109 LCD_Write_DATA(0x78);
112 LCD_Write_DATA(0x00);
113 LCD_Write_DATA(0x00);
116 LCD_Write_DATA(0x64);
117 LCD_Write_DATA(0x03);
118 LCD_Write_DATA(0X12);
119 LCD_Write_DATA(0X81);
122 LCD_Write_DATA(0x20);
124 LCD_Write_COM(0xC0); //Power control
125 LCD_Write_DATA(0x23); //VRH[5:0]
127 LCD_Write_COM(0xC1); //Power control
128 LCD_Write_DATA(0x10); //SAP[2:0];BT[3:0]
130 LCD_Write_COM(0xC5); //VCM control
131 LCD_Write_DATA(0x3e); //Contrast
132 LCD_Write_DATA(0x28);
134 LCD_Write_COM(0xC7); //VCM control2
135 LCD_Write_DATA(0x86); //--
137 LCD_Write_COM(0x36); // Memory Access Control
138 LCD_Write_DATA(0x48); //C8 //48 68竖屏//28 E8 横屏
141 LCD_Write_DATA(0x55);
144 LCD_Write_DATA(0x00);
145 LCD_Write_DATA(0x18);
147 LCD_Write_COM(0xB6); // Display Function Control
148 LCD_Write_DATA(0x08);
149 LCD_Write_DATA(0x82);
150 LCD_Write_DATA(0x27);
152 LCD_Write_COM(0xF2); // 3Gamma Function Disable
153 LCD_Write_DATA(0x00);
155 LCD_Write_COM(0x26); //Gamma curve selected
156 LCD_Write_DATA(0x01);
158 LCD_Write_COM(0xE0); //Set Gamma
159 LCD_Write_DATA(0x0F);
160 LCD_Write_DATA(0x31);
161 LCD_Write_DATA(0x2B);
162 LCD_Write_DATA(0x0C);
163 LCD_Write_DATA(0x0E);
164 LCD_Write_DATA(0x08);
165 LCD_Write_DATA(0x4E);
166 LCD_Write_DATA(0xF1);
167 LCD_Write_DATA(0x37);
168 LCD_Write_DATA(0x07);
169 LCD_Write_DATA(0x10);
170 LCD_Write_DATA(0x03);
171 LCD_Write_DATA(0x0E);
172 LCD_Write_DATA(0x09);
173 LCD_Write_DATA(0x00);
175 LCD_Write_COM(0XE1); //Set Gamma
176 LCD_Write_DATA(0x00);
177 LCD_Write_DATA(0x0E);
178 LCD_Write_DATA(0x14);
179 LCD_Write_DATA(0x03);
180 LCD_Write_DATA(0x11);
181 LCD_Write_DATA(0x07);
182 LCD_Write_DATA(0x31);
183 LCD_Write_DATA(0xC1);
184 LCD_Write_DATA(0x48);
185 LCD_Write_DATA(0x08);
186 LCD_Write_DATA(0x0F);
187 LCD_Write_DATA(0x0C);
188 LCD_Write_DATA(0x31);
189 LCD_Write_DATA(0x36);
190 LCD_Write_DATA(0x0F);
192 LCD_Write_COM(0x11); //Exit Sleep
195 LCD_Write_COM(0x29); //Display on
202 Address_set(0,0,240,320);