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

📄 pt2313.c

📁 pt2313在车载播放器上的应用
💻 C
字号:
#include <reg51.h>										//包含公共头文件
#include <string.h>
#include <intrins.h>

#include "itm704io.h"
#include "i2c.h"

#include "type.h"
#include "utility.h"
#include "pt2313.h"


extern   unsigned char xdata     ITM_CHANSHU[30];//系统中要存储的变量
//////////////////////////////////////////////////////////////////PT2313中要存储的变量
         #define  ItmVolume      ITM_CHANSHU[0]//系统音量
         #define  ItmBass        ITM_CHANSHU[1]//系统低音
         #define  ItmTreb        ITM_CHANSHU[2]//系统高音
         #define  ItmBaL         ITM_CHANSHU[3]//左右平衡 
         #define  ItmFaD         ITM_CHANSHU[4]//前后平衡    
         #define  ItmLoud        ITM_CHANSHU[5]//系统响度
	     #define  ItmMute        ITM_CHANSHU[6]//系统静音

/////////////////////////////////////////////////////////////////6606存储的相应变量
         #define  CurrentBand    ITM_CHANSHU[7]//当前波段
         #define  CurrentPreset  ITM_CHANSHU[8]//当前电台
         #define  RadioMono      ITM_CHANSHU[10]//立体声
/////////////////////////////////////////////////////////////////7842存储的变量
         #define  ItmPower       ITM_CHANSHU[11]//系统电源标志
         #define  ItmMode        ITM_CHANSHU[12]//itm704当前状态(USB ,CARD,)
         #define  EqValue        ITM_CHANSHU[13]//EQ的索引值
	     #define  AmFlag         ITM_CHANSHU[14]//AM/PM标志


extern void Pt2313_Bal_Change(void)
{
    unsigned char ucFL,ucFR,ucBL,ucBR;//前左,前右,后左,后右
    unsigned char ucMax;
    unsigned char Buf[4];
    unsigned int u16Temp; //ADD_VAR_FOR_CALCULATION simon 2006.05.06

   
    
    ucFL = ItmBaL + ItmFaD;//pt2313的按5档衰减量
    ucFR = 10-ItmBaL+ItmFaD;
    ucBL = 10-ItmFaD+ItmBaL;
    ucBR = 20-ItmBaL-ItmFaD;

     ucMax = ucFL;
    if(ucFR > ucMax)
        ucMax = ucFR;
    if(ucBL > ucMax)
        ucMax = ucBL;
    if(ucBR > ucMax)
        ucMax = ucBR;
    
    u16Temp = ucFL * 28;//计算pt2313的四个输出通道衰减字节数据(28档)
    ucFL = 28 - (u16Temp / ucMax);
    u16Temp = ucFR * 28;
    ucFR = 28 - (u16Temp / ucMax);
    u16Temp = ucBL * 28;
    ucBL = 28 - (u16Temp/ucMax);
    u16Temp = ucBR * 28;
    ucBR = 28 - (u16Temp / ucMax);
    

    if(ItmBaL == 10)
    {
        ucFR = 0x1f;
        ucBR = 0x1f;
    }
    else if(ItmBaL == 0)
    {
        ucFL = 0x1f;
        ucBL = 0x1f;
    }

    if(ItmFaD == 10)
    {
        ucBR = 0x1f;
        ucBL = 0x1f;
    }
    else if(ItmFaD == 0)
    {
        ucFR =0x1f;
        ucFL =0x1f;
    }

    Buf[0] = ucFL + 0xe0;//RR
    Buf[1] = ucFR + 0xc0;//LR
    Buf[2] = ucBL + 0xa0;//RF
    Buf[3] = ucBR + 0x80;//LF
  
    for(ucMax=0;ucMax<4;ucMax++)
   {I2C_Send_Byte(PT2313_ADDR,Buf[ucMax]);
    I2C_WrAck(PT2313_ADDR);
   }

 
}



/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
程序名称:   PT2313Drive
程序功能:   控制PT2313
入口参数:   无
出口参数:   无
调用子程序: 
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

extern void PT2313Drive ( unsigned char TempSign)
   {  unsigned char   Count;
    
    
			   I2C_Start(PT2313_ADDR);
               I2C_Send_Byte(PT2313_ADDR,PT2313_ADDR);
		       I2C_WrAck(PT2313_ADDR);

			           switch ( TempSign )
			          {        
							   case PT2313VOL:     if(ItmVolume>ITM_VOLUME_MAX)//如果音量超过上限
							                        {ItmVolume=ITM_VOLUME_MAX;}//则等于上限
                                                    I2C_Send_Byte(PT2313_ADDR,ITM_VOLUME_TABLE[ItmVolume]); //(VOL)音量控制	
						                            I2C_WrAck(PT2313_ADDR);             											                  													   
													break; 
			                   case PT2313BASS:    if(ItmBass>ITM_BASS_MAX)
          					                        ItmBass=ITM_BASS_MAX;
													I2C_Send_Byte(PT2313_ADDR ,ITM_BASS_TABLE[ItmBass]); //低音(Bass)控制
	                                                I2C_WrAck(PT2313_ADDR);
													break;

							   case PT2313TREB:    if(ItmTreb>ITM_TREB_MAX)
							                        ItmTreb=ITM_TREB_MAX;
							                        I2C_Send_Byte(PT2313_ADDR ,ITM_TREB_TABLE[ItmTreb]);//高音控制
                                                    I2C_WrAck(PT2313_ADDR);
													break; 
 							   case PT2313BAL:     
							   case PT2313FAD:      if(ItmBaL>ITM_BAl_MAX)
							                        ItmBaL=ITM_BAl_MAX;
                                                    if(ItmFaD>ITM_FAD_MAX)
							                        ItmFaD=ITM_FAD_MAX;
                                                    Pt2313_Bal_Change();

							                        break;                     //平衡控制	   
													
							    case PT2313LIN:     if(ItmLoud>ITM_LOUD_MAX)
								                    ItmLoud=ITM_LOUD_MAX;
								                    Count=ITM_SWITCH_TABLE[ItmMode];
							                        Count|=0x00;
                                                    if(ItmLoud)
                                                    {Count|= 0x04;}//
												     Count|=0x40;  
                                                    I2C_Send_Byte (PT2313_ADDR,Count);//音源切换
	                                                I2C_WrAck(PT2313_ADDR);
													break;							                                  
												 
								case PT2313MUTE:     for ( Count = 0; Count < 4; Count ++ )//静音控制	       
							                        {
													  I2C_Send_Byte(PT2313_ADDR,ITM_MUTE_TABLE[Count]);
                                                      I2C_WrAck(PT2313_ADDR);
													}	   
													break; 
                                case PT2313INI:      for ( Count = 0; Count < 4; Count ++ )
							                        {
                                                      I2C_Send_Byte(PT2313_ADDR,ITM_SPEAKER_TABLE[Count]);//左右平衡的初始化
													  I2C_WrAck(PT2313_ADDR);
													}

						                            break;                    //PT2313初始化

	   
							   default:				break;  
													
                      
			   }


         
                     
			I2C_Stop(PT2313_ADDR);
          
   }	





 










⌨️ 快捷键说明

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