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