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

📄 pt2320.c

📁 sunplus spca514 cdmp3 源码
💻 C
字号:
/*pt2320*/
#include <iom163.h>
#include "..\main.h"
#include "..\io.h"
#define PT_LMM      0x10
#define PT_RMM      0x20
#define PT_MC       0x30
#define PT_LMR      0x40
#define PT_RMR      0x50
#define PT_MSW		0x60
#define PT_FSEL     0x70
#define PT_BASS     0x90
#define PT_INTER    0xa0
#define PT_TREBLE   0xb0
#define PT_SWITCH   0xc0
#define PT_MVOL_ONE 0xd0
#define PT_MVOL_TEN 0xe0
#define PT_RESET    0xf0

#define DVD_CH      0x07
#define AV3_CH      0x06
#define AV2_CH      0x05
#define AV1_CH      0x04
#define TUNER_CH    0x03

unsigned char Mchvol=30,Treblevol=7,Bassvol=7,Balanceval=7,Loudnessval=0;
unsigned char pt_fsel_val=4;
#ifndef NO_SIX_CHANNEL_OUTPUT
unsigned char Schvol=8,SWchvol=8,Cchvol=8;
#endif
#define pt2320_switch(x)   pt2320_write(PT_SWITCH|x)
extern unsigned char g_avtv,muted,work_mode,rds_display_type,display_type,g_ui_tmp_msg_cnt;
extern unsigned int g_vfd_grid_buffer[];

void pt2320_3d(void)
{
	if(Loudnessval)
		pt_fsel_val &= 0x0b;
	else
		pt_fsel_val |= 0x04;
	pt2320_write(PT_FSEL|pt_fsel_val);
}

void set_balance(void)
{
	unsigned char val1;
	if(Balanceval<7)
	{
		val1= 7-Balanceval;
		val1 <<=1;
	}
	else
		val1 = 0;
	pt2320_write(PT_RMM|++val1);
	
	if(Balanceval>7)
	{
		val1=Balanceval-7;
		val1<<=1;
	}
	else
		val1 = 0;
	pt2320_write(PT_LMM|++val1);
}
#define PT2320_ADD 0x88
void pt2320_vol(void)
{
	unsigned char val_one,val_ten;
	//temp_val = Mchvol;
	if(Mchvol==0)
	{
		val_one =9;
		val_ten =7;
	}
	else
	{
		val_one = 60-Mchvol;
		val_ten = val_one/10;
		val_one %= 10;
	}
	 //Mchvol = vol_table[Mchvol];
	//VFD_volume = (BYTE)temp_val&0x3f;
	i2c_write(PT2320_ADD,PT_MVOL_TEN|val_ten,PT_MVOL_ONE|val_one);
}


unsigned char bt_trans(unsigned char val)
{
  if(val>7)
    val = (22-val);	
  return val;     
}
void pt2320_bass(void)
{
    unsigned char bass;
    bass = bt_trans(Bassvol); 
	pt2320_write(PT_BASS|bass);
	
}

void pt2320_treble(void)
{
	unsigned char treble;
	treble = bt_trans(Treblevol);
	pt2320_write(PT_TREBLE|treble);	
}
void pt2320_Cch(void)
{
  pt2320_write(PT_MC|(15-Cchvol));
}
void pt2320_SWch(void)
{
 pt2320_write(PT_MSW|(15-SWchvol));
}
void pt2320_Sch(void)
{
 i2c_write(PT2320_ADD,PT_LMR|(15-Schvol),PT_RMR|(15-Schvol));
}
void pt2320_init(void)
{
  pt2320_vol();  //vol
  set_balance();
  pt2320_bass(); //BASS
  pt2320_treble(); //treble
  pt2320_3d();
  #ifndef NO_SIX_CHANNEL_OUTPUT
  pt2320_Cch();
  pt2320_SWch();
  pt2320_Sch();
  #endif
}

void work_mode_convert(void)
{
  unsigned char i;
  #ifdef SGJM_RDS
  rds_display_type = DIS_FREQUENCY;
  #endif
 
  muted = 1;
  MCU_mute();
  delay_ms(100);
  i2c_write(PT2320_ADD,PT_MVOL_TEN|7,PT_MVOL_ONE|9);
  delay_ms(100);
  decoder_power_off();
  SPCR = 0x00;
  Set_FS1_L(); 
  switch(work_mode)
  	{
     
  	 case TUNER_MODE:               //Radio Mode
  	 	//decoder_power_off();
		Set_FS1_H();
		#ifdef SGJM_RDS
		rds_display_type = 0;
		#endif
  	 	pt2320_switch(TUNER_CH);
  	 	init_radio();
		break;

  	 case AV2_MODE:               //AV Mode
  	 	//decoder_power_off();
		pt2320_switch(AV2_CH);
  	 	break;
	 case AV1_MODE:
	     //decoder_power_off();
		 pt2320_switch(AV1_CH);
		 break;
  	 case DVD_MODE:
	    decoder_power_on();
		delay_ms(200);
		for(i=0;i<12;i++)
 		   g_vfd_grid_buffer[i] = 0;
		Set_String("  DVD");
		SPCR = 0xec;
		pt2320_switch(DVD_CH);
		break;
	 default:
	 	decoder_power_off();               //Standby Mode	
  	 	pt2320_switch(DVD_CH);
		g_avtv = 1;
		Set_AVTV();
		break;
  	}
	delay_ms(100);
	pt2320_init();
	delay_ms(100);
	if(work_mode!=POWER_OFF_MODE)
	{
	  muted = 0;
	  MCU_mute();
	};
	display_type = DISPLAY_WELCOME;
	g_ui_tmp_msg_cnt = 10;
}

⌨️ 快捷键说明

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