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

📄 osdctrl.c

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 C
📖 第 1 页 / 共 5 页
字号:
		}
		else
		{
			PortDataOut((MainMenuCols+1)*7+7, UPDATE_CODE, buff, 16);
			if(AdjustFlag)
				SetOSDData((MainMenuCols+1)*7+7, UPDATE_ATTR, 0x36, 16);
			else
				SetOSDData((MainMenuCols+1)*7+7, UPDATE_ATTR, 0xD6, 16);
		}

		converInt(eepData.volume-MIN_volume);
		if (cursor == HOT_VOLUME)
			PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
		else
			PortDataOut((MainMenuCols+1)*7+23, UPDATE_CODE, buff, 3);
              	        
                        converInt(val);
			if (cursor == HOT_VOLUME ) 
				PortDataOut((SubMenuCols+1)*4+19, UPDATE_CODE, buff, 3);
			else  
           		PortDataOut((MainMenuCols+1)*14+24, UPDATE_CODE, buff, 3);

    	}
    	eepDataOut(EEPDATASTART+(&eepData.volume-&eepData),(unsigned char *)&eepData.volume, 1);        	
    }
}

void setVolume(unsigned char volume)
{	

   RegByteOut(0xae, volume);			//PWM1 High Period
   RegByteOut(0xaf, 100-volume);		//PWM1 Low  Period
   
//   RegByteOut(0xae, 100-volume);			//PWM1 High Period
//   RegByteOut(0xaf, volume);		//PWM1 Low  Period

   RegBitOut(0xab,0x08,0x08);

/*
	if (volume == 0)
	{
		AUDIO_MUTE_PIN = 1;		//20021224
		AUDIO_STBY_PIN = 1;		//20021224
	}
	else
	{
		AUDIO_MUTE_PIN = 0;		//20021224
		AUDIO_STBY_PIN = 0;		//20021224
	}
*/
}

#else
void load_exit_font_data(void)
{
	OSDRegByteOut(0x78,0x40);
   	PortDataOut(0xcb, PORT_FONT, exit_data, sizeof(exit_data) / sizeof(char));
	OSDRegByteOut(0x78, 0x00);

	RegByteOut(0xC0, 0x3C);	// Select Normal Registers
}
#endif

/************************************************
* brightness adjustment                         *
*************************************************/
void adjBrightness(char delta, bit show)
{
	delta += eepData.brightness;
	if (delta >= MAX_brightness) 
		eepData.brightness = MAX_brightness;
	else if (delta <= MIN_brightness) 
		eepData.brightness = MIN_brightness;
	else
		eepData.brightness = delta;
       	setBrightness(eepData.brightness);

	if (show)
	{
		if (cursor == HOT_BRIGHTNESS)
			PortDataOut((MainMenuCols+1)*5+10, UPDATE_CODE, brightnessData[eepData.language], sizeof(brightnessData[0]) / sizeof(char));
		else
			PortDataOut((MainMenuCols+1)*7+10, UPDATE_CODE, brightnessData[eepData.language], sizeof(brightnessData[0]) / sizeof(char));

		DisplayScrollBar((unsigned int)(MAX_brightness-MIN_brightness), eepData.brightness-MIN_brightness);
		if (cursor == HOT_BRIGHTNESS)
		{
			PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
//			PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 17);
			SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
		}
		else
		{
			PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
		}

		converInt(eepData.brightness-MIN_brightness);
		if (cursor == HOT_BRIGHTNESS)
			PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
		else
			PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);
	}
	eepDataOut(EEPDATASTART+(&eepData.brightness-&eepData),(unsigned char *)&eepData.brightness, 1);        	
}

/************************************************
* contrast adjustment                           *
***********************************************/
void adjContrast(char delta, bit show)
{
	delta += eepData.contrast;
	if (delta >= MAX_contrast) 
		eepData.contrast = MAX_contrast;
	else if (delta <= MIN_contrast) 
		eepData.contrast = MIN_contrast;
	else
		eepData.contrast = delta;
	setDigitalContrastRGB();
             
	if (show) 
	{
		if (cursor == HOT_CONTRAST)
			PortDataOut((MainMenuCols+1)*5+10, UPDATE_CODE, contrastData[eepData.language], sizeof(contrastData[0]) / sizeof(char));
		else
			PortDataOut((MainMenuCols+1)*4+10, UPDATE_CODE, contrastData[eepData.language], sizeof(contrastData[0]) / sizeof(char));

		DisplayScrollBar((unsigned int)(MAX_contrast-MIN_contrast), eepData.contrast-MIN_contrast);  
		if (cursor == HOT_CONTRAST)
		{
			PortDataOut((MainMenuCols+1)*6+7, UPDATE_CODE, buff, 16);
//			PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
			SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
		}
		else
		{
			PortDataOut((MainMenuCols+1)*5+7, UPDATE_CODE, buff, 16);
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);
		}

      	  	converInt(eepData.contrast-MIN_contrast); 
      	 	if (cursor == HOT_CONTRAST)
      	 		PortDataOut((MainMenuCols+1)*6+23, UPDATE_CODE, buff, 3);
      	 	else
      	 		PortDataOut((MainMenuCols+1)*5+23, UPDATE_CODE, buff, 3);
	}
	eepDataOut(EEPDATASTART+(&eepData.contrast-&eepData),(unsigned char *)&eepData.contrast, 1);        	
}


void setScrollBarAttr(char colorR)
{
	if(colorR == 1)
	{
		if((cursor & 0x0F) == 0)
//			PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
		else if((cursor & 0x0F) == 1)
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
		else if((cursor & 0x0F) == 4)
//			PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0x36, 16);
		else if((cursor & 0x0F) == 6)
//			PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0x36, 16);
		else if((cursor & 0x0F) == 8)
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0],sizeof(ScrollBarAttrData[0]/sizeof(char)));		
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
	}
	else
	{
		if((cursor & 0x0F) == 0)
//			PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);
		else if((cursor & 0x0F) == 1)
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
		else if((cursor & 0x0F) == 4)
//			PortDataOut((MainMenuCols+1)*4+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*4+7, UPDATE_ATTR, 0xD6, 16);
		else if((cursor & 0x0F) == 6)
//			PortDataOut((MainMenuCols+1)*6+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*6+7, UPDATE_ATTR, 0xD6, 16);
		else if((cursor & 0x0F) == 8)
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2],sizeof(ScrollBarAttrData[1]/sizeof(char)));
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
	}
}


#if USE_PWM_BRIGHTNESS
void setBrightness(unsigned char brightness)
{
#if (MVPL_CMO17 + MVRL_SANYO15)
	RegByteOut(0xAc, brightness);
	RegByteOut(0xAd, MAX_brightness-MIN_brightness-brightness);
#else	//if MVRL_NEC15
	RegByteOut(0xAc, MAX_brightness-MIN_brightness-brightness);
	RegByteOut(0xAd, brightness);
#endif
	RegBitOut(0xAB,0x14,0x14);
	
}
#endif



/***********************************
* pitch adjustment                 *
************************************/
void adjPitch(char delta,bit show)
{
	if (eepModeData.pitch_val > MAX_pitch) eepModeData.pitch_val = MAX_pitch;
	if (eepModeData.pitch_val < MIN_pitch) eepModeData.pitch_val = MIN_pitch;
                               
	if ((eepModeData.pitch_val + delta) >= MIN_pitch  &&
	(eepModeData.pitch_val + delta) <= MAX_pitch)
	{
        	eepModeData.pitch += delta;
		eepModeData.pitch_val += delta;
		miscSetADCPitch(eepModeData.pitch);
	}

	if (show)
	{			
		/* data */
		PortDataOut((MainMenuCols+1)*7+8, UPDATE_CODE, clockData[eepData.language], sizeof(clockData[0]) / sizeof(char));
		DisplayScrollBar((unsigned int)MAX_pitch,(unsigned int)eepModeData.pitch_val);
		PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
		if(AdjustFlag)
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
		else
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);

		//converInt((int)eepModeData.pitch_val);
		converInt((int)eepModeData.pitch_val);
           	PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);   
	}
	updateModeData();
}

/***********************************
* phase adjustment                 *
************************************/
void adjPhase(char delta,bit show)
{

	if (eepModeData.phase > MAX_phase) eepModeData.phase = MAX_phase;
	if (eepModeData.phase < MIN_phase) eepModeData.phase = MIN_phase;

   	if((eepModeData.phase + delta) >= MIN_phase && (eepModeData.phase + delta) <= MAX_phase)
   	{
        	eepModeData.phase += delta;
	        miscSetADCPhase(eepModeData.phase);
	}

	if (show)
	{			

		PortDataOut((MainMenuCols+1)*4+9, UPDATE_CODE, phaseData[eepData.language], sizeof(phaseData[0]) / sizeof(char));
		DisplayScrollBar((unsigned int)MAX_phase, (unsigned int)(eepModeData.phase&PHASEMSK));
		PortDataOut((MainMenuCols+1)*5+7, UPDATE_CODE, buff, 16);
		if(AdjustFlag)
//			PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
			SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
		else
//			PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
			SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);

		ival =  (unsigned int)(eepModeData.phase&PHASEMSK);
		ival = ival*100/MAX_phase;
            	converInt((int) ival);
           	PortDataOut((MainMenuCols+1)*5+23, UPDATE_CODE, buff, 3);    
	}            
	updateModeData();
}

/*************************************************
* Display H possition adjustment                 *
**************************************************/
void adjHPos(char delta,bit show)
{

	if (eepModeData.hstart > MAX_hstart) eepModeData.hstart = MAX_hstart;
	if (eepModeData.hstart < MIN_hstart) eepModeData.hstart = MIN_hstart;


	if ((eepModeData.def_hstart >= 51)&&(eepModeData.def_hstart <= 300))
	{
		MAX_Hstart = eepModeData.def_hstart + 50; 
		MIN_Hstart = eepModeData.def_hstart - 50;
	}	
	else if (eepModeData.def_hstart < 51)
	{ 	
		MAX_Hstart = MIN_hstart+100;						
		MIN_Hstart = MIN_hstart;
	}
	else if (eepModeData.def_hstart > 300)
	{ 	
		MAX_Hstart = MAX_hstart;						
		MIN_Hstart = MAX_hstart-100;
	}	
	
    if ((eepModeData.hstart-delta) >= MIN_Hstart && (eepModeData.hstart-delta) <= MAX_Hstart)
    {
        eepModeData.hstart -= delta;

     	buff[0] = eepModeData.hstart & 0xFF;
     	buff[1] = (eepModeData.hstart >>8) &0x07;
     	RegDataOut(0x34, buff, 2);
	}
	
	if(show)
	{
		
		/* data */
		PortDataOut((MainMenuCols+1)*4+8, UPDATE_CODE, hposData[eepData.language], sizeof(hposData[0]) / sizeof(char));
        	DisplayScrollBar((unsigned int)(MAX_Hstart-MIN_Hstart), (unsigned int)(MAX_Hstart-eepModeData.hstart));
        	PortDataOut((MainMenuCols+1)*5+7, UPDATE_CODE, buff, 16);
		if(AdjustFlag)
//			PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
			SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0x36, 16);
		else
//			PortDataOut((MainMenuCols+1)*5+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
			SetOSDData((MainMenuCols+1)*5+7, UPDATE_ATTR, 0xD6, 16);

        	//if (eepModeData.def_hstart < 51)
        	//	converInt(MAX_Hstart-eepModeData.hstart-50-(51-eepModeData.def_hstart));
        	//else
       		converInt(MAX_Hstart-eepModeData.hstart);
        	PortDataOut((MainMenuCols+1)*5+23, UPDATE_CODE, buff, 3);
	}
	updateModeData();
}

/**********************************************
* Display V possition adjustment              *
***********************************************/
void adjVPos(char delta,bit show)
{
	unsigned char step;
	
	if (eepModeData.vstart > MAX_vstart)	eepModeData.vstart = MAX_vstart;
	if (eepModeData.vstart < MIN_vstart)	eepModeData.vstart = MIN_vstart;	
	
	step = ((eepModeData.def_vstart - MIN_vstart) > (MAX_vstart - eepModeData.def_vstart)) ? (MAX_vstart - eepModeData.def_vstart):(eepModeData.def_vstart - MIN_vstart);
	step = (step > 30) ? 30: step;

	if ((eepModeData.def_vstart >= step+2 ) && (eepModeData.def_vstart <= MAX_vstart-step ))
	{
		MAX_Vstart = eepModeData.def_vstart + step;
		MIN_Vstart = eepModeData.def_vstart - step;
	}	
	else if (eepModeData.def_vstart < step+2 )
	{ 	
		MAX_Vstart = (step*2)+2;						
		MIN_Vstart = 2;
	}
	else if (eepModeData.def_vstart > MAX_vstart-step )
	{ 	
		MAX_Vstart = MAX_vstart;						
		MIN_Vstart = MAX_vstart-2*step;
	}


	if ((eepModeData.vstart+delta) >= MIN_Vstart && (eepModeData.vstart+delta) <= MAX_Vstart)
    {
        eepModeData.vstart += delta;

        buff[0] = eepModeData.vstart & 0xFF;
        buff[1] = 0;
        RegDataOut(0x36, buff, 2);
	}
      
	if (show)
	{
		/* data */
		PortDataOut((MainMenuCols+1)*7+8, UPDATE_CODE, vposData[eepData.language], sizeof(vposData[0]) / sizeof(char));
      		DisplayScrollBar((unsigned int)(MAX_Vstart-MIN_Vstart), (unsigned int)(eepModeData.vstart-MIN_Vstart));
      		PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);
		if(AdjustFlag)
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
		else
//			PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
			SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);

      		ival = eepModeData.vstart-MIN_Vstart;
      		ival *= 100;
      		ival /= (MAX_Vstart-MIN_Vstart);
       		converInt(ival);
       		PortDataOut((MainMenuCols+1)*8+23, UPDATE_CODE, buff, 3);
	}
	updateModeData();
}


/************************************************
* OSD Time adjustment                          *
*************************************************/
void adjOSDTime(char delta, bit show)
{	
	int val;

	val = eepData.osdTime + delta;
    
	if (val >= MIN_osdTime && val <= MAX_osdTime)
	{
		eepData.osdTime = val;
        
		if (show)
		{
			PortDataOut((MainMenuCols+1)*7+8, UPDATE_CODE, osdtimeroutData[eepData.language], sizeof(osdtimeroutData[0]) / sizeof(char));
			DisplayScrollBar((unsigned int)MAX_osdTime, val);
			PortDataOut((MainMenuCols+1)*8+7, UPDATE_CODE, buff, 16);                	
			if(AdjustFlag)
//				PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[0], 16);
				SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0x36, 16);
			else
//				PortDataOut((MainMenuCols+1)*8+7,UPDATE_ATTR,ScrollBarAttrData[2], 16);
				SetOSDData((MainMenuCols+1)*8+7, UPDATE_ATTR, 0xD6, 16);
			converInt(val);
		

⌨️ 快捷键说明

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