1 /*
2 * Copyright (c) 2006-2021, RT-Thread Development Team
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Change Logs:
7 * Date Author Notes
8 * 2021-10-14 spaceman first version
9 */
10
11 #include "lcd.h"
12
13 // __align(256) rt_uint32_t LTDC_Buf[XSIZE_PHYS * YSIZE_PHYS];
14
LCD_delay(volatile int time)15 volatile void LCD_delay(volatile int time) //简单软件延时
16 {
17 // volatile rt_uint32_t i;
18 // while (time--)
19 // for (i = 500; i > 0; i--)
20 // ;
21 rt_thread_mdelay(time);
22 }
LTDC_Clock_Set(void)23 void LTDC_Clock_Set(void) //设置LTDC时钟
24 {
25 RCC->AHB1ENR |= 1 << 31;
26 RCC->CR |= 1 << 28;
27 RCC->PLLDCKCFGR = 0x1 << 16; //分频系数 0~3 --> 2,4,6,8
28 RCC->PLLLCDCFGR = 6 << 6; //倍频系数
29 }
GPIO_RGB_INIT(void)30 void GPIO_RGB_INIT(void)
31 {
32 GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO初始化结构体变量
33
34 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOD | RCC_AHBPeriph_GPIOE, ENABLE);
35
36 //DE=PB4, PCLK=PB5, HSYNC=PB6, VSYNC=PB7
37 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
38 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
39 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
40 GPIO_Init(GPIOB, &GPIO_InitStructure);
41
42 //lcd_reset:PD6 LCD_Black_Light On Off :PD8
43 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8;
44 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
45 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
46 GPIO_Init(GPIOD, &GPIO_InitStructure);
47
48 // GPIO模拟SPI初始化液晶屏 SPI_SDA SPI_DCLK LCD_SPI_CS
49 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_9 | GPIO_Pin_11;
50 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
51 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
52 GPIO_Init(GPIOB, &GPIO_InitStructure);
53
54 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
55 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
56 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
57 GPIO_Init(GPIOE, &GPIO_InitStructure);
58
59 GPIO_PinAFConfig(GPIOB, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7, GPIO_AF_LTDC); //PB4~7复用为LTDC的同步信号线
60 GPIO_PinAFConfig(GPIOE, GPIO_Pin_All, GPIO_AF_LTDC); //GPIOE所有的IO全部复用为LTDC的数据线
61 }
LCD_Reset(void)62 static void LCD_Reset(void)
63 {
64 //注意,现在科学发达,有的屏不用复位也行
65 LCD_RST(0);
66 LCD_delay(200);
67 LCD_RST(1);
68 LCD_delay(200);
69 }
set_resolutionXX(LCD_FORM_TypeDef * LCD_FORM)70 void set_resolutionXX(LCD_FORM_TypeDef *LCD_FORM)
71 {
72 rt_uint32_t aHorStart;
73 rt_uint32_t aHorEnd;
74 rt_uint32_t aVerStart;
75 rt_uint32_t aVerEnd;
76
77 aHorStart = LCD_FORM->blkHorEnd + 1;
78 aHorEnd = aHorStart + LCD_FORM->aHorLen;
79 aVerStart = LCD_FORM->blkVerEnd + 1;
80 aVerEnd = aVerStart + LCD_FORM->aVerLen;
81
82 LTDC->P_HOR = aHorEnd; //总宽度
83 LTDC->HSYNC = (LCD_FORM->sHsyncStart << 16) | LCD_FORM->sHsyncEnd; //水平同步信号起始和结束,位于背景色中间
84 LTDC->A_HOR = (aHorStart << 16) | aHorEnd; //水平激活起始和结束
85 LTDC->A_HOR_LEN = LCD_FORM->aHorLen; //水平激活域宽度
86 LTDC->BLK_HOR = (0 << 16) | LCD_FORM->blkHorEnd; //背景开始和结束宽度0~激活地址
87 LTDC->P_VER = aVerEnd;
88 LTDC->VSYNC = (LCD_FORM->sVsyncStart << 16) | LCD_FORM->sVsyncEnd;
89 LTDC->A_VER = (aVerStart << 16) | aVerEnd;
90 LTDC->A_VER_LEN = LCD_FORM->aVerLen;
91 LTDC->BLK_VER = (0 << 16) | LCD_FORM->blkVerEnd;
92 }
93
Set_LCD_Timing_to_LTDC(rt_uint32_t LTDC_Buf1,rt_uint32_t LTDC_Buf2)94 void Set_LCD_Timing_to_LTDC(rt_uint32_t LTDC_Buf1, rt_uint32_t LTDC_Buf2)
95 {
96 LCD_FORM_TypeDef LCD_FORM;
97 LTDC->OUT_EN = 0;
98 LTDC->DP_ADDR0 = LTDC_Buf1; //第0层地址
99 LTDC->DP_ADDR1 = LTDC_Buf2;//第一层地址
100 LTDC->BLK_DATA = 0x0000; //背景色
101
102 LCD_FORM.sHsyncStart = 0x2; //水平激活起始
103 LCD_FORM.sHsyncEnd = 0x3; //水平激活结束
104 LCD_FORM.aHorLen = 480 - 1; //水平分辨率
105 LCD_FORM.blkHorEnd = 0xf; //水平消隐
106
107 LCD_FORM.sVsyncStart = 0x2; //垂直激活起始
108 LCD_FORM.sVsyncEnd = 0x3; //垂直激活结束
109 LCD_FORM.aVerLen = 800 - 1; //垂直分辨率
110 LCD_FORM.blkVerEnd = 0xF; //垂直消隐
111
112 set_resolutionXX(&LCD_FORM);
113
114 LTDC->VI_FORMAT = 0;
115 LTDC->POL_CTL = 0x8 + 3;
116 LTDC->OUT_EN |= 0x107;
117 }
LTDC_IRQHandler(void)118 void LTDC_IRQHandler(void)
119 {
120 LTDC->INTR_CLR = 2;
121 LTDC->DP_SWT ^= 1; //连续显示两幅图片
122 if (LTDC->DP_SWT != 0)
123 {
124 // fun_test(SDRAM_RGB_ADD);
125 }
126 else
127 {
128 // fun_test(SDRAM_RGB_ADD+SDRAM_RGB_OFFSET);
129 }
130 // if(LTDC->INTR_STA & 2)
131 // {
132
133 // }
134 }
135
LCD_WriteByteSPI(unsigned char byte)136 void LCD_WriteByteSPI(unsigned char byte)
137 {
138 unsigned char n;
139
140 for (n = 0; n < 8; n++)
141 {
142 if (byte & 0x80)
143 SPI_SDA(1)
144 else
145 SPI_SDA(0)
146 byte <<= 1;
147
148 SPI_DCLK(0);
149 SPI_DCLK(1);
150 }
151 }
SPI_WriteComm(rt_uint16_t CMD)152 void SPI_WriteComm(rt_uint16_t CMD)
153 {
154 LCD_SPI_CS(0);
155 LCD_WriteByteSPI(0X20);
156 LCD_WriteByteSPI(CMD >> 8);
157 LCD_WriteByteSPI(0X00);
158 LCD_WriteByteSPI(CMD);
159
160 LCD_SPI_CS(1);
161 }
SPI_WriteData(rt_uint16_t tem_data)162 void SPI_WriteData(rt_uint16_t tem_data)
163 {
164 LCD_SPI_CS(0);
165 LCD_WriteByteSPI(0x40);
166 LCD_WriteByteSPI(tem_data);
167 LCD_SPI_CS(1);
168 }
BlockWrite(unsigned int Xstart,unsigned int Xend,unsigned int Ystart,unsigned int Yend)169 void BlockWrite(unsigned int Xstart, unsigned int Xend, unsigned int Ystart, unsigned int Yend)
170 {
171 SPI_WriteComm(0x2a00);
172 SPI_WriteData(Xstart >> 8);
173 SPI_WriteComm(0x2a01);
174 SPI_WriteData(Xstart & 0xff);
175 SPI_WriteComm(0x2a02);
176 SPI_WriteData(Xend >> 8);
177 SPI_WriteComm(0x2a03);
178 SPI_WriteData(Xend & 0xff);
179
180 SPI_WriteComm(0x2b00);
181 SPI_WriteData(Ystart >> 8);
182 SPI_WriteComm(0x2b01);
183 SPI_WriteData(Ystart & 0xff);
184 SPI_WriteComm(0x2b02);
185 SPI_WriteData(Yend >> 8);
186 SPI_WriteComm(0x2b03);
187 SPI_WriteData(Yend & 0xff);
188
189 SPI_WriteComm(0x2c00);
190 // for(Xstart=0;Xstart<1000;Xstart++)SPI_WriteData(0x55);
191 }
Lcd_Initialize(void)192 void Lcd_Initialize(void)
193 {
194 LCD_SPI_CS(1);
195 LCD_delay(20);
196 LCD_SPI_CS(0);
197 LCD_Reset();
198
199 //ENABLE PAGE 1
200 SPI_WriteComm(0xF000);
201 SPI_WriteData(0x55);
202 SPI_WriteComm(0xF001);
203 SPI_WriteData(0xAA);
204 SPI_WriteComm(0xF002);
205 SPI_WriteData(0x52);
206 SPI_WriteComm(0xF003);
207 SPI_WriteData(0x08);
208 SPI_WriteComm(0xF004);
209 SPI_WriteData(0x01);
210
211 //GAMMA SETING RED
212 SPI_WriteComm(0xD100);
213 SPI_WriteData(0x00);
214 SPI_WriteComm(0xD101);
215 SPI_WriteData(0x00);
216 SPI_WriteComm(0xD102);
217 SPI_WriteData(0x1b);
218 SPI_WriteComm(0xD103);
219 SPI_WriteData(0x44);
220 SPI_WriteComm(0xD104);
221 SPI_WriteData(0x62);
222 SPI_WriteComm(0xD105);
223 SPI_WriteData(0x00);
224 SPI_WriteComm(0xD106);
225 SPI_WriteData(0x7b);
226 SPI_WriteComm(0xD107);
227 SPI_WriteData(0xa1);
228 SPI_WriteComm(0xD108);
229 SPI_WriteData(0xc0);
230 SPI_WriteComm(0xD109);
231 SPI_WriteData(0xee);
232 SPI_WriteComm(0xD10A);
233 SPI_WriteData(0x55);
234 SPI_WriteComm(0xD10B);
235 SPI_WriteData(0x10);
236 SPI_WriteComm(0xD10C);
237 SPI_WriteData(0x2c);
238 SPI_WriteComm(0xD10D);
239 SPI_WriteData(0x43);
240 SPI_WriteComm(0xD10E);
241 SPI_WriteData(0x57);
242 SPI_WriteComm(0xD10F);
243 SPI_WriteData(0x55);
244 SPI_WriteComm(0xD110);
245 SPI_WriteData(0x68);
246 SPI_WriteComm(0xD111);
247 SPI_WriteData(0x78);
248 SPI_WriteComm(0xD112);
249 SPI_WriteData(0x87);
250 SPI_WriteComm(0xD113);
251 SPI_WriteData(0x94);
252 SPI_WriteComm(0xD114);
253 SPI_WriteData(0x55);
254 SPI_WriteComm(0xD115);
255 SPI_WriteData(0xa0);
256 SPI_WriteComm(0xD116);
257 SPI_WriteData(0xac);
258 SPI_WriteComm(0xD117);
259 SPI_WriteData(0xb6);
260 SPI_WriteComm(0xD118);
261 SPI_WriteData(0xc1);
262 SPI_WriteComm(0xD119);
263 SPI_WriteData(0x55);
264 SPI_WriteComm(0xD11A);
265 SPI_WriteData(0xcb);
266 SPI_WriteComm(0xD11B);
267 SPI_WriteData(0xcd);
268 SPI_WriteComm(0xD11C);
269 SPI_WriteData(0xd6);
270 SPI_WriteComm(0xD11D);
271 SPI_WriteData(0xdf);
272 SPI_WriteComm(0xD11E);
273 SPI_WriteData(0x95);
274 SPI_WriteComm(0xD11F);
275 SPI_WriteData(0xe8);
276 SPI_WriteComm(0xD120);
277 SPI_WriteData(0xf1);
278 SPI_WriteComm(0xD121);
279 SPI_WriteData(0xfa);
280 SPI_WriteComm(0xD122);
281 SPI_WriteData(0x02);
282 SPI_WriteComm(0xD123);
283 SPI_WriteData(0xaa);
284 SPI_WriteComm(0xD124);
285 SPI_WriteData(0x0b);
286 SPI_WriteComm(0xD125);
287 SPI_WriteData(0x13);
288 SPI_WriteComm(0xD126);
289 SPI_WriteData(0x1d);
290 SPI_WriteComm(0xD127);
291 SPI_WriteData(0x26);
292 SPI_WriteComm(0xD128);
293 SPI_WriteData(0xaa);
294 SPI_WriteComm(0xD129);
295 SPI_WriteData(0x30);
296 SPI_WriteComm(0xD12A);
297 SPI_WriteData(0x3c);
298 SPI_WriteComm(0xD12B);
299 SPI_WriteData(0x4A);
300 SPI_WriteComm(0xD12C);
301 SPI_WriteData(0x63);
302 SPI_WriteComm(0xD12D);
303 SPI_WriteData(0xea);
304 SPI_WriteComm(0xD12E);
305 SPI_WriteData(0x79);
306 SPI_WriteComm(0xD12F);
307 SPI_WriteData(0xa6);
308 SPI_WriteComm(0xD130);
309 SPI_WriteData(0xd0);
310 SPI_WriteComm(0xD131);
311 SPI_WriteData(0x20);
312 SPI_WriteComm(0xD132);
313 SPI_WriteData(0x0f);
314 SPI_WriteComm(0xD133);
315 SPI_WriteData(0x8e);
316 SPI_WriteComm(0xD134);
317 SPI_WriteData(0xff);
318 //GAMMA SETING GREEN
319 SPI_WriteComm(0xD200);
320 SPI_WriteData(0x00);
321 SPI_WriteComm(0xD201);
322 SPI_WriteData(0x00);
323 SPI_WriteComm(0xD202);
324 SPI_WriteData(0x1b);
325 SPI_WriteComm(0xD203);
326 SPI_WriteData(0x44);
327 SPI_WriteComm(0xD204);
328 SPI_WriteData(0x62);
329 SPI_WriteComm(0xD205);
330 SPI_WriteData(0x00);
331 SPI_WriteComm(0xD206);
332 SPI_WriteData(0x7b);
333 SPI_WriteComm(0xD207);
334 SPI_WriteData(0xa1);
335 SPI_WriteComm(0xD208);
336 SPI_WriteData(0xc0);
337 SPI_WriteComm(0xD209);
338 SPI_WriteData(0xee);
339 SPI_WriteComm(0xD20A);
340 SPI_WriteData(0x55);
341 SPI_WriteComm(0xD20B);
342 SPI_WriteData(0x10);
343 SPI_WriteComm(0xD20C);
344 SPI_WriteData(0x2c);
345 SPI_WriteComm(0xD20D);
346 SPI_WriteData(0x43);
347 SPI_WriteComm(0xD20E);
348 SPI_WriteData(0x57);
349 SPI_WriteComm(0xD20F);
350 SPI_WriteData(0x55);
351 SPI_WriteComm(0xD210);
352 SPI_WriteData(0x68);
353 SPI_WriteComm(0xD211);
354 SPI_WriteData(0x78);
355 SPI_WriteComm(0xD212);
356 SPI_WriteData(0x87);
357 SPI_WriteComm(0xD213);
358 SPI_WriteData(0x94);
359 SPI_WriteComm(0xD214);
360 SPI_WriteData(0x55);
361 SPI_WriteComm(0xD215);
362 SPI_WriteData(0xa0);
363 SPI_WriteComm(0xD216);
364 SPI_WriteData(0xac);
365 SPI_WriteComm(0xD217);
366 SPI_WriteData(0xb6);
367 SPI_WriteComm(0xD218);
368 SPI_WriteData(0xc1);
369 SPI_WriteComm(0xD219);
370 SPI_WriteData(0x55);
371 SPI_WriteComm(0xD21A);
372 SPI_WriteData(0xcb);
373 SPI_WriteComm(0xD21B);
374 SPI_WriteData(0xcd);
375 SPI_WriteComm(0xD21C);
376 SPI_WriteData(0xd6);
377 SPI_WriteComm(0xD21D);
378 SPI_WriteData(0xdf);
379 SPI_WriteComm(0xD21E);
380 SPI_WriteData(0x95);
381 SPI_WriteComm(0xD21F);
382 SPI_WriteData(0xe8);
383 SPI_WriteComm(0xD220);
384 SPI_WriteData(0xf1);
385 SPI_WriteComm(0xD221);
386 SPI_WriteData(0xfa);
387 SPI_WriteComm(0xD222);
388 SPI_WriteData(0x02);
389 SPI_WriteComm(0xD223);
390 SPI_WriteData(0xaa);
391 SPI_WriteComm(0xD224);
392 SPI_WriteData(0x0b);
393 SPI_WriteComm(0xD225);
394 SPI_WriteData(0x13);
395 SPI_WriteComm(0xD226);
396 SPI_WriteData(0x1d);
397 SPI_WriteComm(0xD227);
398 SPI_WriteData(0x26);
399 SPI_WriteComm(0xD228);
400 SPI_WriteData(0xaa);
401 SPI_WriteComm(0xD229);
402 SPI_WriteData(0x30);
403 SPI_WriteComm(0xD22A);
404 SPI_WriteData(0x3c);
405 SPI_WriteComm(0xD22B);
406 SPI_WriteData(0x4a);
407 SPI_WriteComm(0xD22C);
408 SPI_WriteData(0x63);
409 SPI_WriteComm(0xD22D);
410 SPI_WriteData(0xea);
411 SPI_WriteComm(0xD22E);
412 SPI_WriteData(0x79);
413 SPI_WriteComm(0xD22F);
414 SPI_WriteData(0xa6);
415 SPI_WriteComm(0xD230);
416 SPI_WriteData(0xd0);
417 SPI_WriteComm(0xD231);
418 SPI_WriteData(0x20);
419 SPI_WriteComm(0xD232);
420 SPI_WriteData(0x0f);
421 SPI_WriteComm(0xD233);
422 SPI_WriteData(0x8e);
423 SPI_WriteComm(0xD234);
424 SPI_WriteData(0xff);
425
426 //GAMMA SETING BLUE
427 SPI_WriteComm(0xD300);
428 SPI_WriteData(0x00);
429 SPI_WriteComm(0xD301);
430 SPI_WriteData(0x00);
431 SPI_WriteComm(0xD302);
432 SPI_WriteData(0x1b);
433 SPI_WriteComm(0xD303);
434 SPI_WriteData(0x44);
435 SPI_WriteComm(0xD304);
436 SPI_WriteData(0x62);
437 SPI_WriteComm(0xD305);
438 SPI_WriteData(0x00);
439 SPI_WriteComm(0xD306);
440 SPI_WriteData(0x7b);
441 SPI_WriteComm(0xD307);
442 SPI_WriteData(0xa1);
443 SPI_WriteComm(0xD308);
444 SPI_WriteData(0xc0);
445 SPI_WriteComm(0xD309);
446 SPI_WriteData(0xee);
447 SPI_WriteComm(0xD30A);
448 SPI_WriteData(0x55);
449 SPI_WriteComm(0xD30B);
450 SPI_WriteData(0x10);
451 SPI_WriteComm(0xD30C);
452 SPI_WriteData(0x2c);
453 SPI_WriteComm(0xD30D);
454 SPI_WriteData(0x43);
455 SPI_WriteComm(0xD30E);
456 SPI_WriteData(0x57);
457 SPI_WriteComm(0xD30F);
458 SPI_WriteData(0x55);
459 SPI_WriteComm(0xD310);
460 SPI_WriteData(0x68);
461 SPI_WriteComm(0xD311);
462 SPI_WriteData(0x78);
463 SPI_WriteComm(0xD312);
464 SPI_WriteData(0x87);
465 SPI_WriteComm(0xD313);
466 SPI_WriteData(0x94);
467 SPI_WriteComm(0xD314);
468 SPI_WriteData(0x55);
469 SPI_WriteComm(0xD315);
470 SPI_WriteData(0xa0);
471 SPI_WriteComm(0xD316);
472 SPI_WriteData(0xac);
473 SPI_WriteComm(0xD317);
474 SPI_WriteData(0xb6);
475 SPI_WriteComm(0xD318);
476 SPI_WriteData(0xc1);
477 SPI_WriteComm(0xD319);
478 SPI_WriteData(0x55);
479 SPI_WriteComm(0xD31A);
480 SPI_WriteData(0xcb);
481 SPI_WriteComm(0xD31B);
482 SPI_WriteData(0xcd);
483 SPI_WriteComm(0xD31C);
484 SPI_WriteData(0xd6);
485 SPI_WriteComm(0xD31D);
486 SPI_WriteData(0xdf);
487 SPI_WriteComm(0xD31E);
488 SPI_WriteData(0x95);
489 SPI_WriteComm(0xD31F);
490 SPI_WriteData(0xe8);
491 SPI_WriteComm(0xD320);
492 SPI_WriteData(0xf1);
493 SPI_WriteComm(0xD321);
494 SPI_WriteData(0xfa);
495 SPI_WriteComm(0xD322);
496 SPI_WriteData(0x02);
497 SPI_WriteComm(0xD323);
498 SPI_WriteData(0xaa);
499 SPI_WriteComm(0xD324);
500 SPI_WriteData(0x0b);
501 SPI_WriteComm(0xD325);
502 SPI_WriteData(0x13);
503 SPI_WriteComm(0xD326);
504 SPI_WriteData(0x1d);
505 SPI_WriteComm(0xD327);
506 SPI_WriteData(0x26);
507 SPI_WriteComm(0xD328);
508 SPI_WriteData(0xaa);
509 SPI_WriteComm(0xD329);
510 SPI_WriteData(0x30);
511 SPI_WriteComm(0xD32A);
512 SPI_WriteData(0x3c);
513 SPI_WriteComm(0xD32B);
514 SPI_WriteData(0x4A);
515 SPI_WriteComm(0xD32C);
516 SPI_WriteData(0x63);
517 SPI_WriteComm(0xD32D);
518 SPI_WriteData(0xea);
519 SPI_WriteComm(0xD32E);
520 SPI_WriteData(0x79);
521 SPI_WriteComm(0xD32F);
522 SPI_WriteData(0xa6);
523 SPI_WriteComm(0xD330);
524 SPI_WriteData(0xd0);
525 SPI_WriteComm(0xD331);
526 SPI_WriteData(0x20);
527 SPI_WriteComm(0xD332);
528 SPI_WriteData(0x0f);
529 SPI_WriteComm(0xD333);
530 SPI_WriteData(0x8e);
531 SPI_WriteComm(0xD334);
532 SPI_WriteData(0xff);
533
534 //GAMMA SETING RED
535 SPI_WriteComm(0xD400);
536 SPI_WriteData(0x00);
537 SPI_WriteComm(0xD401);
538 SPI_WriteData(0x00);
539 SPI_WriteComm(0xD402);
540 SPI_WriteData(0x1b);
541 SPI_WriteComm(0xD403);
542 SPI_WriteData(0x44);
543 SPI_WriteComm(0xD404);
544 SPI_WriteData(0x62);
545 SPI_WriteComm(0xD405);
546 SPI_WriteData(0x00);
547 SPI_WriteComm(0xD406);
548 SPI_WriteData(0x7b);
549 SPI_WriteComm(0xD407);
550 SPI_WriteData(0xa1);
551 SPI_WriteComm(0xD408);
552 SPI_WriteData(0xc0);
553 SPI_WriteComm(0xD409);
554 SPI_WriteData(0xee);
555 SPI_WriteComm(0xD40A);
556 SPI_WriteData(0x55);
557 SPI_WriteComm(0xD40B);
558 SPI_WriteData(0x10);
559 SPI_WriteComm(0xD40C);
560 SPI_WriteData(0x2c);
561 SPI_WriteComm(0xD40D);
562 SPI_WriteData(0x43);
563 SPI_WriteComm(0xD40E);
564 SPI_WriteData(0x57);
565 SPI_WriteComm(0xD40F);
566 SPI_WriteData(0x55);
567 SPI_WriteComm(0xD410);
568 SPI_WriteData(0x68);
569 SPI_WriteComm(0xD411);
570 SPI_WriteData(0x78);
571 SPI_WriteComm(0xD412);
572 SPI_WriteData(0x87);
573 SPI_WriteComm(0xD413);
574 SPI_WriteData(0x94);
575 SPI_WriteComm(0xD414);
576 SPI_WriteData(0x55);
577 SPI_WriteComm(0xD415);
578 SPI_WriteData(0xa0);
579 SPI_WriteComm(0xD416);
580 SPI_WriteData(0xac);
581 SPI_WriteComm(0xD417);
582 SPI_WriteData(0xb6);
583 SPI_WriteComm(0xD418);
584 SPI_WriteData(0xc1);
585 SPI_WriteComm(0xD419);
586 SPI_WriteData(0x55);
587 SPI_WriteComm(0xD41A);
588 SPI_WriteData(0xcb);
589 SPI_WriteComm(0xD41B);
590 SPI_WriteData(0xcd);
591 SPI_WriteComm(0xD41C);
592 SPI_WriteData(0xd6);
593 SPI_WriteComm(0xD41D);
594 SPI_WriteData(0xdf);
595 SPI_WriteComm(0xD41E);
596 SPI_WriteData(0x95);
597 SPI_WriteComm(0xD41F);
598 SPI_WriteData(0xe8);
599 SPI_WriteComm(0xD420);
600 SPI_WriteData(0xf1);
601 SPI_WriteComm(0xD421);
602 SPI_WriteData(0xfa);
603 SPI_WriteComm(0xD422);
604 SPI_WriteData(0x02);
605 SPI_WriteComm(0xD423);
606 SPI_WriteData(0xaa);
607 SPI_WriteComm(0xD424);
608 SPI_WriteData(0x0b);
609 SPI_WriteComm(0xD425);
610 SPI_WriteData(0x13);
611 SPI_WriteComm(0xD426);
612 SPI_WriteData(0x1d);
613 SPI_WriteComm(0xD427);
614 SPI_WriteData(0x26);
615 SPI_WriteComm(0xD428);
616 SPI_WriteData(0xaa);
617 SPI_WriteComm(0xD429);
618 SPI_WriteData(0x30);
619 SPI_WriteComm(0xD42A);
620 SPI_WriteData(0x3c);
621 SPI_WriteComm(0xD42B);
622 SPI_WriteData(0x4A);
623 SPI_WriteComm(0xD42C);
624 SPI_WriteData(0x63);
625 SPI_WriteComm(0xD42D);
626 SPI_WriteData(0xea);
627 SPI_WriteComm(0xD42E);
628 SPI_WriteData(0x79);
629 SPI_WriteComm(0xD42F);
630 SPI_WriteData(0xa6);
631 SPI_WriteComm(0xD430);
632 SPI_WriteData(0xd0);
633 SPI_WriteComm(0xD431);
634 SPI_WriteData(0x20);
635 SPI_WriteComm(0xD432);
636 SPI_WriteData(0x0f);
637 SPI_WriteComm(0xD433);
638 SPI_WriteData(0x8e);
639 SPI_WriteComm(0xD434);
640 SPI_WriteData(0xff);
641
642 //GAMMA SETING GREEN
643 SPI_WriteComm(0xD500);
644 SPI_WriteData(0x00);
645 SPI_WriteComm(0xD501);
646 SPI_WriteData(0x00);
647 SPI_WriteComm(0xD502);
648 SPI_WriteData(0x1b);
649 SPI_WriteComm(0xD503);
650 SPI_WriteData(0x44);
651 SPI_WriteComm(0xD504);
652 SPI_WriteData(0x62);
653 SPI_WriteComm(0xD505);
654 SPI_WriteData(0x00);
655 SPI_WriteComm(0xD506);
656 SPI_WriteData(0x7b);
657 SPI_WriteComm(0xD507);
658 SPI_WriteData(0xa1);
659 SPI_WriteComm(0xD508);
660 SPI_WriteData(0xc0);
661 SPI_WriteComm(0xD509);
662 SPI_WriteData(0xee);
663 SPI_WriteComm(0xD50A);
664 SPI_WriteData(0x55);
665 SPI_WriteComm(0xD50B);
666 SPI_WriteData(0x10);
667 SPI_WriteComm(0xD50C);
668 SPI_WriteData(0x2c);
669 SPI_WriteComm(0xD50D);
670 SPI_WriteData(0x43);
671 SPI_WriteComm(0xD50E);
672 SPI_WriteData(0x57);
673 SPI_WriteComm(0xD50F);
674 SPI_WriteData(0x55);
675 SPI_WriteComm(0xD510);
676 SPI_WriteData(0x68);
677 SPI_WriteComm(0xD511);
678 SPI_WriteData(0x78);
679 SPI_WriteComm(0xD512);
680 SPI_WriteData(0x87);
681 SPI_WriteComm(0xD513);
682 SPI_WriteData(0x94);
683 SPI_WriteComm(0xD514);
684 SPI_WriteData(0x55);
685 SPI_WriteComm(0xD515);
686 SPI_WriteData(0xa0);
687 SPI_WriteComm(0xD516);
688 SPI_WriteData(0xac);
689 SPI_WriteComm(0xD517);
690 SPI_WriteData(0xb6);
691 SPI_WriteComm(0xD518);
692 SPI_WriteData(0xc1);
693 SPI_WriteComm(0xD519);
694 SPI_WriteData(0x55);
695 SPI_WriteComm(0xD51A);
696 SPI_WriteData(0xcb);
697 SPI_WriteComm(0xD51B);
698 SPI_WriteData(0xcd);
699 SPI_WriteComm(0xD51C);
700 SPI_WriteData(0xd6);
701 SPI_WriteComm(0xD51D);
702 SPI_WriteData(0xdf);
703 SPI_WriteComm(0xD51E);
704 SPI_WriteData(0x95);
705 SPI_WriteComm(0xD51F);
706 SPI_WriteData(0xe8);
707 SPI_WriteComm(0xD520);
708 SPI_WriteData(0xf1);
709 SPI_WriteComm(0xD521);
710 SPI_WriteData(0xfa);
711 SPI_WriteComm(0xD522);
712 SPI_WriteData(0x02);
713 SPI_WriteComm(0xD523);
714 SPI_WriteData(0xaa);
715 SPI_WriteComm(0xD524);
716 SPI_WriteData(0x0b);
717 SPI_WriteComm(0xD525);
718 SPI_WriteData(0x13);
719 SPI_WriteComm(0xD526);
720 SPI_WriteData(0x1d);
721 SPI_WriteComm(0xD527);
722 SPI_WriteData(0x26);
723 SPI_WriteComm(0xD528);
724 SPI_WriteData(0xaa);
725 SPI_WriteComm(0xD529);
726 SPI_WriteData(0x30);
727 SPI_WriteComm(0xD52A);
728 SPI_WriteData(0x3c);
729 SPI_WriteComm(0xD52B);
730 SPI_WriteData(0x4a);
731 SPI_WriteComm(0xD52C);
732 SPI_WriteData(0x63);
733 SPI_WriteComm(0xD52D);
734 SPI_WriteData(0xea);
735 SPI_WriteComm(0xD52E);
736 SPI_WriteData(0x79);
737 SPI_WriteComm(0xD52F);
738 SPI_WriteData(0xa6);
739 SPI_WriteComm(0xD530);
740 SPI_WriteData(0xd0);
741 SPI_WriteComm(0xD531);
742 SPI_WriteData(0x20);
743 SPI_WriteComm(0xD532);
744 SPI_WriteData(0x0f);
745 SPI_WriteComm(0xD533);
746 SPI_WriteData(0x8e);
747 SPI_WriteComm(0xD534);
748 SPI_WriteData(0xff);
749
750 //GAMMA SETING BLUE
751 SPI_WriteComm(0xD600);
752 SPI_WriteData(0x00);
753 SPI_WriteComm(0xD601);
754 SPI_WriteData(0x00);
755 SPI_WriteComm(0xD602);
756 SPI_WriteData(0x1b);
757 SPI_WriteComm(0xD603);
758 SPI_WriteData(0x44);
759 SPI_WriteComm(0xD604);
760 SPI_WriteData(0x62);
761 SPI_WriteComm(0xD605);
762 SPI_WriteData(0x00);
763 SPI_WriteComm(0xD606);
764 SPI_WriteData(0x7b);
765 SPI_WriteComm(0xD607);
766 SPI_WriteData(0xa1);
767 SPI_WriteComm(0xD608);
768 SPI_WriteData(0xc0);
769 SPI_WriteComm(0xD609);
770 SPI_WriteData(0xee);
771 SPI_WriteComm(0xD60A);
772 SPI_WriteData(0x55);
773 SPI_WriteComm(0xD60B);
774 SPI_WriteData(0x10);
775 SPI_WriteComm(0xD60C);
776 SPI_WriteData(0x2c);
777 SPI_WriteComm(0xD60D);
778 SPI_WriteData(0x43);
779 SPI_WriteComm(0xD60E);
780 SPI_WriteData(0x57);
781 SPI_WriteComm(0xD60F);
782 SPI_WriteData(0x55);
783 SPI_WriteComm(0xD610);
784 SPI_WriteData(0x68);
785 SPI_WriteComm(0xD611);
786 SPI_WriteData(0x78);
787 SPI_WriteComm(0xD612);
788 SPI_WriteData(0x87);
789 SPI_WriteComm(0xD613);
790 SPI_WriteData(0x94);
791 SPI_WriteComm(0xD614);
792 SPI_WriteData(0x55);
793 SPI_WriteComm(0xD615);
794 SPI_WriteData(0xa0);
795 SPI_WriteComm(0xD616);
796 SPI_WriteData(0xac);
797 SPI_WriteComm(0xD617);
798 SPI_WriteData(0xb6);
799 SPI_WriteComm(0xD618);
800 SPI_WriteData(0xc1);
801 SPI_WriteComm(0xD619);
802 SPI_WriteData(0x55);
803 SPI_WriteComm(0xD61A);
804 SPI_WriteData(0xcb);
805 SPI_WriteComm(0xD61B);
806 SPI_WriteData(0xcd);
807 SPI_WriteComm(0xD61C);
808 SPI_WriteData(0xd6);
809 SPI_WriteComm(0xD61D);
810 SPI_WriteData(0xdf);
811 SPI_WriteComm(0xD61E);
812 SPI_WriteData(0x95);
813 SPI_WriteComm(0xD61F);
814 SPI_WriteData(0xe8);
815 SPI_WriteComm(0xD620);
816 SPI_WriteData(0xf1);
817 SPI_WriteComm(0xD621);
818 SPI_WriteData(0xfa);
819 SPI_WriteComm(0xD622);
820 SPI_WriteData(0x02);
821 SPI_WriteComm(0xD623);
822 SPI_WriteData(0xaa);
823 SPI_WriteComm(0xD624);
824 SPI_WriteData(0x0b);
825 SPI_WriteComm(0xD625);
826 SPI_WriteData(0x13);
827 SPI_WriteComm(0xD626);
828 SPI_WriteData(0x1d);
829 SPI_WriteComm(0xD627);
830 SPI_WriteData(0x26);
831 SPI_WriteComm(0xD628);
832 SPI_WriteData(0xaa);
833 SPI_WriteComm(0xD629);
834 SPI_WriteData(0x30);
835 SPI_WriteComm(0xD62A);
836 SPI_WriteData(0x3c);
837 SPI_WriteComm(0xD62B);
838 SPI_WriteData(0x4A);
839 SPI_WriteComm(0xD62C);
840 SPI_WriteData(0x63);
841 SPI_WriteComm(0xD62D);
842 SPI_WriteData(0xea);
843 SPI_WriteComm(0xD62E);
844 SPI_WriteData(0x79);
845 SPI_WriteComm(0xD62F);
846 SPI_WriteData(0xa6);
847 SPI_WriteComm(0xD630);
848 SPI_WriteData(0xd0);
849 SPI_WriteComm(0xD631);
850 SPI_WriteData(0x20);
851 SPI_WriteComm(0xD632);
852 SPI_WriteData(0x0f);
853 SPI_WriteComm(0xD633);
854 SPI_WriteData(0x8e);
855 SPI_WriteComm(0xD634);
856 SPI_WriteData(0xff);
857
858 //AVDD VOLTAGE SETTING
859 SPI_WriteComm(0xB000);
860 SPI_WriteData(0x05);
861 SPI_WriteComm(0xB001);
862 SPI_WriteData(0x05);
863 SPI_WriteComm(0xB002);
864 SPI_WriteData(0x05);
865 //AVEE VOLTAGE SETTING
866 SPI_WriteComm(0xB100);
867 SPI_WriteData(0x05);
868 SPI_WriteComm(0xB101);
869 SPI_WriteData(0x05);
870 SPI_WriteComm(0xB102);
871 SPI_WriteData(0x05);
872
873 //AVDD Boosting
874 SPI_WriteComm(0xB600);
875 SPI_WriteData(0x34);
876 SPI_WriteComm(0xB601);
877 SPI_WriteData(0x34);
878 SPI_WriteComm(0xB603);
879 SPI_WriteData(0x34);
880 //AVEE Boosting
881 SPI_WriteComm(0xB700);
882 SPI_WriteData(0x24);
883 SPI_WriteComm(0xB701);
884 SPI_WriteData(0x24);
885 SPI_WriteComm(0xB702);
886 SPI_WriteData(0x24);
887 //VCL Boosting
888 SPI_WriteComm(0xB800);
889 SPI_WriteData(0x24);
890 SPI_WriteComm(0xB801);
891 SPI_WriteData(0x24);
892 SPI_WriteComm(0xB802);
893 SPI_WriteData(0x24);
894 //VGLX VOLTAGE SETTING
895 SPI_WriteComm(0xBA00);
896 SPI_WriteData(0x14);
897 SPI_WriteComm(0xBA01);
898 SPI_WriteData(0x14);
899 SPI_WriteComm(0xBA02);
900 SPI_WriteData(0x14);
901 //VCL Boosting
902 SPI_WriteComm(0xB900);
903 SPI_WriteData(0x24);
904 SPI_WriteComm(0xB901);
905 SPI_WriteData(0x24);
906 SPI_WriteComm(0xB902);
907 SPI_WriteData(0x24);
908 //Gamma Voltage
909 SPI_WriteComm(0xBc00);
910 SPI_WriteData(0x00);
911 SPI_WriteComm(0xBc01);
912 SPI_WriteData(0xa0); //vgmp=5.0
913 SPI_WriteComm(0xBc02);
914 SPI_WriteData(0x00);
915 SPI_WriteComm(0xBd00);
916 SPI_WriteData(0x00);
917 SPI_WriteComm(0xBd01);
918 SPI_WriteData(0xa0); //vgmn=5.0
919 SPI_WriteComm(0xBd02);
920 SPI_WriteData(0x00);
921 //VCOM Setting
922 SPI_WriteComm(0xBe01);
923 SPI_WriteData(0x3d); //3
924 //ENABLE PAGE 0
925 SPI_WriteComm(0xF000);
926 SPI_WriteData(0x55);
927 SPI_WriteComm(0xF001);
928 SPI_WriteData(0xAA);
929 SPI_WriteComm(0xF002);
930 SPI_WriteData(0x52);
931 SPI_WriteComm(0xF003);
932 SPI_WriteData(0x08);
933 SPI_WriteComm(0xF004);
934 SPI_WriteData(0x00);
935 //Vivid Color Function Control
936 SPI_WriteComm(0xB400);
937 SPI_WriteData(0x10);
938 //Z-INVERSION
939 SPI_WriteComm(0xBC00);
940 SPI_WriteData(0x05);
941 SPI_WriteComm(0xBC01);
942 SPI_WriteData(0x05);
943 SPI_WriteComm(0xBC02);
944 SPI_WriteData(0x05);
945
946 //*************** add on 20111021**********************//
947 SPI_WriteComm(0xB700);
948 SPI_WriteData(0x22); //GATE EQ CONTROL
949 SPI_WriteComm(0xB701);
950 SPI_WriteData(0x22); //GATE EQ CONTROL
951
952 SPI_WriteComm(0xC80B);
953 SPI_WriteData(0x2A); //DISPLAY TIMING CONTROL
954 SPI_WriteComm(0xC80C);
955 SPI_WriteData(0x2A); //DISPLAY TIMING CONTROL
956 SPI_WriteComm(0xC80F);
957 SPI_WriteData(0x2A); //DISPLAY TIMING CONTROL
958 SPI_WriteComm(0xC810);
959 SPI_WriteData(0x2A); //DISPLAY TIMING CONTROL
960 //*************** add on 20111021**********************//
961 //PWM_ENH_OE =1
962 SPI_WriteComm(0xd000);
963 SPI_WriteData(0x01);
964 //DM_SEL =1
965 SPI_WriteComm(0xb300);
966 SPI_WriteData(0x10);
967 //VBPDA=07h
968 SPI_WriteComm(0xBd02);
969 SPI_WriteData(0x07);
970 //VBPDb=07h
971 SPI_WriteComm(0xBe02);
972 SPI_WriteData(0x07);
973 //VBPDc=07h
974 SPI_WriteComm(0xBf02);
975 SPI_WriteData(0x07);
976 //ENABLE PAGE 2
977 SPI_WriteComm(0xF000);
978 SPI_WriteData(0x55);
979 SPI_WriteComm(0xF001);
980 SPI_WriteData(0xAA);
981 SPI_WriteComm(0xF002);
982 SPI_WriteData(0x52);
983 SPI_WriteComm(0xF003);
984 SPI_WriteData(0x08);
985 SPI_WriteComm(0xF004);
986 SPI_WriteData(0x02);
987 //SDREG0 =0
988 SPI_WriteComm(0xc301);
989 SPI_WriteData(0xa9);
990 //DS=14
991 SPI_WriteComm(0xfe01);
992 SPI_WriteData(0x94);
993 //OSC =60h
994 SPI_WriteComm(0xf600);
995 SPI_WriteData(0x60);
996 //TE ON
997 SPI_WriteComm(0x3500);
998 SPI_WriteData(0x00);
999
1000 SPI_WriteComm(0x3600);
1001 SPI_WriteData(0x0048);
1002 SPI_WriteComm(0x1100);
1003 LCD_delay(120);
1004
1005 SPI_WriteComm(0x2900);
1006
1007 SPI_WriteComm(0x2c00);
1008 SPI_WriteComm(0x3c00);
1009 }
LCD_Initial(rt_uint32_t LTDC_Buf1,rt_uint32_t LTDC_Buf2)1010 void LCD_Initial(rt_uint32_t LTDC_Buf1, rt_uint32_t LTDC_Buf2) //LCD初始化函数
1011 {
1012 GPIO_RGB_INIT(); //初始化液晶屏相关GPIO
1013 LCD_Reset(); //复位液晶屏
1014
1015 LTDC_Clock_Set();
1016 Set_LCD_Timing_to_LTDC(LTDC_Buf1, LTDC_Buf2);
1017 Lcd_Initialize();
1018 Lcd_Light_ON; //打开背光
1019 }
1020
1021
1022
1023 /**********************************************
1024 函数名:Lcd矩形填充函数
1025
1026 入口参数:xStart x方向的起始点
1027 ySrart y方向的终止点
1028 xLong 要选定矩形的x方向长度
1029 yLong 要选定矩形的y方向长度
1030 返回值:无
1031 ***********************************************/
1032 // void Lcd_ColorBox(rt_uint16_t xStart, rt_uint16_t yStart, rt_uint16_t xLong, rt_uint16_t yLong, rt_uint32_t Color)
1033 // {
1034 // rt_uint16_t i, j;
1035 // rt_uint32_t temp;
1036 // temp = YSIZE_PHYS * xStart;
1037 // for (i = 0; i < yLong; i++)
1038 // {
1039 // for (j = 0; j < xLong; j++)
1040 // LTDC_Buf[yStart + i + YSIZE_PHYS * j + temp] = Color;
1041 // }
1042
1043 // // rt_uint16_t i,j;
1044 // // rt_uint32_t temp;
1045 // // temp = XSIZE_PHYS*yStart;
1046 // // for(i=0;i<yLong;i++)
1047 // // {
1048 // // for(j=0;j<xLong;j++)
1049 // // LTDC_Buf[xStart+j+XSIZE_PHYS*i+temp]=Color;
1050 // // }
1051 // }
1052
1053 /******************************************
1054 函数名:Lcd图像填充
1055 功能:向Lcd指定位置填充图像
1056 入口参数:
1057 (x,y): 图片左上角起始坐标
1058 (pic_H,pic_V): 图片的宽高
1059 pic 指向存储图片数组的指针
1060 LCD_Fill_Pic(400,100,320,480,(rt_uint32_t*)gImage_MM_T035);
1061 ******************************************/
1062 // void LCD_Fill_Pic(rt_uint16_t x, rt_uint16_t y, rt_uint16_t pic_H, rt_uint16_t pic_V, rt_uint32_t *pic)
1063 // {
1064 // rt_uint16_t i, j;
1065 // rt_uint32_t Xstart, k = 0;
1066 // Xstart = YSIZE_PHYS * x;
1067 // for (i = 0; i < pic_V; i++)
1068 // {
1069 // for (j = 0; j < pic_H; j++)
1070 // LTDC_Buf[Xstart + i + YSIZE_PHYS * j + y] = pic[k++];
1071 // }
1072
1073 // // rt_uint16_t i,j;
1074 // // rt_uint32_t Ystart,k=0;
1075 // // Ystart = YSIZE_PHYS*y;
1076 // // for(i=0;i<pic_V;i++)
1077 // // {
1078 // // for(j=0;j<pic_H;j++)
1079 // // LTDC_Buf[x+j+YSIZE_PHYS*i+Ystart]=pic[k++];
1080 // // }
1081 // }
1082 //=============== 在x,y 坐标上打一个颜色为Color的点 ===============
1083 // void DrawPixel(rt_uint16_t x, rt_uint16_t y, int Color)
1084 // {
1085 // LTDC_Buf[y + YSIZE_PHYS * x] = Color;
1086 // // LTDC_Buf[x+XSIZE_PHYS*y] = Color;
1087 // }
1088 /**********8*16字体 ASCII码 显示*************
1089 (x,y): 显示字母的起始坐标
1090 num: 要显示的字符:" "--->"~"
1091 fColor 前景色
1092 bColor 背景色
1093 flag: 有背景色(1)无背景色(0)
1094 *********************************************/
1095 // void SPILCD_ShowChar(unsigned short x, unsigned short y, unsigned char num, unsigned int fColor, unsigned int bColor, unsigned char flag)
1096 // {
1097 // unsigned char temp;
1098 // unsigned int pos, i, j;
1099
1100 // num = num - ' '; //得到偏移后的值
1101 // i = num * 16;
1102 // for (pos = 0; pos < 16; pos++)
1103 // {
1104 // temp = nAsciiDot[i + pos]; //调通调用ASCII字体
1105 // for (j = 0; j < 8; j++)
1106 // {
1107 // if (temp & 0x80)
1108 // DrawPixel(x + j, y, fColor);
1109 // else if (flag)
1110 // DrawPixel(x + j, y, bColor); //如果背景色标志flag为1
1111 // temp <<= 1;
1112 // }
1113 // y++;
1114 // }
1115 // }
1116
1117 /**********写一个16x16的汉字*****************
1118 (x,y): 显示汉字的起始坐标
1119 c[2]: 要显示的汉字
1120 fColor 前景色
1121 bColor 背景色
1122 flag: 有背景色(1)无背景色(0)
1123 *********************************************/
1124 // void PutGB1616(unsigned short x, unsigned short y, unsigned char c[2], unsigned int fColor, unsigned int bColor, unsigned char flag)
1125 // {
1126 // unsigned int i, j, k;
1127 // unsigned short m;
1128 // for (k = 0; k < 64; k++)
1129 // { //64标示自建汉字库中的个数,循环查询内码
1130 // if ((codeGB_16[k].Index[0] == c[0]) && (codeGB_16[k].Index[1] == c[1]))
1131 // {
1132 // for (i = 0; i < 32; i++)
1133 // {
1134 // m = codeGB_16[k].Msk[i];
1135 // for (j = 0; j < 8; j++)
1136 // {
1137 // if ((m & 0x80) == 0x80)
1138 // {
1139 // DrawPixel(x + j, y, fColor);
1140 // }
1141 // else
1142 // {
1143 // if (flag)
1144 // DrawPixel(x + j, y, bColor);
1145 // }
1146 // m = m << 1;
1147 // }
1148 // if (i % 2)
1149 // {
1150 // y++;
1151 // x = x - 8;
1152 // }
1153 // else
1154 // x = x + 8;
1155 // }
1156 // }
1157 // }
1158 // }
1159 /**********显示一串字*****************
1160 (x,y): 字符串的起始坐标
1161 *s: 要显示的字符串指针
1162 fColor 前景色
1163 bColor 背景色
1164 flag: 有背景色(1)无背景色(0)
1165 *********************************************/
1166 // void LCD_PutString(unsigned short x, unsigned short y, char *s, unsigned int fColor, unsigned int bColor, unsigned char flag)
1167 // {
1168 // unsigned char l = 0;
1169 // while (*s)
1170 // {
1171 // if (*s < 0x80)
1172 // {
1173 // SPILCD_ShowChar(x + l * 8, y, *s, fColor, bColor, flag);
1174 // s++;
1175 // l++;
1176 // }
1177 // else
1178 // {
1179 // PutGB1616(x + l * 8, y, (unsigned char *)s, fColor, bColor, flag);
1180 // s += 2;
1181 // l += 2;
1182 // }
1183 // }
1184 // }
1185