<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PIC單片機(jī)的音頻信號(hào)分析儀的設(shè)計(jì)

          基于PIC單片機(jī)的音頻信號(hào)分析儀的設(shè)計(jì)

          作者: 時(shí)間:2011-10-25 來源:網(wǎng)絡(luò) 收藏

            2 軟件設(shè)計(jì)

            音頻系統(tǒng)主循環(huán)如圖3所示。

          基于PIC單片機(jī)的音頻信號(hào)分析儀的設(shè)計(jì)

            (1)經(jīng)過采樣、A/D轉(zhuǎn)換完成后,清除A/D使能標(biāo)志,得到離散化的數(shù)字信號(hào)。

            (2)調(diào)用周期判定函數(shù),實(shí)現(xiàn)對(duì)信號(hào)周期性的分析。

            (3)調(diào)用FFT變換函數(shù),對(duì)離散信號(hào)的快速傅里葉變換,實(shí)現(xiàn)時(shí)域到頻域的變換。

            (4)顯示輸入信號(hào)的頻譜。

            (5)計(jì)算信號(hào)的功率譜及計(jì)算最大功率。

            (6)顯示信號(hào)的功率譜及最大功率。

            2.1 A/D采樣

            理論分析:因12位的A/D模塊,故量化單位為1/212,因頻率分辨率△f=100 Hz、FFT的子樣本點(diǎn)數(shù)N=512,故采樣頻率fs=51 200 Hz(fs≤N△f)、采樣周期Ts=1/51 200 s(采樣周期一采樣時(shí)間+轉(zhuǎn)換時(shí)間)。因振蕩頻率為7.37 MHz,故指令周期TCY=(1/7.37)×4=O.5μs。

            實(shí)際控制:轉(zhuǎn)換時(shí)間為14個(gè)TAD(為正確A/D轉(zhuǎn)換,TAD=333.33 ns)。所以,配置A/D自動(dòng)采樣時(shí)間為6個(gè)TAD,A/D轉(zhuǎn)換時(shí)鐘為16TCY,則A/D轉(zhuǎn)換總時(shí)間為0.092 ms,采樣頻率為10.87 kHz。

            A/D模塊工作在系統(tǒng)時(shí)鐘源、自動(dòng)轉(zhuǎn)換模式,每完成一次轉(zhuǎn)換進(jìn)入一次中斷。在程序中應(yīng)該定義一個(gè)采樣點(diǎn)數(shù)的結(jié)構(gòu)體,用于存放A/D采集到的數(shù)據(jù),每個(gè)結(jié)構(gòu)體內(nèi)包括一個(gè)實(shí)部和一個(gè)虛部。在中斷服務(wù)子程序中,由A/D模塊采集到的數(shù)字量存儲(chǔ)到結(jié)構(gòu)體的實(shí)部,共進(jìn)行采樣點(diǎn)數(shù)次轉(zhuǎn)換,中斷服務(wù)子程序的流程如圖4所示。

          基于PIC單片機(jī)的音頻信號(hào)分析儀的設(shè)計(jì)



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();