📄 function.lst
字号:
459 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
460 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
461 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
462 2 //I2CWriteByte(HX8824_ADDR, 0xA0, 0x00); // 0x88
463 2 //I2CWriteByte(HX8824_ADDR, 0xA1, 0x15); // 0x13
464 2 //I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
465 2 //**************** PLL ************************************************
466 2 I2CWriteByte(HX8824_ADDR, 0xD0, 0x08);
467 2 I2CWriteByte(HX8824_ADDR, 0xD1, 0x08);
468 2 I2CWriteByte(HX8824_ADDR, 0xD2, 0x07);
469 2 I2CWriteByte(HX8824_ADDR, 0xD3, 0xC7);
470 2 I2CWriteByte(HX8824_ADDR, 0xD4, 0x00);
471 2 break;
472 2 case 1: // full screen
473 2 I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
474 2 I2CWriteByte(HX8824_ADDR, 0x21, 0x10);
475 2 I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
476 2 I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
477 2 I2CWriteByte(HX8824_ADDR, 0x20, 0xCC);
478 2 I2CWriteByte(HX8824_ADDR, 0x21, 0x0C);
479 2 I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
480 2 I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 9
481 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
482 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
483 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
484 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
485 2 I2CWriteByte(HX8824_ADDR, 0xA0, 0xe2); // 88 e2
486 2 I2CWriteByte(HX8824_ADDR, 0xA1, 0x13); // 17 13
487 2 I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
488 2 //***************** PLL ********************************************************
489 2 I2CWriteByte(HX8824_ADDR, 0xD0, 0x03);
490 2 I2CWriteByte(HX8824_ADDR, 0xD1, 0x04);
491 2 I2CWriteByte(HX8824_ADDR, 0xD2, 0x08);
492 2 I2CWriteByte(HX8824_ADDR, 0xD3, 0x63);
493 2 I2CWriteByte(HX8824_ADDR, 0xD4, 0x00);
494 2 break;
495 2 default:
496 2 break;
497 2 }
498 1 }
499
500 /* -------------------------------------------------------------------
501 Name : NTSC Set_Border
502 Purpose : Set Border in VGA mode display
503 Passed : +/-
504 Returns :
505 Notes :
506 ------------------------------------------------------------------- */
507 void NTSC_SetBorder(Byte S)
508 {
509 1 switch(S)
510 1 {
511 2 case 0: // border screen
512 2 I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
513 2 I2CWriteByte(HX8824_ADDR, 0x21, 0x12);
514 2 I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
515 2 I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
516 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
517 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
518 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
519 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
520 2 //**************** PLL ************************************************
521 2 I2CWriteByte(HX8824_ADDR, 0xD1, 0x07);
522 2 break;
523 2 case 1: // full screen
524 2 I2CWriteByte(HX8824_ADDR, 0x20, 0x65);
525 2 I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
526 2 I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
527 2 I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
528 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
529 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
530 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
531 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
532 2 //***************** PLL ********************************************************
533 2 I2CWriteByte(HX8824_ADDR, 0xD1, 0x09);
534 2 break;
535 2 default:
536 2 break;
537 2 }
538 1 }
539
540 /* -------------------------------------------------------------------
541 Name : PAL Set_Border
542 Purpose : Set Border in VGA mode display
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 10
543 Passed : +/-
544 Returns :
545 Notes :
546 ------------------------------------------------------------------- */
547 void PAL_SetBorder(Byte S)
548 {
549 1 switch(S)
550 1 {
551 2 case 0: // border screen
552 2 I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
553 2 I2CWriteByte(HX8824_ADDR, 0x21, 0x12);
554 2 I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
555 2 I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
556 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
557 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
558 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
559 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
560 2 //**************** PLL ************************************************
561 2 I2CWriteByte(HX8824_ADDR, 0xD1, 0x0B);
562 2 //**************** CCIR 601 setting ***********************************
563 2 I2CWriteByte(HX8824_ADDR, 0x11, 0x0F); // input format CCIR601
564 2 I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // input format internal Href
565 2 I2CWriteByte(HX8824_ADDR, 0x12, 0x7A); // input format Href position
566 2 I2CWriteByte(HX8824_ADDR, 0x13, 0x00); // input format Href position
567 2 I2CWriteByte(HX8824_ADDR, 0x14, 0x00); // input format V position
568 2 I2CWriteByte(HX8824_ADDR, 0x15, 0x00); // input format V position
569 2 I2CWriteByte(HX8824_ADDR, 0x16, 0x00); // input format V position
570 2 I2CWriteByte(HX8824_ADDR, 0x17, 0x00); // input format V position
571 2
572 2 break;
573 2 case 1: // full screen
574 2 I2CWriteByte(HX8824_ADDR, 0x20, 0x65);
575 2 I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
576 2 I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
577 2 I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
578 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
579 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
580 2 I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
581 2 I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
582 2 //***************** PLL ********************************************************
583 2 I2CWriteByte(HX8824_ADDR, 0xD1, 0x0E);
584 2 //***************** CCIR656 setting *********************************************
585 2 I2CWriteByte(HX8824_ADDR, 0x11, 0x0F); // input format CCIR656
586 2 I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // input format external href
587 2 I2CWriteByte(HX8824_ADDR, 0x12, 0x7A); // input format Href position
588 2 I2CWriteByte(HX8824_ADDR, 0x13, 0x00); // input format Href position
589 2 I2CWriteByte(HX8824_ADDR, 0x14, 0x00); // input format V position
590 2 I2CWriteByte(HX8824_ADDR, 0x15, 0x00); // input format V position
591 2 I2CWriteByte(HX8824_ADDR, 0x16, 0x00); // input format V position
592 2 I2CWriteByte(HX8824_ADDR, 0x17, 0x00); // input format V position
593 2
594 2 break;
595 2 default:
596 2 break;
597 2 }
598 1 }
599
600 /* -------------------------------------------------------------------
601 Name : Change Video Frequency
602 Purpose :
603 Passed :
604 Returns :
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 11
605 Notes :
606 ------------------------------------------------------------------- */
607 void Change_Video_Frequency(void)
608 {
609 1 code unsigned char _60Hz7114[6][2] = {{0x0E,0x89},{0x5a,0x06},{0x9a,0xF6},{0x9B,0x00},{0x9e,0xF6},
610 1 {0x9F,0x00}};
611 1 code unsigned char _50Hz7114[6][2] = {{0x0E,0x81},{0x5a,0x03},{0x9a,0x26},{0x9B,0x01},{0x9e,0x26},
612 1 {0x9F,0x01},};
613 1 Byte i;
614 1 if(b60hz) { // NTSC
615 2 for(i = 0; i < 6; i++)
616 2 I2CWriteByte(SAA7114_ADDR, _60Hz7114[i][0], _60Hz7114[i][1]);
617 2 if (bSource == 0)
618 2 I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) & 0x7F); // check if composite
619 2 else
620 2 I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x80); // check if S-video
621 2 I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x40); // disable YCOMB
622 2 I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e) | 0x09); //
623 2 I2CWriteByte(SAA7114_ADDR, 0x0f, 0x2a);
624 2 I2CWriteByte(SAA7114_ADDR, 0x10, 0x0e);
625 2 }
626 1 else { // PAL
627 2 for(i = 0; i < 6; i++)
628 2 I2CWriteByte(SAA7114_ADDR, _50Hz7114[i][0], _50Hz7114[i][1]);
629 2 if (bSource == 0)
630 2 I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) & 0x7F); // check if composite
631 2 else
632 2 I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x80); // check if S-video
633 2 I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x40);
634 2 I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e) & 0xf7);
635 2 I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e) | 0x01);
636 2 I2CWriteByte(SAA7114_ADDR, 0x0f, 0x2a);
637 2 I2CWriteByte(SAA7114_ADDR, 0x10, 0x06);
638 2 }
639 1 }
640
641
642 /* -------------------------------------------------------------------
643 Name : VGA Non Linear Scaling
644 Purpose :
645 Passed : no.
646 Returns :
647 Notes :
648 ------------------------------------------------------------------- */
649 void VGA_Non_Linear_Scaling(Byte S)
650 {
651 1 Byte i;
652 1 code unsigned char VGA_Non_Linear[3][20][2] = {{// no need to write Y direction
653 1 {0x20,0x00},{0x21,0x0C},{0x22,0x64},{0x23,0x10}, // X1
654 1 {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x20}, // X2
655 1 {0x20,0x99},{0x21,0x0D},{0x22,0xC8},{0x23,0x30}, // X3
656 1 {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x40}, // X4
657 1 {0x20,0x00},{0x21,0x0C},{0x22,0x64},{0x23,0x50}},// X5
658 1 {
659 1 {0x20,0x33},{0x21,0x0B},{0x22,0x64},{0x23,0x10}, // X1
660 1 {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x20}, // X2
661 1 {0x20,0x66},{0x21,0x0E},{0x22,0xC8},{0x23,0x30}, // X3
662 1 {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x40}, // X4
663 1 {0x20,0x33},{0x21,0x0B},{0x22,0x64},{0x23,0x50}},// X5
664 1 {
665 1 {0x20,0x99},{0x21,0x09},{0x22,0x64},{0x23,0x10}, // X1
666 1 {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x20}, // X2
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 12
667 1 {0x20,0x00},{0x21,0x10},{0x22,0xC8},{0x23,0x30}, // X3
668 1 {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x40}, // X4
669 1 {0x20,0x99},{0x21,0x09},{0x22,0x64},{0x23,0x50}} // X5
670 1
671 1 };
672 1 for(i = 0; i < 20; i++)
673 1 I2CWriteByte(HX8824_ADDR, VGA_Non_Linear[S][i][0], VGA_Non_Linear[S][i][1]);
674 1 }
675
676 /* -------------------------------------------------------------------
677 Name : NTSC Non Linear Scaling
678 Purpose :
679 Passed : no.
680 Returns :
681 Notes :
682 ------------------------------------------------------------------- */
683 void NTSC_Non_Linear_Scaling(Byte S)
684 {
685 1 Byte i;
686 1 code unsigned char NTSC_Non_Linear[1][20][2] = {{// no need to write Y direction
687 1 {0x20,0x99},{0x21,0x0D},{0x22,0x64},{0x23,0x10}, // X1
688 1 {0x20,0x66},{0x21,0x0E},{0x22,0xc8},{0x23,0x20}, // X2
689 1 {0x20,0x33},{0x21,0x0F},{0x22,0xc8},{0x23,0x30}, // X3
690 1 {0x20,0x66},{0x21,0x0E},{0x22,0xc8},{0x23,0x40}, // X4
691 1 {0x20,0x99},{0x21,0x0D},{0x22,0x64},{0x23,0x50}}// X5
692 1 };
693 1 for(i = 0; i < 20; i++)
694 1 I2CWriteByte(HX8824_ADDR, NTSC_Non_Linear[S][i][0], NTSC_Non_Linear[S][i][1]);
695 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -