📄 audio_pro.c
字号:
#include"include.h"
//#include"iic.h"
/**********************************************************************
函数名:Set_Volume(unsigned char Add_Dec,unsigned char Vol_value)
函数说明:音量设置。
Add_Dec:1为增加,0为减小。
Vol_value:为输入音量值。
**********************************************************************/
void Set_Volume(unsigned char Add_Dec,unsigned char Vol_value)
{
unsigned char i;
i = Vol_value;
if(Add_Dec)
{
++i;
if(i > 40)i = 40;
}
else
{
--i;
if(i > 40)i = 0;
}
Audio_Volume = i;
if(i == 0)
Write7318(TDA7318,0x3f);
else{
if(Audio_state == 0x48)
{
if(speakflag == 1) //导航发声音标志
Write7318(TDA7318,(0x29 - i)); //0x30//0x34
else Write7318(TDA7318,0x3f);
}
else Write7318(TDA7318,(0x37 - i));
}
Write24C16(0x0703,Audio_Volume);
Sleep(100);
}
/**********************************************************************
函数名:SETVOLUME(unsigned char vol)
函数说明:音量设置,参数为音量值
**********************************************************************/
void SETVOLUME(unsigned char vol)
{
unsigned char i;
i = vol;
if(i > 0x3f) i = 0x3f;
if(i == 0) Write7318(TDA7318,0x3f);
else{
if(Audio_state == 0x48)
{
Write7318(TDA7318,(0x3f - i)); //0x30//0x34
}
else Write7318(TDA7318,(0x37 - i));
}
Audio_Volume = i;
Write24C16(0x0703,Audio_Volume);
Sleep(100);
}
/**********************************************************************
函数名:EQ_Ajustment(unsigned char Ajust_Obj,unsigned char EQ_Val)
函数说明:EQ设置
**********************************************************************/
void EQ_Ajustment(unsigned char Ajust_Obj,unsigned char EQ_Val)
{
unsigned char AJUSTTYPE;
unsigned char AJUSTVALUE;
AJUSTTYPE = Ajust_Obj;
AJUSTVALUE = EQ_Val;
if((AJUSTTYPE < 6) && (AJUSTVALUE < 5))
{
Write24C16((Ajust_Obj + 0x0e04),EQ_Val);
}
switch(AJUSTTYPE)
{
case 1: //低音
{
switch(EQ_Val)
{
case 0:Write7318(TDA7318,0x60);break;
case 1:Write7318(TDA7318,0x62);break;
case 2:Write7318(TDA7318,0x63);break;
case 3:Write7318(TDA7318,0x64);break;
case 4:Write7318(TDA7318,0x66);break;
default:break;
}
break;
}
case 2: //中音
{
/* switch(EQ_Val)
{
case 0:Audio_state = ((Audio_state & 0xe7) | 0x18);break;
case 1:Audio_state = ((Audio_state & 0xe7) | 0x10);break;
case 2:Audio_state = ((Audio_state & 0xe7) | 0x08);break;
case 3:Audio_state &= 0xe7;break;
case 4:Audio_state &= 0xe7;break;
default:break;
Write7318(TDA7318,Audio_state);
}
*/
break;
}
case 3: //高音
{
switch(EQ_Val)
{
case 0:Write7318(TDA7318,0x73);break;
case 1:Write7318(TDA7318,0x74);break;
case 2:Write7318(TDA7318,0x75);break;
case 3:Write7318(TDA7318,0x76);break;
case 4:Write7318(TDA7318,0x77);break;
default:break;
}
break;
}
case 4: //左右
{
switch(EQ_Val)
{
case 0:
{
Write7318(TDA7318,0x94);
Write7318(TDA7318,0xa4);
Write7318(TDA7318,0xd4);
Write7318(TDA7318,0xf4);
break;
}
case 1:
{
Write7318(TDA7318,0x8c);
Write7318(TDA7318,0xa4);
Write7318(TDA7318,0xcc);
Write7318(TDA7318,0xec);
break;
}
case 2:
{
Write7318(TDA7318,0x84);
Write7318(TDA7318,0xa4);
Write7318(TDA7318,0xc4);
Write7318(TDA7318,0xe4);
break;
}
case 3:
{
Write7318(TDA7318,0x84);
Write7318(TDA7318,0xac);
Write7318(TDA7318,0xc4);
Write7318(TDA7318,0xec);
break;
}
case 4:
{
Write7318(TDA7318,0x84);
Write7318(TDA7318,0xb4);
Write7318(TDA7318,0xc4);
Write7318(TDA7318,0xf4);
break;
}
default:break;
}
break;
}
case 5: //前后
{
switch(EQ_Val)
{
case 0:
{
Write7318(TDA7318,0x84);
Write7318(TDA7318,0xa4);
Write7318(TDA7318,0xd4);
Write7318(TDA7318,0xf4);
break;
}
case 1:
{
Write7318(TDA7318,0x84);
Write7318(TDA7318,0xa4);
Write7318(TDA7318,0xcc);
Write7318(TDA7318,0xec);
break;
}
case 2:
{
Write7318(TDA7318,0x84);
Write7318(TDA7318,0xa4);
Write7318(TDA7318,0xc4);
Write7318(TDA7318,0xe4);
break;
}
case 3:
{
Write7318(TDA7318,0x8c);
Write7318(TDA7318,0xac);
Write7318(TDA7318,0xc4);
Write7318(TDA7318,0xe4);
break;
}
case 4:
{
Write7318(TDA7318,0x94);
Write7318(TDA7318,0xb4);
Write7318(TDA7318,0xc4);
Write7318(TDA7318,0xe4);
break;
}
default:break;
}
break;
}
default:break;
}
}
/**********************************************************************
函数名:SteroMonoChange(unsigned char StMo)
函数说明:立体声和单声道设置,1为立体声,0为单声道
**********************************************************************/
void SteroMonoStereo(unsigned char StMo)
{
/* if(StMo) Audio_state |= 0x04;
else Audio_state = Audio_state & 0xfb;
Write7318(TDA7318,Audio_state);
*/
if(StMo)
{
Write7318(TDA7318,0x58);
Write7318(TDA7318,0x59);
Write7318(TDA7318,0x5a);
Write7318(TDA7318,0x5b);
}
else
{
Write7318(TDA7318,0x5c);
Write7318(TDA7318,0x5d);
Write7318(TDA7318,0x5e);
Write7318(TDA7318,0x5f); // WriteIIC_SW(TDA7540,25,0x5a);
}
}
void AudioInit(void)
{
SteroMonoStereo(1);
SETVOLUME(29);
NoMute7318();
}
void Mute7318(void)
{
Write7318(TDA7318,0x9f);
Write7318(TDA7318,0xbf);
Write7318(TDA7318,0xdf);
Write7318(TDA7318,0xff);
}
void NoMute7318(void)
{
Write7318(TDA7318,0x80);
Write7318(TDA7318,0xa0);
Write7318(TDA7318,0xc0);
Write7318(TDA7318,0xe0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -