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