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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89S52 和K9F6408U0A 的語(yǔ)音數(shù)字系統(tǒng)設(shè)計(jì)

          基于AT89S52 和K9F6408U0A 的語(yǔ)音數(shù)字系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2011-01-20 來(lái)源:網(wǎng)絡(luò) 收藏


          3 系統(tǒng)軟件設(shè)計(jì)

          系統(tǒng)具有錄音、放音、暫停、清除存儲(chǔ)內(nèi)容等功能,各種功能由按鍵來(lái)選擇,系統(tǒng)首先掃描各個(gè)按鍵的狀態(tài),如果有按鍵按下,就轉(zhuǎn)往相應(yīng)的處理程序,系統(tǒng)程序流程如圖6 所示。

          系統(tǒng)流程圖
          系統(tǒng)流程圖
          圖6 系統(tǒng)流程圖。

          3.1 系統(tǒng)初始化程序

          系統(tǒng)初始化程序主要對(duì)中斷、定時(shí)器、LCD 初始化、鍵盤(pán)、PWM、K9F6408U0A 存儲(chǔ)接口,以及ADC0809 地址、程序中要用到的各個(gè)變量進(jìn)行設(shè)置。

          3.2 按鍵掃描程序

          由于錄音和暫停是由和外部中斷引腳相連的2 個(gè)按鍵來(lái)設(shè)置,一旦按鍵按下就進(jìn)入錄音或放音程序,所以按鍵掃描程序用于掃描放音鍵和清除鍵是否按下。

          3.3 錄音程序

          與外部中斷0 相連的按鍵按下,則進(jìn)入錄音程序。

          錄音過(guò)程實(shí)質(zhì)上是啟動(dòng)ADC0809 對(duì)模擬音頻信號(hào)進(jìn)行采樣, 并將A/D 轉(zhuǎn)換結(jié)果存儲(chǔ)到外圍數(shù)據(jù)存儲(chǔ)器中的過(guò)程,故其主要包含對(duì)ADC0809 進(jìn)行讀取, 對(duì)外圍數(shù)據(jù)存儲(chǔ)器進(jìn)行寫(xiě)入兩個(gè)部分。

          提取聲音數(shù)據(jù)時(shí),要注意采樣頻率、采樣位數(shù)、存儲(chǔ)容量與存儲(chǔ)時(shí)間的關(guān)系,通常8 kHz 的采樣頻率和8 位的采樣位數(shù)可獲得清晰的語(yǔ)音以及較好的音樂(lè)聲,并且占有較少的存儲(chǔ)空間。

          以8 kHz 的采樣頻率啟動(dòng)ADC0809,并讀取上次采樣結(jié)果,寫(xiě)到外擴(kuò)Flash 存儲(chǔ)器的代碼片段如下:




          3.4 放音程序

          若P1.0 按下,則執(zhí)行放音程序。放音過(guò)程實(shí)質(zhì)上是讀取外圍數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù),將其轉(zhuǎn)化為一定寬度的PWM 波,進(jìn)行輸出的過(guò)程。讀取K9F6408U0A 的子函數(shù)如下:

          // 函數(shù)名稱(chēng): READBYTE


          關(guān)鍵詞: 單片機(jī)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();