📄 function.lst
字号:
696
697 /* -------------------------------------------------------------------
698 Name : Gamma adjust
699 Purpose :
700 Passed :
701 Returns :
702 Notes :
703 ------------------------------------------------------------------- */
704 void Gamma_Adj()
705 {
706 1 Word i;
707 1
708 1 for(i = 0; i <= 255; i++)
709 1 {
710 2 I2CWriteByte(HX8824_ADDR, 0x51, i);
711 2 I2CWriteByte(HX8824_ADDR, 0x52, i); // red
712 2 I2CWriteByte(HX8824_ADDR, 0x53, i); // blue
713 2 I2CWriteByte(HX8824_ADDR, 0x54, i); // green
714 2 }
715 1 I2CWriteByte(HX8824_ADDR, HX8824_GAMMA_EN, 0x00);
716 1 }
717
718 /* -------------------------------------------------------------------
719 Name : NTSC Vertical scaling
720 Purpose : for stupid use
721 Passed :
722 Returns :
723 Notes :
724 ------------------------------------------------------------------- */
725
726 void NTSC_Vertical_Scaling(Byte S)
727 {
728 1 Byte i;
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 13
729 1 code unsigned char V_Scaling[2][53][2] =
730 1 {{{0x00, 0xD0}, {0x01, 0x02}, {0x02, 0xF0}, {0x03, 0x00}, {0x10, 0x1C}, {0x11, 0x0F}, {0x12, 0x7A},
731 1 {0x13, 0x00}, {0x14, 0x00}, {0x15, 0x00}, {0x16, 0x00}, {0x17, 0x00}, {0x19, 0x00}, {0x20, 0x66},
732 1 {0x21, 0x06}, {0x22, 0xFF}, {0x23, 0x0F}, {0x20, 0x65}, {0x21, 0x0E}, {0x22, 0xFF}, {0x23, 0x1F},
733 1 {0x24, 0x00}, {0x25, 0x00}, {0x24, 0x00}, {0x25, 0x04}, {0x27, 0x01}, {0xA0, 0x00}, {0xA1, 0x05},
734 1 // {0xA2, 0x00}, {0x90, 0xF8}, {0x91, 0x03}, {0x92, 0x48}, {0x93, 0x00}, {0x94, 0x90}, {0x95, 0x00},
- // 11/02 become brighter
735 1 {0xA2, 0x00}, {0x90, 0xF7}, {0x91, 0x03}, {0x92, 0x48}, {0x93, 0x00}, {0x94, 0x90}, {0x95, 0x00},
736 1 {0x96, 0x20}, {0x97, 0x03}, {0x98, 0x92}, {0x99, 0x02}, {0x9A, 0x13}, {0x9B, 0x00}, {0x9C, 0x26},
737 1 {0x9D, 0x00}, {0x9E, 0x58}, {0x9F, 0x02}, {0xD0, 0x08}, {0xD1, 0x09}, {0xD2, 0x09}, {0xD3, 0x2B},
738 1 {0xD4, 0x01}, {0x29, 0x00}, {0x81, 0x3C}, {0x80, 0x00}
739 1 },
740 1 {{0x00, 0xD0}, {0x01, 0x02}, {0x02, 0xF3}, {0x03, 0x00}, {0x10, 0x1C}, {0x11, 0x0F}, {0x12, 0x7A},
741 1 {0x13, 0x00}, {0x14, 0x00}, {0x15, 0x00}, {0x16, 0x00}, {0x17, 0x00}, {0x19, 0x00}, {0x20, 0x19},
742 1 {0x21, 0x08}, {0x22, 0xFF}, {0x23, 0x0F}, {0x20, 0x65}, {0x21, 0x0E}, {0x22, 0xFF}, {0x23, 0x1F},
743 1 {0x24, 0x00}, {0x25, 0x00}, {0x24, 0x00}, {0x25, 0x04}, {0x27, 0x01}, {0xA0, 0x34}, {0xA1, 0x09},//B
-4,11,00
744 1 {0xA2, 0x00}, {0x90, 0x2F}, {0x91, 0x04}, {0x92, 0x35}, {0x93, 0x00}, {0x94, 0x70}, {0x95, 0x00},
745 1 {0x96, 0x20}, {0x97, 0x03}, {0x98, 0x0D}, {0x99, 0x02}, {0x9A, 0x03}, {0x9B, 0x00}, {0x9C, 0x1D},
746 1 {0x9D, 0x00}, {0x9E, 0xE0}, {0x9F, 0x01}, {0xD0, 0x08}, {0xD1, 0x09}, {0xD2, 0x07}, {0xD3, 0xC7},
747 1 {0xD4, 0x00}, {0x29, 0x00}, {0x81, 0x04}, {0x80, 0x00}
748 1 }};
749 1
750 1 for(i = 0; i < 53; i++)
751 1 I2CWriteByte(HX8824_ADDR, V_Scaling[S][i][0], V_Scaling[S][i][1]);
752 1 }
753
754 /* -------------------------------------------------------------------
755 Name : PAL Vertical scaling
756 Purpose : for stupid use
757 Passed :
758 Returns :
759 Notes :
760 ------------------------------------------------------------------- */
761
762 void PAL_Vertical_Scaling(Byte S)
763 {
764 1 Byte i;
765 1 code unsigned char V_Scaling[2][53][2] =
766 1 {// 8 mode7228_8060
767 1 {{0x00, 0xD0}, {0x01, 0x02}, {0x02, 0x20}, {0x03, 0x01}, {0x10, 0x1C}, {0x11, 0x0F}, {0x12, 0x7A},
768 1 {0x13, 0x00}, {0x14, 0x00}, {0x15, 0x00}, {0x16, 0x00}, {0x17, 0x00}, {0x19, 0x02}, {0x20, 0xAA},
769 1 {0x21, 0x07}, {0x22, 0xFF}, {0x23, 0x0F}, {0x20, 0x65}, {0x21, 0x0E}, {0x22, 0xFF}, {0x23, 0x1F},
770 1 {0x24, 0x00}, {0x25, 0x00}, {0x24, 0x00}, {0x25, 0x04}, {0x27, 0x01}, {0xA0, 0x00}, {0xA1, 0x2A},//0
-0,2A,00
771 1 {0xA2, 0x00}, {0x90, 0xF8}, {0x91, 0x03}, {0x92, 0x48}, {0x93, 0x00}, {0x94, 0x90}, {0x95, 0x00},
772 1 {0x96, 0x20}, {0x97, 0x03}, {0x98, 0x92}, {0x99, 0x02}, {0x9A, 0x13}, {0x9B, 0x00}, {0x9C, 0x26},
773 1 {0x9D, 0x00}, {0x9E, 0x58}, {0x9F, 0x02}, {0xD0, 0x0B}, {0xD1, 0x0C}, {0xD2, 0x09}, {0xD3, 0x4C},
774 1 {0xD4, 0x01}, {0x29, 0x00}, {0x81, 0x3C}, {0x80, 0x00}
775 1 },
776 1 // 9 mode7228_8048
777 1 {{0x00, 0xD0}, {0x01, 0x02}, {0x02, 0x20}, {0x03, 0x01}, {0x10, 0x1C}, {0x11, 0x0F}, {0x12, 0xBB},
778 1 {0x13, 0x00}, {0x14, 0x00}, {0x15, 0x00}, {0x16, 0x00}, {0x17, 0x00}, {0x19, 0x02}, {0x20, 0x96},
779 1 {0x21, 0x09}, {0x22, 0xFF}, {0x23, 0x0F}, {0x20, 0x65}, {0x21, 0x0E}, {0x22, 0xFF}, {0x23, 0x1F},
780 1 {0x24, 0x00}, {0x25, 0x00}, {0x24, 0x00}, {0x25, 0x04}, {0x27, 0x01}, {0xA0, 0x44}, {0xA1, 0x1B},
781 1 {0xA2, 0x00}, {0x90, 0x25}, {0x91, 0x04}, {0x92, 0x35}, {0x93, 0x00}, {0x94, 0x70}, {0x95, 0x00},
782 1 {0x96, 0x20}, {0x97, 0x03}, {0x98, 0x0D}, {0x99, 0x02}, {0x9A, 0x03}, {0x9B, 0x00}, {0x9C, 0x1F},
783 1 {0x9D, 0x00}, {0x9E, 0xE0}, {0x9F, 0x01}, {0xD0, 0x0D}, {0xD1, 0x0E}, {0xD2, 0x07}, {0xD3, 0x02},
784 1 {0xD4, 0x01}, {0x29, 0x00}, {0x81, 0x02}, {0x80, 0x00}
785 1 }
786 1 };
787 1 for(i = 0; i < 53; i++)
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 14
788 1 I2CWriteByte(HX8824_ADDR, V_Scaling[S][i][0], V_Scaling[S][i][1]);
789 1 }
790 /* -------------------------------------------------------------------
791 Name : Video_Detect
792 Purpose :
793 Passed :
794 Returns :
795 Notes :
796 ------------------------------------------------------------------- */
797 void Video_Detect(void)
798 {
799 1 Byte i, temp1;
800 1 // Byte temp2;
801 1
802 1 Old_Status = New_Status;
803 1
804 1 for(i = 0;i < 100;i++)
805 1 {
806 2 /*
807 2 if(i==4)
808 2 i=5;
809 2 I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e&0x8f)|(i*16));
810 2 I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e)&0x7f);
811 2 I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e)|0x80);
812 2 DelayX1ms(5);
813 2 */
814 2 //do
815 2 //{
816 2 // do
817 2 // {
818 2 temp1= I2CReadByte(SAA7114_ADDR, 0x1F);
819 2 // DelayX10ms(2);
820 2 // temp2= I2CReadByte(SAA7114_ADDR, 0x1F);
821 2 // }while(temp1!=temp2);
822 2 //}while((temp1 & 0x01) != 0x01);
823 2 }
824 1 if((temp1 & 0x40) == 0x00) // video locked
825 1 {
826 2 bVideo_Status = 1;
827 2 if((temp1 & 0x20) == 0x00)
828 2 {
829 3 b60hz = 0; // PAL
830 3 //Puts_UART("PAL!\r\n");
831 3 }
832 2 else if((temp1 & 0x20) == 0x20)
833 2 {
834 3 b60hz = 1; // NTSC
835 3 //Puts_UART("NTSC!\r\n");
836 3 }
837 2 New_Status = b60hz;
838 2 }
839 1 else
840 1 {
841 2 New_Status = 0x03; // no signal
842 2 bVideo_Status = 0; // Video unlocked
843 2 }
844 1 if(New_Status == Old_Status)
845 1 {
846 2 Status_Change = 0;
847 2 //Puts_UART("Status No Change!\r\n");
848 2 }
849 1 else
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 15
850 1 {
851 2 Status_Change = 1;
852 2 Puts_UART("Video Status Change!\r\n");
853 2 }
854 1 }
855
856 /* -------------------------------------------------------------------
857 Name : VGA_Detect
858 Purpose :
859 Passed :
860 Returns :
861 Notes :
862 ------------------------------------------------------------------- */
863 void VGA_Detect()
864 {
865 1 pre_status = now_status;
866 1 now_status = 0x01 & SCDT;
867 1 Puts_UART("VGA now Status = ");HexTobyStr(now_status);Puts_UART(byStr);Puts_UART("\r\n");
868 1 //Puts_UART("VGA pre Status = ");HexTobyStr(pre_status);Puts_UART(byStr);Puts_UART("\r\n");
869 1 if(pre_status == now_status)
870 1 {
871 2 Status_Change = 0;
872 2 //Puts_UART("VGA Status No Change!\r\n");
873 2 if(SCDT)
874 2 bVGA_Status = 1;
875 2 else
876 2 bVGA_Status = 0;
877 2 }
878 1 else
879 1 {
880 2 Status_Change = 1;
881 2 Puts_UART("VGA Status Change!\r\n");
882 2 if(SCDT)
883 2 bVGA_Status = 1;
884 2 else
885 2 bVGA_Status = 0;
886 2 }
887 1 pre_status = 0x01 & SCDT;
888 1 Puts_UART("VGA pre Status = ");HexTobyStr(pre_status);Puts_UART(byStr);Puts_UART("\r\n");
889 1 }
890
891 /* -------------------------------------------------------------------
892 Name : Stand_alone_mode
893 Purpose :
894 Passed :
895 Returns :
896 Notes :
897 ------------------------------------------------------------------- */
898 void Stand_alone_mode()
899 {
900 1 Byte i;
901 1 for(i = 0; i < 53; i++)
902 1 {
903 2 I2CWriteByte(HX8824_ADDR, ModeTbl[5][i][0], ModeTbl[5][i][1]);
904 2 }
905 1 I2CWriteByte(HX8824_ADDR, 0xA0, 0xFF);
906 1 I2CWriteByte(HX8824_ADDR, 0xA1, 0xFF);
907 1 I2CWriteByte(HX8824_ADDR, 0xA2, 0xFF);
908 1 }
909 /* -------------------------------------------------------------------
910 Name : Display
911 Purpose :
C51 COMPILER V7.07 FUNCTION 09/26/2006 08:56:43 PAGE 16
912 Passed :
913 Returns :
914 Notes :
915 ------------------------------------------------------------------- */
916 void Display()
917 {
918 1 Byte i;
919 1 for(i = 0; i < 53; i++)
920 1 {
921 2 I2CWriteByte(HX8824_ADDR, ModeTbl[Mode][i][0], ModeTbl[Mode][i][1]);
922 2 }
923 1 Puts_UART("Mode = ");HexTobyStr(Mode);Puts_UART(byStr);Puts_UART("\r\n");
924 1 bNo_Signal = 0;
925 1 }
926 /* -------------------------------------------------------------------
927 Name : Switch_Input
928 Purpose :
929 Passed :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -