📄 pt2318.c.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 + -