📄 lcd_func.lst
字号:
902 1 unsigned char ucTemp = 0;
903 1 unsigned char ucRate = (unsigned long)RTD_XTAL * usADC_Clock / usStdHS / 1000; // Pixel clock in MH
-z
904 1
905 1 do
906 1 {
907 2 if (ucRate > ADC_Gain_FineTune[ucTemp][0])
908 2 {
909 3 ucRed = ADC_Gain_FineTune[ucTemp][1];
910 3 ucGreen = ADC_Gain_FineTune[ucTemp][2];
911 3 ucBlue = ADC_Gain_FineTune[ucTemp][3];
912 3 break;
913 3 }
914 2
915 2 if (0 == ADC_Gain_FineTune[ucTemp][0]) break;
916 2 }
917 1 while (++ucTemp);
918 1
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 16
919 1 ucTemp = 50;
920 1
921 1 #if (ANALOG_CONTRAST)
922 1
923 1 if (100 < stGUD0.CONTRAST) stGUD0.CONTRAST = 50;
924 1
925 1 ucTemp = (unsigned int)stGUD0.CONTRAST * 9 / 10;
926 1 ucRed = Set_Contrast_Gain(ucTemp, ucRed);
927 1 ucGreen = Set_Contrast_Gain(ucTemp, ucGreen);
928 1 ucBlue = Set_Contrast_Gain(ucTemp, ucBlue);
929 1
930 1 #endif
931 1
932 1 SetColorGainOffset(GRNGAIN_E1, stGUD2.AD_G_GAIN, ucGreen);
933 1
934 1 #if (SWAP_RED_BLUE)
SetColorGainOffset(REDGAIN_E0, stGUD2.AD_B_GAIN, ucBlue);
SetColorGainOffset(BLUGAIN_E2, stGUD2.AD_R_GAIN, ucRed);
#else
938 1 SetColorGainOffset(REDGAIN_E0, stGUD2.AD_R_GAIN, ucRed);
939 1 SetColorGainOffset(BLUGAIN_E2, stGUD2.AD_B_GAIN, ucBlue);
940 1 #endif
941 1 }
942
943 void SetADC_Offset(void)
944 {
945 1 unsigned char ucRed, ucGreen, ucBlue;
946 1
947 1 unsigned char ucTemp = 0;
948 1 unsigned char ucRate = (unsigned long)RTD_XTAL * usADC_Clock / usStdHS / 1000; // Pixel clock in MH
-z
949 1
950 1 do
951 1 {
952 2 if (ucRate > ADC_Offset_FineTune[ucTemp][0])
953 2 {
954 3 ucRed = ADC_Offset_FineTune[ucTemp][1];
955 3 ucGreen = ADC_Offset_FineTune[ucTemp][2];
956 3 ucBlue = ADC_Offset_FineTune[ucTemp][3];
957 3 break;
958 3 }
959 2
960 2 if (0 == ADC_Offset_FineTune[ucTemp][0]) break;
961 2 }
962 1 while (++ucTemp);
963 1
964 1 SetColorGainOffset(GRNOFST_E4, stGUD2.AD_G_OFFSET, ucGreen);
965 1
966 1 #if (SWAP_RED_BLUE)
SetColorGainOffset(REDOFST_E3, stGUD2.AD_B_OFFSET, ucBlue);
SetColorGainOffset(BLUOFST_E5, stGUD2.AD_R_OFFSET, ucRed);
#else
970 1 SetColorGainOffset(REDOFST_E3, stGUD2.AD_R_OFFSET, ucRed);
971 1 SetColorGainOffset(BLUOFST_E5, stGUD2.AD_B_OFFSET, ucBlue);
972 1 #endif
973 1 }
974
975 void SetADC_GainOffset(void)
976 {
977 1 if (0 == usADC_Clock || 0 == usStdHS) return;
978 1
979 1 SetADC_Gain();
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 17
980 1 SetADC_Offset();
981 1 }
982
983 #if (VIDEO_CHIP != VDC_NONE)
void SetVDC_Color(void)
{
if (SOURCE_YUV == (stGUD1.INPUT_SOURCE & 0x07))
{
Data[0] = 6;
Data[1] = ADDR_VIDEO;
Data[2] = VDC_BRIGHT_YUV_CTRL;
Data[3] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VBRIGHT;
Data[4] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VCONTRAST ^ 0x80;
Data[5] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VSATURATION ^ 0x80;
I2CWrite(Data);
}
else
{
Data[0] = 7;
Data[1] = ADDR_VIDEO;
Data[2] = VDC_BRIGHT_CTRL;
Data[3] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VBRIGHT;
Data[4] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VCONTRAST ^ 0x80;
Data[5] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VSATURATION ^ 0x80;
Data[6] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VHUE ^ 0x80;
I2CWrite(Data);
}
}
#endif
1009
1010 #if (MCU_TYPE == MCU_STD8051)
1011
1012 void Wait_For_Event(unsigned char event)
1013 {
1014 1 unsigned char ucDelayCnt = 80; // 80ms timeout
1015 1 unsigned char ucProtect = 24; // 24ms protect
1016 1
1017 1 RTDSetByte(STATUS1_1F, 0x00); // Clear status (status register will be cleared after write)
1018 1
1019 1 bNotify_Timer1_Int = 0;
1020 1
1021 1 Data[0] = 0;
1022 1 Data[1] = 0;
1023 1 TR1 = 1;
1024 1 do
1025 1 {
1026 2 if (bNotify_Timer1_Int)
1027 2 {
1028 3 bNotify_Timer1_Int = 0;
1029 3
1030 3 if (Data[1] & (EVENT_IVS | EVENT_IEN_START))
1031 3 {
1032 4 Data[1] = 0;
1033 4 ucProtect = 24;
1034 4 }
1035 3 else if (ucProtect)
1036 3 {
1037 4 ucProtect = ucProtect - 1;
1038 4 }
1039 3
1040 3 if (--ucDelayCnt) TR1 = 1;
1041 3 }
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 18
1042 2
1043 2 RTDRead(STATUS1_1F, 1, N_INC); // Read Status1
1044 2
1045 2 Data[1] |= (Data[0] & (EVENT_IVS | EVENT_IEN_START));
1046 2 Data[0] &= event;
1047 2 }
1048 1 while (0 == Data[0] && 0 != ucDelayCnt);
1049 1 }
1050
1051
1052 #else
void Wait_For_Event(unsigned char event)
{
unsigned char ucDelayCnt = 80; // 80ms timeout
unsigned char ucProtect = 24; // 24ms protect
RTDSetByte(STATUS1_1F,0x00); // Clear status (status register will be cleared after write)
bNotify_Timer1_Int = 0;
Data[0] = 0;
Data[1] = 0;
do
{
if (bNotify_Timer1_Int)
{
bNotify_Timer1_Int = 0;
if (Data[1] & (EVENT_IVS | EVENT_IEN_START))
{
Data[1] = 0;
ucProtect = 24;
}
else if (ucProtect)
{
ucProtect = ucProtect - 1;
}
ucDelayCnt -= 1;
}
RTDRead(STATUS1_1F, 1, N_INC); // Read Status1
Data[1] |= (Data[0] & (EVENT_IVS | EVENT_IEN_START));
Data[0] &= event;
}
while (0 == Data[0] && 0 != ucDelayCnt);
}
#endif
1093
1094 void Set_Background_Color(unsigned char Red, unsigned char Green, unsigned char Blue)
1095 {
1096 1 RTDSetBit(OVL_CTRL_6D,0x3f, 0x00); //Red
1097 1 RTDSetByte(BGCOLOR_CONTROL_6C, Red);
1098 1
1099 1 RTDSetBit(OVL_CTRL_6D,0x3f, 0x40); //Green
1100 1 RTDSetByte(BGCOLOR_CONTROL_6C, Green);
1101 1
1102 1 RTDSetBit(OVL_CTRL_6D,0x3f, 0x80); //Blue
1103 1 RTDSetByte(BGCOLOR_CONTROL_6C, Blue);
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 19
1104 1 }
1105
1106 ///////////////////////////////////////////////////////////////////////////////////////////////
1107
1108 void Save_GUD0(void)
1109 {
1110 1 Data[0] = 11;
1111 1 Data[1] = ADDR_EROM1;
1112 1 Data[2] = 0xE0;
1113 1 Data[3] = stGUD0.CONTRAST;
1114 1 Data[4] = stGUD0.BRIGHT;
1115 1 Data[5] = stGUD0.RTD_R_CONTRAST;
1116 1 Data[6] = stGUD0.RTD_G_CONTRAST;
1117 1 Data[7] = stGUD0.RTD_B_CONTRAST;
1118 1 Data[8] = stGUD0.RTD_R_BRIGHT;
1119 1 Data[9] = stGUD0.RTD_G_BRIGHT;
1120 1 Data[10] = stGUD0.RTD_B_BRIGHT;
1121 1 I2CWrite(Data);
1122 1
1123 1 Delay_Xms(SET_2404_DELAY);
1124 1 }
1125
1126 void Load_GUD0(void)
1127 {
1128 1 I2CRead(ADDR_EROM1, 0xE0 , 8);
1129 1
1130 1 stGUD0.CONTRAST = Data[0];
1131 1 stGUD0.BRIGHT = Data[1];
1132 1 stGUD0.RTD_R_CONTRAST = Data[2];
1133 1 stGUD0.RTD_G_CONTRAST = Data[3];
1134 1 stGUD0.RTD_B_CONTRAST = Data[4];
1135 1 stGUD0.RTD_R_BRIGHT = Data[5];
1136 1 stGUD0.RTD_G_BRIGHT = Data[6];
1137 1 stGUD0.RTD_B_BRIGHT = Data[7];
1138 1 }
1139
1140 void Save_GUD1(void)
1141 {
1142 1 Data[0] = 9;
1143 1 Data[1] = ADDR_EROM1;
1144 1 Data[2] = 0xE8;
1145 1 Data[3] = stGUD1.FUNCTION;
1146 1 Data[4] = stGUD1.INPUT_SOURCE;
1147 1 Data[5] = stGUD1.FILTER;
1148 1 Data[6] = stGUD1.OSD_POSH;
1149 1 Data[7] = stGUD1.OSD_POSV;
1150 1 Data[8] = stGUD1.OSD_TIMEOUT;
1151 1 I2CWrite(Data);
1152 1
1153 1 Delay_Xms(SET_2404_DELAY);
1154 1 }
1155
1156 void Load_GUD1(void)
1157 {
1158 1 I2CRead(ADDR_EROM1, 0xE8 , 6);
1159 1
1160 1 stGUD1.FUNCTION = Data[0];
1161 1 stGUD1.INPUT_SOURCE = Data[1];
1162 1 stGUD1.FILTER = Data[2];
1163 1 stGUD1.OSD_POSH = Data[3];
1164 1 stGUD1.OSD_POSV = Data[4];
1165 1 stGUD1.OSD_TIMEOUT = Data[5];
C51 COMPILER V6.20c LCD_FUNC 04/15/2004 12:59:09 PAGE 20
1166 1
1167 1 }
1168
1169 void Save_GUD2(void)
1170 {
1171 1 Data[0] = 9;
1172 1 Data[1] = ADDR_EROM1;
1173 1 Data[2] = 0xF0;
1174 1 Data[3] = stGUD2.AD_R_GAIN;
1175 1 Data[4] = stGUD2.AD_G_GAIN;
1176 1 Data[5] = stGUD2.AD_B_GAIN;
1177 1 Data[6] = stGUD2.AD_R_OFFSET;
1178 1 Data[7] = stGUD2.AD_G_OFFSET;
1179 1 Data[8] = stGUD2.AD_B_OFFSET;
1180 1
1181 1 I2CWrite(Data);
1182 1 Delay_Xms(SET_2404_DELAY);
1183 1 }
1184
1185 void Load_GUD2(void)
1186 {
1187 1 I2CRead(ADDR_EROM1, 0xF0 , 6);
1188 1
1189 1 stGUD2.AD_R_GAIN = Data[0];
1190 1 stGUD2.AD_G_GAIN = Data[1];
1191 1 stGUD2.AD_B_GAIN = Data[2];
1192 1 stGUD2.AD_R_OFFSET = Data[3];
1193 1 stGUD2.AD_G_OFFSET = Data[4];
1194 1 stGUD2.AD_B_OFFSET = Data[5];
1195 1 }
1196
1197 void Save_GUD3(void)
1198 {
1199 1 Data[0] = 7;
1200 1 Data[1] = ADDR_EROM1;
1201 1 Data[2] = 0xF8;
1202 1 Data[3] = stGUD3.VOLUME;
1203 1 Data[4] = stGUD3.CURR_CHANNEL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -