📄 lcd.lst
字号:
470
471 if(idx == 0xff)
472 return;
473
474 setcursordirection(CURSORDOWN);
475 setcursoraddr(addr);
476 writecmd(0x42);
477 for(j=0;j<8;j++)
478 {
479 writedat(font8[idx].fontdat[j]);
480 }
481 }
482 */
483 void printchar16(unsigned short addr,unsigned short ch)
484 {
485 1 unsigned char i,j,idx,c1,c2;
486 1 unsigned char lo,hi;
487 1
488 1 idx = 0xff;
489 1 lo = ch&0xff;
490 1 hi = ch>>8;
491 1 for(i=0;i<sizeof(font16)/sizeof(Font16);i++)
492 1 {
493 2 c1 = font16[i].fontcode[0];
494 2 c2 = font16[i].fontcode[1];
495 2 if(c2 == lo && c1 == hi)
496 2 {
497 3 idx = i;
498 3 break;
499 3 }
500 2 }
501 1
502 1 if(idx == 0xff)
C51 COMPILER V7.06 LCD 04/09/2005 13:15:56 PAGE 13
503 1 return;
504 1
505 1 setcursordirection(CURSORDOWN);
506 1 for(i=0;i<2;i++)
507 1 {
508 2 setcursoraddr(addr+i);
509 2 writecmd(0x42);
510 2 for(j=i;j<32;j+=2)
511 2 {
512 3 writedat(font16[idx].fontdat[j]);
513 3 }
514 2 }
515 1 }
516
517 void printchar16x(unsigned short addr,unsigned char ch)
518 {
519 1 unsigned char i,j,idx;
520 1
521 1 for(i=0;i<sizeof(font16x)/sizeof(Font16X);i++)
522 1 {
523 2 if(ch == font16x[i].fontcode)
524 2 {
525 3 idx = i;
526 3 break;
527 3 }
528 2 }
529 1
530 1 setcursordirection(CURSORDOWN);
531 1 for(i=0;i<2;i++)
532 1 {
533 2 setcursoraddr(addr+i);
534 2 writecmd(0x42);
535 2 for(j=i;j<64;j+=2)
536 2 {
537 3 writedat(font16x[idx].fontdat[j]);
538 3 }
539 2 }
540 1 }
541
542 void printchar32(unsigned short addr,unsigned short ch)
543 {
544 1 unsigned char i,j,idx,c1,c2;
545 1 unsigned char lo,hi;
546 1
547 1 idx = 0xff;
548 1 lo = ch&0xff;
549 1 hi = ch>>8;
550 1 for(i=0;i<sizeof(font32)/sizeof(Font32);i++)
551 1 {
552 2 c1 = font32[i].fontcode[0];
553 2 c2 = font32[i].fontcode[1];
554 2 if(c2 == lo && c1 == hi)
555 2 {
556 3 idx = i;
557 3 break;
558 3 }
559 2 }
560 1
561 1 if(idx == 0xff)
562 1 return;
563 1
564 1 setcursordirection(CURSORDOWN);
C51 COMPILER V7.06 LCD 04/09/2005 13:15:56 PAGE 14
565 1 for(i=0;i<4;i++)
566 1 {
567 2 setcursoraddr(addr+i);
568 2 writecmd(0x42);
569 2 for(j=i;j<128;j+=4)
570 2 {
571 3 writedat(font32[idx].fontdat[j]);
572 3 }
573 2 }
574 1 }
575 /*
576 void printstring8(unsigned char area,unsigned char x,unsigned char y,unsigned char *pstr)
577 {
578 unsigned char c;
579 unsigned short addr;
580
581 if(pstr == 0 || area > 3)
582 return;
583
584 addr = x+y*320+area*0x4000;
585
586 while(c = *pstr++)
587 {
588 printchar8(addr++,c);
589 }
590 }
591 */
592 void printstring16(unsigned char area,unsigned char x,unsigned char y,unsigned char *pstr)
593 {
594 1 unsigned char c;
595 1 unsigned short tmp;
596 1 unsigned short addr;
597 1
598 1 if(pstr == 0 || area > 3)
599 1 return;
600 1
601 1 addr = x+y*320+area*0x4000;
602 1
603 1 while(c = *pstr++)
604 1 {
605 2 tmp = c<<8;
606 2 if(c&0x80)
607 2 {
608 3 tmp |= *pstr++;
609 3 }
610 2 printchar16(addr,tmp);
611 2 addr += 2;
612 2 }
613 1 }
614
615 void printstring16x(unsigned char area,unsigned char x,unsigned char y,unsigned char *pstr)
616 {
617 1 unsigned char c;
618 1 unsigned short addr;
619 1
620 1 if(pstr == 0 || area > 3)
621 1 return;
622 1
623 1 addr = x+y*320+area*0x4000;
624 1
625 1 while(c = *pstr++)
626 1 {
C51 COMPILER V7.06 LCD 04/09/2005 13:15:56 PAGE 15
627 2 printchar16x(addr,c);
628 2 addr += 3;
629 2 }
630 1 }
631
632 void printstring32(unsigned char area,unsigned char x,unsigned char y,unsigned char *pstr)
633 {
634 1 unsigned char c;
635 1 unsigned short tmp;
636 1 unsigned short addr;
637 1
638 1 if(pstr == 0 || area > 3)
639 1 return;
640 1
641 1 addr = x+y*320+area*0x4000;
642 1
643 1 while(c = *pstr++)
644 1 {
645 2 tmp = c<<8;
646 2 if(c&0x80)
647 2 {
648 3 tmp |= *pstr++;
649 3 }
650 2 printchar32(addr,tmp);
651 2 addr += 4;
652 2 }
653 1 }
654 /*
655 static uchar cursorx,cursory;
656 void clearcursor()
657 {
658 unsigned short addr,i;
659 setcursordirection(CURSORDOWN);
660 addr = 0x4000+cursorx+cursory*320;
661 setcursoraddr(addr);
662 writecmd(0x42);
663 for(i=0;i<8;i++)
664 writedat(0x00);
665 setcursoraddr(addr+1);
666 writecmd(0x42);
667 for(i=0;i<8;i++)
668 writedat(0x00);
669 }
670
671 void setcursorpos(uchar x,uchar y)
672 {
673 unsigned short addr,i;
674
675 clearcursor();
676 cursorx = x;
677 cursory = y;
678
679 setcursordirection(CURSORDOWN);
680 addr = 0x4000+x+y*320;
681 setcursoraddr(addr);
682 writecmd(0x42);
683 for(i=0;i<8;i++)
684 writedat(0x1f);
685 setcursoraddr(addr+1);
686 writecmd(0x42);
687 for(i=0;i<8;i++)
688 writedat(0xf8);
C51 COMPILER V7.06 LCD 04/09/2005 13:15:56 PAGE 16
689 }
690 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1273 ----
CONSTANT SIZE = 6782 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 36
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 + -