欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 505|回復: 2
打印 上一主題 下一主題
收起左側

關于PT2314音調程序的求教,希望找個老師傅指導一下

[復制鏈接]
跳轉到指定樓層
樓主
想做個PT2314音調板,單片機用的STC32G,
從網上找了個例子程序,但是怎樣弄都不出聲,耳機里只有很微弱的聲音
好像是串擾過來的,PT2314根本沒正常工作,實在頭大,希望壇子里的大
神幫忙指導一下,
我是想用四個按鍵控制PT2314音量,高音低音等功能

上面是PT2314的初始化程序,這塊是網上復制來的
編譯沒發現什么問題



這塊是我想要開機先選擇第一通道,也就是RIN1和LIN1,分別是PT2314的第16腳和第11腳,
然后音量和高低音信息可以通過按鍵調整,每次設置完后送到STC32G單片機的閃存區保存,
掉電后再開機先從STC32G單片機閃存區讀出來上次保存的相關信息并送到LCD19264顯示

PT-2314程序.zip (136.14 KB, 下載次數: 0)


我也理解大家都很忙,希望哪位大神可以抽空指導一下,謝謝!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:229502 發表于 2026-2-15 23:21 | 只看該作者
發一個好久前網上找的主程序,版主可參考


/*****************************************************
SCH是網上找的,也可參照手冊的:
我用的是PT2314E低電壓(4~10V) 我仔細看了一下操作方法跟PT2314一樣,也有喝多其他兼容的IC
PT2314/CSC2314四聲道輸入音質處理器IC應用電路原理圖及使用指導說明
功能概述和特性
PT2314四組立體聲輸入,兩聲道輸出。輸入帶響度的數字控制立體聲音質處理
器,IIC控制,6V-10V,兼容PT2314/CSC2313/TC7314/CD3314,采用SOP-28/DIP-
28封裝。它適用于車載收音機和高保_真音質系統。本產品提供可選擇的輸入增益和外部
響度功能,并且由微處理器串行I2C總線介面控制。主要功能如下:
① 使用CMOS技術
② 輸入多路復用:
4個立體聲輸入
對不同的音源具有最佳適應的可選擇的輸入增益
③ 帶響度功能,高音,低音控制
④ 音量控制(每級1.25dB)
⑤ 高音和低音控制
⑥ 二個喇叭衰減器:
二個獨立的揚聲器均衡和音量控制裝置
獨立的靜音功能
⑦ 通過串性I2C總線可實現所有功能的程序化。
代碼:


START condition:

SCLK: -----------|______
                     
SDIO:-----|_____________
       1  |   2  |  3

STOP condition:

SCLK: ____|--------------
                     
SDIO:____________|-------
              1 |  2   |   3

DATA:

SCLK:_______________|---|________|----|_______
                     
SDIO:___________|------------|____________|----
                            |<==========>|


RESET:

SENB:__|---------------------------------------------
SDIO:_________________________________________|------
RST:  ___________|------------------------------------
SCLK:__|---------------------------------------------
       |    1    |             2                                |   3

START condition:

SCLK: -----------|______
                     
SDIO:-----|_____________
       1  |   2  |  3
falling edge of SDIO while SCLK is
high) does not occur within 300 ns before the rising edge of RST.  
**************************************/      
void  start()
{

P0CONL  = 0xB8; // 輸出 // Configure SDIO as push-pull
  set_sdio;
        set_sclk;
        __NOP();__NOP();// tSU:STA
        clr_sdio;
        __NOP();__NOP();// tHD:STA
        clr_sclk;
}
void iic_stop()
{
P0CONL  = 0xB8; // 輸出 // Configure SDIO as push-pull
  clr_sclk;
  __NOP();__NOP();// tf:IN + tLOW
        clr_sdio;
        __NOP();__NOP();
        set_sclk;      
        __NOP();__NOP();        // tf:IN + tSU:STO
        set_sdio;
}
//////////////////I2C不應答//////////
void noack()
{
P0CONL  = 0xB8;// 輸出// Configure SDIO as push-pull
        set_sdio ;
__NOP();__NOP(); // tf:IN + tLOW
        set_sclk;;      
  __NOP();__NOP();// tf:IN + tHIGH  
}
////////////*發送應答位*/////////////////////
void mack( )
{
P0CONL  = 0xB8;// 輸出// Configure SDIO as open-drain
        clr_sdio;
  __NOP();__NOP();  // tf:IN + tLOW
        set_sclk;;      
  __NOP();__NOP();// tf:IN + tHIGH
}
//////////I2C等待器件應答///////////////
void ack()
{
        unchar i=200;
  P0CONL  = 0x88; // 輸入
         clr_sclk ;
        __NOP();__NOP();// tf:IN + tLOW
         set_sclk ;
         __NOP();__NOP();// tf:IN + tHIGH
        while (--i)                           //等待ASK
        {
                __NOP();__NOP();
                //set_sdio ;                           //釋放總線
                if (!test_sdio) break; //跳出
                //clr_sclk ; //??????????????????????????????
        }
        clr_sclk ;
        __NOP();__NOP();// tf:IN
}
/////////I2C讀一個字節//////////////
unsigned char rd(void)
{
        unchar out=0;
        unchar i; //有8位數據
P0CONL  = 0x88; // 輸入
        for(i=0;i<8;i++)
        {      
          set_sclk;
          __NOP();__NOP();
                if(test_sdio)set_bit(out,bit0);                                 
                else clr_bit(out,bit0);
          if(i<7) out<<=1;//下一位                           
                clr_sclk ;
          __NOP();__NOP();// tf:IN
          __NOP();__NOP(); // tLOW                  
        }            
        return out;
}
///////I2C寫一個字節/////////////
void wd(unsigned char dd) //
{
        unchar i=8;
  P0CONL  = 0xB8;// 輸出
        while(i--)
        {
                if(dd&0x80)set_sdio ;  
                else       clr_sdio;
          __NOP();__NOP(); // tLOW
          set_sclk;
          __NOP();__NOP();  // tf:IN + tHIGH;
          clr_sclk ;
                __NOP();__NOP();// tf:IN
                dd<<=1; __NOP();
        }  
        ack();
}



#include "i2c.h"
#define PT2314_ADD        0x88   //PT2314的地址碼
#define A_NORMAL    0X01
#define A_BASS            0X02
#define A_TREBLE                0X03
#define A_SPL       0X04
#define A_SPR       0X05
#define A_CH        0X06
#define PT2314_UP          0X01
#define PT2314_DOWN        0X00
unchar PT2314_INIT_DATA[] =
  {
        0x41, // switch    選擇第二通道
        0x10, // volume    -10DB
        0xC0, // speaker-l 0DB
        0xE0, // speaker-r 0DB
        0x60, // bass      -14DB  
        0x70 //  treble    -14DB
  };   //0x41為選擇第二通道   
                       
__code const unchar TONE_TAB[] =      
  {
    0x00,        //-14dB
    0x01,        //-12dB
    0x02,        //-10dB
    0x03,        //-08dB
    0x04,        //-06dB
    0x05,        //-04dB
    0x06,        //-02dB
    0x07,        //+00dB
    0x0E,        //+02dB
    0x0D,        //+04dB
    0x0C,        //+06dB
    0x0B,        //+08dB
    0x0A,        //+10dB
    0x09,        //+12dB
    0x08        //+14dB
        } ;
unchar bass=0  ;
unchar treble=0 ;  
unchar mode_set=0 ;           
/***************************************************************************
************************* PT2314 寫入一個字節*****************************
***************************************************************************/

void PT2314SetReg(unchar dat)         //register value  //寫入一個字節   
        {   
          start();
                wd(PT2314_ADD);
                wd(dat);
                iic_stop();        
        }
/****************************************************************************
************************PT2314 寫入多個字節***************************
****************************************************************************/   
         
void PT2314SetNRegs(unchar *pRegVal,unchar n)//*pRegVal=pointer to register value,n=data length   
        {                                        //寫入多個字節
            unchar   i;   
            start();   
                        wd(PT2314_ADD);  
            for(i = 0; i < n; i++)   
                    {   
                                wd(pRegVal);  
                    }   
            iic_stop();  
        }         
/****************************************************************************
************************通道轉換選擇(0~3)**************************
****************************************************************************/     
void SwitchAudioOuputChannel(unchar ch_UpDown)   
        {  
    if((ch_UpDown==1)&&(PT2314_INIT_DATA [0]<0x43))         //ch up   
            {   
                PT2314_INIT_DATA [0]++;         
            }   
    else if((ch_UpDown==0)&&(PT2314_INIT_DATA [0]>0x40))    //ch down   
            {   
                PT2314_INIT_DATA [0]--;   
            }         
          else
                  {                           
                          return;
                  }               
   // dis_fre=PT2314_INIT_DATA [0];                 
    PT2314_INIT_DATA [1] = 0x18;              //音量輸出 -30dB
    PT2314SetNRegs(PT2314_INIT_DATA, 6);   
        }         
/**************************************************************  
function name :  RdVolChange 聲音控制  
parameter:      if UpDown is true,turn up vol,else turn down  
function:       adjust the vol   
**************************************************************/   
void RdVolChange(unsigned char Vol_UpDown)   
{   
    if((Vol_UpDown== 1)&&(PT2314_INIT_DATA [1]>0x00))      //vol up   
            {   
                PT2314_INIT_DATA [1]--;         
            }   
    else if((Vol_UpDown==0)&&(PT2314_INIT_DATA [1]<0x3F))    //vol down   
            {   
                PT2314_INIT_DATA [1]++;   
            }         
    else
            {
                           
                return;
            }
         // dis_fre=PT2314_INIT_DATA [1];                 
    PT2314SetReg(PT2314_INIT_DATA[1]);   
   
}   

/**************************************************************  
function name :  bassChange 低音控制  
parameter:      if UpDown is true,turn up vol,else turn down  
function:       adjust the vol   
**************************************************************/   
void bassChange(unsigned char bass_UpDown)   
{ //ToneBass  
if((bass_UpDown==1)&&(bass<0x0e))               
        {
                bass++;      
        }
else if((bass_UpDown==0)&&(bass!=0))
        {
                bass--;
        }               
else
        {
                 
                return;
        }
        //dis_fre=TONE_TAB[bass];                              
  PT2314_INIT_DATA[4]=(TONE_TAB[bass]|0x60);                     
  PT2314SetReg(PT2314_INIT_DATA[4]);   
   
}
/**************************************************************  
function name :  trebleChange 高音控制  
parameter:      if UpDown is true,turn up vol,else turn down  
function:       adjust the vol   
**************************************************************/   
void trebleChange(unsigned char treble_UpDown)   
{ //Tonetreble   
if((treble_UpDown==1)&&(treble<0x0e))      
        {
                treble++;      
        }                    
else if((treble_UpDown==0)&&(treble!=0))
        {
                treble--;
        }               
else
        {
                 
                return;
        }                       
        //dis_fre=TONE_TAB[treble];                                       
PT2314_INIT_DATA[5]=(TONE_TAB[treble]|0x70);                     
PT2314SetReg(PT2314_INIT_DATA[5]);   
}
/**************************************************************  
function name :  speak_lChange 左聲道衰減控制  
parameter:        
function:         
**************************************************************/   
void speak_lChange(unsigned char speak_lUpDown)   
{ //Tonetreble   
    if((speak_lUpDown== 1)&&(PT2314_INIT_DATA [2]>0xC0))      //vol up   
            {   
                PT2314_INIT_DATA [2]--;         
            }   
    else if((speak_lUpDown==0)&&(PT2314_INIT_DATA [2]<0xDF))    //vol down   
            {   
                PT2314_INIT_DATA [2]++;   
            }         
          else
                  {                 
                          return;
                  }
          //        dis_fre=PT2314_INIT_DATA [2];         
    PT2314SetReg(PT2314_INIT_DATA [2]);  
}
/**************************************************************  
function name :  speak_rChange 右聲道衰減控制  
parameter:        
function:         
**************************************************************/   
void speak_rChange(unsigned char speak_rUpDown)   
{ //Tonetreble   
    if((speak_rUpDown== 1)&&(PT2314_INIT_DATA [3]>0xE0))      //vol up   
            {   
                PT2314_INIT_DATA [3]--;         
            }   
    else if((speak_rUpDown==0)&&(PT2314_INIT_DATA [3]<0xFF))    //vol down   
            {   
                PT2314_INIT_DATA [3]++;   
            }         
          else
                  {                 
                          return;
                  }
         //         dis_fre= PT2314_INIT_DATA [3];         
    PT2314SetReg(PT2314_INIT_DATA [3]);  
}
/**************************************************************  
function name :  PT2314Mute  
parameter:      if MuteOpen is ture,then mute PT2314,else turn to mormal  
function:       open ro close PT2314's mute function   
**************************************************************/   
void PT2314Mute(unchar MuteOpen)   
{   
        if(MuteOpen)   
        {   
                PT2314SetReg(0xFF);                     //mute speaker R
                PT2314SetReg(0xdF);                     //mute speaker L
        }   
        else   
        {   
                PT2314SetReg(0xe0);                     //open speaker R
                PT2314SetReg(0xc0);                     //open speaker L
        }   
}
//
/**************************************************************  
function name :  Audio_functions_UP  
parameter:        
function:       增加音量 音調     
**************************************************************/   
void Audio_functions_UP(unchar sel_mark)
{
        switch( sel_mark )
        {
                case 0:
                sel_mark=A_NORMAL;
                case A_NORMAL:
                RdVolChange(PT2314_UP);
                break;      
                case A_BASS:
                bassChange(PT2314_UP);
                break;
                case A_TREBLE:
                trebleChange(PT2314_UP);
                break;      
                case A_SPL:
                speak_lChange(PT2314_UP);
                break;      
                case A_SPR:
                speak_rChange(PT2314_UP);      
                break;      
                case A_CH:
                SwitchAudioOuputChannel(PT2314_UP);      
                break;               
                default:
                break;
        }

}
/**************************************************************  
function name :  Audio_functions_DOWN  
parameter:  減小音量 音調      
function:            
**************************************************************/
void Audio_functions_DOWN(unchar sel_mark)
{
        switch( sel_mark )
        {
                case 0:
                sel_mark=A_NORMAL;
                case A_NORMAL:
                RdVolChange(PT2314_DOWN);
                break;      
                case A_BASS:
                bassChange(PT2314_DOWN);
                break;
                case A_TREBLE:
                trebleChange(PT2314_DOWN);
                break;      
                case A_SPL:
                speak_lChange(PT2314_DOWN);
                break;      
                case A_SPR:
                speak_rChange(PT2314_DOWN);      
                break;      
                case A_CH:
                SwitchAudioOuputChannel(PT2314_DOWN);      
                break;               
                default:
                break;
        }

}
回復

使用道具 舉報

板凳
ID:61140 發表于 2026-2-22 10:02 | 只看該作者
huangjingjie 發表于 2026-2-15 23:21
發一個好久前網上找的主程序,版主可參考

感謝您的回復,謝謝!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表