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

📄 t100.c

📁 在51单片机上用C写的T100,T101TFT屏的控制程序,有OSD
💻 C
📖 第 1 页 / 共 4 页
字号:
                           //      2 1 0
        OSD_UpdateMain(1); //clean cursor
        if(cursor1<3)
        {
            if(left)
            {
                if(cursor1<2)
                    cursor1++;
                else
                    cursor1=0;
            }
            else
            {
                if(cursor1>0)
                    cursor1--;
                else
                    cursor1=2;
            }
        }
        else
        {
             if(left)
            {
                if(cursor1<5)
                    cursor1++;
                else
                    cursor1=3;
            }
            else
            {
                if(cursor1>3)
                    cursor1--;
                else
                    cursor1=5;
            }
        }
        OSD_UpdateMain(0); //display cursor
    }
    else if(window==SUB1_D) //OSD sub_menu
    {
        switch(cursor1)
        {
            case SYSTEM : OSD_System();
                          OSD_UpdateSystem(0);
                          break;

            case SCREEN : OSD_Screen();
                          OSD_UpdateScreen(0);
                          break;

            case VIDEO  : OSD_Video();
                          OSD_UpdateVideo(0);
                          break;

            case AUDIO  : OSD_Audio();
                          OSD_UpdateAudio(0);
                          break;

            default     : OSDExit();
                          OSD_enable = 0;
                          break;
        }
    }
    else if(window==RESET_D)
    {
    	if(reset_valid)
    	{
    	    if(right)
    	    {
    	        OSD_UpdateReset(1);
    	        reset_valid = 0;
                OSD_UpdateReset(0);
            }
        }
        else
        {
            if(left)
            {
                OSD_UpdateReset(1);
    	        reset_valid = 1;
                OSD_UpdateReset(0);
            }
        }
    }
    left=0;
    right=0;
    OSD_time=0;

}

void OSD_Enter(void)
{
    uCHAR temp;

    	if(window==MAIN_D)
        {
            if(cursor1==DEFAULT)
                OSD_OpenReset();
            else OSD_OpenSub();
        }
        else if(window==SUB1_D)
        {
            switch(cursor1)
            {
                case SOURCE : if(cursor2!=EXIT)
                              {
                                  temp = cursor2;       //save new selection
                                  cursor2 = CurMode;    //cursor2 == old position
                                  CurMode = temp;       //valid new source
                                  OSD_UpdateSource(1);  //clear old selection (color normal)
                                  cursor2 = temp;       //cursor2 == new position
                                  OSD_UpdateSource(1);  //clear cursor from new position
                                  cursor2 = EXIT;       //cursor2 to EXIT
                                  OSD_UpdateSource(0);  //display cursor on EXIT
                                                        //and change the color of the source selected
                                  //OSDExit();
                                  //OSD_enable = 0;
                              }
                              else
                                  OSD_OpenMain();
                              break;

                case SCREEN : switch(cursor2)
                              {
                                  case SCR_FULL   : VideoStatus|=SCREEN_FULL;
                                                    if(!bFULL_43)
                                                    {
                                                    	OSD_UpdateScreen(1);
                                                        bFULL_43 = 1; //1: FULL
                                                        SetMode();
                                                        OSD_UpdateScreen(0);
                                                    }
                                                    break;

                                  case SCR_NORMAL : VideoStatus&=~SCREEN_FULL;
                                                    if(bFULL_43)
                                                    {
                                                    	OSD_UpdateScreen(1);
                                                        bFULL_43 = 0; //0: 4:3
                                                        SetMode();
                                                        OSD_UpdateScreen(0);
                                                    }
                                                    break;

                                  case EXIT       : OSD_OpenMain();

                                  default         : break;
                              }
                              break;

                default     : if(cursor2==EXIT) OSD_OpenMain();
                              break;
            }  //end switch

        }  //end sub menu
        else if(window==RESET_D)
        {
            if(reset_valid)
            {
                KSP7001_Default();
                OSDExit();
                OSD_OpenMain();
            }
            else
                OSD_CleanReset();
        }
    enter=0;
    OSD_time=0;
}


void OSD_System(void)
{
    switch(cursor2)
    {
        case TILT   :     //tilt=!tilt;
        	                if(TiltFlag0&TILT_AUTO)    //if tilt==auto
        	                    TiltFlag0&=~TILT_AUTO;  //manuel
        	                else
        	                    TiltFlag0|=TILT_AUTO;		//auto 
                          break;

        case IN_OUT :     if(right)
                          {
                              if(MinoutState==INOUT_3) //0 none, 1 level-1,
                                  MinoutState=INOUT_NONE; //2 level-2, 3 level-3
                              else
                                  MinoutState++;
                          }
                          else
                          {
                              if(MinoutState==INOUT_NONE)
                                  MinoutState=INOUT_3;
                              else
                                  MinoutState--;
                          }
                          break;

        case RANGE      : if(right)
                          {
                              if(TiltLimit==ANGLE_5) //0 auto, 1 1-3,
                                  TiltLimit=ANGLE_AUTO; //2 1-4, 3 1-5
                              else
                                  TiltLimit++;
                          }
                          else
                          {
                              if(TiltLimit==ANGLE_AUTO)
                                  TiltLimit=ANGLE_5;
                              else
                                  TiltLimit--;
                          }
                          break;

        case TV_PICTURE : if(CurMode&MODE_TV)
                          {   //0 NTSC, 1 PAL, 2 CHINESE
                              if(right)
                              {
                                  if(ChannelType==TV_CHN) ChannelType=TV_NTSC;
                                  else ChannelType++;
                              }
                              else
                              {
                                  if(ChannelType==TV_NTSC) ChannelType=TV_CHN;
                                  else ChannelType--;
                              }

                              if( (ChannelType==TV_NTSC) ||
                                  (left&&(ChannelType==TV_CHN)) ||
                                  (right&&(ChannelType==TV_PAL)) )
                              {
                                  cursor2=TV_SOUND;
                                  OSD_UpdateSystem(1);
                                  cursor2=TV_PICTURE;
                              }
                          }
                          break;

        case TV_SOUND   : if(ChannelType!=TV_NTSC)
                          {   //3 sound-3, 2 sound-2, 1 sound-1
                              if(right)
                              {
                                  if(PalType==PAL_BG) PalType=PAL_DK;
                                  else PalType--;
                              }
                              else
                              {
                                  if(PalType==PAL_DK) PalType=PAL_BG;
                                  else PalType++;
                              }
                          }
                          break;

        case BLIGHT     : //backlight=!backlight;
        	                if(VideoStatus&ILL_BRIGHT)
        	                    VideoStatus&=~ILL_BRIGHT; //light off
        	                else
        	                	  VideoStatus|=ILL_BRIGHT; //light on

                          break;

        default         : break;
    }
}

void OSD_Screen(void)
{
    if(cursor2==SCR_PICTURE)
    {
    	//    direction=!direction;
        if(VideoStatus&PIC_INVERSE)
            VideoStatus&=~PIC_INVERSE;
        else
        	  VideoStatus|=PIC_INVERSE;
    }

    if(VideoStatus&PIC_INVERSE)
    {
        bUP_DOWN = 0;
        bLEFT_RIGHT = 0;
    }
    else
    {
        bUP_DOWN = 1;
        bLEFT_RIGHT = 1;
    }
    SetUD_LR();
}

void OSD_Video(void)
{
    unsigned char video_set=0;

    switch(cursor2)
    {
        case V_BRIGHT :   if(right)
                          {
                              if(bright<BRIGHT_MAX)
                                  bright++;
                          }
                          else
                          {
                              if(bright>BRIGHT_MIN)
                                  bright--;
                          }
                          if(bright==BRIGHT_MIN) video_set = 0;
                          else if(bright==BRIGHT_MAX) video_set = 255;
                          else video_set = (bright-1) * 5 + 7;
                          I2CWriteByte(TW100,VBRIGHT,video_set);
                          break;

        case V_CONTRAST : if(right)
                          {
                              if(contrast<CONTRAST_MAX)
                                  contrast++;
                          }
                          else
                          {
                              if(contrast>CONTRAST_MIN)
                                  contrast--;
                          }
                          if(contrast==CONTRAST_MIN) video_set = 0;
                          else if(contrast==CONTRAST_MAX) video_set = 255;
                          else video_set = (contrast - 1) * 5 + 7;
                          I2CWriteByte(TW100,VCONTRAST,video_set);
                          break;

        case V_COLOR    : if(right)
                          {
                              if(color<COLOR_MAX)
                                  color++;
                          }
                          else
                          {
                              if(color>COLOR_MIN)
                                  color--;
                          }
                          if(color==COLOR_MIN) video_set = 0;
                          else if(color==COLOR_MAX) video_set = 255;
                          else video_set = (color - 1) * 5 + 7;
                          I2CWriteByte(TW100,VCOLOR,video_set);
                          break;

        case V_SHARP    : if(right)
                          {
                              if(sharp<SHARP_MAX)
                                  sharp++;
                          }
                          else
                          {
                              if(sharp>SHARP_MIN)
                                  sharp--;
                          }

                          I2CWriteByte(PAGE2_ADDR,VSHARP,(sharp*2+1));
                          break;

        default         : break;
    }
}

void OSD_Audio(void)
{
    switch(cursor2)
    {
        case A_BASS   : if(right)  //0(-7)->14(+7)
                        {
                            if(Aud_BassLevel<BASS_MAX)
                                Aud_BassLevel++;
                        }
                        else
                        {
                            if(Aud_BassLevel>BASS_MIN)
                                Aud_BassLevel--;
                        }
                        break;

        case A_TREBLE : if(right)
                        {
                            if(Aud_TrebleLevel<TREBLE_MAX)
                                Aud_TrebleLevel++;
                        }
                        else
                        {
                            if(Aud_TrebleLevel>TREBLE_MIN)
                                Aud_TrebleLevel--;
                        }
                        break;

        case A_BAL    : if(right)
                        {
                            if(Aud_BalanceLevel<BAL_MAX)
                                Aud_BalanceLevel++;
                        }
                        else
                        {
                            if(Aud_BalanceLevel>BAL_MIN)
                                Aud_BalanceLevel--;
                        }
                        break;

        case A_FADE   : if(right)
                        {
                           if(Aud_FaderLevel<FADE_MAX)
                               Aud_FaderLevel++;
                        }
                        else
                        {
                            if(Aud_FaderLevel>FADE_MIN)
                                Aud_FaderLevel--;
                        }
                        break;

        case A_SUBW   : //subwoofer=!subwoofer;
        	              if(AudioStatus&AUDIO_STS_SUBW)
        	                  AudioStatus&=~AUDIO_STS_SUBW;
        	              else
        	              	  AudioStatus|=AUDIO_STS_SUBW;

                        break;

        case A_BEEP   : //beep=!beep;
        	              if(AudioStatus&AUDIO_STS_BEEP_EN)
        	                  AudioStatus&=~AUDIO_STS_BEEP_EN;
        	              else
        	              	  AudioStatus|=AUDIO_STS_BEEP_EN;

                        break;

        case A_VOL    : if(right)
                        {
                            if(Aud_IniVol<VOL_MAX)
                                Aud_IniVol++;
                        }
                        else
                        {
                            if(Aud_IniVol>VOL_MIN)
                                Aud_IniVol--;
                        }
                        break;

        default       : break;
    }
}

void OSD_OpenSub(void)
{
    OSDExit(); //clear main page
    window=SUB1_D ;
    switch(cursor1)
    {
        case SYSTEM : cursor2=SYS_MAX; //system menu
                      OSD_OpenSystem();
                      break;

        case SCREEN : cursor2 = SCR_MAX; //screen menu
                      OSD_OpenScreen();
                      break;

        case VIDEO  : cursor2 = VIDEO_MAX; //video menu
                      OSD_OpenVideo();
                      break;

        case AUDIO  : cursor2 = AUDIO_MAX; //audio menu
                      OSD_OpenAudio();
                      break;

        case SOURCE : cursor2 = SCE_MAX; //source menu
                      OSD_OpenSource();
                      break;

        default     : OSDExit();
                      OSD_enable = 0;
                      break;
    }
}



//****************************************************************

⌨️ 快捷键说明

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