<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        M62429音量控制stm32單片機程序

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年05月06日   【字體:

        M62429音量控制

         


         
        (*特別注意:最后D10位當時鐘線位下降沿時,數據線為高,以此判斷數據傳輸結束,否則,沒有音頻輸出) 
        stm32程序
        #define SET_CLK1 (GPIOD->BSRR = GPIO_Pin_10)//AUX
        #define RESET_CLK1 (GPIOD->BRR = GPIO_Pin_10)
        #define SET_DAT (GPIOD->BSRR = GPIO_Pin_11)
        #define RESET_DAT (GPIOD->BRR = GPIO_Pin_11)
        #define SET_CLK2 (GPIOD->BSRR = GPIO_Pin_12)//CMMB
        #define RESET_CLK2 (GPIOD->BRR = GPIO_Pin_12)
        #define SET_CLK(no) {(no==2)?SET_CLK2:SET_CLK1;}
        #define RESET_CLK(no) {(no==2)?RESET_CLK2:RESET_CLK1;}

        const u8 vol_H4[]={0x03,0x01,0x20,0x0};                                                                                                    //D7.D8=0dB--(-3)dB
        const u8 vol_l5[]={0x15,0x05,0x19,0x09,0x11,0x01,0x1e,0x0e,0x16,0x06,                                                   //D2--D6
          0x1a,0x0a,0x12,0x02,0x1c,0x0c,0x14,0x04,0x18,0x08,                                              //0dB-(-80dB)
          0x10,0x00
        };
         
         typedef enum
        {
        AUX =1,
        CMMB=2
        }CHANNEL;

        static void delay(u16 value)
        {
        u8 i,j,k;
        for(i=value;i>0;i--)
         
        for(j=2;j>0;j--)
         
        for(k=4;k>0;k--);
        }
         
        void set_volume(CHANNEL channel,u8 db)//AUX/CMMB
        {
        u8 L,H,i;
        u16 volume;
        volume=db;
        volume=80-db;
        L=volume/4;
        H=volume%4;
        volume=((0x00+vol_l5[L])<<4)+((vol_H4[H]<<2)+0x03);
        volume=volume<<5;
        RESET_DAT;
        RESET_CLK(channel);
        for(i=0;i<11;i++)
        {
        RESET_DAT;
        delay(5);
        RESET_CLK(channel);
        delay(5);
        if(volume&0x8000) SET_DAT;
        else RESET_DAT;
        delay(5);
        SET_CLK(channel);
        delay(5);
        volume=volume<<1;
        }
        SET_DAT;
        delay(5);
        RESET_CLK(channel);
        delay(5);
        }   
         
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