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

📄 pt2318.c.bak

📁 7寸TFT电视的源程序
💻 BAK
字号:
//#define DEBUG_MSG
#include "target.h"


#define	PT2318_ADDR				0x80
extern  void SaveKeyToBuff(unsigned char key);
//the subaddress for pt2318's control
enum{
	VOLUME_ADDR,
	FRONT_RIGHT_ADDR,
	FRONT_LEFT_ADDR,
	REAR_RIGHT_ADDR,
	REAR_LEFT_ADDR,
	BASS_ADDR,
	TREBLE_ADDR,
	SELECT_SWITCH_ADDR
};

enum{
	OFF_MODE,
	BASS_MODE,
	TREBLE_MODE,
	BALANCE_MODE,
	FADE_MODE
};

#define	SendPT2318Byte(subadr,ucdata)			iic_WriteByte(PT2318_ADDR,subadr,ucdata)
extern unsigned	char ucSystemMode;

//[0,51] means [-31dB,20dB]
unsigned char volume = 20;
//[0,24] means [-12dB,+12dB]
unsigned char balance =	12;
//[0,24] means [-12dB,+12dB]
unsigned char fade = 12;
//[0,18] means [-12dB,+12dB]
unsigned char bass = 12;
//[0,14] means [-12dB,+12dB]
unsigned char treble = 12;

unsigned char idata	AudioInput = 0x00;
unsigned char idata	AudioToneMode =	0;

bit	bMuteOn	= 0;
bit bNeedSaveTone = 0;

void SaveTone()
{
	WriteEepromBytes(VOL_EEPROM_ADDR,&volume,1);
	WriteEepromBytes(BASS_EEPROM_ADDR,&bass,1);
	WriteEepromBytes(TREBLE_EEPROM_ADDR,&treble,1);
	WriteEepromBytes(FADE_EEPROM_ADDR,&fade,1);
	WriteEepromBytes(BALANCE_EEPROM_ADDR,&balance,1);
	ShowLcdHex(0x40,bass);
	ShowLcdHex(0x42,treble);
	ShowLcdHex(0x44,fade);
	ShowLcdHex(0x46,balance);
}

void LoadTone()
{
	ReadEepromBytes(VOL_EEPROM_ADDR,&volume,1);
	ReadEepromBytes(BASS_EEPROM_ADDR,&bass,1);
	ReadEepromBytes(TREBLE_EEPROM_ADDR,&treble,1);
	ReadEepromBytes(FADE_EEPROM_ADDR,&fade,1);
	ReadEepromBytes(BALANCE_EEPROM_ADDR,&balance,1);
	SendPT2318Byte(VOLUME_ADDR,0x80);//andy

	if(volume>VOL_MAX)
		volume = 20;
	if(bass>MAX_BASS)
		bass = 12;
	if(treble>MAX_TREBLE)
		treble = 12;
	if(fade>MAX_FADE)
		fade = 12;
	if(balance>MAX_BALANCE)
		balance = 12;
	ShowLcdHex(0x50,bass);
	ShowLcdHex(0x52,treble);
	ShowLcdHex(0x54,fade);
	ShowLcdHex(0x56,balance);
}

/****************************************************************
*volume	:[0,51]	means [-31dB,20dB]
****************************************************************/

void SetVolume(unsigned	char vol)
{
	unsigned char code VolArray[VOL_MAX+1] = {
		0x0C,0x0D,0x0E,0x0F,
		0x10,0x11,0x12,0x13,
		0x14,0x15,0x16,0x17,
		0x18,0x19,0x1A,0x1B,
		0x1C,0x1D,0x1E,0x1F,
		0x20,0x21,0x22,0x23,
		0x24,0x25,0x26,0x27,
		0x28,0x29,0x2A,0x2B,
		0x2C,0x2D,0x2E,0x31,
		0x34,0x37,0x3A,0x3D,
		0x3F
	};
	if(vol>VOL_MAX)
		vol	= VOL_MAX;

	if(vol==0)
		PT2318MuteOn();
	else if(bMuteOn){
		PT2318MuteOff();
	//	MuteOff();
		}

	SendPT2318Byte(VOLUME_ADDR,VolArray[vol]);
}

