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

📄 tda7440d.c

📁 Vx1828点3.5"TFT屏的的源程序
💻 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 + -