lcd.c 32 KB

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