void PT2318MuteOff()
{
	bMuteOn	= 0;
	SendPT2318Byte(SELECT_SWITCH_ADDR,AudioInput);
}

void PT2318MuteOn()
{
	bMuteOn	= 1;
	SendPT2318Byte(SELECT_SWITCH_ADDR,AudioInput|0x80);
}

void MuteOff()
{
	unsigned char i;
	unsigned int j;
	unsigned char step = volume>>2;
	unsigned char uctemp = 0;
	if(volume ==0)
		return;
	HwMuteOff();
	for(j=0;j<1000;j++);
	if(step<1)
		step = 1;
	for(i=0;i<4;i++){
		if(uctemp+step <volume){
			uctemp += step;
			SetVolume(uctemp);
		}
		else{
			uctemp = volume;
			SetVolume(uctemp);
			break;
		}
		for(j=0;j<200;j++);
	}
}

void MuteOn()
{
	unsigned char i;
	unsigned int j;
	unsigned char step = volume>>2;
	unsigned char uctemp = volume;
	if(step<1)
		step = 1;
	for(i=0;i<4;i++){
		if(uctemp>=step)
			uctemp -= step;
		else if(uctemp)
			uctemp = 0;
		else
			break;
		for(j=0;j<200;j++);
		SetVolume(uctemp);
	}
	HwMuteOn();
}

//bass [-9,+9]
//[-12,+12]	-- [0,24]
//reg [4,15] ==	[-12,-1], [16==17] 0db,[18,29] == []
//
void SetBass(unsigned bass)
{
	unsigned char code BassArray[25]={
		0x06,0x06,0x06,0x07,
		0x08,0x09,0x0a,0x0b,
		0x0c,0x0d,0x0e,0x0f,
		0x10,			//0dB
		0x12,0x13,0x14,0x15,
		0x16,0x17,0x18,0x19,
		0x1A,0x1B,0x1B,0x1b
	};
	if(bass	>24)
		bass = 24;
	SendPT2318Byte(BASS_ADDR,BassArray[bass]);
}

void SetTreble(unsigned	char treble)
{
	unsigned char code TrebleArray[25]={
		0x08,0x08,0x08,0x08,
		0x08,0x09,0x0a,0x0b,
		0x0c,0x0d,0x0e,0x0f,
		0x10,			//0dB
		0x12,0x13,0x14,0x15,
		0x16,0x17,0x18,0x19,
		0x19,0x19,0x19,0x19
	};
	if(treble >	24)
		treble = 24;
	SendPT2318Byte(TREBLE_ADDR,TrebleArray[treble]);
}


/****************************************************************
*fade :[56,55,0] means [MUTE,-55dB,0dB]
****************************************************************/


unsigned char code faderarray[]=
	{
		FADER_0DB ,
		FADER_2DB ,
		FADER_4DB ,
		FADER_6DB ,
		FADER_8DB ,
		FADER_10DB ,
		FADER_12DB ,
		FADER_14DB ,
		FADER_16DB ,
		FADER_18DB ,
		
		FADER_20DB ,
		FADER_22DB ,
		FADER_24DB ,
		FADER_26DB ,
		FADER_28DB ,
		FADER_30DB ,
		FADER_32DB ,
		FADER_34DB ,
		FADER_36DB ,
		FADER_38DB ,
		
		FADER_40DB ,
		FADER_42DB ,
		FADER_44DB ,
		FADER_46DB ,
		FADER_48DB 
	};


void SetFader()
{
	unsigned char vol_fr =0,vol_fl =0,vol_rr =0,vol_rl =0;

	if(	balance <= 12){
		vol_fl += (12-balance);
		vol_rl += (12-balance);
	}
	else{
		vol_fr += (balance-12);
		vol_rr += (balance-12);
	}

	if(fade<= 12){
		vol_rr += (12-fade);
		vol_rl += (12-fade);
	}
	else{
		vol_fr += (fade-12);
		vol_fl += (fade-12);
	}
	
	SendPT2318Byte(FRONT_RIGHT_ADDR,faderarray[vol_fr]);
	SendPT2318Byte(FRONT_LEFT_ADDR,faderarray[vol_fl]);
	SendPT2318Byte(REAR_RIGHT_ADDR,faderarray[vol_rr]);
	SendPT2318Byte(REAR_LEFT_ADDR,faderarray[vol_rl]);
}

void SelectAudioIn(unsigned	char audioin)
{
	switch(audioin){
		case IN1_AUDIO:
			AudioInput = 0x07;
		break;
		case IN2_AUDIO:
			AudioInput = 0x06;
		break;
		case IN3_AUDIO:
			AudioInput = 0x05;
		break;
		case IN4_AUDIO:
			AudioInput = 0x04;
		break;
		default:		//MONO_AUDIO
			AudioInput = 0x00;
		break;
	}
	if(bMuteOn)
		SendPT2318Byte(SELECT_SWITCH_ADDR,AudioInput|0x80);
	else
		SendPT2318Byte(SELECT_SWITCH_ADDR,AudioInput);
}

 
 

 

void FpDisplayBass(unsigned char ucvalue)
{
	 
}

void FpDisplayTreble(unsigned char ucvalue)
{
	 
}

 

 
void FpDisplayTone()
{
	 
}

void AudioToneDealFunc(unsigned	int	uikey)
{
	switch(uikey){
		case TONE_KEY:
		case SETUP_KEY:
		case VOL_UP_KEY:
		case VOL_DOWN_KEY:
			if(AudioToneMode==0){
				AudioToneMode =	BASS_MODE;
				FpDisplayTone();
				SetTimerFunc(TIME_5SEC,TONE_KEY);
			}
			else{
				AudioToneMode =	0;
				if(bNeedSaveTone){
					bNeedSaveTone = 0;
					SaveTone();
				}
				SaveKeyToBuff(REDRAW_KEY);
				SetTimerFunc(0,0);
			}
		break;

		case LEFT_KEY:
			if(AudioToneMode){
				if(AudioToneMode>BASS_MODE)
					AudioToneMode--;
				else
					AudioToneMode =	FADE_MODE;
				FpDisplayTone();
				SetTimerFunc(TIME_5SEC,TONE_KEY);
			}
		break;

		case RIGHT_KEY:
			if(AudioToneMode){
				if(AudioToneMode<FADE_MODE)
					AudioToneMode++;
				else
					AudioToneMode =	BASS_MODE;
				FpDisplayTone();
				SetTimerFunc(TIME_5SEC,TONE_KEY);
			}
		break;
		case UP_KEY:
			bNeedSaveTone = 1;
			switch(AudioToneMode){
				case BASS_MODE:
					if(bass<MAX_BASS){
						bass++;
						FpDisplayTone();
						SetBass(bass);
					}
				break;
				case TREBLE_MODE:
					if(treble<MAX_TREBLE){
						treble++;
						FpDisplayTone();
						SetTreble(treble);
					}
				break;
				case BALANCE_MODE:
					if(balance<MAX_BALANCE){
						balance++;
						SetFader();
						FpDisplayTone();
					}
				break;
				case FADE_MODE:
					if(fade<MAX_FADE){
						fade++;
						FpDisplayTone();
						SetFader();
					}
				break;
			}
			SetTimerFunc(TIME_5SEC,TONE_KEY);
		break;
		case DOWN_KEY:
			bNeedSaveTone = 1;
			switch(AudioToneMode){
				case BASS_MODE:
					if(bass){
						bass--;
						FpDisplayBass(bass);
						SetBass(bass);
						FpDisplayTone();
					}
				break;
				case TREBLE_MODE:
					if(treble){
						treble--;
						FpDisplayTreble(treble);
						SetTreble(treble);
						FpDisplayTone();
					}
				break;
				case BALANCE_MODE:
					if(balance){
						balance--;
						SetFader();
						FpDisplayTone();
					}
				break;
				case FADE_MODE:
					if(fade){
						fade--;
						SetFader();
						FpDisplayTone();
					}
				break;
			}
			SetTimerFunc(TIME_5SEC,TONE_KEY);
		break;
	}
}

⌨️ 快捷键说明

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