📄 t6963b.lst
字号:
382 2 {
383 3 uRow +=16;
384 3 if(uRow < 0x80)
385 3 uCol -= 30;
386 3 else
387 3 {
388 4 uRow = 0;
389 4 uCol = 0;
390 4 }
391 3 }
392 2 fnSetPos(uRow,uCol);
393 2 i++;
394 2 }
395 1 // EA=1;
396 1 return uLen;
397 1 }
398 #if 1
399 /*==============================*/
400 /* 延时 */
401 /*==============================*/
402 void shortdelay(uint tt)
403 {
404 1 uchar i;
405 1 while (tt)
406 1 {
407 2 i=100;
408 2 while (i)i--;
409 2 tt--;
410 2 };
411 1 }
412 /****************************************/
413 /* 画点 */
414 /****************************************/
415
416 void point(uchar x,uchar y,uchar s)
417 {
418 1 uchar x1;
419 1 x1=x>>3; //取Y方向分页地址
420 1 fnSetPos(y,x1); //起点定位
421 1 x1 = turnf[ x & 0x07 ];
422 1 x1=0xF0|x1|s; //字节内位置计算
423 1 fnPR12(x1); //画上屏幕,S显示属性8画点0擦除点
424 1 }
425
426
427 /************************************************/
C51 COMPILER V7.01 T6963B 03/31/2005 21:39:13 PAGE 8
428 /*画线。任意方向的斜线,直线数学方程 aX+bY=1 */
429 /************************************************/
430 void Linexy(uchar x0,uchar y0,uchar xt,uchar yt,uchar s)
431 {
432 1 register uchar t;
433 1 int xerr=0,yerr=0,delta_x,delta_y,distance;
434 1 int incx,incy,uRow,uCol;
435 1
436 1 delta_x = xt-x0; //计算坐标增量
437 1 delta_y = yt-y0;
438 1 uRow = x0;
439 1 uCol = y0;
440 1 if(delta_x>0) incx=1; //设置单步方向
441 1 else if( delta_x==0 ) incx=0; //垂直线
442 1 else {incx=-1;delta_x=-delta_x;}
443 1
444 1 if(delta_y>0) incy=1;
445 1 else if( delta_y==0 ) incy=0; //水平线
446 1 else {incy=-1;delta_y=-delta_y;}
447 1
448 1 if( delta_x > delta_y ) distance=delta_x; //选取基本增量坐标轴
449 1 else distance=delta_y;
450 1
451 1 for( t=0;t <= distance+1; t++ )
452 1 { //画线输出
453 2 point(uRow,uCol,s); //画点
454 2 xerr += delta_x ;
455 2 yerr += delta_y ;
456 2
457 2 if( xerr > distance )
458 2 {
459 3 xerr-=distance;
460 3 uRow+=incx;
461 3 }
462 2 if( yerr > distance )
463 2 {
464 3 yerr-=distance;
465 3 uCol+=incy;
466 3 }
467 2 }
468 1 }
469
470
471 /************************************************/
472 /*画圆。数学方程(X-Ox)^2+(Y-Oy)^2=Rx^2 */
473 /************************************************/
474
475 void circle(uchar Ox,uchar Oy,uchar Rx,uchar s)
476 {
477 1 unsigned int xx,rr,xt,yt,rs,row,col;
478 1 yt=Rx;
479 1 rr=Rx*Rx+1; //补偿 1 修正方形
480 1 rs=(yt+(yt>>1))>>1; //(*0.75)分开1/8圆弧来画
481 1 for (xt=0;xt<=rs;xt++)
482 1 {
483 2 xx=xt*xt;
484 2 while ((yt*yt)>(rr-xx))yt--;
485 2 row=Ox+xt; //第一象限
486 2 col=Oy-yt;
487 2 point(row,col,s);
488 2 row=Ox-xt; //第二象限
489 2 point(row,col,s);
C51 COMPILER V7.01 T6963B 03/31/2005 21:39:13 PAGE 9
490 2 col=Oy+yt; //第三象限
491 2 point(row,col,s);
492 2 row=Ox+xt; //第四象限
493 2 point(row,col,s);
494 2
495 2 /***************45度镜象画另一半***************/
496 2
497 2 row=Ox+yt; //第一象限
498 2 col=Oy-xt;
499 2 point(row,col,s);
500 2 row=Ox-yt; //第二象限
501 2 point(row,col,s);
502 2 col=Oy+xt; //第三象限
503 2 point(row,col,s);
504 2 row=Ox+yt; //第四象限
505 2 point(row,col,s);
506 2 }
507 1 }
508
509
510 void LCDTest(void) // 测试用
511 {
512 1 uchar i;
513 1 float xx=3.1415926;
514 1 shortdelay(1200);
515 1 fnLCMInit();
516 1 cls();
517 1 cursor(0,0);
518 1 dprintf("This is a test: 中文测试\n");
519 1 cursor(0,5);
520 1 dprintf("%1.4f\n",xx);
521 1 cursor(0,6);
522 1 dprintf("LCM Example in C8051F020&T6963\n");
523 1 cursor(7,7);
524 1 black = 1;
525 1 dprintf("---HuangYang---\n");
526 1 Linexy(10,20,239,110,8); // 画斜线1
527 1 Linexy(10,20,217,1,8); // 斜线2
528 1 Linexy(239,110,217,1,8); // 斜线3
529 1 circle(185,45,40,8); // 画圆
530 1 circle(185,45,41,8); // 画同心圆加粗
531 1 shortdelay(24000);
532 1
533 1 P3 = 0xff;
534 1 while(P3 == 0xff)
535 1 {
536 2 //变化圆演示,直径不断的变化,由大到小再由小到大来回缩放
537 2 for (i=40;i>5;i--)
538 2 {
539 3 circle(185,45,i+1,0); //擦除外圆
540 3 circle(185,45,i,8);
541 3 circle(185,45,i-1,8);
542 3 shortdelay(3600);
543 3 };
544 2
545 2 shortdelay(8000);
546 2
547 2 for (i=5;i<40;i++)
548 2 {
549 3 circle(185,45,i-1,0); //擦除内圆
550 3 circle(185,45,i,8);
551 3 circle(185,45,i+1,8);
C51 COMPILER V7.01 T6963B 03/31/2005 21:39:13 PAGE 10
552 3 shortdelay(1800);
553 3 };
554 2
555 2 shortdelay(4000);
556 2
557 2 };
558 1 }
559 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2095 ----
CONSTANT SIZE = 2340 ----
XDATA SIZE = ---- ----
PDATA SIZE = 3 160
DATA SIZE = ---- ----
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 + -