⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 window.c

📁 LCDTV的source code,含周邊ic的driver code ,scaler ,
💻 C
📖 第 1 页 / 共 2 页
字号:
        }
    break;
    case(4)://(Main Page -> TV)
      StrPtr=PAGE4[Language];
      length=StringLength(*(StrPtr+1+Item));
      Print_String(0, (29-length)/2, *(StrPtr+1+Item), YELLOW);
      switch(Item) {
	    case(0)://TV/CATV
          Print_String(1, 2, "TV(AIR)  CATV(STD IRC HRC)", WHITE);
		  switch(TV_Mode) {
		    case(0):
              Line_Attribute(1, 5, 7, RED);
            break;
			case(1):
              Line_Attribute(1, 16, 18, RED);
            break;
			case(2):
              Line_Attribute(1, 20, 22, RED);
            break;
			case(3):
              Line_Attribute(1, 24, 26, RED);
            break;
		    }
		break;
        case(1)://MTS
          StrPtr=MTSMODE[Language];
          Print_String(1, 1, *(StrPtr+0), WHITE);
          Print_String(1, 10, *(StrPtr+1), WHITE);
          Print_String(1, 21, *(StrPtr+2), WHITE);
		  Line_Attribute(1, 0+MTS_Mode*10, 9+MTS_Mode*10, RED);          
        break;
        case(3)://Menu Prog.
          Print_Char(1, 13, Channel+1, WHITE);
        break;
        case(4)://Channel Add/Erase
          Print_Char(0, 25, Channel+1, WHITE);
          StrPtr=CHADDERASE[Language];
          Print_String(1, (15-StringLength(*(StrPtr+0)))/2, *(StrPtr+0), WHITE);
          Print_String(1, 15+(15-StringLength(*(StrPtr+1)))/2, *(StrPtr+1), WHITE);
          pos0=EE_MCU_Byte_Read(ChannelTable_EEPROM_Address()+Channel/8);
          pos1=Channel%8;
          if(Get_Bit(pos0, pos1)==0)//channel not set (can add)
            Line_Attribute(1, 16, 29, RED);
          else
            Line_Attribute(1, 0, 15, RED);
        break;
        case(5)://Channel Lock/Unlock
          Print_Char(0, 25, Channel+1, WHITE);
          StrPtr=CHLOCK[Language];
          Print_String(1, (15-StringLength(*(StrPtr+0)))/2, *(StrPtr+0), WHITE);
          Print_String(1, 15+(15-StringLength(*(StrPtr+1)))/2, *(StrPtr+1), WHITE);
          pos0=EE_MCU_Byte_Read(ChannelLockTable_EEPROM_Address()+Channel/8);
          pos1=Channel%8;
          if(Get_Bit(pos0, pos1)==0)//channel unlock (can lock)
            Line_Attribute(1, 16, 29, RED);
          else
            Line_Attribute(1, 0, 15, RED);
        break;
        }
    break;
    } 
 
  }


/*==============================================================================
  (Information Window) Page=100
==============================================================================*/
void Display_Window(void) {

  Page=100;
  Item=0;
  badjust=0;
  bhotosd=0;

  Clear_Screen();
  OSD_Position(5, 120);

  switch(Source) {
    case(AV1):
      Print_String(0, 0, "AV     ", GREEN);
    break;
    case(AV2):
      Print_String(0, 0, "S-VIDEO", GREEN);
    break;
    case(AV3):
      Print_String(0, 0, "DVD    ", GREEN);
    break;
    case(TV):
      if(TV_Mode==TV_AIR)
        Print_String(0, 0, "TV     ", GREEN);
      else
        Print_String(0, 0, "CATV   ", GREEN);
    break;
    }

  if(Source==TV) {          
    Print_String(1, 0, "CH", GREEN);
    Print_Char(1, 3, Channel+1, GREEN);
    Display_MTS_Type(MTS_Mode);
    }

  if(Mute)
    Print_String(0, 8, "\xd2\xd3", GREEN);
  else
    Print_String(0, 8, "\xa2\xa3", GREEN);

  }


/*==============================================================================
  (Channel Display) Page=100
==============================================================================*/
void Channel_Display(void) {

  if(Page!=100) {
    OSD_Show(0,0,0,0,0);      
    Display_Window();    
    OSD_Show(1,0,0,0,0);
    }
  else {
    Print_Char(1, 3, Channel+1, GREEN);
    }

  }


/*==============================================================================
  (MTS Display) Page=100
==============================================================================*/
void Display_MTS_Type(unsigned char mts) {

  //Real_MTS ==> 0:MONO 1:MONO+SAP 2:MONO+STEREO 3:MONO+SAP+STEREO
  switch(mts) {
    case(0)://MONO
      Print_String(2, 0, "MONO  ", GREEN);
    break;
    case(1)://SAP
      switch(Real_MTS) {
        case(0):
          //Print_String(2, 0, "      ", GREEN);
          Print_String(2, 0, "MONO  ", GREEN);
        break;
        case(2):
          Print_String(2, 0, "SAP   ", YELLOW);
        break;
        case(1):
        case(3):
          Print_String(2, 0, "SAP   ", GREEN);
        break;
        }
    break;
    case(2)://STEREO
      switch(Real_MTS) {
        case(0):
          //Print_String(2, 0, "      ", GREEN);
          Print_String(2, 0, "MONO  ", GREEN);
        break;
        case(1):
          Print_String(2, 0, "STEREO", YELLOW);
        break;
        case(2):
        case(3):
          Print_String(2, 0, "STEREO", GREEN);
        break;
        }
    break;
    }

  }


/*==============================================================================
  (Password Dialog) CH_LOCK Page=110    V-CHIP Page=120   Repass Page=130
==============================================================================*/
void Password_Dialog(void) {

  PassIn=PassDig=0;
  
  Clear_Screen();
  OSD_Position(50, 55);

  Window_Control(3, 0, 3, 0, 23, BLACK);
      
  switch(Page) {
    case(110)://CH Lock
      Print_String(0, 4, "CHANNEL LOCK SET", RED);      
    break;
    case(120)://V-CHIP SET
      Print_String(0, 5, "V-CHIP SETTING", RED);      
    break;
    case(130)://RENEW
      Print_String(0, 5, "RENEW PASSWORD", RED);      
    break;
    }
  Print_String(2, 3, " PASSWORD: ", WHITE);
  Print_String(2, 14, "------  ", WHITE|BLINK);

  }


/*==============================================================================
  (V-Chip Display1) Page=200 badjust=1
==============================================================================*/
code unsigned char BLOCK[6][6]={{1,0,1,1,1,0},//TV-MA
                                {1,0,1,1,1,1},//TV-14
                                {1,0,1,1,1,1},//TV-PG
                                {1,0,0,0,0,0},//TV-G
                                {1,1,0,0,0,0},//TV-Y7
                                {1,0,0,0,0,0}};//TV-Y

void VChip_Window(void) {

  unsigned char i, j, tmp;

  Clear_Screen();
  OSD_Position(49, 49);
  
  Window_Control(3, 0, 13, 0, 29, BLACK);

  Print_String(0, 1, "GUIDE LINE       BLOCKING", RED);
  Print_String(2, 11, "ALL FV V  S  L  D", CYAN);
  Print_String(3, 2, "TV-MA", CYAN);
  Print_String(4, 2, "TV-14", CYAN);
  Print_String(5, 2, "TV-PG", CYAN);
  Print_String(6, 2, "TV-G", CYAN);
  Print_String(7, 2, "TV-Y7", CYAN);
  Print_String(8, 2, "TV-Y", CYAN);
  Print_String(10, 1, "UP/DOWN: MOVE CURSOR COLUMN", WHITE);
  Print_String(11, 1, "LEFT/RIGHT: MOVE CURSOR ROW", WHITE);
  Print_String(12, 1, "SELECT: BLOCK/UNBLOCK", WHITE);
  Print_String(13, 1, "V-CHIP: EXIT V-CHIP SETTING", WHITE);

  for(i=0; i<6; i++) {
    for(j=0; j<6; j++) {
      if(BLOCK[i][j]==1) {
        tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
        if(Get_Bit(tmp, j)==1)
          Print_Icon(3+i, 12+j*3, 'B', CYAN);
        else
          Print_Icon(3+i, 12+j*3, 'U', CYAN);
        }
      }
    }

  VChipRow=VChipCol=0;
  VChip_Cursor(0);

  }


/*==============================================================================
  (V-Chip Display) Page=200 badjust=1
==============================================================================*/
void VChip_Cursor(unsigned char direction) {

  switch(direction) {
    case(1)://UP
      VChipRow=(VChipRow+5)%6;      
      while(BLOCK[VChipRow][VChipCol]==0) {
        VChipCol=(VChipCol+5)%6;
        }
    break;
    case(2)://DOWN
      VChipRow=(VChipRow+1)%6;
      while(BLOCK[VChipRow][VChipCol]==0) {
        VChipCol=(VChipCol+5)%6;
        }
    break;
    case(3)://LEFT
      do{
        VChipCol=(VChipCol+5)%6;
        }while(BLOCK[VChipRow][VChipCol]==0);
    break;
    case(4)://RIGHT
      do{
        VChipCol=(VChipCol+1)%6; 
        }while(BLOCK[VChipRow][VChipCol]==0);   
    break;
    }
          
  Window_Control(2, VChipRow+3, VChipRow+3, 11+VChipCol*3, 11+VChipCol*3+2, YELLOW);

  }


/*==============================================================================
  (V-Chip Set) Page=200 badjust=1
==============================================================================*/
void VChip_Cursor_Set(void) {

  unsigned char i, j, tmp;

  tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+VChipRow);
  if(Get_Bit(tmp, VChipCol)==1) {
    tmp=Set_Bit(tmp, VChipCol, 0);
    EE_MCU_Byte_Write(EE_VCHIP_SET+VChipRow, tmp);
    Print_Icon(3+VChipRow, 12+VChipCol*3, 'U', CYAN);
    if(VChipCol==0) {
      for(i=VChipRow; i<6; i++) {
        for(j=0; j<6; j++) {
          if(BLOCK[i][j]==1) {
            tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
            tmp=Set_Bit(tmp, j, 0);
            EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
            Print_Icon(3+i, 12+j*3, 'U', CYAN);
            }
          }
        }
      }
    else {
      for(i=VChipRow; i<6; i++) {
        if(BLOCK[i][VChipCol]==1) {
          tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
          tmp=Set_Bit(tmp, VChipCol, 0);
          EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
          Print_Icon(3+i, 12+VChipCol*3, 'U', CYAN);
          }
        }
      }
    }
  else {
    tmp=Set_Bit(tmp, VChipCol, 1);
    EE_MCU_Byte_Write(EE_VCHIP_SET+VChipRow, tmp);
    Print_Icon(3+VChipRow, 12+VChipCol*3, 'B', CYAN);
    if(VChipCol==0) {
      for(i=VChipRow; i<6; i++) {
        for(j=0; j<6; j++) {
          if(BLOCK[i][j]==1) {
            tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
            tmp=Set_Bit(tmp, j, 1);
            EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
            Print_Icon(3+i, 12+j*3, 'B', CYAN);
            }
          }
        }
      }
    else {
      for(i=VChipRow; i<6; i++) {
        if(BLOCK[i][VChipCol]==1) {
          tmp=EE_MCU_Byte_Read(EE_VCHIP_SET+i);
          tmp=Set_Bit(tmp, VChipCol, 1);
          EE_MCU_Byte_Write(EE_VCHIP_SET+i, tmp);
          Print_Icon(3+i, 12+VChipCol*3, 'B', CYAN);
          }
        }
      }
    }
  
  }


/*==============================================================================
  (V-Chip Display) Page=201 badjust=0
==============================================================================*/
void VChip_Display(void) {

  code unsigned char *MPAA[]={"N/A      ",
                              "G        ",
                              "PG       ",
                              "PG-13    ",
                              "R        ",
                              "NC-17    ",
                              "X        ",
                              "Not Rated"};
  code unsigned char *SYSTEM[]={"MPAA (no TV rating)    ",
                                "TV parential Guidelines",
                                "MPAA (no TV rating)    ",
                                "Non US NTSC system     "};
  code unsigned char *GUIDE[]={"None ",
                               "TV-Y ",
                               "TV-Y7",
                               "TV-G ",
                               "TV-PG",
                               "TV-14",
                               "TV-MA",
                               "None "};
  code unsigned char *MISC[]={"None   ",
                              "L      ",
                              "S      ",
                              "S L    ",
                              "V      ",
                              "V L    ",
                              "V S    ",
                              "V S L  "};
  code unsigned char *MISCD[]={"D      ",
                               "L D    ",
                               "S D    ",
                               "S L D  ",
                               "V D    ",
                               "V L D  ",
                               "V S D  ",
                               "V S L D"};


  Clear_Screen();
  OSD_Position(49, 49);  
  Window_Control(3, 0, 3, 0, 22, WHITE);

  Print_String(0, 0, "This program is blocked", RED);
  Print_String(1, 0, "          by", RED);
  Print_String(2, 0, SYSTEM[Now_VChipSys], RED);
  switch(Now_VChipSys) {
    case(0)://MPAA (no TV rating)
    case(2)://MPAA (no TV rating)
      Print_String(3,0,MPAA[Now_VChipRating],RED);
    break;
    case(1)://TV parental Guidelines (no MPAA)
      Print_String(3,0,GUIDE[Now_VChipRating],RED);
      if(Now_VChipMisc>=0x10)
        Print_String(3,15,MISCD[Now_VChipMisc-0x10],RED);
      else
        Print_String(3,15,MISC[Now_VChipMisc],RED);
    break;
    case(3)://Non US NTSC system
    break;
    }

  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -