📄 sc_t6963.lst
字号:
392 1 uchar i = 0, j = 0;
393 1 uchar BmpWidth = BmpAdd[0], BmpHeigh = BmpAdd[1];
394 1 BmpAdd+=2;
395 1 for(i = 0;i < BmpHeigh;i++)
396 1 {
397 2 T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
398 2 for(j = 0;j < (BmpWidth/8);j++)
399 2 {
400 3 T6963_OutCommand1byte(*(BmpAdd),T6963_DATA_WRITE_INCRE_ADP);
401 3 BmpAdd++;
402 3 }
403 2 Add += 30;
404 2 //T6963_Delay(50);
405 2 }
406 1 }
407
408 /***************************************************************
409 Function: // LcdClearRect
410 Description:// 清除屏幕上指定的一个四边形,应用于图形模式下
411 Input: GPage: 要显示的图形页号 (0-6)
412 X: 清屏起始横坐标 0×8--29×8
413 Y: 清屏起始纵坐标 0--127
414 Rect_Width: 清屏宽度 1×8--30*8
415 Rect_Heigh: 清屏高度 1--128
416 ***************************************************************/
417 void LcdClearRect(uchar GPage,uchar X,uchar Y,uchar Rect_Width,uchar Rect_Heigh)
418 {
419 1 uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
420 1 uchar i = 0, j = 0;
421 1 for(i = 0;i < Rect_Heigh;i++)
422 1 {
423 2 T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
424 2 for(j = 0;j < Rect_Width/8;j++)
425 2 {
426 3 T6963_OutCommand1byte(0x00,T6963_DATA_WRITE_INCRE_ADP);
427 3 }
C51 COMPILER V7.20 SC_T6963 03/28/2008 14:02:55 PAGE 8
428 2 Add += 30;
429 2 }
430 1 }
431
432 /***************************************************************
433 Function: // LcdRevRect
434 Description:// 反显指定区域
435 ***************************************************************/
436 void LcdRevRect(uchar GPage,uchar X,uchar Y,uchar Width,uchar Heigh)
437 {
438 1 uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
439 1 uchar i = 0, j = 0, uData = 0;
440 1 for(i = 0;i < Heigh;i++)
441 1 {
442 2 T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
443 2 for(j = 0;j < Width/8;j++)
444 2 {
445 3 T6963_OutCommand0byte(T6963_DATA_READ_NO_ADP);
446 3 uData = T6963_InData();
447 3 uData = ~uData;
448 3 T6963_OutCommand1byte(uData,T6963_DATA_WRITE_INCRE_ADP);
449 3 }
450 2 Add += 30;
451 2 }
452 1 }
453
454
455 /***************************************************************
456 Function: // LcdPixel
457 Description:// 画点函数,应用于图形模式下
458 Called by: // LcdLine
459 Input: GPage: 要显示的图形页号 (0-6)
460 X: 点的横坐标
461 Y: 点的纵坐标
462 Disp: 1画该点,0清除该点
463 ***************************************************************/
464 void LcdPixel(uchar GPage, uchar X,uchar Y,bit Disp)
465 {
466 1 uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
467 1 uchar Temp;
468 1 Temp = 0xF7 - (X%8);
469 1 if(Disp) Temp |= 0x08;
470 1 T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
471 1 T6963_OutCommand0byte(Temp);
472 1 }
473
474 /***************************************************************
475 Function: // LcdLine
476 Description:// 画直线函数,应用于图形模式下
477 Calls: // LcdPixel
478 Input: GPage: 要显示的图形页号 (0-6)
479 X1,Y1: 第一个点的坐标
480 X2,Y2: 第二个点的坐标
481 坐标范围:(0,0)---(239,127)
482 Disp: 1画该直线,0清除该直线
483 ***************************************************************/
484 void LcdLine(uchar GPage,uchar X1,uchar Y1,uchar X2,char Y2,bit Disp)
485 {
486 1 uchar i = 0;
487 1 uchar j = 0;
488 1 float k = 0; //斜率
489 1
C51 COMPILER V7.20 SC_T6963 03/28/2008 14:02:55 PAGE 9
490 1 if(X1 == X2) //k = 无穷
491 1 {
492 2 j = Y1;
493 2 do
494 2 {
495 3 LcdPixel(GPage,X1,j,Disp);
496 3 if(Y1 < Y2)
497 3 j++;
498 3 else
499 3 j--;
500 3 }while(j != Y2);
501 2 LcdPixel(GPage,X2,Y2,Disp);
502 2 }
503 1
504 1 else if(Y1 == Y2) //k = 0
505 1 {
506 2 i = X1;
507 2 do
508 2 {
509 3 LcdPixel(GPage,i,Y1,Disp);
510 3 if(X1 < X2)
511 3 i++;
512 3 else
513 3 i--;
514 3 }while(i != X2);
515 2 LcdPixel(GPage,X2,Y2,Disp);
516 2 }
517 1
518 1 else if(abs(X1-X2) < abs(Y1-Y2)) //|k| > 1
519 1 {
520 2 k = (double)(Y2-Y1) / (double)(X2-X1);
521 2 i = X1;
522 2 do
523 2 {
524 3 j = (i-X1)*k +Y1;
525 3 LcdPixel(GPage,i,j,Disp);
526 3 if(X1 < X2)
527 3 i++;
528 3 else
529 3 i--;
530 3 }while(i != X2);
531 2 LcdPixel(GPage,X2,Y2,Disp);
532 2 }
533 1
534 1 else if(abs(X1-X2) >= abs(Y1-Y2)) //|k| <= 1
535 1 {
536 2 k = (double)(X2-X1) / (double)(Y2-Y1);
537 2 j = Y1;
538 2 do
539 2 {
540 3 i = (j-Y1)*k + X1;
541 3 LcdPixel(GPage,i,j,Disp);
542 3 if(Y1 < Y2)
543 3 j++;
544 3 else
545 3 j--;
546 3 }while(j != Y2);
547 2 LcdPixel(GPage,X2,Y2,Disp);
548 2 }
549 1 }
550
551 /***************************************************************
C51 COMPILER V7.20 SC_T6963 03/28/2008 14:02:55 PAGE 10
552 Function: // LcdScrRoll
553 Description:// 滚屏函数,应用于图形模式下
554 Input: GPage: 要显示的图形页号 (0-6)
555 n:滚动的行数
556 ***************************************************************/
557 void LcdScrRoll(uchar GPage,uchar n)
558 {
559 1 uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE +30*n;
560 1 T6963_OutCommand2byte((uchar)(Add),(uchar)(Add >> 8),T6963_SET_GRAPH_HOME_ADD);
561 1 }
562
563
564 //-------------------------------------------------------------
565 void T6963_Delay(uchar n)
566 {
567 1 uchar i;
568 1 uchar j;
569 1 for(i = 0;i < n;i++)
570 1 {
571 2 for(j = 0;j < 6;j++)
572 2 _nop_();
573 2 }
574 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1826 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 53
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -