📄 ili9163.lst
字号:
C51 COMPILER V7.06 ILI9163 02/03/2010 15:50:23 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ILI9163
OBJECT MODULE PLACED IN .\obj\ILI9163.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ILI9163.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\ILI9163.lst) OBJECT(.\obj\I
-LI9163.obj)
stmt level source
1
2 #include "reg52.h"
3 #include "stdio.h"
4
5 #define uchar unsigned char
6 //==============================================================//
7 sbit CS =P2^2;
8 sbit RS =P2^4;
9 sbit Rw =P2^5;
10 sbit Rd =P2^6;
11 sbit RST=P2^1;
12
13 sbit PAUSE=P1^4;
14
15 //=====================================================================//
16 void Delayms(int) ;//廷时子程序
17 void WriteDAT(unsigned char a,unsigned char b);
18 void WriteCOM(unsigned char b);
19 void WriteDAT1(unsigned char b);
20 void Ini_ILI9163(void);
21 unsigned char code pic[];
22 void show_photo(void);
23 void pause(void);
24 void SleepOut(void);
25 void SleepIn(void);
26 void display_hb(void);
27 //=======================延时程序========================//
28 void Delayms(int count) // x 10ms
29 {
30 1 int i,j;
31 1 for(i=0;i<count;i++)
32 1 for(j=0;j<500;j++);
33 1 }
34
35 //======================== 按键测试 ======================//
36
37 void pause()
38 {
39 1 while(PAUSE);
40 1 }
41
42 //=========================写寄存器ID的子程序===========================//
43 void WriteCOM(unsigned char b)
44 {
45 1 RS=0;
46 1 CS=0;
47 1 Rd=1;
48 1
49 1 P0=0x00;
50 1 Rw=0;
51 1 Rw=1;
52 1 P0=b;
53 1 Rw=0;
54 1 Rw=1;
C51 COMPILER V7.06 ILI9163 02/03/2010 15:50:23 PAGE 2
55 1 RS=1;
56 1 CS=1;
57 1 }
58 //==========================写数据的子程序==============================//
59 void WriteDAT(unsigned char a,unsigned char b)
60 {
61 1 RS=1;
62 1 CS=0;
63 1 Rd=1;
64 1
65 1 P0=a;
66 1 Rw=0;
67 1 Rw=1;
68 1
69 1 P0=b;
70 1 Rw=0;
71 1 Rw=1;
72 1
73 1 RS=0;
74 1 CS=1;
75 1
76 1 }
77
78 void WriteDAT1(unsigned char b)
79 {
80 1 RS=1;
81 1 CS=0;
82 1 Rd=1;
83 1
84 1
85 1 P0=b;
86 1 Rw=0;
87 1 Rw=1;
88 1
89 1 RS=0;
90 1 CS=1;
91 1 }
92 void Write_Data_U16(unsigned int y)
93 {
94 1 unsigned char m,n;
95 1 m=y>>8;
96 1 n=y;
97 1 WriteDAT(m,n);
98 1
99 1 }
100 //=========================== IC ILI9163初始化=======================================//
101
102 void Ini_ILI9163(void)
103 {
104 1 CS=1;
105 1 Delayms(10);
106 1 RST=0;
107 1 Delayms(10);
108 1 RST=1;
109 1 Delayms(10);
110 1 WriteCOM(0x11);//退出睡眠模式
111 1 Delayms(10);
112 1 WriteCOM(0x26); // Gammut format 伽马曲线设置
113 1 WriteDAT1(0x04);// 04h GC3 Gammut 2.2
114 1 // 01h GC1 Gammut 1.0 , 02h GC2 gammut 1.8, 08h GC3 Gammut 2.5
115 1 Delayms(10);
116 1 WriteCOM(0xB1); //帧频控制
C51 COMPILER V7.06 ILI9163 02/03/2010 15:50:23 PAGE 3
117 1 WriteDAT1(0x08);
118 1 WriteDAT1(0x09); // 75hz
119 1
120 1
121 1 WriteCOM(0xC0); //电源控制
122 1 WriteDAT1(0x04);
123 1 WriteDAT1(0x00);
124 1
125 1 WriteCOM(0xc1); //电源控制
126 1 WriteDAT1(0x05);
127 1
128 1 WriteCOM(0xC5); //偏压控制
129 1 WriteDAT1(0x4c); //vcom control 0x48,0x24 34 //2b
130 1 WriteDAT1(0x38); //vcom control 0x48,0x24 50 //47
131 1 Delayms(10);
132 1
133 1 WriteCOM(0xC7); //偏压控制
134 1 WriteDAT1(0x40); //C4
135 1
136 1 WriteCOM(0x3A);// Interface Pixel mode
137 1 WriteDAT1(0x05);// 05 16 bit/Pixel RGB 53-35 Twice per pixel for 80-8bits parallel
138 1 // 06 18 bit/Pixel RGB 6-6-6 Three times per pixel for 80-8bits parallel
139 1
140 1
141 1 WriteCOM(0x36); //扫描方向控制
142 1 WriteDAT1(0xC8); //
143 1
144 1
145 1 WriteCOM(0xB7);
146 1 WriteDAT1(0x00); //
147 1
148 1 WriteCOM(0xF2);
149 1 WriteDAT1(0x01);
150 1 Delayms(10);
151 1
152 1 // t Gamma
153 1 WriteCOM(0xE0);// Positive 05
154 1 WriteDAT1(0x3F);//1
155 1 WriteDAT1(0x26);//2
156 1 WriteDAT1(0x23);//3
157 1 WriteDAT1(0x2D);//4
158 1 WriteDAT1(0x28);//5
159 1 WriteDAT1(0x0B);//6
160 1 WriteDAT1(0x53);//7
161 1 WriteDAT1(0xE1);//8
162 1 WriteDAT1(0x41);//9
163 1 WriteDAT1(0x17);//10
164 1 WriteDAT1(0x1E);//11
165 1 WriteDAT1(0x01);//12
166 1 WriteDAT1(0x00);//13
167 1 WriteDAT1(0x00);//14
168 1 WriteDAT1(0x00);//15
169 1
170 1 WriteCOM(0xE1); // Negative
171 1 WriteDAT1(0x00);//1
172 1 WriteDAT1(0x16);//2
173 1 WriteDAT1(0x1a);//3
174 1 WriteDAT1(0x0d);//4
175 1 WriteDAT1(0x17);//5
176 1 WriteDAT1(0x10);//6
177 1 WriteDAT1(0x2a);//7
178 1 WriteDAT1(0x18);//8
C51 COMPILER V7.06 ILI9163 02/03/2010 15:50:23 PAGE 4
179 1 WriteDAT1(0x3b);//9
180 1 WriteDAT1(0x05);//10
181 1 WriteDAT1(0x1e);//11
182 1 WriteDAT1(0x39);//12
183 1 WriteDAT1(0x3f);//13
184 1 WriteDAT1(0x3f);//14
185 1 WriteDAT1(0x3f);//15 //////
186 1
187 1
188 1
189 1
190 1 WriteCOM(0x29); //Display on
191 1 WriteCOM(0x2C); //Write Data to GRAM
192 1
193 1 Delayms(10);
194 1
195 1
196 1 }
197
198
199
200 //=======================================写地址====================================//
201 void addr(void)
202 {
203 1 WriteCOM(0x2A); //Colulm addRSTs set
204 1 WriteDAT1(0x00);
205 1 WriteDAT1(0x00);
206 1 WriteDAT1(0x00);
207 1 WriteDAT1(127);
208 1
209 1 WriteCOM(0x2B); //Colulm addRSTs set
210 1 WriteDAT1(0x00);
211 1 WriteDAT1(0x00);
212 1 WriteDAT1(0x00);
213 1 WriteDAT1(159);
214 1
215 1 WriteCOM(0x2C); //Write Data to GRAM
216 1 }
217 static void LCD_SetPos(unsigned int x0,unsigned int x1,unsigned int y0,unsigned int y1)
218 {
219 1 WriteCOM(0x2A); //Colulm addRSTs set
220 1 WriteDAT1(x0>>8);
221 1 WriteDAT1(x0);
222 1
223 1 WriteDAT1(x1>>8);
224 1 WriteDAT1(x1);
225 1
226 1 WriteCOM(0x2B); //Colulm addRSTs set
227 1 WriteDAT1(y0>>8);
228 1 WriteDAT1(y0);
229 1
230 1 WriteDAT1(y1>>8);
231 1 WriteDAT1(y1);
232 1
233 1 WriteCOM(0x2C); //Write Data to GRAM
234 1 }
235
236 /*-----------------------------------------------------------------
237 * 函数名:Put_pixel
238 * 功能:在屏幕上画点
239 * 输入参数:坐标x,y
240 * color颜色
C51 COMPILER V7.06 ILI9163 02/03/2010 15:50:23 PAGE 5
241 * 输出参数:无
242 ----------------------------------------------------------------*/
243 void Put_pixel(uchar x,uchar y,unsigned int color)
244 {
245 1 LCD_SetPos(x,x,y,y);
246 1 Write_Data_U16(color);
247 1 }
248 /*-----------------------------------------------------------------
249 * 函数名:Line
250 * 功能:在屏幕上画线
251 * 输入参数:起始坐标X0,Y0,终止坐标X1,Y1
252 * color颜色
253 * 输出参数:无
254 ----------------------------------------------------------------*/
255 void Line( uchar X0,
256 uchar Y0,
257 uchar X1,
258 uchar Y1,
259 unsigned int color)
260 {
261 1 int dx = X1 - X0;
262 1 int dy = Y1 - Y0;
263 1 int P = 2 * dy - dx;
264 1 int dobDy = 2 * dy;
265 1 int dobD = 2 * (dy - dx);
266 1 int PointX = 0,PointY = 0;
267 1 int incx = 0,incy = 0;
268 1 int distance = 0,xerr = 0,yerr = 0;
269 1 unsigned int i = 0;
270 1
271 1 if(dx == 0) //k=1斜率为1
272 1 {
273 2 PointX = X0;
274 2 if(Y0 < Y1)
275 2 {
276 3 PointY = Y0;
277 3 }
278 2 else
279 2 {
280 3 PointY = Y1;
281 3 }
282 2 for(i = 0;i <= ((Y0<Y1) ? (Y1-Y0) : (Y0-Y1));i++)
283 2 {
284 3
285 3 Put_pixel(PointX,PointY,color);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -