Here are the programming instructions for the 9331 LCD
1.void Initial_ILI9331_Hydis28(void)
2.{
3.// RESET=0;
4.// Delayms(5);
5.// RESET=1;
6.// Delayms(10);
7.
8. WriteRegister(0xe7,0x1014); // Set internal timing
9. WriteRegister(0x01,0x0100); // set SS and SM bit
10. WriteRegister(0x02,0x0200); // set 1 line inversion
11. WriteRegister(0x03,0x1030); // set GRAM write direction and BGR=1.
12.
13. WriteRegister(0x08,0x0202); // set the back porch and front porch
14. WriteRegister(0x09,0x0000); // set non-display area refresh cycle ISC[3:0]
15. WriteRegister(0x0A,0x0000); // FMARK function
16. WriteRegister(0x0C,0x0000); // RGB interface setting
17. WriteRegister(0x0D,0x0000); // Frame marker Position
18. WriteRegister(0x0F,0x0000); // RGB interface polarity
19.
20.// Power On Sequence //
21. WriteRegister(0x10,0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
22. WriteRegister(0x11,0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
23. WriteRegister(0x12,0x0000); // VREG1OUT voltage
24. WriteRegister(0x13,0x0000); // VDV[4:0] for VCOM amplitude
25. Delayms(100);
26.
27. WriteRegister(0x10,0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB
28. WriteRegister(0x11,0x0227); // DC1[2:0], DC0[2:0], VC[2:0]
29. Delayms(50);
30. WriteRegister(0x12,0x000c);
31. Delayms(50);
32. WriteRegister(0x13,0x0800); //0X1A
33. WriteRegister(0x29,0x0011);
34. WriteRegister(0x2b,0x000b);
35. Delayms(50);
36.
37.
38.//Adjust the Gamma curve//
39. WriteRegister(0x30,0x0000);
40. WriteRegister(0x31,0x0106);
41. WriteRegister(0x32,0x0000);
42. WriteRegister(0x35,0x0204);
43. WriteRegister(0x36,0x160a);
44. WriteRegister(0x37,0x0707);
45. WriteRegister(0x38,0x0106);
46. WriteRegister(0x39,0x0706);
47. WriteRegister(0x3c,0x0402);
48. WriteRegister(0x3d,0x0c0f);
49.
50.//--------- set GRAM area -----------
51. WriteRegister(0x50,0x0000); //Horizontal RAM Address Position start
52. WriteRegister(0x51,0x00ef); //Horizontal RAM Address Position end
53. WriteRegister(0x52,0x0000); //Vertical RAM Address Position start
54. WriteRegister(0x53,0x013f); //Vertical RAM Address Position end
55. WriteRegister(0x20,0x0000); //Set horizontal address
56. WriteRegister(0x21,0x0000); //Set vertical address
57.
58. WriteRegister(0x60,0x2700);
59. WriteRegister(0x61,0x0001);
60. WriteRegister(0x6a,0x0000);
61.
62. // Partial display control //
63. WriteRegister(0x80,0x0000);
64. WriteRegister(0x81,0x0000);
65. WriteRegister(0x82,0x0000);
66. WriteRegister(0x83,0x0000);
67. WriteRegister(0x84,0x0000);
68. WriteRegister(0x85,0x0000);
69.
70.// Panel control //
71. WriteRegister(0x90,0x0010);
72. WriteRegister(0x92,0x0600);
73.
74. WriteRegister(0x07,0x0133); //display on
75.
76. // write display data
77. // WriteRegister(0x20,0x0000); //Set horizontal address
78. // WriteRegister(0x21,0x0000); //Set vertical address
79. // WriteIndex(0x00,0x22); //write data to GRAM
80.}
81.
82.
83.
84. void LCD_ExitSleep_ILI9331()
85. {
86. WriteRegister(0x10,0x0080); //
87. WriteRegister(0x11,0x0000); //
88. WriteRegister(0x12,0x0000); //
89. WriteRegister(0x13,0x0000); //
90. Delayms(200);
91. WriteRegister(0x10,0x1690); //
92. WriteRegister(0x11,0x0227); //
93. Delayms(50);
94. WriteRegister(0x12,0x000C); //
95. Delayms(50);
96. WriteRegister(0x13,0x0800); //
97. WriteRegister(0x29,0x0011); //
98. Delayms(50);
99. WriteRegister(0x07,0x0133); //
100.
101.
102. }
103.
104. void LCD_EnterSleep_ILI9331()
105. {
106. WriteRegister(0x07,0x0131); //
107. Delayms(10);
108. WriteRegister(0x07,0x0130); //
109. Delayms(10);
110. WriteRegister(0x07,0x0000); // display off
111. //power off sequence
112. WriteRegister(0x10,0x0080); //
113. WriteRegister(0x11,0x0000); //
114. WriteRegister(0x12,0x0000); //
115. WriteRegister(0x13,0x0000); //
116. Delayms(200);
117. WriteRegister(0x10,0x0082); //
118.
119. }