📄 lcd_osd.lst
字号:
450
451 void OSD_Slider(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned
-char range,
452 unsigned char color, unsigned char color_slider)
453 {
454 1 unsigned int idata usStart_Addr;
455 1 unsigned char idata ucTemp;
456 1 unsigned int bound;
457 1
458 1 usStart_Addr = FONT_SELECT_ADDRESS;
459 1
460 1 for(ucTemp = 1; ucTemp < row+1; ucTemp ++)
461 1 usStart_Addr += Row_Info[0][ucTemp];
462 1
463 1 length = length -5;
464 1 bound = ((length-2)*6 + 2*3) * value;
465 1
466 1 // Set color
467 1 Data[0] = 6;
468 1 Data[1] = Y_INC;
469 1 Data[2] = OSD_ADDR_MSB_90;
470 1 Data[3] = (unsigned char)((((usStart_Addr + col) >>8 ) & 0x0f ) | 0x90);
471 1 Data[4] = (unsigned char)( (usStart_Addr + col) & 0x00ff);
472 1 Data[5] = (color << 4) & 0xf0;
473 1 Data[6] = 0;
474 1 RTDWrite(Data);
C51 COMPILER V7.06 LCD_OSD 11/21/2005 13:47:29 PAGE 9
475 1
476 1 Data[0] = 5;
477 1 Data[1] = N_INC;
478 1 Data[2] = OSD_DATA_92;
479 1 Data[3] = (color << 4) & 0xf0;
480 1 Data[4] = (color << 4) & 0xf0;
481 1 Data[5] = 0;
482 1 RTDWrite(Data);
483 1
484 1 OSD_Line(row,col+5,12,((color_slider<<4) & 0xf0),2);
485 1 Data[0] = 6;
486 1 Data[1] = Y_INC;
487 1 Data[2] = OSD_ADDR_MSB_90;
488 1
489 1 Data[6] = 0;
490 1
491 1 for (row = 0; row < length; row++)
492 1 {
493 2 Data[3] = (unsigned char)((((usStart_Addr + col + row + 5) >> 8 ) & 0x0f ) | 0x50);
494 2 Data[4] = (unsigned char)( (usStart_Addr + col + row + 5) & 0x00ff);
495 2
496 2 if( row == 0 || row == (length-1) )
497 2 {
498 3 if( bound )
499 3 {
500 4 if( bound >= (range*3) )
501 4 {
502 5 Data[5] = (row==0) ? 0x13 : 0x1e;
503 5 bound = bound - range*3;
504 5 }
505 4 else
506 4 {
507 5 color = (bound << 4) / (range*3);
508 5 bound = 0;
509 5
510 5 if (4 > color)
511 5 Data[5] = (row==0) ? 0x10 : 0x1b;
512 5 else if (8 > color)
513 5 Data[5] = (row==0) ? 0x11 : 0x1c;
514 5 else if (12 > color)
515 5 Data[5] = (row==0) ? 0x12 : 0x1d;
516 5 else
517 5 Data[5] = (row==0) ? 0x13 : 0x1e;
518 5 }
519 4 }
520 3 else
521 3 {
522 4 Data[5] = (row==0) ? 0x10 : 0x1b;
523 4 }
524 3 }
525 2 else
526 2 {
527 3 if( bound )
528 3 {
529 4 if( bound >= (range*6) )
530 4 {
531 5 Data[5] = 0x1a;
532 5 bound = bound - range*6;
533 5 }
534 4 else
535 4 {
536 5 color = (bound << 4) / (range*6);
C51 COMPILER V7.06 LCD_OSD 11/21/2005 13:47:29 PAGE 10
537 5 bound = 0;
538 5
539 5 if (1 > color)
540 5 Data[5] = 0x14;
541 5 else if (4 > color)
542 5 Data[5] = 0x15;
543 5 else if (6 > color)
544 5 Data[5] = 0x16;
545 5 else if (9 > color)
546 5 Data[5] = 0x17;
547 5 else if (11 > color)
548 5 Data[5] = 0x18;
549 5 else if (14 > color)
550 5 Data[5] = 0x19;
551 5 else
552 5 Data[5] = 0x1a;
553 5 }
554 4 }
555 3 else
556 3 {
557 4 Data[5] = 0x14;
558 4 }
559 3
560 3 }
561 2
562 2 RTDWrite(Data);
563 2
564 2 }
565 1
566 1 range = value / 10;
567 1 row = value - (range * 10); // x1
568 1 color = range / 10; // x100
569 1 range = range - (color * 10); // x10
570 1
571 1 row = row + 0x01;
572 1 range = (range || color) ? range + 0x01 : 0x00;
573 1 color = color ? color + 0x01 : 0x00;
574 1
575 1 Data[0] = 5;
576 1 Data[1] = Y_INC;
577 1 Data[2] = OSD_ADDR_MSB_90;
578 1 Data[3] = (unsigned char)((((usStart_Addr + col) >>8 ) & 0x0f ) | 0x50);
579 1 Data[4] = (unsigned char)( (usStart_Addr + col ) & 0x00ff);
580 1 Data[5] = 0;
581 1 RTDWrite(Data);
582 1
583 1 Data[0] = 6;
584 1 Data[1] = N_INC;
585 1 Data[2] = OSD_DATA_92;
586 1 Data[3] = color; // Number x100
587 1 Data[4] = range; // Number x10
588 1 Data[5] = row; // Number x1
589 1 Data[6] = 0;
590 1 RTDWrite(Data);
591 1
592 1 }
593
594
595 void Init_Page(unsigned char index)
596 {
597 1 index = index;
598 1 OSD_Position(OSD_ENABLE);
C51 COMPILER V7.06 LCD_OSD 11/21/2005 13:47:29 PAGE 11
599 1 OSD_Clear(5, 11, 15, 1); //Need to be modified case by case.
600 1 if( ucOSD_Page_Index == 1)
601 1 RTDOSDW(OSD_Window_Setting);
602 1 }
603
604 void Show_Osd_Page(unsigned char Page_Num,unsigned char* Page_Attr,unsigned char OSD_Table_Num)
605 {
606 1 Init_Page(Page_Num);
607 1 RTDOSDW(Page_All_Atb);
608 1 RTDOSDW(OSD_PAGE_All_TABLE[0][stGUD1.FUNCTION & 0x07]);
*** WARNING C214 IN LINE 608 OF CODE\LCD_OSD.C: 'Argument': conversion: non-pointer to pointer
609 1 RTDOSDW(Page_Attr);
610 1 RTDOSDW(OSD_PAGE_TABLE[OSD_Table_Num][stGUD1.FUNCTION & 0x07]);
*** WARNING C214 IN LINE 610 OF CODE\LCD_OSD.C: 'Argument': conversion: non-pointer to pointer
611 1 Show_Mode();
612 1 }
613
614 void OSD_Clear(unsigned char row_start, unsigned char height, unsigned char col_start, unsigned char width
-)
615 {
616 1 width = width;
617 1 if (height)
618 1 {
619 2 do
620 2 {
621 3 OSD_Line(row_start, col_start, Row_Info[0][row_start+1], 0x00, 3);
622 3 //OSD_Line(row_start, col_start, width, 0x00, 3);
623 3 row_start++;
624 3 }
625 2 while (--height);
626 2 }
627 1 }
628
629 void Bright_Contrast_Adjust(unsigned char* variable,unsigned char Key)
630 {
631 1 // if (NOTIFY_RIGHT_KEY == Key)
632 1 if (NOTIFY_LEFT_KEY == Key)
633 1 {
634 2 if (100 <= *variable)
635 2 return;
636 2
637 2 if (KEY_TURBO_ENABLE > ucKey_Issued)
638 2 *variable = 100 > *variable ? *variable + 1 : 100;
639 2 else
640 2 *variable = 99 > *variable ? *variable + 2 : 100;
641 2 }
642 1 else
643 1 {
644 2 if (0 == *variable)
645 2 return;
646 2
647 2 if (KEY_TURBO_ENABLE > ucKey_Issued)
648 2 *variable = 0 < *variable ? *variable - 1 : 0;
649 2 else
650 2 *variable = 1 < *variable ? *variable - 2 : 0;
651 2 }
652 1 }
653
654 void Osd_Change_Item(unsigned char Pess_Key,unsigned char Item_Num)
655 {
656 1 if (ucOSD_Item_Index0)
657 1 {
C51 COMPILER V7.06 LCD_OSD 11/21/2005 13:47:29 PAGE 12
658 2 // Select and highlight the next/previous item
659 2 //OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
660 2 // , 0, 0, 14, 251, 0, 1, 0);
661 2 if (NOTIFY_RIGHT_KEY == Pess_Key)
662 2 ucOSD_Item_Index0 = (Item_Num == ucOSD_Item_Index0) ? 1 : (ucOSD_Item_Index0 + 1);
663 2 else
664 2 ucOSD_Item_Index0 = (1 == ucOSD_Item_Index0) ? Item_Num : (ucOSD_Item_Index0 - 1);
665 2
666 2 // Move window 6
667 2 OSD_Window( 6, 150, 282, (54 + (ucOSD_Item_Index0-1)*(29+4)), (84 + (ucOSD_Item_Index0-1)*(29+4))
668 2 , 1, 1, 14, 251, 0, 1, 25);
669 2 }
670 1 else
671 1 {
672 2 // Change to next/previous main page
673 2 //OSD_Window( 5, 150, 282, (54 + (ucOSD_Page_Index-1)*(29+4)), (84 + (ucOSD_Page_Index-1)*(29+4))
674 2 // , 0, 0, 14, 251, 0, 1, 0);
675 2 if (NOTIFY_RIGHT_KEY == Pess_Key)
676 2 ucOSD_Page_Index = GetNextPageIdx(ucOSD_Page_Index);
677 2 else
678 2 ucOSD_Page_Index = GetPrevPageIdx(ucOSD_Page_Index);
679 2 }
680 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -