📄 tda7440d.c
字号:
//TP67xx Audio Control .
#include "78e65.h"
#include "ext_globl.h"
#include "func_shi.h"
#include "config.h"
#if _debug
#include <stdio.h> // printf() in the file .
#endif
#include "tda7440d.h"
#define AT24C16 0xA0
#define EEPROM 0xA0
//#define TDA7440D 88
sbit AMP_MUTE = P3^4;
sbit ST_BY = P2^2;
//sbit TEST = P0^0;
void set_audio_bass_treble(char data low,char data hight);
void set_audio_right_left(char data right,char data left);
void set_audio_gain(char data value);
//void set_audio_switch(char value);
void set_audio_volume(char data value);
/**************************************************************
* Save Audio Switch to 24c16
* value (The range is 0 to 0x03)
**************************************************************/
void set_audio_switch(char value)
{
char temp;
temp=value;
if(value>0x03){
#if _debug
printf(" the input channel = %bxis out of range \n",value);
#endif
return;
}
else{
shi_sub_write(TDA7440D, 0x00, 0x00, &temp);
}
}
//================================================================
//Init Audio .
void init_audio()
{
//set_audio_mute(1);
set_audio_switch(0x00);
//printf("test dot cs\n");
DelayXms(0x30);
set_audio_volume(5);
set_audio_gain(3); DelayXms(0x30); //INPUT GAIN . 0DB
set_audio_right_left(0, 0); DelayXms(0x30); //set right and left 0DB.
set_audio_bass_treble(4, 8);DelayXms(0x30);
}
//----------------------------------------------------------------
void set_audio_mute(char a)
{
char data temp;
if(a){
#if 1
temp=0x38;
set_audio_right_left(0x78, 0x78);
shi_sub_write(TDA7440D, 02,0, &temp);
#endif
AMP_MUTE = 1;
//TEST=1;
ST_BY=0;
}
else{
}
}
//-----------------------------------------------------
// The value is 0--15.
//-----------------------------------------------------
void set_audio_volume(char data value)
{
char a;
#if 0
char vol_table[0x10]=
{0x38,0x2E, 0x28,024,0x20,0x1d,0x1a,0x18,
0x15,0x12,0x10,0x0e,0x0a,0x08,0x04,0x01};
#endif
char vol_table[0x10]=
{56,40,36,34,33,30,27,24,21,19,16,13,10,7,4,1};
vol_table[value]=0x0;
shi_sub_write(TDA7440D,0x02,00,&vol_table[value]);
DelayXms(0x30);
a=0;
shi_sub_write(EEPROM, 06, 0, &a);
PWMCON1=0X00;
PWM3=232-value*12;
PWMCON1=0XA0;
}
//
void load_audio_volume()
{
DelayXms(0x30);
set_audio_volume(volume_sel);
set_audio_right_left(0, 0);
PWMCON1=0X00;
PWM3=232-volume_sel*12;
PWMCON1=0XA0;
AMP_MUTE=0;
//TEST=0;
}
//==========================================================
void set_audio_gain(char data value)
{
value&=0x0f;
shi_sub_write(TDA7440D, 0x01, 00, &value);
}
//-------------------------------------------------------
void set_audio_bass_treble(char data low,char data hight)
{
//value&=0x0f;
char xdata bass_treble_table[0x0f]={0,1,2,3,4,5,6,7,0x0e,0x0d,0x0c,0x0b,0x0a,9,8};
if((low<0x0f)&&(hight<0x0f)){
shi_sub_write(TDA7440D, 0x03, 00, &bass_treble_table[low]);
shi_sub_write(TDA7440D, 0x05, 00, &bass_treble_table[hight]);
}
else{
#if _debug
printf("the value of bass and treble is out of range,the range is 0-0x0F\n");
#endif
shi_sub_write(TDA7440D, 0x03, 00, &bass_treble_table[7]);
shi_sub_write(TDA7440D, 0x05, 00, &bass_treble_table[7]);
}
}
//---------------------------------------------------------
void set_audio_right_left(char data right,char data left)
{
//value&=0x0f;
shi_sub_write(TDA7440D, 0x06, 00, &right);
shi_sub_write(TDA7440D, 0x07, 00, &left);
}
//--------------------------------------------------------
// save bass_treble to 24c16; ( 0x80,0x81 )
//-------------------------------------------------------
/*
void save_bass_treble()
{
char data temp;
// shi_sub_read(TDA7440D,0x03,0x00,&temp);
shi_sub_write(AT24C16,0x80,0x00,&temp);
// shi_sub_read(TDA7440D,0x05,0x00,&temp);
shi_sub_write(AT24C16,0x81,0x00,&temp);
}
//--------------------------------------------------------
void load_bass_treble()
{
char data temp;
shi_sub_read(AT24C16,0x80,0x00,&temp);
shi_sub_write(TDA7440D,0x03,0x00,&temp);
shi_sub_read(AT24C16,0x81,0x00,&temp);
shi_sub_write(TDA7440D,0x05,0x00,&temp);
}
*/
//--------------------------------------------------------
/*
void OSDFunVolume()
{
}
//--------------------------------------------------------
void OSDFunBass()
{
}
//--------------------------------------------------------
void OSDFunTreble()
{
}
//--------------------------------------------------------
void S_ForceUnmute()
{
}
//----------------------------------------------------------
void audio_osd_recall()
{
}
*/
//----------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -