📄 lcd.lst
字号:
372 2 {
373 3 for(i=0;i<30;i++)
374 3 {
375 4 writedate(logo1[j]);
376 4 j++;
377 4 }
378 3 }
379 2 writecommand(audo_over);
380 2 writecommand02(0x00,0x00,dis_address);
381 2 }
382 1 }
383 /*************************************************************/
384 //反向显示一幅图
385
386 void reverseimg1()
387 {
388 1 unsigned char i,k;
389 1 unsigned char j;
390 1
391 1 for(k=0;k<128;k++)
392 1 {
393 2 for(i=0;i<30;i++)
394 2 {
395 3
396 3 writecommand(zer_rd);
397 3 j=readate();
398 3 j=~j;
399 3 writecommand01(j, 0xc0);
400 3 }
401 2 }
402 1
403 1 }
404
405
406 //*****************************************************************
407 // 通过位操作方式实现绘制点
408
409 void dot(unsigned char x,unsigned char y, unsigned char m)
410 {
411 1 unsigned int z;
412 1 z=(30*y+(x/8));
413 1 if(z<=256)
414 1 writecommand02(z,0x00,dis_address);
415 1 else
416 1 writecommand02(z%256,z/256,dis_address);
417 1
418 1 if(m)
419 1 writecommand(0xf8+7-(x&0x0007));
420 1 else
421 1 writecommand(0xf0+x%8);
422 1 }
423
424 //*****************************************************************
425 //通用方式实现点绘制
426
427 void dot1(unsigned char x,unsigned char y, unsigned char m)
C51 COMPILER V8.02 LCD 07/13/2008 00:52:57 PAGE 8
428 {
429 1 unsigned int z,y0;
430 1 unsigned char n;
431 1 z=(30*y+(x/8));
432 1 if(z<=256)
433 1 writecommand02(z,0x00,dis_address);
434 1 else
435 1 writecommand02(z%256,z/256,dis_address);
436 1
437 1 writecommand(zer_rd); /*此处要注意这条指令必须要加上,*/
438 1 y0=readate();
439 1 if(m)
440 1 n=(7-x&0x0007);
441 1 y0|=(1<<n);
442 1 writecommand01(y0,0xc0);
443 1 }
444 //*****************************************************************
445 //画线
446
447 void line(unsigned int x0,unsigned int y0,unsigned int xt,unsigned int yt, unsigned char m)
448 {
449 1 register unsigned char t;
450 1 int xerr=0,yerr=0,delta_x,delta_y,distance;
451 1 int incx,incy;
452 1 unsigned int row,col;
453 1 delta_x = xt-x0;
454 1 delta_y = yt-y0;
455 1 col = x0;
456 1 row = y0;
457 1 if(delta_x>0) incx=1;
458 1 else
459 1 {
460 2 if( delta_x==0 ) incx=0;
461 2 else {incx=-1;delta_x=-delta_x;}
462 2 }
463 1 if(delta_y>0) incy=1;
464 1 else
465 1 {
466 2 if( delta_y==0 ) incy=0;
467 2 else {incy=-1;delta_y=-delta_y;}
468 2 }
469 1 if( delta_x > delta_y ) distance=delta_x;
470 1 else distance=delta_y;
471 1
472 1 for( t=0;t <= distance+1; t++ )
473 1 {
474 2 dot1(col,row,m);
475 2
476 2 shortdelay(1000);
477 2 xerr += delta_x ;
478 2 yerr += delta_y ;
479 2
480 2 if( xerr > distance )
481 2 {
482 3 xerr-=distance;
483 3 col+=incx;
484 3 }
485 2 if( yerr > distance )
486 2 {
487 3 yerr-=distance;
488 3 row+=incy;
489 3 }
C51 COMPILER V8.02 LCD 07/13/2008 00:52:57 PAGE 9
490 2 }
491 1 }
492
493 /*************************************************************************/
494 //画矩形
495
496 void pane(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
497 {
498 1 line(x1,y1,x2,y1,1);
499 1 line(x2,y1,x2,y2,1);
500 1 line(x2,y2,x1,y2,1);
501 1 line(x1,y2,x1,y1,1);
502 1 }
503 /***********************************************************************/
504 //画圆
505
506 void circle(unsigned int Ox,unsigned char Oy,unsigned char Rx,unsigned char m)
507 {
508 1 unsigned int xx,rr,xt,yt,rs,col,row;
509 1 yt=Rx;
510 1 rr=Rx*Rx+1;
511 1 rs=(yt+(yt>>1))>>1; //(*0.75)分开1/8圆弧来画
512 1 for (xt=0;xt<=rs;xt++)
513 1 {
514 2 xx=xt*xt;
515 2 while ((yt*yt)>(rr-xx))yt--;
516 2 col=Ox+xt; //第一象限
517 2 row=Oy-yt;
518 2 dot1(col,row,m);
519 2 col=Ox-xt; //第二象限
520 2 dot1(col,row,m);
521 2 row=Oy+yt; //第三象限
522 2 dot1(col,row,m);
523 2 col=Ox+xt; //第四象限
524 2 dot1(col,row,m);
525 2
526 2 /***************45度镜象画另一半***************/
527 2
528 2 col=Ox+yt; //第一象限
529 2 row=Oy-xt;
530 2 dot1(col,row,m);
531 2 col=Ox-yt; //第二象限
532 2 dot1(col,row,m);
533 2 row=Oy+xt; //第三象限
534 2 dot1(col,row,m);
535 2 col=Ox+yt; //第四象限
536 2 dot1(col,row,m);
537 2 }
538 1 }
539
540
541 /*************************************************************************/
542
543
544
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1179 ----
CONSTANT SIZE = 3840 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V8.02 LCD 07/13/2008 00:52:57 PAGE 10
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 + -