📄 lcd12864_driver.lst
字号:
188 3 for(i=0;i<y;i++)
189 3 {
190 4 Locat_Dot(x1,y1+i);
191 4 }
192 3 }
193 2 else if(y==0)
194 2 Locat_Dot(x1,y1);
195 2 else
196 2 {
197 3 for(i=y;i<0;i++)
198 3 {
199 4 Locat_Dot(x1,y1+i);
200 4 }
201 3 }
202 2
203 2 }
204 1 else
205 1 y_add = y*1.000/x;
206 1 if(x>0)
207 1 {
208 2 if(y_add <=1&&y_add>=-1)
209 2 {
210 3 for(i=0;i<x;i++)
211 3 {
212 4 y=y1+y_add*i;
213 4 Locat_Dot(x1+i,y);
214 4 }
215 3 }
216 2 else
217 2 {
218 3 if(y>0)
219 3 {
220 4 for(i=0;i<y;i++)
221 4 {
222 5 x=x1+i/y_add;
223 5 Locat_Dot(x,y1+i);
224 5 }
225 4 }
226 3 else if(y==0)
227 3 {
228 4 for(i=0;i<x;i++)
229 4 {
230 5 Locat_Dot(x1+i,y1);
C51 COMPILER V8.02 LCD12864_DRIVER 07/09/2007 08:18:06 PAGE 5
231 5 }
232 4 }
233 3 else
234 3 {
235 4 for(i=y;i<0;i++)
236 4 {
237 5 x=x1+i/y_add;
238 5 Locat_Dot(x,y1+i);
239 5 }
240 4 }
241 3
242 3 }
243 2
244 2 }
245 1 else if(x<0)
246 1 {
247 2 if(y_add <=1&&y_add>=-1)
248 2 {
249 3 for(i=x;i<0;i++)
250 3 {
251 4 y=y1+y_add*i;
252 4 Locat_Dot(x1+i,y);
253 4 }
254 3 }
255 2 else
256 2 {
257 3 if(y>0)
258 3 {
259 4 for(i=0;i<y;i++)
260 4 {
261 5 x=x1+i/y_add;
262 5 Locat_Dot(x,y1+i);
263 5 }
264 4 }
265 3 else if(y==0)
266 3 {
267 4 for(i=x;i<0;i++)
268 4 {
269 5 Locat_Dot(x1+i,y1);
270 5 }
271 4 }
272 3 else
273 3 {
274 4 for(i=y;i<0;i++)
275 4 {
276 5 x=x1+i/y_add;
277 5 Locat_Dot(x,y1+i);
278 5 }
279 4 }
280 3
281 3 }
282 2 }
283 1
284 1
285 1 }
286
287 void Circle(uchar x1,uchar y1,uchar R)
288 {
289 1 uchar x,y;
290 1 uint a,b;
291 1
292 1 // y1 = 64 - y1 ;
C51 COMPILER V8.02 LCD12864_DRIVER 07/09/2007 08:18:06 PAGE 6
293 1
294 1 for(x=x1-R;x<=x1+R;x++)
295 1 {
296 2 for(y=0;y<=64;y++)
297 2 { a=(abs(x-x1))*(abs(x-x1));
298 3 b=(abs(y-y1))*(abs(y-y1));
299 3 if( ((a+b)<=R*R) && ((a+b)>=(R-1)*(R-1))){
300 4 Locat_Dot(x,y); }
301 3 }
302 2 }
303 1 }
304
305
306
307 //读状态==================================
308 uchar Read_state()
309 {
310 1 uchar sta;
311 1 Data_Port=0xff;
312 1 CD=1;CE=0;RD=0;WR=1;
313 1 sta=Data_Port;
314 1 Delay(10,5);
315 1 RD=1;CE=1;RD=1;CD=1;
316 1 return(sta);
317 1 }
318 //发指令-----------------------------------
319
320
321
322 //2字节数据--------------------------
323 //
324 void Send_cmd2(uchar d1,uchar c)
325 {
326 1 Send_data(d1);
327 1 Send_cmd1(c);
328 1 }
329
330
331 //3字节数据--------------------------
332 //设置光标指针,CGRAM偏置地址,地址指针,
333 //显示区域设置
334 void Send_cmd3(uchar d1,uchar d2,uchar c)
335 {
336 1 Send_data(d1);
337 1 Send_data(d2);
338 1 Send_cmd1(c);
339 1 }
340
341 //发数据--------------------
342
343 void Send_data(uchar d)
344 {
345 1 uchar s1,D1;
346 1 D1=d;
347 1 do
348 1 {s1=Read_state();}
349 1 while((s1)&0x03!=0x03);//R_sta check;
350 1 Data_Port=D1;
351 1 CD=0; CE=0; WR=0;
352 1 Delay(10,5);
353 1 CE=1; WR=1;RD=1;CD=1;
354 1 Data_Port=0XFF;
C51 COMPILER V8.02 LCD12864_DRIVER 07/09/2007 08:18:06 PAGE 7
355 1 }
356
357 void Send_cmd1(uchar c)
358 {
359 1 uchar s0,c1;
360 1 c1=c;
361 1 do
362 1 {s0=Read_state();}
363 1 while(((s0)&0x03)!=0x03);//r_cmd check;
364 1 Data_Port=c1;
365 1 CD=1; CE=0; WR=0;RD=1;
366 1
367 1 Delay(10,5);
368 1 CE=1;RD=1; WR=1;CD=1;
369 1 Data_Port=0XFF;
370 1 }
371 /*
372 void PORT_Init ()
373 {
374 XBR2=0X40;
375 P1MDOUT=0XFF;
376 P2MDOUT=0XFF;
377 P74OUT=0X00; //读端口数据时,要把端口配为漏极,且向端口写“1”Data_Port=0XFF;
378 }*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1744 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 62
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -