📄 1574osd.lst
字号:
code BYTE Mode_Zoom1[12] = {
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x53, 0x1F, 0x55, 0x1D, 0x57, 0x1F, 0x59, 0x1D, 0x45, 0xC1,
0x47, 0xC3};
code BYTE Mode_Zoom2[12] = {
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x53, 0x24, 0x55, 0x22, 0x57, 0x24, 0x59, 0x22, 0x45, 0xC1,
0x47, 0xC3};
#endif
223 #ifdef TOSHIBA_PANEL //---------------------------------------------------------
224 code BYTE Mode_4by3[30] = {
225 // Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
226 0x08, 0x90, 0x0A, 0x4F, 0x0B, 0x13, 0x4D, 0x8A, 0x53, 0x15,
227 0x55, 0x13, 0x57, 0x15, 0x59, 0x13, 0x69, 0x32, 0x6A, 0x01,
228 0x70, 0x06, 0x8A, 0x80, 0x8B, 0x40, 0x45, 0x99, 0x47, 0x9B
229 };
230 code BYTE Mode_Full[30] = {
231 // Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
232 0x08, 0x00, 0x0A, 0x00, 0x0B, 0x10, 0x4D, 0x12, 0x53, 0x16,
233 0x55, 0x14, 0x57, 0x16, 0x59, 0x14, 0x69, 0x20, 0x6A, 0x00,
234 0x70, 0x00, 0x8A, 0x58, 0x8B, 0x09, 0x45, 0xC1, 0x47, 0xC3
235 };
236 code BYTE Mode_Zoom1[12] = {
237 // Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
238 0x53, 0x1F, 0x55, 0x1D, 0x57, 0x1F, 0x59, 0x1D, 0x45, 0xC1,
239 0x47, 0xC3};
240 code BYTE Mode_Zoom2[12] = {
C51 COMPILER V7.02b 1574OSD 05/24/2006 17:59:21 PAGE 5
241 // Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
242 0x53, 0x24, 0x55, 0x22, 0x57, 0x24, 0x59, 0x22, 0x45, 0xC1,
243 0x47, 0xC3};
244 #endif
245 /***---------------------------------------------------------------------------***/
246
247 #define OSD_LINEOFFSET 13
248
249 #define OSD_HSTART_BUF_INDEX 0
250 #define OSD_VSTART_BUF_INDEX 1
251 #define OSD_WIDTH_BUF_INDEX 2
252 #define OSD_HEIGHT_BUF_INDEX 3
253
254 extern int T0_0Interval;
255 extern BYTE T0_0Service;
256 extern BYTE NTSC_PAL;
257
258 extern BYTE WaitKey(void);
259 extern BYTE CVD1_ReadWrite(BYTE, BYTE, BYTE);
260
261 //-------------- Function Prototype ----------------
262 void OSD_Init(void);
263 void Adj_CBSH(void);
264 void OSD_ShowTitle(char *, char);
265 void OSD_Attribute(BYTE, BYTE, BYTE);
266 void Read_OSDRegD(BYTE *, BYTE, BYTE, BYTE);
267 void Write_OSDReg(BYTE [], BYTE, BYTE, BYTE);
268 BYTE ASCII_OSDFont(BYTE);
269 void Value_ASCII(BYTE, BYTE *, BYTE);
270 void Adj_LRUD(BYTE);
271 void Adj_Brightness(BYTE);
272 void Adj_Contrast(BYTE);
273 void Adj_Saturation(BYTE);
274 void Adj_Hue(char);
275 void Adj_Sharpen(char);
276 void Adj_Edge(char);
277 void Adj_DisplayMode(char);
278
279 /**--------------------------------------------------------------------------
280 * Name OSD_Init(void)
281 *
282 * Description The OSD all Menu string and T0_0Service Initialized
283 *
284 * Flow Chart
285 *
286 * Return
287 *
288 * DATE Author Description
289 * ===========================================================================
290 * 2004-07-12 K.M. Ho This is first time implement
291 * 2004-10-12 KMHo Add write 15xx Reg. 0x1C Enable the OSD
292 **/
293 void OSD_Init(void)
294 {
295 1 T0_0Service = 0; //Turn OFF the timer 0 service
296 1
297 1 #ifdef CPT_PANEL //-------------------------------------------------------
CBSH_Value[0] = 0x01; //Left/Rigth and Up/Down LG: 0x03 -----
#endif
300 1 #ifdef LG_PANEL
CBSH_Value[0] = 0x03; //Left/Rigth and Up/Down LG: 0x03 -----
#endif
C51 COMPILER V7.02b 1574OSD 05/24/2006 17:59:21 PAGE 6
303 1 #ifdef SAMSUNG_PANEL
CBSH_Value[0] = 0x01; //Left/Rigth and Up/Down LG: 0x03 -----
#endif //-------------------------------------------------------
306 1 CBSH_Value[1] = 0x20; //Brighness
307 1 CBSH_Value[2] = 0x20; //Contrast
308 1 CBSH_Value[3] = 0x20; //Saturation
309 1 CBSH_Value[4] = 0x20; //Hue
310 1 CBSH_Value[5] = 0x20; //Sharpen
311 1 CBSH_Value[6] = 0x00; //Edge Filter ON/OFF default is OFF
312 1 CBSH_Value[7] = 0x01; //Display Mode 0: 4:3
313 1 // 1: Full
314 1 // 2: Zoom 1
315 1 // 3: Zoom 2
316 1
317 1 I2C_WriteByte(L44_WRID, OSD_EN, 0xAC); //2004-10-12 Added by KMHo
318 1
319 1 Write_OSDReg(OSD_Color, SEL_OSDCTRLREG, 24, 0x0C); //Init. the OSD color index
320 1 Write_OSDReg(Font12x18, 0x01, 16, 0x00);
321 1
322 1 I2C_WriteByte(L44_WRID, 0x11, 0xF2); //Turn ON the Adj Enable bit
323 1 }
324
325 /**--------------------------------------------------------------------------
326 * Name Adj_CBSH(void)
327 *
328 * Description Enter the OSD main menu wait user press key for service.
329 * if user not press key over 10sec. that will auto Turn OFF OSD.
330 *
331 * Flow Chart
332 *
333 * Return
334 *
335 * DATE Author Description
336 * ===========================================================================
337 * 2004-07-12 K.M. Ho This is first time implement
338 **/
339 void Adj_CBSH(void)
340 {
341 1 BYTE press_key, item;
342 1 BYTE buf[2];
343 1 BYTE value, val_str[3];
344 1
345 1 T0_0Interval = 500; //set timer 0 interval = 20ms x 500 = 10sec.
346 1 T0_0Service = 1; //turn on timer 0 service flag
347 1 item = 1; //cancel item0:ud/lr
348 1
349 1 OSD_ShowTitle(&MainMenuStr[item*OSD_LINEOFFSET], OSD_LINEOFFSET);
350 1
351 1 value = CBSH_Value[item];
352 1 Value_ASCII(value, val_str, item); //Convert current value to Str.
353 1 Write_OSDReg(val_str, SEL_OSDDISPCODE, 3, 10); //write value to OSD code buf
354 1
355 1 while (T0_0Service)
356 1 {
357 2 press_key = WaitKey();
358 2 if (press_key) //have pressed key
359 2 {
360 3 switch (press_key)
361 3 {
362 4 case ENTER:
363 4 T0_0Service = 0; //Exit OSD function
364 4 break;
C51 COMPILER V7.02b 1574OSD 05/24/2006 17:59:21 PAGE 7
365 4
366 4 case DOWN:
367 4 if (++value >= 0x3F) value = 0x3F;
368 4 break;
369 4
370 4 case UP:
371 4 if (--value == 0xFF) value = 0x00;
372 4 break;
373 4
374 4 case MENU:
375 4 CBSH_Value[item] = value; //store old item value
376 4 if (++item > 7) item = 1; //chang select item
377 4 //cancel item0:ud/lr
378 4 // OSD_ShowTitle(&MainMenuStr[item*OSD_LINEOFFSET], OSD_LINEOFFSET);
379 4 Write_OSDReg(&MainMenuStr[item*OSD_LINEOFFSET], SEL_OSDDISPCODE, 13, 0);
380 4 value = CBSH_Value[item]; //restore new item value
381 4 break;
382 4 }
383 3
384 3 switch (item) //set new value to Brightness, Contrast, Saturation or Hue
385 3 {
386 4 case 0: Adj_LRUD(value&0x03); break;
387 4 case 1: Adj_Brightness(value<<2); break;
388 4 case 2: Adj_Contrast(value<<2); break;
389 4 case 3: Adj_Saturation(value<<2); break;
390 4 case 4: Adj_Hue(value<<2); break;
391 4 case 5: Adj_Sharpen(value<<1); break;
392 4 case 6: value &= 0x01;
393 4 Adj_Edge(value); break;
394 4 case 7: value &= 0x03;
395 4 Adj_DisplayMode(value); break;
396 4 }
397 3 if (item)
398 3 Value_ASCII(value, val_str, item); //Convert current value to Str.
399 3 else
400 3 Value_ASCII(value&0x03, val_str, item);
401 3
402 3 Write_OSDReg(val_str, SEL_OSDDISPCODE, 3, 10); //Show current value
403 3 }
404 2 }
405 1 CBSH_Value[item] = value;
406 1
407 1 // I2C_Write(EEPROM_WRID, 0, 4 , value_temp);
408 1 //Turn OFF OSD window befor exit the OSD function
409 1 buf[0] = OSDWINOFF;
410 1 Write_OSDReg(buf, SEL_OSDCTRLREG, 1, OSDCTRLREG); //write one byte
411 1 }
412
413 /**--------------------------------------------------------------------------
414 * Name OSD_ShowTitle(BYTE *str, char ch_no)
415 *
416 * Description Show Title on screen
417 *
418 * Flow Chart
419 *
420 * Return
421 *
422 * DATE Author Description
423 * ===========================================================================
424 * 2004-07-12 K.M. Ho This is first time implement
425 **/
426 void OSD_ShowTitle(char *str, char ch_no)
C51 COMPILER V7.02b 1574OSD 05/24/2006 17:59:21 PAGE 8
427 {
428 1 BYTE buf[2];
429 1
430 1 //Turn OFF the OSD window before show OSD menu
431 1 buf[0] = OSDWINOFF;
432 1 Write_OSDReg(buf, SEL_OSDCTRLREG, 1, OSDCTRLREG);
433 1
434 1 //Clear the OSD Window (Display code and attribute buffer)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -