P100脱机下载器
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2977 lines
81 KiB

4 years ago
  1. #include "lcd.h"
  2. #include "stdlib.h"
  3. #include "font.h"
  4. #include "usart.h"
  5. #include "delay.h"
  6. //////////////////////////////////////////////////////////////////////////////////
  7. //������ֻ��ѧϰʹ�ã�δ���������ɣ��������������κ���;
  8. //ALIENTEK MiniSTM32F103������
  9. //2.4��/2.8��/3.5��/4.3��/7�� TFTҺ������
  10. //֧������IC�ͺŰ���:ILI9341/ILI9325/RM68042/RM68021/ILI9320/ILI9328/LGDP4531/LGDP4535/
  11. // SPFD5408/1505/B505/C505/NT35310/NT35510/SSD1963��
  12. //����ԭ��@ALIENTEK
  13. //������̳:www.openedv.com
  14. //��������:2010/7/4
  15. //�汾��V3.0
  16. //��Ȩ���У������ؾ���
  17. //Copyright(C) �������������ӿƼ����޹�˾ 2014-2024
  18. //All rights reserved
  19. //********************************************************************************
  20. //V1.2�޸�˵��
  21. //֧����SPFD5408������,������Һ��IDֱ�Ӵ�ӡ��HEX��ʽ.�����鿴LCD����IC.
  22. //V1.3
  23. //�����˿���IO��֧��
  24. //�޸��˱������Ƶļ��ԣ�������V1.8���Ժ��Ŀ������汾��
  25. //����1.8�汾֮ǰ(������1.8)��Һ��ģ��,���޸�LCD_Init������LCD_LED=1;ΪLCD_LED=1;
  26. //V1.4
  27. //�޸���LCD_ShowChar������ʹ�û��㹦�ܻ��ַ���
  28. //�����˺�������ʾ��֧��
  29. //V1.5 20110730
  30. //1,�޸���B505Һ������ɫ������bug.
  31. //2,�޸��˿���IO�������������÷�ʽ.
  32. //V1.6 20111116
  33. //1,������LGDP4535Һ��������֧��
  34. //V1.7 20120713
  35. //1,����LCD_RD_DATA����
  36. //2,���Ӷ�ILI9341��֧��
  37. //3,����ILI9325������������
  38. //4,����LCD_Scan_Dir����(����ʹ��)
  39. //6,�����޸��˲���ԭ���ĺ���,����Ӧ9341�IJ���
  40. //V1.8 20120905
  41. //1,����LCD��Ҫ�������ýṹ��lcddev
  42. //2,����LCD_Display_Dir����,֧�����ߺ������л�
  43. //V1.9 20120911
  44. //1,����RM68042������ID:6804��������6804��֧�ֺ�����ʾ����ԭ�򣺸ı�ɨ�跽ʽ��
  45. //����6804��������ʧЧ���Թ��ܶ෽�������У���ʱ�޽⡣
  46. //V2.0 20120924
  47. //�ڲ�Ӳ����λ��������,ILI9341��ID��ȡ�ᱻ������9300,�޸�LCD_Init,���޷�ʶ��
  48. //������������IDΪ9300/�Ƿ�ID��,ǿ��ָ������ICΪILI9341��ִ��9341�ij�ʼ����
  49. //V2.1 20120930
  50. //����ILI9325����ɫ��bug��
  51. //V2.2 20121007
  52. //����LCD_Scan_Dir��bug��
  53. //V2.3 20130120
  54. //����6804֧�ֺ�����ʾ
  55. //V2.4 20131120
  56. //1,����NT35310��ID:5310����������֧��
  57. //2,����LCD_Set_Window����,�������ô���,�Կ�������,�Ƚ�����,���Ǹú����ں���ʱ,��֧��6804.
  58. //V2.5 20140211
  59. //1,����NT35510��ID:5510����������֧��
  60. //V2.6 20140504
  61. //1,����ASCII 24*24������֧��(���������û�������������)
  62. //2,�޸IJ��ֺ�������,��֧��MDK -O2�Ż�
  63. //3,����9341/35310/35510,дʱ������Ϊ����,�����ܵ������ٶ�
  64. //4,ȥ����SSD1289��֧��,��Ϊ1289ʵ����̫����,������Ҫ1us...��ֱ����.���ʺ�F4ʹ��
  65. //5,����68042��C505��IC�Ķ���ɫ������bug.
  66. //V2.7 20140710
  67. //1,����LCD_Color_Fill������һ��bug.
  68. //2,����LCD_Scan_Dir������һ��bug.
  69. //V2.8 20140721
  70. //1,����MDKʹ��-O2�Ż�ʱLCD_ReadPoint��������ʧЧ������.
  71. //2,����LCD_Scan_Dir����ʱ���õ�ɨ�跽ʽ��ʾ��ȫ��bug.
  72. //V2.9 20141130
  73. //1,������SSD1963 LCD��֧��.
  74. //2,����LCD_SSD_BackLightSet����
  75. //3,ȡ��ILI93XX��Rxx�Ĵ�������
  76. //V3.0 20150423
  77. //�޸�SSD1963 LCD������������.
  78. //////////////////////////////////////////////////////////////////////////////////
  79. //LCD�Ļ�����ɫ�ͱ���ɫ
  80. u16 POINT_COLOR=0x0000; //������ɫ
  81. u16 BACK_COLOR=0xFFFF; //����ɫ
  82. //����LCD��Ҫ����
  83. //Ĭ��Ϊ����
  84. _lcd_dev lcddev;
  85. //д�Ĵ�������
  86. //data:�Ĵ���ֵ
  87. void LCD_WR_REG(u16 data)
  88. {
  89. LCD_RS_CLR;//д��ַ
  90. LCD_CS_CLR;
  91. DATAOUT(data);
  92. LCD_WR_CLR;
  93. LCD_WR_SET;
  94. LCD_CS_SET;
  95. }
  96. //д���ݺ���
  97. //��������LCD_WR_DATAX��,��ʱ�任�ռ�.
  98. //data:�Ĵ���ֵ
  99. void LCD_WR_DATAX(u16 data)
  100. {
  101. LCD_RS_SET;
  102. LCD_CS_CLR;
  103. DATAOUT(data);
  104. LCD_WR_CLR;
  105. LCD_WR_SET;
  106. LCD_CS_SET;
  107. }
  108. //��LCD����
  109. //����ֵ:������ֵ
  110. u16 LCD_RD_DATA(void)
  111. {
  112. u16 t;
  113. GPIOB->CRL=0X88888888; //PB0-7 ��������
  114. GPIOB->CRH=0X88888888; //PB8-15 ��������
  115. GPIOB->ODR=0X0000; //ȫ������0
  116. LCD_RS_SET;
  117. LCD_CS_CLR;
  118. //��ȡ����(���Ĵ���ʱ,������Ҫ��2��)
  119. LCD_RD_CLR;
  120. if(lcddev.id==0X8989)delay_us(2);//FOR 8989,��ʱ2us
  121. t=DATAIN;
  122. LCD_RD_SET;
  123. LCD_CS_SET;
  124. GPIOB->CRL=0X33333333; //PB0-7 ��������
  125. GPIOB->CRH=0X33333333; //PB8-15 ��������
  126. GPIOB->ODR=0XFFFF; //ȫ��������
  127. return t;
  128. }
  129. //д�Ĵ���
  130. //LCD_Reg:�Ĵ�������
  131. //LCD_RegValue:Ҫд����ֵ
  132. void LCD_WriteReg(u16 LCD_Reg,u16 LCD_RegValue)
  133. {
  134. LCD_WR_REG(LCD_Reg);
  135. LCD_WR_DATA(LCD_RegValue);
  136. }
  137. //���Ĵ���
  138. //LCD_Reg:�Ĵ�������
  139. //����ֵ:������ֵ
  140. u16 LCD_ReadReg(u16 LCD_Reg)
  141. {
  142. LCD_WR_REG(LCD_Reg); //д��Ҫ���ļĴ�����
  143. return LCD_RD_DATA();
  144. }
  145. //��ʼдGRAM
  146. void LCD_WriteRAM_Prepare(void)
  147. {
  148. LCD_WR_REG(lcddev.wramcmd);
  149. }
  150. //LCDдGRAM
  151. //RGB_Code:��ɫֵ
  152. void LCD_WriteRAM(u16 RGB_Code)
  153. {
  154. LCD_WR_DATA(RGB_Code);//дʮ��λGRAM
  155. }
  156. //��ILI93xx����������ΪGBR��ʽ��������д����ʱ��ΪRGB��ʽ��
  157. //ͨ���ú���ת��
  158. //c:GBR��ʽ����ɫֵ
  159. //����ֵ��RGB��ʽ����ɫֵ
  160. u16 LCD_BGR2RGB(u16 c)
  161. {
  162. u16 r,g,b,rgb;
  163. b=(c>>0)&0x1f;
  164. g=(c>>5)&0x3f;
  165. r=(c>>11)&0x1f;
  166. rgb=(b<<11)+(g<<5)+(r<<0);
  167. return(rgb);
  168. }
  169. //��mdk -O1ʱ���Ż�ʱ��Ҫ����
  170. //��ʱi
  171. void opt_delay(u8 i)
  172. {
  173. while(i--);
  174. }
  175. //��ȡ��ij������ɫֵ
  176. //x,y:����
  177. //����ֵ:�˵�����ɫ
  178. u16 LCD_ReadPoint(u16 x,u16 y)
  179. {
  180. u16 r,g,b;
  181. if(x>=lcddev.width||y>=lcddev.height)return 0; //�����˷�Χ,ֱ�ӷ���
  182. LCD_SetCursor(x,y);
  183. if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X1963)LCD_WR_REG(0X2E);//9341/6804/3510/1963 ���Ͷ�GRAMָ��
  184. else if(lcddev.id==0X5510)LCD_WR_REG(0X2E00); //5510 ���Ͷ�GRAMָ��
  185. else LCD_WR_REG(0X22); //����IC���Ͷ�GRAMָ��
  186. GPIOB->CRL=0X88888888; //PB0-7 ��������
  187. GPIOB->CRH=0X88888888; //PB8-15 ��������
  188. GPIOB->ODR=0XFFFF; //ȫ��������
  189. LCD_RS_SET;
  190. LCD_CS_CLR;
  191. //��ȡ����(��GRAMʱ,��һ��Ϊ�ٶ�)
  192. LCD_RD_CLR;
  193. opt_delay(2); //��ʱ
  194. r=DATAIN; //ʵ��������ɫ
  195. LCD_RD_SET;
  196. if(lcddev.id==0X1963)
  197. {
  198. LCD_CS_SET;
  199. GPIOB->CRL=0X33333333; //PB0-7 ��������
  200. GPIOB->CRH=0X33333333; //PB8-15 ��������
  201. GPIOB->ODR=0XFFFF; //ȫ��������
  202. return r; //1963ֱ�Ӷ��Ϳ���
  203. }
  204. //dummy READ
  205. LCD_RD_CLR;
  206. opt_delay(2);//��ʱ
  207. r=DATAIN; //ʵ��������ɫ
  208. LCD_RD_SET;
  209. if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X5510) //9341/NT35310/NT35510Ҫ��2�ζ���
  210. {
  211. LCD_RD_CLR;
  212. opt_delay(2);//��ʱ
  213. b=DATAIN;//��ȡ��ɫֵ
  214. LCD_RD_SET;
  215. g=r&0XFF;//����9341,��һ�ζ�ȡ����RG��ֵ,R��ǰ,G�ں�,��ռ8λ
  216. g<<=8;
  217. }else if(lcddev.id==0X6804)
  218. {
  219. LCD_RD_CLR;
  220. LCD_RD_SET;
  221. r=DATAIN;//6804�ڶ��ζ�ȡ�IJ�����ʵֵ
  222. }
  223. LCD_CS_SET;
  224. GPIOB->CRL=0X33333333; //PB0-7 ��������
  225. GPIOB->CRH=0X33333333; //PB8-15 ��������
  226. GPIOB->ODR=0XFFFF; //ȫ��������
  227. if(lcddev.id==0X9325||lcddev.id==0X4535||lcddev.id==0X4531||lcddev.id==0X8989||lcddev.id==0XB505)return r; //�⼸��ICֱ�ӷ�����ɫֵ
  228. else if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X5510)return (((r>>11)<<11)|((g>>10)<<5)|(b>>11));//ILI9341/NT35310/NT35510��Ҫ��ʽת��һ��
  229. else return LCD_BGR2RGB(r); //����IC
  230. }
  231. //LCD������ʾ
  232. void LCD_DisplayOn(void)
  233. {
  234. if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X1963)LCD_WR_REG(0X29); //������ʾ
  235. else if(lcddev.id==0X5510)LCD_WR_REG(0X2900); //������ʾ
  236. else LCD_WriteReg(0X07,0x0173); //������ʾ
  237. }
  238. //LCD�ر���ʾ
  239. void LCD_DisplayOff(void)
  240. {
  241. if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X1963)LCD_WR_REG(0X28); //�ر���ʾ
  242. else if(lcddev.id==0X5510)LCD_WR_REG(0X2800); //�ر���ʾ
  243. else LCD_WriteReg(0X07,0x0);//�ر���ʾ
  244. }
  245. //���ù���λ��
  246. //Xpos:������
  247. //Ypos:������
  248. void LCD_SetCursor(u16 Xpos, u16 Ypos)
  249. {
  250. if(lcddev.id==0X9341||lcddev.id==0X5310)
  251. {
  252. LCD_WR_REG(lcddev.setxcmd);
  253. LCD_WR_DATA(Xpos>>8);LCD_WR_DATA(Xpos&0XFF);
  254. LCD_WR_REG(lcddev.setycmd);
  255. LCD_WR_DATA(Ypos>>8);LCD_WR_DATA(Ypos&0XFF);
  256. }else if(lcddev.id==0X6804)
  257. {
  258. if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//����ʱ����
  259. LCD_WR_REG(lcddev.setxcmd);
  260. LCD_WR_DATA(Xpos>>8);LCD_WR_DATA(Xpos&0XFF);
  261. LCD_WR_REG(lcddev.setycmd);
  262. LCD_WR_DATA(Ypos>>8);LCD_WR_DATA(Ypos&0XFF);
  263. }else if(lcddev.id==0X1963)
  264. {
  265. if(lcddev.dir==0)//x������Ҫ�任
  266. {
  267. Xpos=lcddev.width-1-Xpos;
  268. LCD_WR_REG(lcddev.setxcmd);
  269. LCD_WR_DATA(0);LCD_WR_DATA(0);
  270. LCD_WR_DATA(Xpos>>8);LCD_WR_DATA(Xpos&0XFF);
  271. }else
  272. {
  273. LCD_WR_REG(lcddev.setxcmd);
  274. LCD_WR_DATA(Xpos>>8);LCD_WR_DATA(Xpos&0XFF);
  275. LCD_WR_DATA((lcddev.width-1)>>8);LCD_WR_DATA((lcddev.width-1)&0XFF);
  276. }
  277. LCD_WR_REG(lcddev.setycmd);
  278. LCD_WR_DATA(Ypos>>8);LCD_WR_DATA(Ypos&0XFF);
  279. LCD_WR_DATA((lcddev.height-1)>>8);LCD_WR_DATA((lcddev.height-1)&0XFF);
  280. }else if(lcddev.id==0X5510)
  281. {
  282. LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(Xpos>>8);
  283. LCD_WR_REG(lcddev.setxcmd+1);LCD_WR_DATA(Xpos&0XFF);
  284. LCD_WR_REG(lcddev.setycmd);LCD_WR_DATA(Ypos>>8);
  285. LCD_WR_REG(lcddev.setycmd+1);LCD_WR_DATA(Ypos&0XFF);
  286. }else
  287. {
  288. if(lcddev.dir==1)Xpos=lcddev.width-1-Xpos;//������ʵ���ǵ�תx,y����
  289. LCD_WriteReg(lcddev.setxcmd, Xpos);
  290. LCD_WriteReg(lcddev.setycmd, Ypos);
  291. }
  292. }
  293. //����LCD���Զ�ɨ�跽��
  294. //ע��:�����������ܻ��ܵ��˺������õ�Ӱ��(������9341/6804����������),
  295. //����,һ������ΪL2R_U2D����,��������Ϊ����ɨ�跽ʽ,���ܵ�����ʾ������.
  296. //dir:0~7,����8������(���嶨����lcd.h)
  297. //9320/9325/9328/4531/4535/1505/b505/5408/9341/5310/5510/1963��IC�Ѿ�ʵ�ʲ���
  298. void LCD_Scan_Dir(u8 dir)
  299. {
  300. u16 regval=0;
  301. u16 dirreg=0;
  302. u16 temp;
  303. if((lcddev.dir==1&&lcddev.id!=0X6804&&lcddev.id!=0X1963)||(lcddev.dir==0&&lcddev.id==0X1963))//����ʱ����6804��1963���ı�ɨ�跽��������ʱ1963�ı䷽��
  304. {
  305. switch(dir)//����ת��
  306. {
  307. case 0:dir=6;break;
  308. case 1:dir=7;break;
  309. case 2:dir=4;break;
  310. case 3:dir=5;break;
  311. case 4:dir=1;break;
  312. case 5:dir=0;break;
  313. case 6:dir=3;break;
  314. case 7:dir=2;break;
  315. }
  316. }
  317. if(lcddev.id==0x9341||lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X5510||lcddev.id==0X1963)//9341/6804/5310/5510/1963,���⴦��
  318. {
  319. switch(dir)
  320. {
  321. case L2R_U2D://��������,���ϵ���
  322. regval|=(0<<7)|(0<<6)|(0<<5);
  323. break;
  324. case L2R_D2U://��������,���µ���
  325. regval|=(1<<7)|(0<<6)|(0<<5);
  326. break;
  327. case R2L_U2D://���ҵ���,���ϵ���
  328. regval|=(0<<7)|(1<<6)|(0<<5);
  329. break;
  330. case R2L_D2U://���ҵ���,���µ���
  331. regval|=(1<<7)|(1<<6)|(0<<5);
  332. break;
  333. case U2D_L2R://���ϵ���,��������
  334. regval|=(0<<7)|(0<<6)|(1<<5);
  335. break;
  336. case U2D_R2L://���ϵ���,���ҵ���
  337. regval|=(0<<7)|(1<<6)|(1<<5);
  338. break;
  339. case D2U_L2R://���µ���,��������
  340. regval|=(1<<7)|(0<<6)|(1<<5);
  341. break;
  342. case D2U_R2L://���µ���,���ҵ���
  343. regval|=(1<<7)|(1<<6)|(1<<5);
  344. break;
  345. }
  346. if(lcddev.id==0X5510)dirreg=0X3600;
  347. else dirreg=0X36;
  348. if((lcddev.id!=0X5310)&&(lcddev.id!=0X5510)&&(lcddev.id!=0X1963))regval|=0X08;//5310/5510/1963����ҪBGR
  349. if(lcddev.id==0X6804)regval|=0x02;//6804��BIT6��9341���
  350. LCD_WriteReg(dirreg,regval);
  351. if(lcddev.id!=0X1963)//1963�������괦��
  352. {
  353. if(regval&0X20)
  354. {
  355. if(lcddev.width<lcddev.height)//����X,Y
  356. {
  357. temp=lcddev.width;
  358. lcddev.width=lcddev.height;
  359. lcddev.height=temp;
  360. }
  361. }else
  362. {
  363. if(lcddev.width>lcddev.height)//����X,Y
  364. {
  365. temp=lcddev.width;
  366. lcddev.width=lcddev.height;
  367. lcddev.height=temp;
  368. }
  369. }
  370. }
  371. if(lcddev.id==0X5510)
  372. {
  373. LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(0);
  374. LCD_WR_REG(lcddev.setxcmd+1);LCD_WR_DATA(0);
  375. LCD_WR_REG(lcddev.setxcmd+2);LCD_WR_DATA((lcddev.width-1)>>8);
  376. LCD_WR_REG(lcddev.setxcmd+3);LCD_WR_DATA((lcddev.width-1)&0XFF);
  377. LCD_WR_REG(lcddev.setycmd);LCD_WR_DATA(0);
  378. LCD_WR_REG(lcddev.setycmd+1);LCD_WR_DATA(0);
  379. LCD_WR_REG(lcddev.setycmd+2);LCD_WR_DATA((lcddev.height-1)>>8);
  380. LCD_WR_REG(lcddev.setycmd+3);LCD_WR_DATA((lcddev.height-1)&0XFF);
  381. }else
  382. {
  383. LCD_WR_REG(lcddev.setxcmd);
  384. LCD_WR_DATA(0);LCD_WR_DATA(0);
  385. LCD_WR_DATA((lcddev.width-1)>>8);LCD_WR_DATA((lcddev.width-1)&0XFF);
  386. LCD_WR_REG(lcddev.setycmd);
  387. LCD_WR_DATA(0);LCD_WR_DATA(0);
  388. LCD_WR_DATA((lcddev.height-1)>>8);LCD_WR_DATA((lcddev.height-1)&0XFF);
  389. }
  390. }else
  391. {
  392. switch(dir)
  393. {
  394. case L2R_U2D://��������,���ϵ���
  395. regval|=(1<<5)|(1<<4)|(0<<3);
  396. break;
  397. case L2R_D2U://��������,���µ���
  398. regval|=(0<<5)|(1<<4)|(0<<3);
  399. break;
  400. case R2L_U2D://���ҵ���,���ϵ���
  401. regval|=(1<<5)|(0<<4)|(0<<3);
  402. break;
  403. case R2L_D2U://���ҵ���,���µ���
  404. regval|=(0<<5)|(0<<4)|(0<<3);
  405. break;
  406. case U2D_L2R://���ϵ���,��������
  407. regval|=(1<<5)|(1<<4)|(1<<3);
  408. break;
  409. case U2D_R2L://���ϵ���,���ҵ���
  410. regval|=(1<<5)|(0<<4)|(1<<3);
  411. break;
  412. case D2U_L2R://���µ���,��������
  413. regval|=(0<<5)|(1<<4)|(1<<3);
  414. break;
  415. case D2U_R2L://���µ���,���ҵ���
  416. regval|=(0<<5)|(0<<4)|(1<<3);
  417. break;
  418. }
  419. dirreg=0X03;
  420. regval|=1<<12;
  421. LCD_WriteReg(dirreg,regval);
  422. }
  423. }
  424. //����
  425. //x,y:����
  426. //POINT_COLOR:�˵�����ɫ
  427. void LCD_DrawPoint(u16 x,u16 y)
  428. {
  429. LCD_SetCursor(x,y); //���ù���λ��
  430. LCD_WriteRAM_Prepare(); //��ʼд��GRAM
  431. LCD_WR_DATA(POINT_COLOR);
  432. }
  433. //���ٻ���
  434. //x,y:����
  435. //color:��ɫ
  436. void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)
  437. {
  438. if(lcddev.id==0X9341||lcddev.id==0X5310)
  439. {
  440. LCD_WR_REG(lcddev.setxcmd);
  441. LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF);
  442. LCD_WR_REG(lcddev.setycmd);
  443. LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF);
  444. }else if(lcddev.id==0X5510)
  445. {
  446. LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(x>>8);
  447. LCD_WR_REG(lcddev.setxcmd+1);LCD_WR_DATA(x&0XFF);
  448. LCD_WR_REG(lcddev.setycmd);LCD_WR_DATA(y>>8);
  449. LCD_WR_REG(lcddev.setycmd+1);LCD_WR_DATA(y&0XFF);
  450. }else if(lcddev.id==0X1963)
  451. {
  452. if(lcddev.dir==0)x=lcddev.width-1-x;
  453. LCD_WR_REG(lcddev.setxcmd);
  454. LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF);
  455. LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF);
  456. LCD_WR_REG(lcddev.setycmd);
  457. LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF);
  458. LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF);
  459. }else if(lcddev.id==0X6804)
  460. {
  461. if(lcddev.dir==1)x=lcddev.width-1-x;//����ʱ����
  462. LCD_WR_REG(lcddev.setxcmd);
  463. LCD_WR_DATA(x>>8);LCD_WR_DATA(x&0XFF);
  464. LCD_WR_REG(lcddev.setycmd);
  465. LCD_WR_DATA(y>>8);LCD_WR_DATA(y&0XFF);
  466. }else
  467. {
  468. if(lcddev.dir==1)x=lcddev.width-1-x;//������ʵ���ǵ�תx,y����
  469. LCD_WriteReg(lcddev.setxcmd,x);
  470. LCD_WriteReg(lcddev.setycmd,y);
  471. }
  472. LCD_RS_CLR;
  473. LCD_CS_CLR;
  474. DATAOUT(lcddev.wramcmd);//дָ��
  475. LCD_WR_CLR;
  476. LCD_WR_SET;
  477. LCD_CS_SET;
  478. LCD_WR_DATA(color); //���
  479. }
  480. //SSD1963 ��������
  481. //pwm:�����ȼ�,0~100.Խ��Խ��.
  482. void LCD_SSD_BackLightSet(u8 pwm)
  483. {
  484. LCD_WR_REG(0xBE); //����PWM����
  485. LCD_WR_DATA(0x05); //1����PWMƵ��
  486. LCD_WR_DATA(pwm*2.55);//2����PWMռ�ձ�
  487. LCD_WR_DATA(0x01); //3����C
  488. LCD_WR_DATA(0xFF); //4����D
  489. LCD_WR_DATA(0x00); //5����E
  490. LCD_WR_DATA(0x00); //6����F
  491. }
  492. //����LCD��ʾ����
  493. //dir:0,������1,����
  494. void LCD_Display_Dir(u8 dir)
  495. {
  496. if(dir==0) //����
  497. {
  498. lcddev.dir=0; //����
  499. lcddev.width=240;
  500. lcddev.height=320;
  501. if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310)
  502. {
  503. lcddev.wramcmd=0X2C;
  504. lcddev.setxcmd=0X2A;
  505. lcddev.setycmd=0X2B;
  506. if(lcddev.id==0X6804||lcddev.id==0X5310)
  507. {
  508. lcddev.width=320;
  509. lcddev.height=480;
  510. }
  511. }else if(lcddev.id==0x5510)
  512. {
  513. lcddev.wramcmd=0X2C00;
  514. lcddev.setxcmd=0X2A00;
  515. lcddev.setycmd=0X2B00;
  516. lcddev.width=480;
  517. lcddev.height=800;
  518. }else if(lcddev.id==0X1963)
  519. {
  520. lcddev.wramcmd=0X2C; //����д��GRAM��ָ��
  521. lcddev.setxcmd=0X2B; //����дX����ָ��
  522. lcddev.setycmd=0X2A; //����дY����ָ��
  523. lcddev.width=480; //���ÿ���480
  524. lcddev.height=800; //���ø߶�800
  525. }else
  526. {
  527. lcddev.wramcmd=0X22;
  528. lcddev.setxcmd=0X20;
  529. lcddev.setycmd=0X21;
  530. }
  531. }else //����
  532. {
  533. lcddev.dir=1; //����
  534. lcddev.width=320;
  535. lcddev.height=240;
  536. if(lcddev.id==0X9341||lcddev.id==0X5310)
  537. {
  538. lcddev.wramcmd=0X2C;
  539. lcddev.setxcmd=0X2A;
  540. lcddev.setycmd=0X2B;
  541. }else if(lcddev.id==0X6804)
  542. {
  543. lcddev.wramcmd=0X2C;
  544. lcddev.setxcmd=0X2B;
  545. lcddev.setycmd=0X2A;
  546. }else if(lcddev.id==0x5510)
  547. {
  548. lcddev.wramcmd=0X2C00;
  549. lcddev.setxcmd=0X2A00;
  550. lcddev.setycmd=0X2B00;
  551. lcddev.width=800;
  552. lcddev.height=480;
  553. }else if(lcddev.id==0X1963)
  554. {
  555. lcddev.wramcmd=0X2C; //����д��GRAM��ָ��
  556. lcddev.setxcmd=0X2A; //����дX����ָ��
  557. lcddev.setycmd=0X2B; //����дY����ָ��
  558. lcddev.width=800; //���ÿ���800
  559. lcddev.height=480; //���ø߶�480
  560. }else
  561. {
  562. lcddev.wramcmd=0X22;
  563. lcddev.setxcmd=0X21;
  564. lcddev.setycmd=0X20;
  565. }
  566. if(lcddev.id==0X6804||lcddev.id==0X5310)
  567. {
  568. lcddev.width=480;
  569. lcddev.height=320;
  570. }
  571. }
  572. LCD_Scan_Dir(DFT_SCAN_DIR); //Ĭ��ɨ�跽��
  573. }
  574. //���ô���,���Զ����û������굽�������Ͻ�(sx,sy).
  575. //sx,sy:������ʼ����(���Ͻ�)
  576. //width,height:���ڿ��Ⱥ͸߶�,��������0!!
  577. //������С:width*height.
  578. void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)
  579. {
  580. u8 hsareg,heareg,vsareg,veareg;
  581. u16 hsaval,heaval,vsaval,veaval;
  582. u16 twidth,theight;
  583. twidth=sx+width-1;
  584. theight=sy+height-1;
  585. if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X6804||(lcddev.dir==1&&lcddev.id==0X1963))
  586. {
  587. LCD_WR_REG(lcddev.setxcmd);
  588. LCD_WR_DATA(sx>>8);
  589. LCD_WR_DATA(sx&0XFF);
  590. LCD_WR_DATA(twidth>>8);
  591. LCD_WR_DATA(twidth&0XFF);
  592. LCD_WR_REG(lcddev.setycmd);
  593. LCD_WR_DATA(sy>>8);
  594. LCD_WR_DATA(sy&0XFF);
  595. LCD_WR_DATA(theight>>8);
  596. LCD_WR_DATA(theight&0XFF);
  597. }else if(lcddev.id==0X1963)//1963�������⴦��
  598. {
  599. sx=lcddev.width-width-sx;
  600. height=sy+height-1;
  601. LCD_WR_REG(lcddev.setxcmd);
  602. LCD_WR_DATA(sx>>8);
  603. LCD_WR_DATA(sx&0XFF);
  604. LCD_WR_DATA((sx+width-1)>>8);
  605. LCD_WR_DATA((sx+width-1)&0XFF);
  606. LCD_WR_REG(lcddev.setycmd);
  607. LCD_WR_DATA(sy>>8);
  608. LCD_WR_DATA(sy&0XFF);
  609. LCD_WR_DATA(height>>8);
  610. LCD_WR_DATA(height&0XFF);
  611. }else if(lcddev.id==0X5510)
  612. {
  613. LCD_WR_REG(lcddev.setxcmd);LCD_WR_DATA(sx>>8);
  614. LCD_WR_REG(lcddev.setxcmd+1);LCD_WR_DATA(sx&0XFF);
  615. LCD_WR_REG(lcddev.setxcmd+2);LCD_WR_DATA(twidth>>8);
  616. LCD_WR_REG(lcddev.setxcmd+3);LCD_WR_DATA(twidth&0XFF);
  617. LCD_WR_REG(lcddev.setycmd);LCD_WR_DATA(sy>>8);
  618. LCD_WR_REG(lcddev.setycmd+1);LCD_WR_DATA(sy&0XFF);
  619. LCD_WR_REG(lcddev.setycmd+2);LCD_WR_DATA(theight>>8);
  620. LCD_WR_REG(lcddev.setycmd+3);LCD_WR_DATA(theight&0XFF);
  621. }else //��������IC
  622. {
  623. if(lcddev.dir==1)//����
  624. {
  625. //����ֵ
  626. hsaval=sy;
  627. heaval=theight;
  628. vsaval=lcddev.width-twidth-1;
  629. veaval=lcddev.width-sx-1;
  630. }else
  631. {
  632. hsaval=sx;
  633. heaval=twidth;
  634. vsaval=sy;
  635. veaval=theight;
  636. }
  637. hsareg=0X50;heareg=0X51;//ˮƽ���򴰿ڼĴ���
  638. vsareg=0X52;veareg=0X53;//��ֱ���򴰿ڼĴ���
  639. //���üĴ���ֵ
  640. LCD_WriteReg(hsareg,hsaval);
  641. LCD_WriteReg(heareg,heaval);
  642. LCD_WriteReg(vsareg,vsaval);
  643. LCD_WriteReg(veareg,veaval);
  644. LCD_SetCursor(sx,sy); //���ù���λ��
  645. }
  646. }
  647. //��ʼ��lcd
  648. //�ó�ʼ���������Գ�ʼ������ALIENTEK��Ʒ��LCDҺ����
  649. //������ռ�ýϴ�flash,�û����Ը����Լ���ʵ������,ɾ��δ�õ���LCD��ʼ������.�Խ�ʡ�ռ�.
  650. void LCD_Init(void)
  651. {
  652. GPIO_InitTypeDef GPIO_InitStructure;
  653. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE); //ʹ��PORTB,Cʱ�Ӻ�AFIOʱ��
  654. GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);//����SWD��ʧ��JTAG
  655. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6; ///PORTC6~10������������
  656. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  657. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  658. GPIO_Init(GPIOC, &GPIO_InitStructure); //GPIOC
  659. GPIO_SetBits(GPIOC,GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);
  660. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // PORTB��������
  661. GPIO_Init(GPIOB, &GPIO_InitStructure); //GPIOB
  662. GPIO_SetBits(GPIOB,GPIO_Pin_All);
  663. delay_ms(50); // delay 50 ms
  664. LCD_WriteReg(0x0000,0x0001);
  665. delay_ms(50); // delay 50 ms
  666. lcddev.id = LCD_ReadReg(0x0000);
  667. if(lcddev.id<0XFF||lcddev.id==0XFFFF||lcddev.id==0X9300)//����ID����ȷ,����lcddev.id==0X9300�жϣ���Ϊ9341��δ����λ�������»ᱻ����9300
  668. {
  669. //����9341 ID�Ķ�ȡ
  670. LCD_WR_REG(0XD3);
  671. LCD_RD_DATA(); //dummy read
  672. LCD_RD_DATA(); //����0X00
  673. lcddev.id=LCD_RD_DATA(); //��ȡ93
  674. lcddev.id<<=8;
  675. lcddev.id|=LCD_RD_DATA(); //��ȡ41
  676. if(lcddev.id!=0X9341) //��9341,�����Dz���6804
  677. {
  678. LCD_WR_REG(0XBF);
  679. LCD_RD_DATA(); //dummy read
  680. LCD_RD_DATA(); //����0X01
  681. LCD_RD_DATA(); //����0XD0
  682. lcddev.id=LCD_RD_DATA();//��������0X68
  683. lcddev.id<<=8;
  684. lcddev.id|=LCD_RD_DATA();//��������0X04
  685. if(lcddev.id!=0X6804) //Ҳ����6804,���Կ����Dz���NT35310
  686. {
  687. LCD_WR_REG(0XD4);
  688. LCD_RD_DATA(); //dummy read
  689. LCD_RD_DATA(); //����0X01
  690. lcddev.id=LCD_RD_DATA(); //����0X53
  691. lcddev.id<<=8;
  692. lcddev.id|=LCD_RD_DATA(); //��������0X10
  693. if(lcddev.id!=0X5310) //Ҳ����NT35310,���Կ����Dz���NT35510
  694. {
  695. LCD_WR_REG(0XDA00);
  696. LCD_RD_DATA(); //����0X00
  697. LCD_WR_REG(0XDB00);
  698. lcddev.id=LCD_RD_DATA();//����0X80
  699. lcddev.id<<=8;
  700. LCD_WR_REG(0XDC00);
  701. lcddev.id|=LCD_RD_DATA();//����0X00
  702. if(lcddev.id==0x8000)lcddev.id=0x5510;//NT35510���ص�ID��8000H,Ϊ��������,����ǿ������Ϊ5510
  703. if(lcddev.id!=0X5510) //Ҳ����NT5510,���Կ����Dz���SSD1963
  704. {
  705. LCD_WR_REG(0XA1);
  706. lcddev.id=LCD_RD_DATA();
  707. lcddev.id=LCD_RD_DATA(); //����0X57
  708. lcddev.id<<=8;
  709. lcddev.id|=LCD_RD_DATA(); //����0X61
  710. if(lcddev.id==0X5761)lcddev.id=0X1963;//SSD1963���ص�ID��5761H,Ϊ��������,����ǿ������Ϊ1963
  711. }
  712. }
  713. }
  714. }
  715. }
  716. //printf(" LCD ID:%x\r\n",lcddev.id); //��ӡLCD ID
  717. if(lcddev.id==0X9341) //9341��ʼ��
  718. {
  719. LCD_WR_REG(0xCF);
  720. LCD_WR_DATAX(0x00);
  721. LCD_WR_DATAX(0xC1);
  722. LCD_WR_DATAX(0X30);
  723. LCD_WR_REG(0xED);
  724. LCD_WR_DATAX(0x64);
  725. LCD_WR_DATAX(0x03);
  726. LCD_WR_DATAX(0X12);
  727. LCD_WR_DATAX(0X81);
  728. LCD_WR_REG(0xE8);
  729. LCD_WR_DATAX(0x85);
  730. LCD_WR_DATAX(0x10);
  731. LCD_WR_DATAX(0x7A);
  732. LCD_WR_REG(0xCB);
  733. LCD_WR_DATAX(0x39);
  734. LCD_WR_DATAX(0x2C);
  735. LCD_WR_DATAX(0x00);
  736. LCD_WR_DATAX(0x34);
  737. LCD_WR_DATAX(0x02);
  738. LCD_WR_REG(0xF7);
  739. LCD_WR_DATAX(0x20);
  740. LCD_WR_REG(0xEA);
  741. LCD_WR_DATAX(0x00);
  742. LCD_WR_DATAX(0x00);
  743. LCD_WR_REG(0xC0); //Power control
  744. LCD_WR_DATAX(0x1B); //VRH[5:0]
  745. LCD_WR_REG(0xC1); //Power control
  746. LCD_WR_DATAX(0x01); //SAP[2:0];BT[3:0]
  747. LCD_WR_REG(0xC5); //VCM control
  748. LCD_WR_DATAX(0x30); //3F
  749. LCD_WR_DATAX(0x30); //3C
  750. LCD_WR_REG(0xC7); //VCM control2
  751. LCD_WR_DATAX(0XB7);
  752. LCD_WR_REG(0x36); // Memory Access Control
  753. LCD_WR_DATAX(0x48);
  754. LCD_WR_REG(0x3A);
  755. LCD_WR_DATAX(0x55);
  756. LCD_WR_REG(0xB1);
  757. LCD_WR_DATAX(0x00);
  758. LCD_WR_DATAX(0x1A);
  759. LCD_WR_REG(0xB6); // Display Function Control
  760. LCD_WR_DATAX(0x0A);
  761. LCD_WR_DATAX(0xA2);
  762. LCD_WR_REG(0xF2); // 3Gamma Function Disable
  763. LCD_WR_DATAX(0x00);
  764. LCD_WR_REG(0x26); //Gamma curve selected
  765. LCD_WR_DATAX(0x01);
  766. LCD_WR_REG(0xE0); //Set Gamma
  767. LCD_WR_DATAX(0x0F);
  768. LCD_WR_DATAX(0x2A);
  769. LCD_WR_DATAX(0x28);
  770. LCD_WR_DATAX(0x08);
  771. LCD_WR_DATAX(0x0E);
  772. LCD_WR_DATAX(0x08);
  773. LCD_WR_DATAX(0x54);
  774. LCD_WR_DATAX(0XA9);
  775. LCD_WR_DATAX(0x43);
  776. LCD_WR_DATAX(0x0A);
  777. LCD_WR_DATAX(0x0F);
  778. LCD_WR_DATAX(0x00);
  779. LCD_WR_DATAX(0x00);
  780. LCD_WR_DATAX(0x00);
  781. LCD_WR_DATAX(0x00);
  782. LCD_WR_REG(0XE1); //Set Gamma
  783. LCD_WR_DATAX(0x00);
  784. LCD_WR_DATAX(0x15);
  785. LCD_WR_DATAX(0x17);
  786. LCD_WR_DATAX(0x07);
  787. LCD_WR_DATAX(0x11);
  788. LCD_WR_DATAX(0x06);
  789. LCD_WR_DATAX(0x2B);
  790. LCD_WR_DATAX(0x56);
  791. LCD_WR_DATAX(0x3C);
  792. LCD_WR_DATAX(0x05);
  793. LCD_WR_DATAX(0x10);
  794. LCD_WR_DATAX(0x0F);
  795. LCD_WR_DATAX(0x3F);
  796. LCD_WR_DATAX(0x3F);
  797. LCD_WR_DATAX(0x0F);
  798. LCD_WR_REG(0x2B);
  799. LCD_WR_DATAX(0x00);
  800. LCD_WR_DATAX(0x00);
  801. LCD_WR_DATAX(0x01);
  802. LCD_WR_DATAX(0x3f);
  803. LCD_WR_REG(0x2A);
  804. LCD_WR_DATAX(0x00);
  805. LCD_WR_DATAX(0x00);
  806. LCD_WR_DATAX(0x00);
  807. LCD_WR_DATAX(0xef);
  808. LCD_WR_REG(0x11); //Exit Sleep
  809. delay_ms(120);
  810. LCD_WR_REG(0x29); //display on
  811. }else if(lcddev.id==0x6804) //6804��ʼ��
  812. {
  813. LCD_WR_REG(0X11);
  814. delay_ms(20);
  815. LCD_WR_REG(0XD0);//VCI1 VCL VGH VGL DDVDH VREG1OUT power amplitude setting
  816. LCD_WR_DATAX(0X07);
  817. LCD_WR_DATAX(0X42);
  818. LCD_WR_DATAX(0X1D);
  819. LCD_WR_REG(0XD1);//VCOMH VCOM_AC amplitude setting
  820. LCD_WR_DATAX(0X00);
  821. LCD_WR_DATAX(0X1a);
  822. LCD_WR_DATAX(0X09);
  823. LCD_WR_REG(0XD2);//Operational Amplifier Circuit Constant Current Adjust , charge pump frequency setting
  824. LCD_WR_DATAX(0X01);
  825. LCD_WR_DATAX(0X22);
  826. LCD_WR_REG(0XC0);//REV SM GS
  827. LCD_WR_DATAX(0X10);
  828. LCD_WR_DATAX(0X3B);
  829. LCD_WR_DATAX(0X00);
  830. LCD_WR_DATAX(0X02);
  831. LCD_WR_DATAX(0X11);
  832. LCD_WR_REG(0XC5);// Frame rate setting = 72HZ when setting 0x03
  833. LCD_WR_DATAX(0X03);
  834. LCD_WR_REG(0XC8);//Gamma setting
  835. LCD_WR_DATAX(0X00);
  836. LCD_WR_DATAX(0X25);
  837. LCD_WR_DATAX(0X21);
  838. LCD_WR_DATAX(0X05);
  839. LCD_WR_DATAX(0X00);
  840. LCD_WR_DATAX(0X0a);
  841. LCD_WR_DATAX(0X65);
  842. LCD_WR_DATAX(0X25);
  843. LCD_WR_DATAX(0X77);
  844. LCD_WR_DATAX(0X50);
  845. LCD_WR_DATAX(0X0f);
  846. LCD_WR_DATAX(0X00);
  847. LCD_WR_REG(0XF8);
  848. LCD_WR_DATAX(0X01);
  849. LCD_WR_REG(0XFE);
  850. LCD_WR_DATAX(0X00);
  851. LCD_WR_DATAX(0X02);
  852. LCD_WR_REG(0X20);//Exit invert mode
  853. LCD_WR_REG(0X36);
  854. LCD_WR_DATAX(0X08);//ԭ����a
  855. LCD_WR_REG(0X3A);
  856. LCD_WR_DATAX(0X55);//16λģʽ
  857. LCD_WR_REG(0X2B);
  858. LCD_WR_DATAX(0X00);
  859. LCD_WR_DATAX(0X00);
  860. LCD_WR_DATAX(0X01);
  861. LCD_WR_DATAX(0X3F);
  862. LCD_WR_REG(0X2A);
  863. LCD_WR_DATAX(0X00);
  864. LCD_WR_DATAX(0X00);
  865. LCD_WR_DATAX(0X01);
  866. LCD_WR_DATAX(0XDF);
  867. delay_ms(120);
  868. LCD_WR_REG(0X29);
  869. }else if(lcddev.id==0x5310)
  870. {
  871. LCD_WR_REG(0xED);
  872. LCD_WR_DATAX(0x01);
  873. LCD_WR_DATAX(0xFE);
  874. LCD_WR_REG(0xEE);
  875. LCD_WR_DATAX(0xDE);
  876. LCD_WR_DATAX(0x21);
  877. LCD_WR_REG(0xF1);
  878. LCD_WR_DATAX(0x01);
  879. LCD_WR_REG(0xDF);
  880. LCD_WR_DATAX(0x10);
  881. //VCOMvoltage//
  882. LCD_WR_REG(0xC4);
  883. LCD_WR_DATAX(0x8F); //5f
  884. LCD_WR_REG(0xC6);
  885. LCD_WR_DATAX(0x00);
  886. LCD_WR_DATAX(0xE2);
  887. LCD_WR_DATAX(0xE2);
  888. LCD_WR_DATAX(0xE2);
  889. LCD_WR_REG(0xBF);
  890. LCD_WR_DATAX(0xAA);
  891. LCD_WR_REG(0xB0);
  892. LCD_WR_DATAX(0x0D);
  893. LCD_WR_DATAX(0x00);
  894. LCD_WR_DATAX(0x0D);
  895. LCD_WR_DATAX(0x00);
  896. LCD_WR_DATAX(0x11);
  897. LCD_WR_DATAX(0x00);
  898. LCD_WR_DATAX(0x19);
  899. LCD_WR_DATAX(0x00);
  900. LCD_WR_DATAX(0x21);
  901. LCD_WR_DATAX(0x00);
  902. LCD_WR_DATAX(0x2D);
  903. LCD_WR_DATAX(0x00);
  904. LCD_WR_DATAX(0x3D);
  905. LCD_WR_DATAX(0x00);
  906. LCD_WR_DATAX(0x5D);
  907. LCD_WR_DATAX(0x00);
  908. LCD_WR_DATAX(0x5D);
  909. LCD_WR_DATAX(0x00);
  910. LCD_WR_REG(0xB1);
  911. LCD_WR_DATAX(0x80);
  912. LCD_WR_DATAX(0x00);
  913. LCD_WR_DATAX(0x8B);
  914. LCD_WR_DATAX(0x00);
  915. LCD_WR_DATAX(0x96);
  916. LCD_WR_DATAX(0x00);
  917. LCD_WR_REG(0xB2);
  918. LCD_WR_DATAX(0x00);
  919. LCD_WR_DATAX(0x00);
  920. LCD_WR_DATAX(0x02);
  921. LCD_WR_DATAX(0x00);
  922. LCD_WR_DATAX(0x03);
  923. LCD_WR_DATAX(0x00);
  924. LCD_WR_REG(0xB3);
  925. LCD_WR_DATAX(0x00);
  926. LCD_WR_DATAX(0x00);
  927. LCD_WR_DATAX(0x00);
  928. LCD_WR_DATAX(0x00);
  929. LCD_WR_DATAX(0x00);
  930. LCD_WR_DATAX(0x00);
  931. LCD_WR_DATAX(0x00);
  932. LCD_WR_DATAX(0x00);
  933. LCD_WR_DATAX(0x00);
  934. LCD_WR_DATAX(0x00);
  935. LCD_WR_DATAX(0x00);
  936. LCD_WR_DATAX(0x00);
  937. LCD_WR_DATAX(0x00);
  938. LCD_WR_DATAX(0x00);
  939. LCD_WR_DATAX(0x00);
  940. LCD_WR_DATAX(0x00);
  941. LCD_WR_DATAX(0x00);
  942. LCD_WR_DATAX(0x00);
  943. LCD_WR_DATAX(0x00);
  944. LCD_WR_DATAX(0x00);
  945. LCD_WR_DATAX(0x00);
  946. LCD_WR_DATAX(0x00);
  947. LCD_WR_DATAX(0x00);
  948. LCD_WR_DATAX(0x00);
  949. LCD_WR_REG(0xB4);
  950. LCD_WR_DATAX(0x8B);
  951. LCD_WR_DATAX(0x00);
  952. LCD_WR_DATAX(0x96);
  953. LCD_WR_DATAX(0x00);
  954. LCD_WR_DATAX(0xA1);
  955. LCD_WR_DATAX(0x00);
  956. LCD_WR_REG(0xB5);
  957. LCD_WR_DATAX(0x02);
  958. LCD_WR_DATAX(0x00);
  959. LCD_WR_DATAX(0x03);
  960. LCD_WR_DATAX(0x00);
  961. LCD_WR_DATAX(0x04);
  962. LCD_WR_DATAX(0x00);
  963. LCD_WR_REG(0xB6);
  964. LCD_WR_DATAX(0x00);
  965. LCD_WR_DATAX(0x00);
  966. LCD_WR_REG(0xB7);
  967. LCD_WR_DATAX(0x00);
  968. LCD_WR_DATAX(0x00);
  969. LCD_WR_DATAX(0x3F);
  970. LCD_WR_DATAX(0x00);
  971. LCD_WR_DATAX(0x5E);
  972. LCD_WR_DATAX(0x00);
  973. LCD_WR_DATAX(0x64);
  974. LCD_WR_DATAX(0x00);
  975. LCD_WR_DATAX(0x8C);
  976. LCD_WR_DATAX(0x00);
  977. LCD_WR_DATAX(0xAC);
  978. LCD_WR_DATAX(0x00);
  979. LCD_WR_DATAX(0xDC);
  980. LCD_WR_DATAX(0x00);
  981. LCD_WR_DATAX(0x70);
  982. LCD_WR_DATAX(0x00);
  983. LCD_WR_DATAX(0x90);
  984. LCD_WR_DATAX(0x00);
  985. LCD_WR_DATAX(0xEB);
  986. LCD_WR_DATAX(0x00);
  987. LCD_WR_DATAX(0xDC);
  988. LCD_WR_DATAX(0x00);
  989. LCD_WR_REG(0xB8);
  990. LCD_WR_DATAX(0x00);
  991. LCD_WR_DATAX(0x00);
  992. LCD_WR_DATAX(0x00);
  993. LCD_WR_DATAX(0x00);
  994. LCD_WR_DATAX(0x00);
  995. LCD_WR_DATAX(0x00);
  996. LCD_WR_DATAX(0x00);
  997. LCD_WR_DATAX(0x00);
  998. LCD_WR_REG(0xBA);
  999. LCD_WR_DATAX(0x24);
  1000. LCD_WR_DATAX(0x00);
  1001. LCD_WR_DATAX(0x00);
  1002. LCD_WR_DATAX(0x00);
  1003. LCD_WR_REG(0xC1);
  1004. LCD_WR_DATAX(0x20);
  1005. LCD_WR_DATAX(0x00);
  1006. LCD_WR_DATAX(0x54);
  1007. LCD_WR_DATAX(0x00);
  1008. LCD_WR_DATAX(0xFF);
  1009. LCD_WR_DATAX(0x00);
  1010. LCD_WR_REG(0xC2);
  1011. LCD_WR_DATAX(0x0A);
  1012. LCD_WR_DATAX(0x00);
  1013. LCD_WR_DATAX(0x04);
  1014. LCD_WR_DATAX(0x00);
  1015. LCD_WR_REG(0xC3);
  1016. LCD_WR_DATAX(0x3C);
  1017. LCD_WR_DATAX(0x00);
  1018. LCD_WR_DATAX(0x3A);
  1019. LCD_WR_DATAX(0x00);
  1020. LCD_WR_DATAX(0x39);
  1021. LCD_WR_DATAX(0x00);
  1022. LCD_WR_DATAX(0x37);
  1023. LCD_WR_DATAX(0x00);
  1024. LCD_WR_DATAX(0x3C);
  1025. LCD_WR_DATAX(0x00);
  1026. LCD_WR_DATAX(0x36);
  1027. LCD_WR_DATAX(0x00);
  1028. LCD_WR_DATAX(0x32);
  1029. LCD_WR_DATAX(0x00);
  1030. LCD_WR_DATAX(0x2F);
  1031. LCD_WR_DATAX(0x00);
  1032. LCD_WR_DATAX(0x2C);
  1033. LCD_WR_DATAX(0x00);
  1034. LCD_WR_DATAX(0x29);
  1035. LCD_WR_DATAX(0x00);
  1036. LCD_WR_DATAX(0x26);
  1037. LCD_WR_DATAX(0x00);
  1038. LCD_WR_DATAX(0x24);
  1039. LCD_WR_DATAX(0x00);
  1040. LCD_WR_DATAX(0x24);
  1041. LCD_WR_DATAX(0x00);
  1042. LCD_WR_DATAX(0x23);
  1043. LCD_WR_DATAX(0x00);
  1044. LCD_WR_DATAX(0x3C);
  1045. LCD_WR_DATAX(0x00);
  1046. LCD_WR_DATAX(0x36);
  1047. LCD_WR_DATAX(0x00);
  1048. LCD_WR_DATAX(0x32);
  1049. LCD_WR_DATAX(0x00);
  1050. LCD_WR_DATAX(0x2F);
  1051. LCD_WR_DATAX(0x00);
  1052. LCD_WR_DATAX(0x2C);
  1053. LCD_WR_DATAX(0x00);
  1054. LCD_WR_DATAX(0x29);
  1055. LCD_WR_DATAX(0x00);
  1056. LCD_WR_DATAX(0x26);
  1057. LCD_WR_DATAX(0x00);
  1058. LCD_WR_DATAX(0x24);
  1059. LCD_WR_DATAX(0x00);
  1060. LCD_WR_DATAX(0x24);
  1061. LCD_WR_DATAX(0x00);
  1062. LCD_WR_DATAX(0x23);
  1063. LCD_WR_DATAX(0x00);
  1064. LCD_WR_REG(0xC4);
  1065. LCD_WR_DATAX(0x62);
  1066. LCD_WR_DATAX(0x00);
  1067. LCD_WR_DATAX(0x05);
  1068. LCD_WR_DATAX(0x00);
  1069. LCD_WR_DATAX(0x84);
  1070. LCD_WR_DATAX(0x00);
  1071. LCD_WR_DATAX(0xF0);
  1072. LCD_WR_DATAX(0x00);
  1073. LCD_WR_DATAX(0x18);
  1074. LCD_WR_DATAX(0x00);
  1075. LCD_WR_DATAX(0xA4);
  1076. LCD_WR_DATAX(0x00);
  1077. LCD_WR_DATAX(0x18);
  1078. LCD_WR_DATAX(0x00);
  1079. LCD_WR_DATAX(0x50);
  1080. LCD_WR_DATAX(0x00);
  1081. LCD_WR_DATAX(0x0C);
  1082. LCD_WR_DATAX(0x00);
  1083. LCD_WR_DATAX(0x17);
  1084. LCD_WR_DATAX(0x00);
  1085. LCD_WR_DATAX(0x95);
  1086. LCD_WR_DATAX(0x00);
  1087. LCD_WR_DATAX(0xF3);
  1088. LCD_WR_DATAX(0x00);
  1089. LCD_WR_DATAX(0xE6);
  1090. LCD_WR_DATAX(0x00);
  1091. LCD_WR_REG(0xC5);
  1092. LCD_WR_DATAX(0x32);
  1093. LCD_WR_DATAX(0x00);
  1094. LCD_WR_DATAX(0x44);
  1095. LCD_WR_DATAX(0x00);
  1096. LCD_WR_DATAX(0x65);
  1097. LCD_WR_DATAX(0x00);
  1098. LCD_WR_DATAX(0x76);
  1099. LCD_WR_DATAX(0x00);
  1100. LCD_WR_DATAX(0x88);
  1101. LCD_WR_DATAX(0x00);
  1102. LCD_WR_REG(0xC6);
  1103. LCD_WR_DATAX(0x20);
  1104. LCD_WR_DATAX(0x00);
  1105. LCD_WR_DATAX(0x17);
  1106. LCD_WR_DATAX(0x00);
  1107. LCD_WR_DATAX(0x01);
  1108. LCD_WR_DATAX(0x00);
  1109. LCD_WR_REG(0xC7);
  1110. LCD_WR_DATAX(0x00);
  1111. LCD_WR_DATAX(0x00);
  1112. LCD_WR_DATAX(0x00);
  1113. LCD_WR_DATAX(0x00);
  1114. LCD_WR_REG(0xC8);
  1115. LCD_WR_DATAX(0x00);
  1116. LCD_WR_DATAX(0x00);
  1117. LCD_WR_DATAX(0x00);
  1118. LCD_WR_DATAX(0x00);
  1119. LCD_WR_REG(0xC9);
  1120. LCD_WR_DATAX(0x00);
  1121. LCD_WR_DATAX(0x00);
  1122. LCD_WR_DATAX(0x00);
  1123. LCD_WR_DATAX(0x00);
  1124. LCD_WR_DATAX(0x00);
  1125. LCD_WR_DATAX(0x00);
  1126. LCD_WR_DATAX(0x00);
  1127. LCD_WR_DATAX(0x00);
  1128. LCD_WR_DATAX(0x00);
  1129. LCD_WR_DATAX(0x00);
  1130. LCD_WR_DATAX(0x00);
  1131. LCD_WR_DATAX(0x00);
  1132. LCD_WR_DATAX(0x00);
  1133. LCD_WR_DATAX(0x00);
  1134. LCD_WR_DATAX(0x00);
  1135. LCD_WR_DATAX(0x00);
  1136. LCD_WR_REG(0xE0);
  1137. LCD_WR_DATAX(0x16);
  1138. LCD_WR_DATAX(0x00);
  1139. LCD_WR_DATAX(0x1C);
  1140. LCD_WR_DATAX(0x00);
  1141. LCD_WR_DATAX(0x21);
  1142. LCD_WR_DATAX(0x00);
  1143. LCD_WR_DATAX(0x36);
  1144. LCD_WR_DATAX(0x00);
  1145. LCD_WR_DATAX(0x46);
  1146. LCD_WR_DATAX(0x00);
  1147. LCD_WR_DATAX(0x52);
  1148. LCD_WR_DATAX(0x00);
  1149. LCD_WR_DATAX(0x64);
  1150. LCD_WR_DATAX(0x00);
  1151. LCD_WR_DATAX(0x7A);
  1152. LCD_WR_DATAX(0x00);
  1153. LCD_WR_DATAX(0x8B);
  1154. LCD_WR_DATAX(0x00);
  1155. LCD_WR_DATAX(0x99);
  1156. LCD_WR_DATAX(0x00);
  1157. LCD_WR_DATAX(0xA8);
  1158. LCD_WR_DATAX(0x00);
  1159. LCD_WR_DATAX(0xB9);
  1160. LCD_WR_DATAX(0x00);
  1161. LCD_WR_DATAX(0xC4);
  1162. LCD_WR_DATAX(0x00);
  1163. LCD_WR_DATAX(0xCA);
  1164. LCD_WR_DATAX(0x00);
  1165. LCD_WR_DATAX(0xD2);
  1166. LCD_WR_DATAX(0x00);
  1167. LCD_WR_DATAX(0xD9);
  1168. LCD_WR_DATAX(0x00);
  1169. LCD_WR_DATAX(0xE0);
  1170. LCD_WR_DATAX(0x00);
  1171. LCD_WR_DATAX(0xF3);
  1172. LCD_WR_DATAX(0x00);
  1173. LCD_WR_REG(0xE1);
  1174. LCD_WR_DATAX(0x16);
  1175. LCD_WR_DATAX(0x00);
  1176. LCD_WR_DATAX(0x1C);
  1177. LCD_WR_DATAX(0x00);
  1178. LCD_WR_DATAX(0x22);
  1179. LCD_WR_DATAX(0x00);
  1180. LCD_WR_DATAX(0x36);
  1181. LCD_WR_DATAX(0x00);
  1182. LCD_WR_DATAX(0x45);
  1183. LCD_WR_DATAX(0x00);
  1184. LCD_WR_DATAX(0x52);
  1185. LCD_WR_DATAX(0x00);
  1186. LCD_WR_DATAX(0x64);
  1187. LCD_WR_DATAX(0x00);
  1188. LCD_WR_DATAX(0x7A);
  1189. LCD_WR_DATAX(0x00);
  1190. LCD_WR_DATAX(0x8B);
  1191. LCD_WR_DATAX(0x00);
  1192. LCD_WR_DATAX(0x99);
  1193. LCD_WR_DATAX(0x00);
  1194. LCD_WR_DATAX(0xA8);
  1195. LCD_WR_DATAX(0x00);
  1196. LCD_WR_DATAX(0xB9);
  1197. LCD_WR_DATAX(0x00);
  1198. LCD_WR_DATAX(0xC4);
  1199. LCD_WR_DATAX(0x00);
  1200. LCD_WR_DATAX(0xCA);
  1201. LCD_WR_DATAX(0x00);
  1202. LCD_WR_DATAX(0xD2);
  1203. LCD_WR_DATAX(0x00);
  1204. LCD_WR_DATAX(0xD8);
  1205. LCD_WR_DATAX(0x00);
  1206. LCD_WR_DATAX(0xE0);
  1207. LCD_WR_DATAX(0x00);
  1208. LCD_WR_DATAX(0xF3);
  1209. LCD_WR_DATAX(0x00);
  1210. LCD_WR_REG(0xE2);
  1211. LCD_WR_DATAX(0x05);
  1212. LCD_WR_DATAX(0x00);
  1213. LCD_WR_DATAX(0x0B);
  1214. LCD_WR_DATAX(0x00);
  1215. LCD_WR_DATAX(0x1B);
  1216. LCD_WR_DATAX(0x00);
  1217. LCD_WR_DATAX(0x34);
  1218. LCD_WR_DATAX(0x00);
  1219. LCD_WR_DATAX(0x44);
  1220. LCD_WR_DATAX(0x00);
  1221. LCD_WR_DATAX(0x4F);
  1222. LCD_WR_DATAX(0x00);
  1223. LCD_WR_DATAX(0x61);
  1224. LCD_WR_DATAX(0x00);
  1225. LCD_WR_DATAX(0x79);
  1226. LCD_WR_DATAX(0x00);
  1227. LCD_WR_DATAX(0x88);
  1228. LCD_WR_DATAX(0x00);
  1229. LCD_WR_DATAX(0x97);
  1230. LCD_WR_DATAX(0x00);
  1231. LCD_WR_DATAX(0xA6);
  1232. LCD_WR_DATAX(0x00);
  1233. LCD_WR_DATAX(0xB7);
  1234. LCD_WR_DATAX(0x00);
  1235. LCD_WR_DATAX(0xC2);
  1236. LCD_WR_DATAX(0x00);
  1237. LCD_WR_DATAX(0xC7);
  1238. LCD_WR_DATAX(0x00);
  1239. LCD_WR_DATAX(0xD1);
  1240. LCD_WR_DATAX(0x00);
  1241. LCD_WR_DATAX(0xD6);
  1242. LCD_WR_DATAX(0x00);
  1243. LCD_WR_DATAX(0xDD);
  1244. LCD_WR_DATAX(0x00);
  1245. LCD_WR_DATAX(0xF3);
  1246. LCD_WR_DATAX(0x00);
  1247. LCD_WR_REG(0xE3);
  1248. LCD_WR_DATAX(0x05);
  1249. LCD_WR_DATAX(0x00);
  1250. LCD_WR_DATAX(0xA);
  1251. LCD_WR_DATAX(0x00);
  1252. LCD_WR_DATAX(0x1C);
  1253. LCD_WR_DATAX(0x00);
  1254. LCD_WR_DATAX(0x33);
  1255. LCD_WR_DATAX(0x00);
  1256. LCD_WR_DATAX(0x44);
  1257. LCD_WR_DATAX(0x00);
  1258. LCD_WR_DATAX(0x50);
  1259. LCD_WR_DATAX(0x00);
  1260. LCD_WR_DATAX(0x62);
  1261. LCD_WR_DATAX(0x00);
  1262. LCD_WR_DATAX(0x78);
  1263. LCD_WR_DATAX(0x00);
  1264. LCD_WR_DATAX(0x88);
  1265. LCD_WR_DATAX(0x00);
  1266. LCD_WR_DATAX(0x97);
  1267. LCD_WR_DATAX(0x00);
  1268. LCD_WR_DATAX(0xA6);
  1269. LCD_WR_DATAX(0x00);
  1270. LCD_WR_DATAX(0xB7);
  1271. LCD_WR_DATAX(0x00);
  1272. LCD_WR_DATAX(0xC2);
  1273. LCD_WR_DATAX(0x00);
  1274. LCD_WR_DATAX(0xC7);
  1275. LCD_WR_DATAX(0x00);
  1276. LCD_WR_DATAX(0xD1);
  1277. LCD_WR_DATAX(0x00);
  1278. LCD_WR_DATAX(0xD5);
  1279. LCD_WR_DATAX(0x00);
  1280. LCD_WR_DATAX(0xDD);
  1281. LCD_WR_DATAX(0x00);
  1282. LCD_WR_DATAX(0xF3);
  1283. LCD_WR_DATAX(0x00);
  1284. LCD_WR_REG(0xE4);
  1285. LCD_WR_DATAX(0x01);
  1286. LCD_WR_DATAX(0x00);
  1287. LCD_WR_DATAX(0x01);
  1288. LCD_WR_DATAX(0x00);
  1289. LCD_WR_DATAX(0x02);
  1290. LCD_WR_DATAX(0x00);
  1291. LCD_WR_DATAX(0x2A);
  1292. LCD_WR_DATAX(0x00);
  1293. LCD_WR_DATAX(0x3C);
  1294. LCD_WR_DATAX(0x00);
  1295. LCD_WR_DATAX(0x4B);
  1296. LCD_WR_DATAX(0x00);
  1297. LCD_WR_DATAX(0x5D);
  1298. LCD_WR_DATAX(0x00);
  1299. LCD_WR_DATAX(0x74);
  1300. LCD_WR_DATAX(0x00);
  1301. LCD_WR_DATAX(0x84);
  1302. LCD_WR_DATAX(0x00);
  1303. LCD_WR_DATAX(0x93);
  1304. LCD_WR_DATAX(0x00);
  1305. LCD_WR_DATAX(0xA2);
  1306. LCD_WR_DATAX(0x00);
  1307. LCD_WR_DATAX(0xB3);
  1308. LCD_WR_DATAX(0x00);
  1309. LCD_WR_DATAX(0xBE);
  1310. LCD_WR_DATAX(0x00);
  1311. LCD_WR_DATAX(0xC4);
  1312. LCD_WR_DATAX(0x00);
  1313. LCD_WR_DATAX(0xCD);
  1314. LCD_WR_DATAX(0x00);
  1315. LCD_WR_DATAX(0xD3);
  1316. LCD_WR_DATAX(0x00);
  1317. LCD_WR_DATAX(0xDD);
  1318. LCD_WR_DATAX(0x00);
  1319. LCD_WR_DATAX(0xF3);
  1320. LCD_WR_DATAX(0x00);
  1321. LCD_WR_REG(0xE5);
  1322. LCD_WR_DATAX(0x00);
  1323. LCD_WR_DATAX(0x00);
  1324. LCD_WR_DATAX(0x00);
  1325. LCD_WR_DATAX(0x00);
  1326. LCD_WR_DATAX(0x02);
  1327. LCD_WR_DATAX(0x00);
  1328. LCD_WR_DATAX(0x29);
  1329. LCD_WR_DATAX(0x00);
  1330. LCD_WR_DATAX(0x3C);
  1331. LCD_WR_DATAX(0x00);
  1332. LCD_WR_DATAX(0x4B);
  1333. LCD_WR_DATAX(0x00);
  1334. LCD_WR_DATAX(0x5D);
  1335. LCD_WR_DATAX(0x00);
  1336. LCD_WR_DATAX(0x74);
  1337. LCD_WR_DATAX(0x00);
  1338. LCD_WR_DATAX(0x84);
  1339. LCD_WR_DATAX(0x00);
  1340. LCD_WR_DATAX(0x93);
  1341. LCD_WR_DATAX(0x00);
  1342. LCD_WR_DATAX(0xA2);
  1343. LCD_WR_DATAX(0x00);
  1344. LCD_WR_DATAX(0xB3);
  1345. LCD_WR_DATAX(0x00);
  1346. LCD_WR_DATAX(0xBE);
  1347. LCD_WR_DATAX(0x00);
  1348. LCD_WR_DATAX(0xC4);
  1349. LCD_WR_DATAX(0x00);
  1350. LCD_WR_DATAX(0xCD);
  1351. LCD_WR_DATAX(0x00);
  1352. LCD_WR_DATAX(0xD3);
  1353. LCD_WR_DATAX(0x00);
  1354. LCD_WR_DATAX(0xDC);
  1355. LCD_WR_DATAX(0x00);
  1356. LCD_WR_DATAX(0xF3);
  1357. LCD_WR_DATAX(0x00);
  1358. LCD_WR_REG(0xE6);
  1359. LCD_WR_DATAX(0x11);
  1360. LCD_WR_DATAX(0x00);
  1361. LCD_WR_DATAX(0x34);
  1362. LCD_WR_DATAX(0x00);
  1363. LCD_WR_DATAX(0x56);
  1364. LCD_WR_DATAX(0x00);
  1365. LCD_WR_DATAX(0x76);
  1366. LCD_WR_DATAX(0x00);
  1367. LCD_WR_DATAX(0x77);
  1368. LCD_WR_DATAX(0x00);
  1369. LCD_WR_DATAX(0x66);
  1370. LCD_WR_DATAX(0x00);
  1371. LCD_WR_DATAX(0x88);
  1372. LCD_WR_DATAX(0x00);
  1373. LCD_WR_DATAX(0x99);
  1374. LCD_WR_DATAX(0x00);
  1375. LCD_WR_DATAX(0xBB);
  1376. LCD_WR_DATAX(0x00);
  1377. LCD_WR_DATAX(0x99);
  1378. LCD_WR_DATAX(0x00);
  1379. LCD_WR_DATAX(0x66);
  1380. LCD_WR_DATAX(0x00);
  1381. LCD_WR_DATAX(0x55);
  1382. LCD_WR_DATAX(0x00);
  1383. LCD_WR_DATAX(0x55);
  1384. LCD_WR_DATAX(0x00);
  1385. LCD_WR_DATAX(0x45);
  1386. LCD_WR_DATAX(0x00);
  1387. LCD_WR_DATAX(0x43);
  1388. LCD_WR_DATAX(0x00);
  1389. LCD_WR_DATAX(0x44);
  1390. LCD_WR_DATAX(0x00);
  1391. LCD_WR_REG(0xE7);
  1392. LCD_WR_DATAX(0x32);
  1393. LCD_WR_DATAX(0x00);
  1394. LCD_WR_DATAX(0x55);
  1395. LCD_WR_DATAX(0x00);
  1396. LCD_WR_DATAX(0x76);
  1397. LCD_WR_DATAX(0x00);
  1398. LCD_WR_DATAX(0x66);
  1399. LCD_WR_DATAX(0x00);
  1400. LCD_WR_DATAX(0x67);
  1401. LCD_WR_DATAX(0x00);
  1402. LCD_WR_DATAX(0x67);
  1403. LCD_WR_DATAX(0x00);
  1404. LCD_WR_DATAX(0x87);
  1405. LCD_WR_DATAX(0x00);
  1406. LCD_WR_DATAX(0x99);
  1407. LCD_WR_DATAX(0x00);
  1408. LCD_WR_DATAX(0xBB);
  1409. LCD_WR_DATAX(0x00);
  1410. LCD_WR_DATAX(0x99);
  1411. LCD_WR_DATAX(0x00);
  1412. LCD_WR_DATAX(0x77);
  1413. LCD_WR_DATAX(0x00);
  1414. LCD_WR_DATAX(0x44);
  1415. LCD_WR_DATAX(0x00);
  1416. LCD_WR_DATAX(0x56);
  1417. LCD_WR_DATAX(0x00);
  1418. LCD_WR_DATAX(0x23);
  1419. LCD_WR_DATAX(0x00);
  1420. LCD_WR_DATAX(0x33);
  1421. LCD_WR_DATAX(0x00);
  1422. LCD_WR_DATAX(0x45);
  1423. LCD_WR_DATAX(0x00);
  1424. LCD_WR_REG(0xE8);
  1425. LCD_WR_DATAX(0x00);
  1426. LCD_WR_DATAX(0x00);
  1427. LCD_WR_DATAX(0x99);
  1428. LCD_WR_DATAX(0x00);
  1429. LCD_WR_DATAX(0x87);
  1430. LCD_WR_DATAX(0x00);
  1431. LCD_WR_DATAX(0x88);
  1432. LCD_WR_DATAX(0x00);
  1433. LCD_WR_DATAX(0x77);
  1434. LCD_WR_DATAX(0x00);
  1435. LCD_WR_DATAX(0x66);
  1436. LCD_WR_DATAX(0x00);
  1437. LCD_WR_DATAX(0x88);
  1438. LCD_WR_DATAX(0x00);
  1439. LCD_WR_DATAX(0xAA);
  1440. LCD_WR_DATAX(0x00);
  1441. LCD_WR_DATAX(0xBB);
  1442. LCD_WR_DATAX(0x00);
  1443. LCD_WR_DATAX(0x99);
  1444. LCD_WR_DATAX(0x00);
  1445. LCD_WR_DATAX(0x66);
  1446. LCD_WR_DATAX(0x00);
  1447. LCD_WR_DATAX(0x55);
  1448. LCD_WR_DATAX(0x00);
  1449. LCD_WR_DATAX(0x55);
  1450. LCD_WR_DATAX(0x00);
  1451. LCD_WR_DATAX(0x44);
  1452. LCD_WR_DATAX(0x00);
  1453. LCD_WR_DATAX(0x44);
  1454. LCD_WR_DATAX(0x00);
  1455. LCD_WR_DATAX(0x55);
  1456. LCD_WR_DATAX(0x00);
  1457. LCD_WR_REG(0xE9);
  1458. LCD_WR_DATAX(0xAA);
  1459. LCD_WR_DATAX(0x00);
  1460. LCD_WR_DATAX(0x00);
  1461. LCD_WR_DATAX(0x00);
  1462. LCD_WR_REG(0x00);
  1463. LCD_WR_DATAX(0xAA);
  1464. LCD_WR_REG(0xCF);
  1465. LCD_WR_DATAX(0x00);
  1466. LCD_WR_DATAX(0x00);
  1467. LCD_WR_DATAX(0x00);
  1468. LCD_WR_DATAX(0x00);
  1469. LCD_WR_DATAX(0x00);
  1470. LCD_WR_DATAX(0x00);
  1471. LCD_WR_DATAX(0x00);
  1472. LCD_WR_DATAX(0x00);
  1473. LCD_WR_DATAX(0x00);
  1474. LCD_WR_DATAX(0x00);
  1475. LCD_WR_DATAX(0x00);
  1476. LCD_WR_DATAX(0x00);
  1477. LCD_WR_DATAX(0x00);
  1478. LCD_WR_DATAX(0x00);
  1479. LCD_WR_DATAX(0x00);
  1480. LCD_WR_DATAX(0x00);
  1481. LCD_WR_DATAX(0x00);
  1482. LCD_WR_REG(0xF0);
  1483. LCD_WR_DATAX(0x00);
  1484. LCD_WR_DATAX(0x50);
  1485. LCD_WR_DATAX(0x00);
  1486. LCD_WR_DATAX(0x00);
  1487. LCD_WR_DATAX(0x00);
  1488. LCD_WR_REG(0xF3);
  1489. LCD_WR_DATAX(0x00);
  1490. LCD_WR_REG(0xF9);
  1491. LCD_WR_DATAX(0x06);
  1492. LCD_WR_DATAX(0x10);
  1493. LCD_WR_DATAX(0x29);
  1494. LCD_WR_DATAX(0x00);
  1495. LCD_WR_REG(0x3A);
  1496. LCD_WR_DATAX(0x55); //66
  1497. LCD_WR_REG(0x11);
  1498. delay_ms(100);
  1499. LCD_WR_REG(0x29);
  1500. LCD_WR_REG(0x35);
  1501. LCD_WR_DATAX(0x00);
  1502. LCD_WR_REG(0x51);
  1503. LCD_WR_DATAX(0xFF);
  1504. LCD_WR_REG(0x53);
  1505. LCD_WR_DATAX(0x2C);
  1506. LCD_WR_REG(0x55);
  1507. LCD_WR_DATAX(0x82);
  1508. LCD_WR_REG(0x2c);
  1509. }else if(lcddev.id==0x5510)
  1510. {
  1511. LCD_WriteReg(0xF000,0x55);
  1512. LCD_WriteReg(0xF001,0xAA);
  1513. LCD_WriteReg(0xF002,0x52);
  1514. LCD_WriteReg(0xF003,0x08);
  1515. LCD_WriteReg(0xF004,0x01);
  1516. //AVDD Set AVDD 5.2V
  1517. LCD_WriteReg(0xB000,0x0D);
  1518. LCD_WriteReg(0xB001,0x0D);
  1519. LCD_WriteReg(0xB002,0x0D);
  1520. //AVDD ratio
  1521. LCD_WriteReg(0xB600,0x34);
  1522. LCD_WriteReg(0xB601,0x34);
  1523. LCD_WriteReg(0xB602,0x34);
  1524. //AVEE -5.2V
  1525. LCD_WriteReg(0xB100,0x0D);
  1526. LCD_WriteReg(0xB101,0x0D);
  1527. LCD_WriteReg(0xB102,0x0D);
  1528. //AVEE ratio
  1529. LCD_WriteReg(0xB700,0x34);
  1530. LCD_WriteReg(0xB701,0x34);
  1531. LCD_WriteReg(0xB702,0x34);
  1532. //VCL -2.5V
  1533. LCD_WriteReg(0xB200,0x00);
  1534. LCD_WriteReg(0xB201,0x00);
  1535. LCD_WriteReg(0xB202,0x00);
  1536. //VCL ratio
  1537. LCD_WriteReg(0xB800,0x24);
  1538. LCD_WriteReg(0xB801,0x24);
  1539. LCD_WriteReg(0xB802,0x24);
  1540. //VGH 15V (Free pump)
  1541. LCD_WriteReg(0xBF00,0x01);
  1542. LCD_WriteReg(0xB300,0x0F);
  1543. LCD_WriteReg(0xB301,0x0F);
  1544. LCD_WriteReg(0xB302,0x0F);
  1545. //VGH ratio
  1546. LCD_WriteReg(0xB900,0x34);
  1547. LCD_WriteReg(0xB901,0x34);
  1548. LCD_WriteReg(0xB902,0x34);
  1549. //VGL_REG -10V
  1550. LCD_WriteReg(0xB500,0x08);
  1551. LCD_WriteReg(0xB501,0x08);
  1552. LCD_WriteReg(0xB502,0x08);
  1553. LCD_WriteReg(0xC200,0x03);
  1554. //VGLX ratio
  1555. LCD_WriteReg(0xBA00,0x24);
  1556. LCD_WriteReg(0xBA01,0x24);
  1557. LCD_WriteReg(0xBA02,0x24);
  1558. //VGMP/VGSP 4.5V/0V
  1559. LCD_WriteReg(0xBC00,0x00);
  1560. LCD_WriteReg(0xBC01,0x78);
  1561. LCD_WriteReg(0xBC02,0x00);
  1562. //VGMN/VGSN -4.5V/0V
  1563. LCD_WriteReg(0xBD00,0x00);
  1564. LCD_WriteReg(0xBD01,0x78);
  1565. LCD_WriteReg(0xBD02,0x00);
  1566. //VCOM
  1567. LCD_WriteReg(0xBE00,0x00);
  1568. LCD_WriteReg(0xBE01,0x64);
  1569. //Gamma Setting
  1570. LCD_WriteReg(0xD100,0x00);
  1571. LCD_WriteReg(0xD101,0x33);
  1572. LCD_WriteReg(0xD102,0x00);
  1573. LCD_WriteReg(0xD103,0x34);
  1574. LCD_WriteReg(0xD104,0x00);
  1575. LCD_WriteReg(0xD105,0x3A);
  1576. LCD_WriteReg(0xD106,0x00);
  1577. LCD_WriteReg(0xD107,0x4A);
  1578. LCD_WriteReg(0xD108,0x00);
  1579. LCD_WriteReg(0xD109,0x5C);
  1580. LCD_WriteReg(0xD10A,0x00);
  1581. LCD_WriteReg(0xD10B,0x81);
  1582. LCD_WriteReg(0xD10C,0x00);
  1583. LCD_WriteReg(0xD10D,0xA6);
  1584. LCD_WriteReg(0xD10E,0x00);
  1585. LCD_WriteReg(0xD10F,0xE5);
  1586. LCD_WriteReg(0xD110,0x01);
  1587. LCD_WriteReg(0xD111,0x13);
  1588. LCD_WriteReg(0xD112,0x01);
  1589. LCD_WriteReg(0xD113,0x54);
  1590. LCD_WriteReg(0xD114,0x01);
  1591. LCD_WriteReg(0xD115,0x82);
  1592. LCD_WriteReg(0xD116,0x01);
  1593. LCD_WriteReg(0xD117,0xCA);
  1594. LCD_WriteReg(0xD118,0x02);
  1595. LCD_WriteReg(0xD119,0x00);
  1596. LCD_WriteReg(0xD11A,0x02);
  1597. LCD_WriteReg(0xD11B,0x01);
  1598. LCD_WriteReg(0xD11C,0x02);
  1599. LCD_WriteReg(0xD11D,0x34);
  1600. LCD_WriteReg(0xD11E,0x02);
  1601. LCD_WriteReg(0xD11F,0x67);
  1602. LCD_WriteReg(0xD120,0x02);
  1603. LCD_WriteReg(0xD121,0x84);
  1604. LCD_WriteReg(0xD122,0x02);
  1605. LCD_WriteReg(0xD123,0xA4);
  1606. LCD_WriteReg(0xD124,0x02);
  1607. LCD_WriteReg(0xD125,0xB7);
  1608. LCD_WriteReg(0xD126,0x02);
  1609. LCD_WriteReg(0xD127,0xCF);
  1610. LCD_WriteReg(0xD128,0x02);
  1611. LCD_WriteReg(0xD129,0xDE);
  1612. LCD_WriteReg(0xD12A,0x02);
  1613. LCD_WriteReg(0xD12B,0xF2);
  1614. LCD_WriteReg(0xD12C,0x02);
  1615. LCD_WriteReg(0xD12D,0xFE);
  1616. LCD_WriteReg(0xD12E,0x03);
  1617. LCD_WriteReg(0xD12F,0x10);
  1618. LCD_WriteReg(0xD130,0x03);
  1619. LCD_WriteReg(0xD131,0x33);
  1620. LCD_WriteReg(0xD132,0x03);
  1621. LCD_WriteReg(0xD133,0x6D);
  1622. LCD_WriteReg(0xD200,0x00);
  1623. LCD_WriteReg(0xD201,0x33);
  1624. LCD_WriteReg(0xD202,0x00);
  1625. LCD_WriteReg(0xD203,0x34);
  1626. LCD_WriteReg(0xD204,0x00);
  1627. LCD_WriteReg(0xD205,0x3A);
  1628. LCD_WriteReg(0xD206,0x00);
  1629. LCD_WriteReg(0xD207,0x4A);
  1630. LCD_WriteReg(0xD208,0x00);
  1631. LCD_WriteReg(0xD209,0x5C);
  1632. LCD_WriteReg(0xD20A,0x00);
  1633. LCD_WriteReg(0xD20B,0x81);
  1634. LCD_WriteReg(0xD20C,0x00);
  1635. LCD_WriteReg(0xD20D,0xA6);
  1636. LCD_WriteReg(0xD20E,0x00);
  1637. LCD_WriteReg(0xD20F,0xE5);
  1638. LCD_WriteReg(0xD210,0x01);
  1639. LCD_WriteReg(0xD211,0x13);
  1640. LCD_WriteReg(0xD212,0x01);
  1641. LCD_WriteReg(0xD213,0x54);
  1642. LCD_WriteReg(0xD214,0x01);
  1643. LCD_WriteReg(0xD215,0x82);
  1644. LCD_WriteReg(0xD216,0x01);
  1645. LCD_WriteReg(0xD217,0xCA);
  1646. LCD_WriteReg(0xD218,0x02);
  1647. LCD_WriteReg(0xD219,0x00);
  1648. LCD_WriteReg(0xD21A,0x02);
  1649. LCD_WriteReg(0xD21B,0x01);
  1650. LCD_WriteReg(0xD21C,0x02);
  1651. LCD_WriteReg(0xD21D,0x34);
  1652. LCD_WriteReg(0xD21E,0x02);
  1653. LCD_WriteReg(0xD21F,0x67);
  1654. LCD_WriteReg(0xD220,0x02);
  1655. LCD_WriteReg(0xD221,0x84);
  1656. LCD_WriteReg(0xD222,0x02);
  1657. LCD_WriteReg(0xD223,0xA4);
  1658. LCD_WriteReg(0xD224,0x02);
  1659. LCD_WriteReg(0xD225,0xB7);
  1660. LCD_WriteReg(0xD226,0x02);
  1661. LCD_WriteReg(0xD227,0xCF);
  1662. LCD_WriteReg(0xD228,0x02);
  1663. LCD_WriteReg(0xD229,0xDE);
  1664. LCD_WriteReg(0xD22A,0x02);
  1665. LCD_WriteReg(0xD22B,0xF2);
  1666. LCD_WriteReg(0xD22C,0x02);
  1667. LCD_WriteReg(0xD22D,0xFE);
  1668. LCD_WriteReg(0xD22E,0x03);
  1669. LCD_WriteReg(0xD22F,0x10);
  1670. LCD_WriteReg(0xD230,0x03);
  1671. LCD_WriteReg(0xD231,0x33);
  1672. LCD_WriteReg(0xD232,0x03);
  1673. LCD_WriteReg(0xD233,0x6D);
  1674. LCD_WriteReg(0xD300,0x00);
  1675. LCD_WriteReg(0xD301,0x33);
  1676. LCD_WriteReg(0xD302,0x00);
  1677. LCD_WriteReg(0xD303,0x34);
  1678. LCD_WriteReg(0xD304,0x00);
  1679. LCD_WriteReg(0xD305,0x3A);
  1680. LCD_WriteReg(0xD306,0x00);
  1681. LCD_WriteReg(0xD307,0x4A);
  1682. LCD_WriteReg(0xD308,0x00);
  1683. LCD_WriteReg(0xD309,0x5C);
  1684. LCD_WriteReg(0xD30A,0x00);
  1685. LCD_WriteReg(0xD30B,0x81);
  1686. LCD_WriteReg(0xD30C,0x00);
  1687. LCD_WriteReg(0xD30D,0xA6);
  1688. LCD_WriteReg(0xD30E,0x00);
  1689. LCD_WriteReg(0xD30F,0xE5);
  1690. LCD_WriteReg(0xD310,0x01);
  1691. LCD_WriteReg(0xD311,0x13);
  1692. LCD_WriteReg(0xD312,0x01);
  1693. LCD_WriteReg(0xD313,0x54);
  1694. LCD_WriteReg(0xD314,0x01);
  1695. LCD_WriteReg(0xD315,0x82);
  1696. LCD_WriteReg(0xD316,0x01);
  1697. LCD_WriteReg(0xD317,0xCA);
  1698. LCD_WriteReg(0xD318,0x02);
  1699. LCD_WriteReg(0xD319,0x00);
  1700. LCD_WriteReg(0xD31A,0x02);
  1701. LCD_WriteReg(0xD31B,0x01);
  1702. LCD_WriteReg(0xD31C,0x02);
  1703. LCD_WriteReg(0xD31D,0x34);
  1704. LCD_WriteReg(0xD31E,0x02);
  1705. LCD_WriteReg(0xD31F,0x67);
  1706. LCD_WriteReg(0xD320,0x02);
  1707. LCD_WriteReg(0xD321,0x84);
  1708. LCD_WriteReg(0xD322,0x02);
  1709. LCD_WriteReg(0xD323,0xA4);
  1710. LCD_WriteReg(0xD324,0x02);
  1711. LCD_WriteReg(0xD325,0xB7);
  1712. LCD_WriteReg(0xD326,0x02);
  1713. LCD_WriteReg(0xD327,0xCF);
  1714. LCD_WriteReg(0xD328,0x02);
  1715. LCD_WriteReg(0xD329,0xDE);
  1716. LCD_WriteReg(0xD32A,0x02);
  1717. LCD_WriteReg(0xD32B,0xF2);
  1718. LCD_WriteReg(0xD32C,0x02);
  1719. LCD_WriteReg(0xD32D,0xFE);
  1720. LCD_WriteReg(0xD32E,0x03);
  1721. LCD_WriteReg(0xD32F,0x10);
  1722. LCD_WriteReg(0xD330,0x03);
  1723. LCD_WriteReg(0xD331,0x33);
  1724. LCD_WriteReg(0xD332,0x03);
  1725. LCD_WriteReg(0xD333,0x6D);
  1726. LCD_WriteReg(0xD400,0x00);
  1727. LCD_WriteReg(0xD401,0x33);
  1728. LCD_WriteReg(0xD402,0x00);
  1729. LCD_WriteReg(0xD403,0x34);
  1730. LCD_WriteReg(0xD404,0x00);
  1731. LCD_WriteReg(0xD405,0x3A);
  1732. LCD_WriteReg(0xD406,0x00);
  1733. LCD_WriteReg(0xD407,0x4A);
  1734. LCD_WriteReg(0xD408,0x00);
  1735. LCD_WriteReg(0xD409,0x5C);
  1736. LCD_WriteReg(0xD40A,0x00);
  1737. LCD_WriteReg(0xD40B,0x81);
  1738. LCD_WriteReg(0xD40C,0x00);
  1739. LCD_WriteReg(0xD40D,0xA6);
  1740. LCD_WriteReg(0xD40E,0x00);
  1741. LCD_WriteReg(0xD40F,0xE5);
  1742. LCD_WriteReg(0xD410,0x01);
  1743. LCD_WriteReg(0xD411,0x13);
  1744. LCD_WriteReg(0xD412,0x01);
  1745. LCD_WriteReg(0xD413,0x54);
  1746. LCD_WriteReg(0xD414,0x01);
  1747. LCD_WriteReg(0xD415,0x82);
  1748. LCD_WriteReg(0xD416,0x01);
  1749. LCD_WriteReg(0xD417,0xCA);
  1750. LCD_WriteReg(0xD418,0x02);
  1751. LCD_WriteReg(0xD419,0x00);
  1752. LCD_WriteReg(0xD41A,0x02);
  1753. LCD_WriteReg(0xD41B,0x01);
  1754. LCD_WriteReg(0xD41C,0x02);
  1755. LCD_WriteReg(0xD41D,0x34);
  1756. LCD_WriteReg(0xD41E,0x02);
  1757. LCD_WriteReg(0xD41F,0x67);
  1758. LCD_WriteReg(0xD420,0x02);
  1759. LCD_WriteReg(0xD421,0x84);
  1760. LCD_WriteReg(0xD422,0x02);
  1761. LCD_WriteReg(0xD423,0xA4);
  1762. LCD_WriteReg(0xD424,0x02);
  1763. LCD_WriteReg(0xD425,0xB7);
  1764. LCD_WriteReg(0xD426,0x02);
  1765. LCD_WriteReg(0xD427,0xCF);
  1766. LCD_WriteReg(0xD428,0x02);
  1767. LCD_WriteReg(0xD429,0xDE);
  1768. LCD_WriteReg(0xD42A,0x02);
  1769. LCD_WriteReg(0xD42B,0xF2);
  1770. LCD_WriteReg(0xD42C,0x02);
  1771. LCD_WriteReg(0xD42D,0xFE);
  1772. LCD_WriteReg(0xD42E,0x03);
  1773. LCD_WriteReg(0xD42F,0x10);
  1774. LCD_WriteReg(0xD430,0x03);
  1775. LCD_WriteReg(0xD431,0x33);
  1776. LCD_WriteReg(0xD432,0x03);
  1777. LCD_WriteReg(0xD433,0x6D);
  1778. LCD_WriteReg(0xD500,0x00);
  1779. LCD_WriteReg(0xD501,0x33);
  1780. LCD_WriteReg(0xD502,0x00);
  1781. LCD_WriteReg(0xD503,0x34);
  1782. LCD_WriteReg(0xD504,0x00);
  1783. LCD_WriteReg(0xD505,0x3A);
  1784. LCD_WriteReg(0xD506,0x00);
  1785. LCD_WriteReg(0xD507,0x4A);
  1786. LCD_WriteReg(0xD508,0x00);
  1787. LCD_WriteReg(0xD509,0x5C);
  1788. LCD_WriteReg(0xD50A,0x00);
  1789. LCD_WriteReg(0xD50B,0x81);
  1790. LCD_WriteReg(0xD50C,0x00);
  1791. LCD_WriteReg(0xD50D,0xA6);
  1792. LCD_WriteReg(0xD50E,0x00);
  1793. LCD_WriteReg(0xD50F,0xE5);
  1794. LCD_WriteReg(0xD510,0x01);
  1795. LCD_WriteReg(0xD511,0x13);
  1796. LCD_WriteReg(0xD512,0x01);
  1797. LCD_WriteReg(0xD513,0x54);
  1798. LCD_WriteReg(0xD514,0x01);
  1799. LCD_WriteReg(0xD515,0x82);
  1800. LCD_WriteReg(0xD516,0x01);
  1801. LCD_WriteReg(0xD517,0xCA);
  1802. LCD_WriteReg(0xD518,0x02);
  1803. LCD_WriteReg(0xD519,0x00);
  1804. LCD_WriteReg(0xD51A,0x02);
  1805. LCD_WriteReg(0xD51B,0x01);
  1806. LCD_WriteReg(0xD51C,0x02);
  1807. LCD_WriteReg(0xD51D,0x34);
  1808. LCD_WriteReg(0xD51E,0x02);
  1809. LCD_WriteReg(0xD51F,0x67);
  1810. LCD_WriteReg(0xD520,0x02);
  1811. LCD_WriteReg(0xD521,0x84);
  1812. LCD_WriteReg(0xD522,0x02);
  1813. LCD_WriteReg(0xD523,0xA4);
  1814. LCD_WriteReg(0xD524,0x02);
  1815. LCD_WriteReg(0xD525,0xB7);
  1816. LCD_WriteReg(0xD526,0x02);
  1817. LCD_WriteReg(0xD527,0xCF);
  1818. LCD_WriteReg(0xD528,0x02);
  1819. LCD_WriteReg(0xD529,0xDE);
  1820. LCD_WriteReg(0xD52A,0x02);
  1821. LCD_WriteReg(0xD52B,0xF2);
  1822. LCD_WriteReg(0xD52C,0x02);
  1823. LCD_WriteReg(0xD52D,0xFE);
  1824. LCD_WriteReg(0xD52E,0x03);
  1825. LCD_WriteReg(0xD52F,0x10);
  1826. LCD_WriteReg(0xD530,0x03);
  1827. LCD_WriteReg(0xD531,0x33);
  1828. LCD_WriteReg(0xD532,0x03);
  1829. LCD_WriteReg(0xD533,0x6D);
  1830. LCD_WriteReg(0xD600,0x00);
  1831. LCD_WriteReg(0xD601,0x33);
  1832. LCD_WriteReg(0xD602,0x00);
  1833. LCD_WriteReg(0xD603,0x34);
  1834. LCD_WriteReg(0xD604,0x00);
  1835. LCD_WriteReg(0xD605,0x3A);
  1836. LCD_WriteReg(0xD606,0x00);
  1837. LCD_WriteReg(0xD607,0x4A);
  1838. LCD_WriteReg(0xD608,0x00);
  1839. LCD_WriteReg(0xD609,0x5C);
  1840. LCD_WriteReg(0xD60A,0x00);
  1841. LCD_WriteReg(0xD60B,0x81);
  1842. LCD_WriteReg(0xD60C,0x00);
  1843. LCD_WriteReg(0xD60D,0xA6);
  1844. LCD_WriteReg(0xD60E,0x00);
  1845. LCD_WriteReg(0xD60F,0xE5);
  1846. LCD_WriteReg(0xD610,0x01);
  1847. LCD_WriteReg(0xD611,0x13);
  1848. LCD_WriteReg(0xD612,0x01);
  1849. LCD_WriteReg(0xD613,0x54);
  1850. LCD_WriteReg(0xD614,0x01);
  1851. LCD_WriteReg(0xD615,0x82);
  1852. LCD_WriteReg(0xD616,0x01);
  1853. LCD_WriteReg(0xD617,0xCA);
  1854. LCD_WriteReg(0xD618,0x02);
  1855. LCD_WriteReg(0xD619,0x00);
  1856. LCD_WriteReg(0xD61A,0x02);
  1857. LCD_WriteReg(0xD61B,0x01);
  1858. LCD_WriteReg(0xD61C,0x02);
  1859. LCD_WriteReg(0xD61D,0x34);
  1860. LCD_WriteReg(0xD61E,0x02);
  1861. LCD_WriteReg(0xD61F,0x67);
  1862. LCD_WriteReg(0xD620,0x02);
  1863. LCD_WriteReg(0xD621,0x84);
  1864. LCD_WriteReg(0xD622,0x02);
  1865. LCD_WriteReg(0xD623,0xA4);
  1866. LCD_WriteReg(0xD624,0x02);
  1867. LCD_WriteReg(0xD625,0xB7);
  1868. LCD_WriteReg(0xD626,0x02);
  1869. LCD_WriteReg(0xD627,0xCF);
  1870. LCD_WriteReg(0xD628,0x02);
  1871. LCD_WriteReg(0xD629,0xDE);
  1872. LCD_WriteReg(0xD62A,0x02);
  1873. LCD_WriteReg(0xD62B,0xF2);
  1874. LCD_WriteReg(0xD62C,0x02);
  1875. LCD_WriteReg(0xD62D,0xFE);
  1876. LCD_WriteReg(0xD62E,0x03);
  1877. LCD_WriteReg(0xD62F,0x10);
  1878. LCD_WriteReg(0xD630,0x03);
  1879. LCD_WriteReg(0xD631,0x33);
  1880. LCD_WriteReg(0xD632,0x03);
  1881. LCD_WriteReg(0xD633,0x6D);
  1882. //LV2 Page 0 enable
  1883. LCD_WriteReg(0xF000,0x55);
  1884. LCD_WriteReg(0xF001,0xAA);
  1885. LCD_WriteReg(0xF002,0x52);
  1886. LCD_WriteReg(0xF003,0x08);
  1887. LCD_WriteReg(0xF004,0x00);
  1888. //Display control
  1889. LCD_WriteReg(0xB100, 0xCC);
  1890. LCD_WriteReg(0xB101, 0x00);
  1891. //Source hold time
  1892. LCD_WriteReg(0xB600,0x05);
  1893. //Gate EQ control
  1894. LCD_WriteReg(0xB700,0x70);
  1895. LCD_WriteReg(0xB701,0x70);
  1896. //Source EQ control (Mode 2)
  1897. LCD_WriteReg(0xB800,0x01);
  1898. LCD_WriteReg(0xB801,0x03);
  1899. LCD_WriteReg(0xB802,0x03);
  1900. LCD_WriteReg(0xB803,0x03);
  1901. //Inversion mode (2-dot)
  1902. LCD_WriteReg(0xBC00,0x02);
  1903. LCD_WriteReg(0xBC01,0x00);
  1904. LCD_WriteReg(0xBC02,0x00);
  1905. //Timing control 4H w/ 4-delay
  1906. LCD_WriteReg(0xC900,0xD0);
  1907. LCD_WriteReg(0xC901,0x02);
  1908. LCD_WriteReg(0xC902,0x50);
  1909. LCD_WriteReg(0xC903,0x50);
  1910. LCD_WriteReg(0xC904,0x50);
  1911. LCD_WriteReg(0x3500,0x00);
  1912. LCD_WriteReg(0x3A00,0x55); //16-bit/pixel
  1913. LCD_WR_REG(0x1100);
  1914. delay_us(120);
  1915. LCD_WR_REG(0x2900);
  1916. }else if(lcddev.id==0x9325)//9325
  1917. {
  1918. LCD_WriteReg(0x00E5,0x78F0);
  1919. LCD_WriteReg(0x0001,0x0100);
  1920. LCD_WriteReg(0x0002,0x0700);
  1921. LCD_WriteReg(0x0003,0x1030);
  1922. LCD_WriteReg(0x0004,0x0000);
  1923. LCD_WriteReg(0x0008,0x0202);
  1924. LCD_WriteReg(0x0009,0x0000);
  1925. LCD_WriteReg(0x000A,0x0000);
  1926. LCD_WriteReg(0x000C,0x0000);
  1927. LCD_WriteReg(0x000D,0x0000);
  1928. LCD_WriteReg(0x000F,0x0000);
  1929. //power on sequence VGHVGL
  1930. LCD_WriteReg(0x0010,0x0000);
  1931. LCD_WriteReg(0x0011,0x0007);
  1932. LCD_WriteReg(0x0012,0x0000);
  1933. LCD_WriteReg(0x0013,0x0000);
  1934. LCD_WriteReg(0x0007,0x0000);
  1935. //vgh
  1936. LCD_WriteReg(0x0010,0x1690);
  1937. LCD_WriteReg(0x0011,0x0227);
  1938. //delayms(100);
  1939. //vregiout
  1940. LCD_WriteReg(0x0012,0x009D); //0x001b
  1941. //delayms(100);
  1942. //vom amplitude
  1943. LCD_WriteReg(0x0013,0x1900);
  1944. //delayms(100);
  1945. //vom H
  1946. LCD_WriteReg(0x0029,0x0025);
  1947. LCD_WriteReg(0x002B,0x000D);
  1948. //gamma
  1949. LCD_WriteReg(0x0030,0x0007);
  1950. LCD_WriteReg(0x0031,0x0303);
  1951. LCD_WriteReg(0x0032,0x0003);// 0006
  1952. LCD_WriteReg(0x0035,0x0206);
  1953. LCD_WriteReg(0x0036,0x0008);
  1954. LCD_WriteReg(0x0037,0x0406);
  1955. LCD_WriteReg(0x0038,0x0304);//0200
  1956. LCD_WriteReg(0x0039,0x0007);
  1957. LCD_WriteReg(0x003C,0x0602);// 0504
  1958. LCD_WriteReg(0x003D,0x0008);
  1959. //ram
  1960. LCD_WriteReg(0x0050,0x0000);
  1961. LCD_WriteReg(0x0051,0x00EF);
  1962. LCD_WriteReg(0x0052,0x0000);
  1963. LCD_WriteReg(0x0053,0x013F);
  1964. LCD_WriteReg(0x0060,0xA700);
  1965. LCD_WriteReg(0x0061,0x0001);
  1966. LCD_WriteReg(0x006A,0x0000);
  1967. //
  1968. LCD_WriteReg(0x0080,0x0000);
  1969. LCD_WriteReg(0x0081,0x0000);
  1970. LCD_WriteReg(0x0082,0x0000);
  1971. LCD_WriteReg(0x0083,0x0000);
  1972. LCD_WriteReg(0x0084,0x0000);
  1973. LCD_WriteReg(0x0085,0x0000);
  1974. //
  1975. LCD_WriteReg(0x0090,0x0010);
  1976. LCD_WriteReg(0x0092,0x0600);
  1977. LCD_WriteReg(0x0007,0x0133);
  1978. LCD_WriteReg(0x00,0x0022);//
  1979. }else if(lcddev.id==0x9328)//ILI9328 OK
  1980. {
  1981. LCD_WriteReg(0x00EC,0x108F);// internal timeing
  1982. LCD_WriteReg(0x00EF,0x1234);// ADD
  1983. //LCD_WriteReg(0x00e7,0x0010);
  1984. //LCD_WriteReg(0x0000,0x0001);//�����ڲ�ʱ��
  1985. LCD_WriteReg(0x0001,0x0100);
  1986. LCD_WriteReg(0x0002,0x0700);//��Դ����
  1987. //LCD_WriteReg(0x0003,(1<<3)|(1<<4) ); //65K RGB
  1988. //DRIVE TABLE(�Ĵ��� 03H)
  1989. //BIT3=AM BIT4:5=ID0:1
  1990. //AM ID0 ID1 FUNCATION
  1991. // 0 0 0 R->L D->U
  1992. // 1 0 0 D->U R->L
  1993. // 0 1 0 L->R D->U
  1994. // 1 1 0 D->U L->R
  1995. // 0 0 1 R->L U->D
  1996. // 1 0 1 U->D R->L
  1997. // 0 1 1 L->R U->D ������������.
  1998. // 1 1 1 U->D L->R
  1999. LCD_WriteReg(0x0003,(1<<12)|(3<<4)|(0<<3) );//65K
  2000. LCD_WriteReg(0x0004,0x0000);
  2001. LCD_WriteReg(0x0008,0x0202);
  2002. LCD_WriteReg(0x0009,0x0000);
  2003. LCD_WriteReg(0x000a,0x0000);//display setting
  2004. LCD_WriteReg(0x000c,0x0001);//display setting
  2005. LCD_WriteReg(0x000d,0x0000);//0f3c
  2006. LCD_WriteReg(0x000f,0x0000);
  2007. //��Դ����
  2008. LCD_WriteReg(0x0010,0x0000);
  2009. LCD_WriteReg(0x0011,0x0007);
  2010. LCD_WriteReg(0x0012,0x0000);
  2011. LCD_WriteReg(0x0013,0x0000);
  2012. LCD_WriteReg(0x0007,0x0001);
  2013. delay_ms(50);
  2014. LCD_WriteReg(0x0010,0x1490);
  2015. LCD_WriteReg(0x0011,0x0227);
  2016. delay_ms(50);
  2017. LCD_WriteReg(0x0012,0x008A);
  2018. delay_ms(50);
  2019. LCD_WriteReg(0x0013,0x1a00);
  2020. LCD_WriteReg(0x0029,0x0006);
  2021. LCD_WriteReg(0x002b,0x000d);
  2022. delay_ms(50);
  2023. LCD_WriteReg(0x0020,0x0000);
  2024. LCD_WriteReg(0x0021,0x0000);
  2025. delay_ms(50);
  2026. //٤��У��
  2027. LCD_WriteReg(0x0030,0x0000);
  2028. LCD_WriteReg(0x0031,0x0604);
  2029. LCD_WriteReg(0x0032,0x0305);
  2030. LCD_WriteReg(0x0035,0x0000);
  2031. LCD_WriteReg(0x0036,0x0C09);
  2032. LCD_WriteReg(0x0037,0x0204);
  2033. LCD_WriteReg(0x0038,0x0301);
  2034. LCD_WriteReg(0x0039,0x0707);
  2035. LCD_WriteReg(0x003c,0x0000);
  2036. LCD_WriteReg(0x003d,0x0a0a);
  2037. delay_ms(50);
  2038. LCD_WriteReg(0x0050,0x0000); //ˮƽGRAM��ʼλ��
  2039. LCD_WriteReg(0x0051,0x00ef); //ˮƽGRAM��ֹλ��
  2040. LCD_WriteReg(0x0052,0x0000); //��ֱGRAM��ʼλ��
  2041. LCD_WriteReg(0x0053,0x013f); //��ֱGRAM��ֹλ��
  2042. LCD_WriteReg(0x0060,0xa700);
  2043. LCD_WriteReg(0x0061,0x0001);
  2044. LCD_WriteReg(0x006a,0x0000);
  2045. LCD_WriteReg(0x0080,0x0000);
  2046. LCD_WriteReg(0x0081,0x0000);
  2047. LCD_WriteReg(0x0082,0x0000);
  2048. LCD_WriteReg(0x0083,0x0000);
  2049. LCD_WriteReg(0x0084,0x0000);
  2050. LCD_WriteReg(0x0085,0x0000);
  2051. LCD_WriteReg(0x0090,0x0010);
  2052. LCD_WriteReg(0x0092,0x0600);
  2053. //������ʾ����
  2054. LCD_WriteReg(0x0007,0x0133);
  2055. }else if(lcddev.id==0x9320)//����OK.
  2056. {
  2057. LCD_WriteReg(0x00,0x0000);
  2058. LCD_WriteReg(0x01,0x0100); //Driver Output Contral.
  2059. LCD_WriteReg(0x02,0x0700); //LCD Driver Waveform Contral.
  2060. LCD_WriteReg(0x03,0x1030);//Entry Mode Set.
  2061. //LCD_WriteReg(0x03,0x1018); //Entry Mode Set.
  2062. LCD_WriteReg(0x04,0x0000); //Scalling Contral.
  2063. LCD_WriteReg(0x08,0x0202); //Display Contral 2.(0x0207)
  2064. LCD_WriteReg(0x09,0x0000); //Display Contral 3.(0x0000)
  2065. LCD_WriteReg(0x0a,0x0000); //Frame Cycle Contal.(0x0000)
  2066. LCD_WriteReg(0x0c,(1<<0)); //Extern Display Interface Contral 1.(0x0000)
  2067. LCD_WriteReg(0x0d,0x0000); //Frame Maker Position.
  2068. LCD_WriteReg(0x0f,0x0000); //Extern Display Interface Contral 2.
  2069. delay_ms(50);
  2070. LCD_WriteReg(0x07,0x0101); //Display Contral.
  2071. delay_ms(50);
  2072. LCD_WriteReg(0x10,(1<<12)|(0<<8)|(1<<7)|(1<<6)|(0<<4)); //Power Control 1.(0x16b0)
  2073. LCD_WriteReg(0x11,0x0007); //Power Control 2.(0x0001)
  2074. LCD_WriteReg(0x12,(1<<8)|(1<<4)|(0<<0)); //Power Control 3.(0x0138)
  2075. LCD_WriteReg(0x13,0x0b00); //Power Control 4.
  2076. LCD_WriteReg(0x29,0x0000); //Power Control 7.
  2077. LCD_WriteReg(0x2b,(1<<14)|(1<<4));
  2078. LCD_WriteReg(0x50,0); //Set X Star
  2079. //ˮƽGRAM��ֹλ��Set X End.
  2080. LCD_WriteReg(0x51,239); //Set Y Star
  2081. LCD_WriteReg(0x52,0); //Set Y End.t.
  2082. LCD_WriteReg(0x53,319); //
  2083. LCD_WriteReg(0x60,0x2700); //Driver Output Control.
  2084. LCD_WriteReg(0x61,0x0001); //Driver Output Control.
  2085. LCD_WriteReg(0x6a,0x0000); //Vertical Srcoll Control.
  2086. LCD_WriteReg(0x80,0x0000); //Display Position? Partial Display 1.
  2087. LCD_WriteReg(0x81,0x0000); //RAM Address Start? Partial Display 1.
  2088. LCD_WriteReg(0x82,0x0000); //RAM Address End-Partial Display 1.
  2089. LCD_WriteReg(0x83,0x0000); //Displsy Position? Partial Display 2.
  2090. LCD_WriteReg(0x84,0x0000); //RAM Address Start? Partial Display 2.
  2091. LCD_WriteReg(0x85,0x0000); //RAM Address End? Partial Display 2.
  2092. LCD_WriteReg(0x90,(0<<7)|(16<<0)); //Frame Cycle Contral.(0x0013)
  2093. LCD_WriteReg(0x92,0x0000); //Panel Interface Contral 2.(0x0000)
  2094. LCD_WriteReg(0x93,0x0001); //Panel Interface Contral 3.
  2095. LCD_WriteReg(0x95,0x0110); //Frame Cycle Contral.(0x0110)
  2096. LCD_WriteReg(0x97,(0<<8)); //
  2097. LCD_WriteReg(0x98,0x0000); //Frame Cycle Contral.
  2098. LCD_WriteReg(0x07,0x0173); //(0x0173)
  2099. }else if(lcddev.id==0X9331)//OK |/|/|
  2100. {
  2101. LCD_WriteReg(0x00E7, 0x1014);
  2102. LCD_WriteReg(0x0001, 0x0100); // set SS and SM bit
  2103. LCD_WriteReg(0x0002, 0x0200); // set 1 line inversion
  2104. LCD_WriteReg(0x0003,(1<<12)|(3<<4)|(1<<3));//65K
  2105. //LCD_WriteReg(0x0003, 0x1030); // set GRAM write direction and BGR=1.
  2106. LCD_WriteReg(0x0008, 0x0202); // set the back porch and front porch
  2107. LCD_WriteReg(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0]
  2108. LCD_WriteReg(0x000A, 0x0000); // FMARK function
  2109. LCD_WriteReg(0x000C, 0x0000); // RGB interface setting
  2110. LCD_WriteReg(0x000D, 0x0000); // Frame marker Position
  2111. LCD_WriteReg(0x000F, 0x0000); // RGB interface polarity
  2112. //*************Power On sequence ****************//
  2113. LCD_WriteReg(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
  2114. LCD_WriteReg(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
  2115. LCD_WriteReg(0x0012, 0x0000); // VREG1OUT voltage
  2116. LCD_WriteReg(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
  2117. delay_ms(200); // Dis-charge capacitor power voltage
  2118. LCD_WriteReg(0x0010, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB
  2119. LCD_WriteReg(0x0011, 0x0227); // DC1[2:0], DC0[2:0], VC[2:0]
  2120. delay_ms(50); // Delay 50ms
  2121. LCD_WriteReg(0x0012, 0x000C); // Internal reference voltage= Vci;
  2122. delay_ms(50); // Delay 50ms
  2123. LCD_WriteReg(0x0013, 0x0800); // Set VDV[4:0] for VCOM amplitude
  2124. LCD_WriteReg(0x0029, 0x0011); // Set VCM[5:0] for VCOMH
  2125. LCD_WriteReg(0x002B, 0x000B); // Set Frame Rate
  2126. delay_ms(50); // Delay 50ms
  2127. LCD_WriteReg(0x0020, 0x0000); // GRAM horizontal Address
  2128. LCD_WriteReg(0x0021, 0x013f); // GRAM Vertical Address
  2129. // ----------- Adjust the Gamma Curve ----------//
  2130. LCD_WriteReg(0x0030, 0x0000);
  2131. LCD_WriteReg(0x0031, 0x0106);
  2132. LCD_WriteReg(0x0032, 0x0000);
  2133. LCD_WriteReg(0x0035, 0x0204);
  2134. LCD_WriteReg(0x0036, 0x160A);
  2135. LCD_WriteReg(0x0037, 0x0707);
  2136. LCD_WriteReg(0x0038, 0x0106);
  2137. LCD_WriteReg(0x0039, 0x0707);
  2138. LCD_WriteReg(0x003C, 0x0402);
  2139. LCD_WriteReg(0x003D, 0x0C0F);
  2140. //------------------ Set GRAM area ---------------//
  2141. LCD_WriteReg(0x0050, 0x0000); // Horizontal GRAM Start Address
  2142. LCD_WriteReg(0x0051, 0x00EF); // Horizontal GRAM End Address
  2143. LCD_WriteReg(0x0052, 0x0000); // Vertical GRAM Start Address
  2144. LCD_WriteReg(0x0053, 0x013F); // Vertical GRAM Start Address
  2145. LCD_WriteReg(0x0060, 0x2700); // Gate Scan Line
  2146. LCD_WriteReg(0x0061, 0x0001); // NDL,VLE, REV
  2147. LCD_WriteReg(0x006A, 0x0000); // set scrolling line
  2148. //-------------- Partial Display Control ---------//
  2149. LCD_WriteReg(0x0080, 0x0000);
  2150. LCD_WriteReg(0x0081, 0x0000);
  2151. LCD_WriteReg(0x0082, 0x0000);
  2152. LCD_WriteReg(0x0083, 0x0000);
  2153. LCD_WriteReg(0x0084, 0x0000);
  2154. LCD_WriteReg(0x0085, 0x0000);
  2155. //-------------- Panel Control -------------------//
  2156. LCD_WriteReg(0x0090, 0x0010);
  2157. LCD_WriteReg(0x0092, 0x0600);
  2158. LCD_WriteReg(0x0007, 0x0133); // 262K color and display ON
  2159. }else if(lcddev.id==0x5408)
  2160. {
  2161. LCD_WriteReg(0x01,0x0100);
  2162. LCD_WriteReg(0x02,0x0700);//LCD Driving Waveform Contral
  2163. LCD_WriteReg(0x03,0x1030);//Entry Mode����
  2164. //ָ�������������϶��µ��Զ���ģʽ
  2165. //Normal Mode(Window Mode disable)
  2166. //RGB��ʽ
  2167. //16���2�����8��������
  2168. LCD_WriteReg(0x04,0x0000); //Scalling Control register
  2169. LCD_WriteReg(0x08,0x0207); //Display Control 2
  2170. LCD_WriteReg(0x09,0x0000); //Display Control 3
  2171. LCD_WriteReg(0x0A,0x0000); //Frame Cycle Control
  2172. LCD_WriteReg(0x0C,0x0000); //External Display Interface Control 1
  2173. LCD_WriteReg(0x0D,0x0000); //Frame Maker Position
  2174. LCD_WriteReg(0x0F,0x0000); //External Display Interface Control 2
  2175. delay_ms(20);
  2176. //TFT Һ����ɫͼ����ʾ����14
  2177. LCD_WriteReg(0x10,0x16B0); //0x14B0 //Power Control 1
  2178. LCD_WriteReg(0x11,0x0001); //0x0007 //Power Control 2
  2179. LCD_WriteReg(0x17,0x0001); //0x0000 //Power Control 3
  2180. LCD_WriteReg(0x12,0x0138); //0x013B //Power Control 4
  2181. LCD_WriteReg(0x13,0x0800); //0x0800 //Power Control 5
  2182. LCD_WriteReg(0x29,0x0009); //NVM read data 2
  2183. LCD_WriteReg(0x2a,0x0009); //NVM read data 3
  2184. LCD_WriteReg(0xa4,0x0000);
  2185. LCD_WriteReg(0x50,0x0000); //���ò������ڵ�X�Ὺʼ��
  2186. LCD_WriteReg(0x51,0x00EF); //���ò������ڵ�X��������
  2187. LCD_WriteReg(0x52,0x0000); //���ò������ڵ�Y�Ὺʼ��
  2188. LCD_WriteReg(0x53,0x013F); //���ò������ڵ�Y��������
  2189. LCD_WriteReg(0x60,0x2700); //Driver Output Control
  2190. //������Ļ�ĵ����Լ�ɨ������ʼ��
  2191. LCD_WriteReg(0x61,0x0001); //Driver Output Control
  2192. LCD_WriteReg(0x6A,0x0000); //Vertical Scroll Control
  2193. LCD_WriteReg(0x80,0x0000); //Display Position �C Partial Display 1
  2194. LCD_WriteReg(0x81,0x0000); //RAM Address Start �C Partial Display 1
  2195. LCD_WriteReg(0x82,0x0000); //RAM address End - Partial Display 1
  2196. LCD_WriteReg(0x83,0x0000); //Display Position �C Partial Display 2
  2197. LCD_WriteReg(0x84,0x0000); //RAM Address Start �C Partial Display 2
  2198. LCD_WriteReg(0x85,0x0000); //RAM address End �C Partail Display2
  2199. LCD_WriteReg(0x90,0x0013); //Frame Cycle Control
  2200. LCD_WriteReg(0x92,0x0000); //Panel Interface Control 2
  2201. LCD_WriteReg(0x93,0x0003); //Panel Interface control 3
  2202. LCD_WriteReg(0x95,0x0110); //Frame Cycle Control
  2203. LCD_WriteReg(0x07,0x0173);
  2204. delay_ms(50);
  2205. }else if(lcddev.id==0x1505)//OK
  2206. {
  2207. // second release on 3/5 ,luminance is acceptable,water wave appear during camera preview
  2208. LCD_WriteReg(0x0007,0x0000);
  2209. delay_ms(50);
  2210. LCD_WriteReg(0x0012,0x011C);//0x011A why need to set several times?
  2211. LCD_WriteReg(0x00A4,0x0001);//NVM
  2212. LCD_WriteReg(0x0008,0x000F);
  2213. LCD_WriteReg(0x000A,0x0008);
  2214. LCD_WriteReg(0x000D,0x0008);
  2215. //٤��У��
  2216. LCD_WriteReg(0x0030,0x0707);
  2217. LCD_WriteReg(0x0031,0x0007); //0x0707
  2218. LCD_WriteReg(0x0032,0x0603);
  2219. LCD_WriteReg(0x0033,0x0700);
  2220. LCD_WriteReg(0x0034,0x0202);
  2221. LCD_WriteReg(0x0035,0x0002); //?0x0606
  2222. LCD_WriteReg(0x0036,0x1F0F);
  2223. LCD_WriteReg(0x0037,0x0707); //0x0f0f 0x0105
  2224. LCD_WriteReg(0x0038,0x0000);
  2225. LCD_WriteReg(0x0039,0x0000);
  2226. LCD_WriteReg(0x003A,0x0707);
  2227. LCD_WriteReg(0x003B,0x0000); //0x0303
  2228. LCD_WriteReg(0x003C,0x0007); //?0x0707
  2229. LCD_WriteReg(0x003D,0x0000); //0x1313//0x1f08
  2230. delay_ms(50);
  2231. LCD_WriteReg(0x0007,0x0001);
  2232. LCD_WriteReg(0x0017,0x0001);//������Դ
  2233. delay_ms(50);
  2234. //��Դ����
  2235. LCD_WriteReg(0x0010,0x17A0);
  2236. LCD_WriteReg(0x0011,0x0217);//reference voltage VC[2:0] Vciout = 1.00*Vcivl
  2237. LCD_WriteReg(0x0012,0x011E);//0x011c //Vreg1out = Vcilvl*1.80 is it the same as Vgama1out ?
  2238. LCD_WriteReg(0x0013,0x0F00);//VDV[4:0]-->VCOM Amplitude VcomL = VcomH - Vcom Ampl
  2239. LCD_WriteReg(0x002A,0x0000);
  2240. LCD_WriteReg(0x0029,0x000A);//0x0001F Vcomh = VCM1[4:0]*Vreg1out gate source voltage??
  2241. LCD_WriteReg(0x0012,0x013E);// 0x013C power supply on
  2242. //Coordinates Control//
  2243. LCD_WriteReg(0x0050,0x0000);//0x0e00
  2244. LCD_WriteReg(0x0051,0x00EF);
  2245. LCD_WriteReg(0x0052,0x0000);
  2246. LCD_WriteReg(0x0053,0x013F);
  2247. //Pannel Image Control//
  2248. LCD_WriteReg(0x0060,0x2700);
  2249. LCD_WriteReg(0x0061,0x0001);
  2250. LCD_WriteReg(0x006A,0x0000);
  2251. LCD_WriteReg(0x0080,0x0000);
  2252. //Partial Image Control//
  2253. LCD_WriteReg(0x0081,0x0000);
  2254. LCD_WriteReg(0x0082,0x0000);
  2255. LCD_WriteReg(0x0083,0x0000);
  2256. LCD_WriteReg(0x0084,0x0000);
  2257. LCD_WriteReg(0x0085,0x0000);
  2258. //Panel Interface Control//
  2259. LCD_WriteReg(0x0090,0x0013);//0x0010 frenqucy
  2260. LCD_WriteReg(0x0092,0x0300);
  2261. LCD_WriteReg(0x0093,0x0005);
  2262. LCD_WriteReg(0x0095,0x0000);
  2263. LCD_WriteReg(0x0097,0x0000);
  2264. LCD_WriteReg(0x0098,0x0000);
  2265. LCD_WriteReg(0x0001,0x0100);
  2266. LCD_WriteReg(0x0002,0x0700);
  2267. LCD_WriteReg(0x0003,0x1038);//ɨ�跽�� ��->�� ��->��
  2268. LCD_WriteReg(0x0004,0x0000);
  2269. LCD_WriteReg(0x000C,0x0000);
  2270. LCD_WriteReg(0x000F,0x0000);
  2271. LCD_WriteReg(0x0020,0x0000);
  2272. LCD_WriteReg(0x0021,0x0000);
  2273. LCD_WriteReg(0x0007,0x0021);
  2274. delay_ms(20);
  2275. LCD_WriteReg(0x0007,0x0061);
  2276. delay_ms(20);
  2277. LCD_WriteReg(0x0007,0x0173);
  2278. delay_ms(20);
  2279. }else if(lcddev.id==0xB505)
  2280. {
  2281. LCD_WriteReg(0x0000,0x0000);
  2282. LCD_WriteReg(0x0000,0x0000);
  2283. LCD_WriteReg(0x0000,0x0000);
  2284. LCD_WriteReg(0x0000,0x0000);
  2285. LCD_WriteReg(0x00a4,0x0001);
  2286. delay_ms(20);
  2287. LCD_WriteReg(0x0060,0x2700);
  2288. LCD_WriteReg(0x0008,0x0202);
  2289. LCD_WriteReg(0x0030,0x0214);
  2290. LCD_WriteReg(0x0031,0x3715);
  2291. LCD_WriteReg(0x0032,0x0604);
  2292. LCD_WriteReg(0x0033,0x0e16);
  2293. LCD_WriteReg(0x0034,0x2211);
  2294. LCD_WriteReg(0x0035,0x1500);
  2295. LCD_WriteReg(0x0036,0x8507);
  2296. LCD_WriteReg(0x0037,0x1407);
  2297. LCD_WriteReg(0x0038,0x1403);
  2298. LCD_WriteReg(0x0039,0x0020);
  2299. LCD_WriteReg(0x0090,0x001a);
  2300. LCD_WriteReg(0x0010,0x0000);
  2301. LCD_WriteReg(0x0011,0x0007);
  2302. LCD_WriteReg(0x0012,0x0000);
  2303. LCD_WriteReg(0x0013,0x0000);
  2304. delay_ms(20);
  2305. LCD_WriteReg(0x0010,0x0730);
  2306. LCD_WriteReg(0x0011,0x0137);
  2307. delay_ms(20);
  2308. LCD_WriteReg(0x0012,0x01b8);
  2309. delay_ms(20);
  2310. LCD_WriteReg(0x0013,0x0f00);
  2311. LCD_WriteReg(0x002a,0x0080);
  2312. LCD_WriteReg(0x0029,0x0048);
  2313. delay_ms(20);
  2314. LCD_WriteReg(0x0001,0x0100);
  2315. LCD_WriteReg(0x0002,0x0700);
  2316. LCD_WriteReg(0x0003,0x1038);//ɨ�跽�� ��->�� ��->��
  2317. LCD_WriteReg(0x0008,0x0202);
  2318. LCD_WriteReg(0x000a,0x0000);
  2319. LCD_WriteReg(0x000c,0x0000);
  2320. LCD_WriteReg(0x000d,0x0000);
  2321. LCD_WriteReg(0x000e,0x0030);
  2322. LCD_WriteReg(0x0050,0x0000);
  2323. LCD_WriteReg(0x0051,0x00ef);
  2324. LCD_WriteReg(0x0052,0x0000);
  2325. LCD_WriteReg(0x0053,0x013f);
  2326. LCD_WriteReg(0x0060,0x2700);
  2327. LCD_WriteReg(0x0061,0x0001);
  2328. LCD_WriteReg(0x006a,0x0000);
  2329. //LCD_WriteReg(0x0080,0x0000);
  2330. //LCD_WriteReg(0x0081,0x0000);
  2331. LCD_WriteReg(0x0090,0X0011);
  2332. LCD_WriteReg(0x0092,0x0600);
  2333. LCD_WriteReg(0x0093,0x0402);
  2334. LCD_WriteReg(0x0094,0x0002);
  2335. delay_ms(20);
  2336. LCD_WriteReg(0x0007,0x0001);
  2337. delay_ms(20);
  2338. LCD_WriteReg(0x0007,0x0061);
  2339. LCD_WriteReg(0x0007,0x0173);
  2340. LCD_WriteReg(0x0020,0x0000);
  2341. LCD_WriteReg(0x0021,0x0000);
  2342. LCD_WriteReg(0x00,0x22);
  2343. }else if(lcddev.id==0xC505)
  2344. {
  2345. LCD_WriteReg(0x0000,0x0000);
  2346. LCD_WriteReg(0x0000,0x0000);
  2347. delay_ms(20);
  2348. LCD_WriteReg(0x0000,0x0000);
  2349. LCD_WriteReg(0x0000,0x0000);
  2350. LCD_WriteReg(0x0000,0x0000);
  2351. LCD_WriteReg(0x0000,0x0000);
  2352. LCD_WriteReg(0x00a4,0x0001);
  2353. delay_ms(20);
  2354. LCD_WriteReg(0x0060,0x2700);
  2355. LCD_WriteReg(0x0008,0x0806);
  2356. LCD_WriteReg(0x0030,0x0703);//gamma setting
  2357. LCD_WriteReg(0x0031,0x0001);
  2358. LCD_WriteReg(0x0032,0x0004);
  2359. LCD_WriteReg(0x0033,0x0102);
  2360. LCD_WriteReg(0x0034,0x0300);
  2361. LCD_WriteReg(0x0035,0x0103);
  2362. LCD_WriteReg(0x0036,0x001F);
  2363. LCD_WriteReg(0x0037,0x0703);
  2364. LCD_WriteReg(0x0038,0x0001);
  2365. LCD_WriteReg(0x0039,0x0004);
  2366. LCD_WriteReg(0x0090, 0x0015); //80Hz
  2367. LCD_WriteReg(0x0010, 0X0410); //BT,AP
  2368. LCD_WriteReg(0x0011,0x0247); //DC1,DC0,VC
  2369. LCD_WriteReg(0x0012, 0x01BC);
  2370. LCD_WriteReg(0x0013, 0x0e00);
  2371. delay_ms(120);
  2372. LCD_WriteReg(0x0001, 0x0100);
  2373. LCD_WriteReg(0x0002, 0x0200);
  2374. LCD_WriteReg(0x0003, 0x1030);
  2375. LCD_WriteReg(0x000A, 0x0008);
  2376. LCD_WriteReg(0x000C, 0x0000);
  2377. LCD_WriteReg(0x000E, 0x0020);
  2378. LCD_WriteReg(0x000F, 0x0000);
  2379. LCD_WriteReg(0x0020, 0x0000); //H Start
  2380. LCD_WriteReg(0x0021, 0x0000); //V Start
  2381. LCD_WriteReg(0x002A,0x003D); //vcom2
  2382. delay_ms(20);
  2383. LCD_WriteReg(0x0029, 0x002d);
  2384. LCD_WriteReg(0x0050, 0x0000);
  2385. LCD_WriteReg(0x0051, 0xD0EF);
  2386. LCD_WriteReg(0x0052, 0x0000);
  2387. LCD_WriteReg(0x0053, 0x013F);
  2388. LCD_WriteReg(0x0061, 0x0000);
  2389. LCD_WriteReg(0x006A, 0x0000);
  2390. LCD_WriteReg(0x0092,0x0300);
  2391. LCD_WriteReg(0x0093, 0x0005);
  2392. LCD_WriteReg(0x0007, 0x0100);
  2393. }else if(lcddev.id==0x8989)//OK |/|/|
  2394. {
  2395. LCD_WriteReg(0x0000,0x0001);//�򿪾���
  2396. LCD_WriteReg(0x0003,0xA8A4);//0xA8A4
  2397. LCD_WriteReg(0x000C,0x0000);
  2398. LCD_WriteReg(0x000D,0x080C);
  2399. LCD_WriteReg(0x000E,0x2B00);
  2400. LCD_WriteReg(0x001E,0x00B0);
  2401. LCD_WriteReg(0x0001,0x2B3F);//������������320*240 0x6B3F
  2402. LCD_WriteReg(0x0002,0x0600);
  2403. LCD_WriteReg(0x0010,0x0000);
  2404. LCD_WriteReg(0x0011,0x6078); //�������ݸ�ʽ 16λɫ ���� 0x6058
  2405. LCD_WriteReg(0x0005,0x0000);
  2406. LCD_WriteReg(0x0006,0x0000);
  2407. LCD_WriteReg(0x0016,0xEF1C);
  2408. LCD_WriteReg(0x0017,0x0003);
  2409. LCD_WriteReg(0x0007,0x0233); //0x0233
  2410. LCD_WriteReg(0x000B,0x0000);
  2411. LCD_WriteReg(0x000F,0x0000); //ɨ�迪ʼ��ַ
  2412. LCD_WriteReg(0x0041,0x0000);
  2413. LCD_WriteReg(0x0042,0x0000);
  2414. LCD_WriteReg(0x0048,0x0000);
  2415. LCD_WriteReg(0x0049,0x013F);
  2416. LCD_WriteReg(0x004A,0x0000);
  2417. LCD_WriteReg(0x004B,0x0000);
  2418. LCD_WriteReg(0x0044,0xEF00);
  2419. LCD_WriteReg(0x0045,0x0000);
  2420. LCD_WriteReg(0x0046,0x013F);
  2421. LCD_WriteReg(0x0030,0x0707);
  2422. LCD_WriteReg(0x0031,0x0204);
  2423. LCD_WriteReg(0x0032,0x0204);
  2424. LCD_WriteReg(0x0033,0x0502);
  2425. LCD_WriteReg(0x0034,0x0507);
  2426. LCD_WriteReg(0x0035,0x0204);
  2427. LCD_WriteReg(0x0036,0x0204);
  2428. LCD_WriteReg(0x0037,0x0502);
  2429. LCD_WriteReg(0x003A,0x0302);
  2430. LCD_WriteReg(0x003B,0x0302);
  2431. LCD_WriteReg(0x0023,0x0000);
  2432. LCD_WriteReg(0x0024,0x0000);
  2433. LCD_WriteReg(0x0025,0x8000);
  2434. LCD_WriteReg(0x004f,0); //����ַ0
  2435. LCD_WriteReg(0x004e,0); //����ַ0
  2436. }else if(lcddev.id==0x4531)//OK |/|/|
  2437. {
  2438. LCD_WriteReg(0X00,0X0001);
  2439. delay_ms(10);
  2440. LCD_WriteReg(0X10,0X1628);
  2441. LCD_WriteReg(0X12,0X000e);//0x0006
  2442. LCD_WriteReg(0X13,0X0A39);
  2443. delay_ms(10);
  2444. LCD_WriteReg(0X11,0X0040);
  2445. LCD_WriteReg(0X15,0X0050);
  2446. delay_ms(10);
  2447. LCD_WriteReg(0X12,0X001e);//16
  2448. delay_ms(10);
  2449. LCD_WriteReg(0X10,0X1620);
  2450. LCD_WriteReg(0X13,0X2A39);
  2451. delay_ms(10);
  2452. LCD_WriteReg(0X01,0X0100);
  2453. LCD_WriteReg(0X02,0X0300);
  2454. LCD_WriteReg(0X03,0X1038);//�ı䷽����
  2455. LCD_WriteReg(0X08,0X0202);
  2456. LCD_WriteReg(0X0A,0X0008);
  2457. LCD_WriteReg(0X30,0X0000);
  2458. LCD_WriteReg(0X31,0X0402);
  2459. LCD_WriteReg(0X32,0X0106);
  2460. LCD_WriteReg(0X33,0X0503);
  2461. LCD_WriteReg(0X34,0X0104);
  2462. LCD_WriteReg(0X35,0X0301);
  2463. LCD_WriteReg(0X36,0X0707);
  2464. LCD_WriteReg(0X37,0X0305);
  2465. LCD_WriteReg(0X38,0X0208);
  2466. LCD_WriteReg(0X39,0X0F0B);
  2467. LCD_WriteReg(0X41,0X0002);
  2468. LCD_WriteReg(0X60,0X2700);
  2469. LCD_WriteReg(0X61,0X0001);
  2470. LCD_WriteReg(0X90,0X0210);
  2471. LCD_WriteReg(0X92,0X010A);
  2472. LCD_WriteReg(0X93,0X0004);
  2473. LCD_WriteReg(0XA0,0X0100);
  2474. LCD_WriteReg(0X07,0X0001);
  2475. LCD_WriteReg(0X07,0X0021);
  2476. LCD_WriteReg(0X07,0X0023);
  2477. LCD_WriteReg(0X07,0X0033);
  2478. LCD_WriteReg(0X07,0X0133);
  2479. LCD_WriteReg(0XA0,0X0000);
  2480. }else if(lcddev.id==0x4535)
  2481. {
  2482. LCD_WriteReg(0X15,0X0030);
  2483. LCD_WriteReg(0X9A,0X0010);
  2484. LCD_WriteReg(0X11,0X0020);
  2485. LCD_WriteReg(0X10,0X3428);
  2486. LCD_WriteReg(0X12,0X0002);//16
  2487. LCD_WriteReg(0X13,0X1038);
  2488. delay_ms(40);
  2489. LCD_WriteReg(0X12,0X0012);//16
  2490. delay_ms(40);
  2491. LCD_WriteReg(0X10,0X3420);
  2492. LCD_WriteReg(0X13,0X3038);
  2493. delay_ms(70);
  2494. LCD_WriteReg(0X30,0X0000);
  2495. LCD_WriteReg(0X31,0X0402);
  2496. LCD_WriteReg(0X32,0X0307);
  2497. LCD_WriteReg(0X33,0X0304);
  2498. LCD_WriteReg(0X34,0X0004);
  2499. LCD_WriteReg(0X35,0X0401);
  2500. LCD_WriteReg(0X36,0X0707);
  2501. LCD_WriteReg(0X37,0X0305);
  2502. LCD_WriteReg(0X38,0X0610);
  2503. LCD_WriteReg(0X39,0X0610);
  2504. LCD_WriteReg(0X01,0X0100);
  2505. LCD_WriteReg(0X02,0X0300);
  2506. LCD_WriteReg(0X03,0X1030);//�ı䷽����
  2507. LCD_WriteReg(0X08,0X0808);
  2508. LCD_WriteReg(0X0A,0X0008);
  2509. LCD_WriteReg(0X60,0X2700);
  2510. LCD_WriteReg(0X61,0X0001);
  2511. LCD_WriteReg(0X90,0X013E);
  2512. LCD_WriteReg(0X92,0X0100);
  2513. LCD_WriteReg(0X93,0X0100);
  2514. LCD_WriteReg(0XA0,0X3000);
  2515. LCD_WriteReg(0XA3,0X0010);
  2516. LCD_WriteReg(0X07,0X0001);
  2517. LCD_WriteReg(0X07,0X0021);
  2518. LCD_WriteReg(0X07,0X0023);
  2519. LCD_WriteReg(0X07,0X0033);
  2520. LCD_WriteReg(0X07,0X0133);
  2521. }else if(lcddev.id==0X1963)
  2522. {
  2523. LCD_WR_REG(0xE2); //Set PLL with OSC = 10MHz (hardware), Multiplier N = 35, 250MHz < VCO < 800MHz = OSC*(N+1), VCO = 300MHz
  2524. LCD_WR_DATA(0x1D); //����1
  2525. LCD_WR_DATA(0x02); //����2 Divider M = 2, PLL = 300/(M+1) = 100MHz
  2526. LCD_WR_DATA(0x04); //����3 Validate M and N values
  2527. delay_us(100);
  2528. LCD_WR_REG(0xE0); // Start PLL command
  2529. LCD_WR_DATA(0x01); // enable PLL
  2530. delay_ms(10);
  2531. LCD_WR_REG(0xE0); // Start PLL command again
  2532. LCD_WR_DATA(0x03); // now, use PLL output as system clock
  2533. delay_ms(12);
  2534. LCD_WR_REG(0x01); //����λ
  2535. delay_ms(10);
  2536. LCD_WR_REG(0xE6); //��������Ƶ��,33Mhz
  2537. LCD_WR_DATA(0x2F);
  2538. LCD_WR_DATA(0xFF);
  2539. LCD_WR_DATA(0xFF);
  2540. LCD_WR_REG(0xB0); //����LCDģʽ
  2541. LCD_WR_DATA(0x20); //24λģʽ
  2542. LCD_WR_DATA(0x00); //TFT ģʽ
  2543. LCD_WR_DATA((SSD_HOR_RESOLUTION-1)>>8);//����LCDˮƽ����
  2544. LCD_WR_DATA(SSD_HOR_RESOLUTION-1);
  2545. LCD_WR_DATA((SSD_VER_RESOLUTION-1)>>8);//����LCD��ֱ����
  2546. LCD_WR_DATA(SSD_VER_RESOLUTION-1);
  2547. LCD_WR_DATA(0x00); //RGB����
  2548. LCD_WR_REG(0xB4); //Set horizontal period
  2549. LCD_WR_DATA((SSD_HT-1)>>8);
  2550. LCD_WR_DATA(SSD_HT-1);
  2551. LCD_WR_DATA(SSD_HPS>>8);
  2552. LCD_WR_DATA(SSD_HPS);
  2553. LCD_WR_DATA(SSD_HOR_PULSE_WIDTH-1);
  2554. LCD_WR_DATA(0x00);
  2555. LCD_WR_DATA(0x00);
  2556. LCD_WR_DATA(0x00);
  2557. LCD_WR_REG(0xB6); //Set vertical period
  2558. LCD_WR_DATA((SSD_VT-1)>>8);
  2559. LCD_WR_DATA(SSD_VT-1);
  2560. LCD_WR_DATA(SSD_VPS>>8);
  2561. LCD_WR_DATA(SSD_VPS);
  2562. LCD_WR_DATA(SSD_VER_FRONT_PORCH-1);
  2563. LCD_WR_DATA(0x00);
  2564. LCD_WR_DATA(0x00);
  2565. LCD_WR_REG(0xF0); //����SSD1963��CPU�ӿ�Ϊ16bit
  2566. LCD_WR_DATA(0x03); //16-bit(565 format) data for 16bpp
  2567. LCD_WR_REG(0x29); //������ʾ
  2568. //����PWM���� ����ͨ��ռ�ձȿɵ�
  2569. LCD_WR_REG(0xD0); //�����Զ���ƽ��DBC
  2570. LCD_WR_DATA(0x00); //disable
  2571. LCD_WR_REG(0xBE); //����PWM����
  2572. LCD_WR_DATA(0x05); //1����PWMƵ��
  2573. LCD_WR_DATA(0xFE); //2����PWMռ�ձ�
  2574. LCD_WR_DATA(0x01); //3����C
  2575. LCD_WR_DATA(0x00); //4����D
  2576. LCD_WR_DATA(0x00); //5����E
  2577. LCD_WR_DATA(0x00); //6����F
  2578. LCD_WR_REG(0xB8); //����GPIO����
  2579. LCD_WR_DATA(0x03); //2��IO��������
  2580. LCD_WR_DATA(0x01); //GPIOʹ��������IO����
  2581. LCD_WR_REG(0xBA);
  2582. LCD_WR_DATA(0X01); //GPIO[1:0]=01,����LCD����
  2583. LCD_SSD_BackLightSet(100);//������������
  2584. }
  2585. LCD_Display_Dir(0); //Ĭ��Ϊ����
  2586. LCD_LED=1; //��������
  2587. LCD_Clear(WHITE);
  2588. }
  2589. //��������
  2590. //color:Ҫ����������ɫ
  2591. void LCD_Clear(u16 color)
  2592. {
  2593. u32 index=0;
  2594. u32 totalpoint=lcddev.width;
  2595. totalpoint*=lcddev.height; //�õ��ܵ���
  2596. if((lcddev.id==0X6804)&&(lcddev.dir==1))//6804������ʱ�����⴦��
  2597. {
  2598. lcddev.dir=0;
  2599. lcddev.setxcmd=0X2A;
  2600. lcddev.setycmd=0X2B;
  2601. LCD_SetCursor(0x00,0x0000); //���ù���λ��
  2602. lcddev.dir=1;
  2603. lcddev.setxcmd=0X2B;
  2604. lcddev.setycmd=0X2A;
  2605. }else LCD_SetCursor(0x00,0x0000); //���ù���λ��
  2606. LCD_WriteRAM_Prepare(); //��ʼд��GRAM
  2607. for(index=0;index<totalpoint;index++)LCD_WR_DATA(color);
  2608. }
  2609. //��ָ������������ָ����ɫ
  2610. //������С:(xend-xsta+1)*(yend-ysta+1)
  2611. //xsta
  2612. //color:Ҫ��������ɫ
  2613. void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color)
  2614. {
  2615. u16 i,j;
  2616. u16 xlen=0;
  2617. u16 temp;
  2618. if((lcddev.id==0X6804)&&(lcddev.dir==1)) //6804������ʱ�����⴦��
  2619. {
  2620. temp=sx;
  2621. sx=sy;
  2622. sy=lcddev.width-ex-1;
  2623. ex=ey;
  2624. ey=lcddev.width-temp-1;
  2625. lcddev.dir=0;
  2626. lcddev.setxcmd=0X2A;
  2627. lcddev.setycmd=0X2B;
  2628. LCD_Fill(sx,sy,ex,ey,color);
  2629. lcddev.dir=1;
  2630. lcddev.setxcmd=0X2B;
  2631. lcddev.setycmd=0X2A;
  2632. }else
  2633. {
  2634. xlen=ex-sx+1;
  2635. for(i=sy;i<=ey;i++)
  2636. {
  2637. LCD_SetCursor(sx,i); //���ù���λ��
  2638. LCD_WriteRAM_Prepare(); //��ʼд��GRAM
  2639. for(j=0;j<xlen;j++)LCD_WR_DATA(color); //���ù���λ��
  2640. }
  2641. }
  2642. }
  2643. //��ָ������������ָ����ɫ��
  2644. //(sx,sy),(ex,ey):�������ζԽ�����,������СΪ:(ex-sx+1)*(ey-sy+1)
  2645. //color:Ҫ��������ɫ
  2646. void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color)
  2647. {
  2648. u16 height,width;
  2649. u16 i,j;
  2650. width=ex-sx+1; //�õ������Ŀ���
  2651. height=ey-sy+1; //�߶�
  2652. for(i=0;i<height;i++)
  2653. {
  2654. LCD_SetCursor(sx,sy+i); //���ù���λ��
  2655. LCD_WriteRAM_Prepare(); //��ʼд��GRAM
  2656. for(j=0;j<width;j++)LCD_WR_DATA(color[i*width+j]);//�����
  2657. }
  2658. }
  2659. //����
  2660. //x1,y1:��������
  2661. //x2,y2:�յ�����
  2662. void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)
  2663. {
  2664. u16 t;
  2665. int xerr=0,yerr=0,delta_x,delta_y,distance;
  2666. int incx,incy,uRow,uCol;
  2667. delta_x=x2-x1; //������������
  2668. delta_y=y2-y1;
  2669. uRow=x1;
  2670. uCol=y1;
  2671. if(delta_x>0)incx=1; //���õ�������
  2672. else if(delta_x==0)incx=0;//��ֱ��
  2673. else {incx=-1;delta_x=-delta_x;}
  2674. if(delta_y>0)incy=1;
  2675. else if(delta_y==0)incy=0;//ˮƽ��
  2676. else{incy=-1;delta_y=-delta_y;}
  2677. if( delta_x>delta_y)distance=delta_x; //ѡȡ��������������
  2678. else distance=delta_y;
  2679. for(t=0;t<=distance+1;t++ )//��������
  2680. {
  2681. LCD_DrawPoint(uRow,uCol);//����
  2682. xerr+=delta_x ;
  2683. yerr+=delta_y ;
  2684. if(xerr>distance)
  2685. {
  2686. xerr-=distance;
  2687. uRow+=incx;
  2688. }
  2689. if(yerr>distance)
  2690. {
  2691. yerr-=distance;
  2692. uCol+=incy;
  2693. }
  2694. }
  2695. }
  2696. //������
  2697. //(x1,y1),(x2,y2):���εĶԽ�����
  2698. void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2)
  2699. {
  2700. LCD_DrawLine(x1,y1,x2,y1);
  2701. LCD_DrawLine(x1,y1,x1,y2);
  2702. LCD_DrawLine(x1,y2,x2,y2);
  2703. LCD_DrawLine(x2,y1,x2,y2);
  2704. }
  2705. //��ָ��λ�û�һ��ָ����С��Բ
  2706. //(x,y):���ĵ�
  2707. //r :�뾶
  2708. void LCD_Draw_Circle(u16 x0,u16 y0,u8 r)
  2709. {
  2710. int a,b;
  2711. int di;
  2712. a=0;b=r;
  2713. di=3-(r<<1); //�ж��¸���λ�õı�־
  2714. while(a<=b)
  2715. {
  2716. LCD_DrawPoint(x0+a,y0-b); //5
  2717. LCD_DrawPoint(x0+b,y0-a); //0
  2718. LCD_DrawPoint(x0+b,y0+a); //4
  2719. LCD_DrawPoint(x0+a,y0+b); //6
  2720. LCD_DrawPoint(x0-a,y0+b); //1
  2721. LCD_DrawPoint(x0-b,y0+a);
  2722. LCD_DrawPoint(x0-a,y0-b); //2
  2723. LCD_DrawPoint(x0-b,y0-a); //7
  2724. a++;
  2725. //ʹ��Bresenham�㷨��Բ
  2726. if(di<0)di +=4*a+6;
  2727. else
  2728. {
  2729. di+=10+4*(a-b);
  2730. b--;
  2731. }
  2732. }
  2733. }
  2734. //��ָ��λ����ʾһ���ַ�
  2735. //x,y:��ʼ����
  2736. //num:Ҫ��ʾ���ַ�:" "--->"~"
  2737. //size:������С 12/16/24
  2738. //mode:���ӷ�ʽ(1)���Ƿǵ��ӷ�ʽ(0)
  2739. void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
  2740. {
  2741. u8 temp,t1,t;
  2742. u16 y0=y;
  2743. u8 csize=(size/8+((size%8)?1:0))*(size/2); //�õ�����һ���ַ���Ӧ��������ռ���ֽ���
  2744. num=num-' ';//�õ�ƫ�ƺ���ֵ��ASCII�ֿ��Ǵӿո���ʼȡģ������-' '���Ƕ�Ӧ�ַ����ֿ⣩
  2745. for(t=0;t<csize;t++)
  2746. {
  2747. if(size==12)temp=asc2_1206[num][t]; //����1206����
  2748. else if(size==16)temp=asc2_1608[num][t]; //����1608����
  2749. else if(size==24)temp=asc2_2412[num][t]; //����2412����
  2750. else return; //û�е��ֿ�
  2751. for(t1=0;t1<8;t1++)
  2752. {
  2753. if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
  2754. else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
  2755. temp<<=1;
  2756. y++;
  2757. if(y>=lcddev.height)return; //��������
  2758. if((y-y0)==size)
  2759. {
  2760. y=y0;
  2761. x++;
  2762. if(x>=lcddev.width)return; //��������
  2763. break;
  2764. }
  2765. }
  2766. }
  2767. }
  2768. //m^n����
  2769. //����ֵ:m^n�η�.
  2770. u32 LCD_Pow(u8 m,u8 n)
  2771. {
  2772. u32 result=1;
  2773. while(n--)result*=m;
  2774. return result;
  2775. }
  2776. //��ʾ����,��λΪ0,������ʾ
  2777. //x,y :��������
  2778. //len :���ֵ�λ��
  2779. //size:������С
  2780. //color:��ɫ
  2781. //num:��ֵ(0~4294967295);
  2782. void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)
  2783. {
  2784. u8 t,temp;
  2785. u8 enshow=0;
  2786. for(t=0;t<len;t++)
  2787. {
  2788. temp=(num/LCD_Pow(10,len-t-1))%10;
  2789. if(enshow==0&&t<(len-1))
  2790. {
  2791. if(temp==0)
  2792. {
  2793. LCD_ShowChar(x+(size/2)*t,y,' ',size,0);
  2794. continue;
  2795. }else enshow=1;
  2796. }
  2797. LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,0);
  2798. }
  2799. }
  2800. //��ʾ����,��λΪ0,������ʾ
  2801. //x,y:��������
  2802. //num:��ֵ(0~999999999);
  2803. //len:����(��Ҫ��ʾ��λ��)
  2804. //size:������С
  2805. //mode:
  2806. //[7]:0,������;1,����0.
  2807. //[6:1]:����
  2808. //[0]:0,�ǵ�����ʾ;1,������ʾ.
  2809. void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode)
  2810. {
  2811. u8 t,temp;
  2812. u8 enshow=0;
  2813. for(t=0;t<len;t++)
  2814. {
  2815. temp=(num/LCD_Pow(10,len-t-1))%10;
  2816. if(enshow==0&&t<(len-1))
  2817. {
  2818. if(temp==0)
  2819. {
  2820. if(mode&0X80)LCD_ShowChar(x+(size/2)*t,y,'0',size,mode&0X01);
  2821. else LCD_ShowChar(x+(size/2)*t,y,' ',size,mode&0X01);
  2822. continue;
  2823. }else enshow=1;
  2824. }
  2825. LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,mode&0X01);
  2826. }
  2827. }
  2828. //��ʾ�ַ���
  2829. //x,y:��������
  2830. //width,height:������С
  2831. //size:������С
  2832. //*p:�ַ�����ʼ��ַ
  2833. void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
  2834. {
  2835. u8 x0=x;
  2836. width+=x;
  2837. height+=y;
  2838. while((*p<='~')&&(*p>=' '))//�ж��Dz��ǷǷ��ַ�!
  2839. {
  2840. if(x>=width){x=x0;y+=size;}
  2841. if(y>=height)break;//�˳�
  2842. LCD_ShowChar(x,y,*p,size,0);
  2843. x+=size/2;
  2844. p++;
  2845. }
  2846. }