版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于單片機(jī)的 SD 卡錄音筆設(shè)計(jì)與實(shí)現(xiàn) 摘 要 本文介紹的是基于單片機(jī)的 SD 卡錄音筆的設(shè)計(jì)與實(shí)現(xiàn)。 首先介紹了 SD 卡和 SPCE061A 的技術(shù)應(yīng)用,發(fā)展趨勢(shì)和研究 意義;然后深入分析了單片機(jī)錄音筆的基本原理,同時(shí)全面 介紹了實(shí)現(xiàn)基于單片機(jī)的 SD 卡錄音筆所需要的硬件和軟件; 接下來是詳細(xì)介紹了實(shí)現(xiàn)基于單片機(jī)的 SD 卡錄音筆的硬件電 路設(shè)計(jì)以及軟件結(jié)構(gòu)設(shè)計(jì);最后對(duì)整個(gè)系統(tǒng)的性能進(jìn)行測(cè)試 和分析。 整個(gè)系統(tǒng)分為硬件設(shè)計(jì)和軟件設(shè)計(jì)兩大模塊。硬件部分 由凌陽(yáng)公司的 SPCE061A 單片機(jī),揚(yáng)聲器,電池組等構(gòu)成;軟 件環(huán)境選擇的是與硬件配套的 unsp IDE 2.0.0。本系統(tǒng)能 夠?qū)?/p>
2、現(xiàn)對(duì)聲音的多段錄音、放音、刪除等功能。 關(guān)鍵詞:nSP IDE,SPCE061A,SD 卡,錄音筆 Microcontroller-based SD Card Recorder Design Abstract This article is based on the SD Card Recorder MCU Design and Implementation. First introduced the SD card and SPCE061A of technology, trends and research significance; then analyzed in depth the
3、basic principles of single chip voice recorder, while achieving a comprehensive introduction to microcontroller-based SD Card Recorder necessary hardware and software; followed by implementation details of the microcontroller-based SD Card Recorder hardware circuit design and software architecture d
4、esign; Finally, overall system performance testing and analysis. The whole system is divided into two major hardware and software design module. Hardware used by the microcontroller control chip Sunpluss SPCE061A development board, speaker, battery pack; software environment and hardware choices are
5、 supporting unsp IDE 2.0.0. The system can realize the multi sound recording, playback, delete and so on. KeywordKeyword: nSP IDE,SPCE061A,SD Card,Recorde 目 錄 1 緒論 .1 1.1 SD 卡錄音筆概論.1 1.2 錄音器的發(fā)展歷史 .3 1.2.1 留聲機(jī).3 1.2.2 鋼絲錄音和磁帶.3 1.2.3 數(shù)碼錄音筆.4 1.3 SD 卡錄音筆的發(fā)展趨勢(shì).5 1.3.1 提高錄音質(zhì)量.5 1.3.2 多功能于一身.5 1.3.3 降低成本
6、減小體積.5 1.4 基于單片機(jī)的 SD 卡錄音筆研究意義 .6 2 錄音筆功能分析及開發(fā)環(huán)境 .7 2.1 功能概述 .7 2.1.1 SPCE061A 對(duì) SD 卡的讀寫功能 .7 2.1.2 錄/放音及刪除功能 .7 2.2 設(shè)計(jì)環(huán)境介紹 .8 2.2.1 系統(tǒng)硬件環(huán)境介紹.8 2.2.2 軟件工作環(huán)境 NSP IDE 介紹.9 2.2.3 工程的操作.13 創(chuàng)建工程過程.13 開發(fā)操作過程.13 3 錄音筆總體設(shè)計(jì)方案及硬件設(shè)計(jì) .15 3.1 總體設(shè)計(jì)方案 .15 3.1.1 硬件設(shè)計(jì)總體框圖.15 3.1.2 系統(tǒng)軟件設(shè)計(jì)架構(gòu).16 3.2 系統(tǒng)硬件
7、設(shè)計(jì) .17 3.2.1 系統(tǒng)硬件連接實(shí)物圖.17 3.2.2 SPCE061A 最小系統(tǒng) .17 3.2.3 按鍵電路.19 3.2.4 音頻輸出電路.19 3.2.5 SD 卡模組電路 .20 4 系統(tǒng)軟件設(shè)計(jì) .21 4.1 主程序設(shè)計(jì) .21 4.2 按鍵處理程序流程 .23 4.3 按鍵掃描程序 .29 4.4 語(yǔ)音錄/放在 SD 卡上的實(shí)現(xiàn).31 4.5 語(yǔ)音文件操作管理程序.36 4.6 錄/放音程序.37 5 系統(tǒng)測(cè)試及性能分析 .39 5.1 喇叭測(cè)試 .39 5.2 程序下載及運(yùn)行 .40 5.3 系統(tǒng)功能測(cè)試 .41 結(jié)論 .42 致謝 .43 參考文獻(xiàn) .44 附錄 .
8、45 附錄 1 主程序代碼(MAIN.C) .45 外文資料翻譯(附原文) .56 1 緒論 1.1 SD 卡錄音筆概論 SD 卡錄音筆,數(shù)字錄音器的一種,特點(diǎn)是機(jī)身小巧精致, 攜帶方便,錄音筆是通過 SD 卡的方式來存儲(chǔ)音頻的。比較于 以前的錄音機(jī)和磁帶錄音方式來講,錄音筆通過對(duì)模擬信號(hào) 的采樣、編碼將模擬信號(hào)通過數(shù)模轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字信號(hào), 并進(jìn)行一定的壓縮后進(jìn)行存儲(chǔ),音質(zhì)效果也要比傳統(tǒng)的錄音 機(jī)好一些,而數(shù)字信號(hào)即使經(jīng)過多次復(fù)制,聲音信息也不會(huì) 受到損失,保持原樣不變,由于是數(shù)字的錄制方式,因此數(shù) 碼錄音筆的播放、定位、查找都非常的方便,并且可以實(shí)現(xiàn) 循環(huán)播放。 SD 卡是一種基于半導(dǎo)體快
9、閃記憶器的新一代記憶設(shè)備, 它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機(jī)和多媒體播 放器等。大小猶如一張郵票的 SD 記憶卡,重量只有 2 克,但 卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以 及很好的安全性。 除了體積極小之外,SD 卡的存儲(chǔ)特點(diǎn)是可以經(jīng)受上百萬 次的反復(fù)擦寫,因此反復(fù)使用的成本是零。而且 SD 卡容量越 大,錄音時(shí)間也就越長(zhǎng)。從現(xiàn)在的情況來看,1GB 閃存可以存 儲(chǔ)大約 272 小時(shí)錄音信息。對(duì)于傳統(tǒng)的磁帶式錄音方式來說, 簡(jiǎn)直是天方夜譚。 本課題是在 SD 卡和凌陽(yáng) SPCE061A 單片機(jī)的基礎(chǔ)上設(shè)計(jì) 一款錄音筆。凌陽(yáng) SPCE061A 單片機(jī)具有的數(shù)字信號(hào)處理功
10、能 及其所提供的音頻壓縮函數(shù)庫(kù)來實(shí)現(xiàn)語(yǔ)音信號(hào)的實(shí)時(shí)采樣與 壓縮;通過 RS232 接口,將采集到的語(yǔ)音信號(hào)實(shí)時(shí)上傳到 SD 卡中存儲(chǔ)。 SD 卡數(shù)碼錄音筆主要由下列二部分組成: SPCE061A 開 發(fā)板,SD 卡模組。 SD 卡數(shù)碼錄音筆的技術(shù)要求主要是:錄制語(yǔ)音,播放語(yǔ) 音,刪除語(yǔ)音。 SPCE061A 開發(fā)板:SPCE061A 是一款 16 位微控制器,內(nèi) 嵌 32K 的閃存(FLASH)。SPCE061A 為語(yǔ)音產(chǎn)品而集成了 ADC、DAC、AGC 等,還具有 n 項(xiàng)內(nèi)積運(yùn)算指令,較高的處理 速度使 unSP 能夠非常容易快速地處理復(fù)雜的數(shù)字信號(hào),是 數(shù)字語(yǔ)音識(shí)別應(yīng)用領(lǐng)域的一種最經(jīng)濟(jì)選
11、擇。 SPCE061A 精簡(jiǎn)開發(fā)板配有調(diào)試功能;結(jié)合集成開發(fā)環(huán)境 不需外界任何仿真、調(diào)試器即可以完成編程、仿真、調(diào)試功 能。 本課題利用 SPCE061A 的語(yǔ)音處理功能,以及其強(qiáng)大的處 理能力,再配合 SD 卡模組,很容易實(shí)現(xiàn)了大容量超長(zhǎng)錄音功 能。 SD 卡模組:SD 卡座模組為單片機(jī)提供了 SD 卡的插接裝 置,以 SPI 總線方式與單片機(jī)通訊,同時(shí),提供卡檢測(cè)、寫 保護(hù)檢測(cè)等檢測(cè)端口,以便用戶可以方便靈活的為單片機(jī)外 擴(kuò) SD 卡存儲(chǔ)設(shè)備。 還包括:外置揚(yáng)聲器,外置電源。 SD 卡數(shù)碼錄音筆廣泛應(yīng)用于社會(huì)各個(gè)部分,是當(dāng)今最為 常見的錄音設(shè)施之一。錄音筆也由筆形逐漸發(fā)展成為各種形 狀,趨
12、于小巧實(shí)用。 1.2 錄音器的發(fā)展歷史 1.2.1 留聲機(jī) 1877 年 8 月 15 日,愛迪生發(fā)明了留聲機(jī)。這臺(tái)留聲機(jī)由 金屬大圓桶、曲軸、受話機(jī)和膜板構(gòu)成,如上圖。金屬圓桶 上面刻有螺旋的槽紋,并安裝在一個(gè)長(zhǎng)的曲軸上,曲軸一端 是手柄,搖動(dòng)手柄圓通就隨之轉(zhuǎn)動(dòng)。受話器其實(shí)是一根金屬 小管,管的一頭有一張振膜,振膜上貼著一個(gè)有金屬鈍頭的 細(xì)針,另一頭是受話端。錄音的時(shí)候,先在圓桶上貼一張錫 箔,然后將受話器細(xì)針端對(duì)準(zhǔn)圓桶,勻速轉(zhuǎn)動(dòng)圓桶,對(duì)受話 器的另一端說話,聲音則被振動(dòng)的細(xì)針記錄在錫箔上?;胤?的時(shí)候,將細(xì)針端再拿回到圓桶的最開始處,轉(zhuǎn)筒圓桶,聲 音就被原樣播放出來。 1.2.2 鋼絲錄音
13、和磁帶 愛迪生的留聲機(jī)是純機(jī)械錄音技術(shù),在這之后,錄音技 術(shù)發(fā)展為光學(xué)錄音、磁性錄音和電子錄音。其中,光學(xué)錄音 顧名思義就是將聲音信號(hào)轉(zhuǎn)變?yōu)楣鈱W(xué)信號(hào),記錄在感光底片 上的一種技術(shù),最初應(yīng)用在有聲電影的研究上,并在最早的 電影領(lǐng)域取得了廣泛的應(yīng)用。在電影膠片的一側(cè)有一條窄條, 叫做聲帶,播放時(shí)由播放機(jī)轉(zhuǎn)變?yōu)橥降穆曇粜盘?hào)予以伴音。 需要說明的是,光學(xué)錄音由于對(duì)制作技術(shù)環(huán)節(jié)要求較高,且 不可擦寫,所以當(dāng)時(shí)除了電影伴音這部分應(yīng)用廣泛發(fā)展外, 其他應(yīng)用面較為狹窄。 磁性錄音是應(yīng)非常廣泛的錄音技術(shù),最具代表性的革新 就是 1900 年鋼絲錄音機(jī)的發(fā)明。鋼絲錄音機(jī)利用磁性錄音原 理,將受話器與電磁鐵連接,
14、將聲音信號(hào)首先轉(zhuǎn)換為不斷變 化的磁信號(hào),然后將鋼絲與電磁鐵緊密貼在一起并勻速轉(zhuǎn)動(dòng), 這樣鋼絲上就形成了強(qiáng)度隨聲音信號(hào)變化而變化的磁場(chǎng),回 放的時(shí)候只需要把鋼絲重新在電磁鐵上經(jīng)過一次,聲音就被 還原出來,磁帶錄音機(jī)就是鋼絲錄音機(jī)的改進(jìn)版本,只是現(xiàn) 代人把鋼絲改為了軟質(zhì)的塑料磁帶而已。 1.2.3 數(shù)碼錄音筆 21 世紀(jì)初,數(shù)碼錄音技術(shù)(也稱電子錄音)誕生,這是 通過對(duì)模擬信號(hào)的采樣、編碼將模擬信號(hào)通過數(shù)模轉(zhuǎn)換器轉(zhuǎn) 換為數(shù)字信號(hào),并進(jìn)行一定的壓縮后進(jìn)行存儲(chǔ)的技術(shù)。而數(shù) 字信號(hào)即使經(jīng)過多次復(fù)制,聲音信息也不會(huì)受到損失,保持 原樣不變。 通常數(shù)碼錄音筆的音質(zhì)效果要比傳統(tǒng)的錄音機(jī)要好一些。 錄音筆通常標(biāo)
15、明有 SP,LP 等錄音模式,SP 表示 ShotPlay 即 短時(shí)間模式,這種方式壓縮率不高,音質(zhì)比較好,但錄音時(shí) 間短。而數(shù)碼錄音筆品牌分布圖 LP 表示 LongPlay,即長(zhǎng)時(shí)間 模式,壓縮率高,音質(zhì)會(huì)有一定的降低。 因此,數(shù)碼錄音筆迅速取代之前所有錄音產(chǎn)品,成為當(dāng) 今錄音領(lǐng)域的“專家”。 1.3 SD 卡錄音筆的發(fā)展趨勢(shì) 從首款 SD 卡錄音筆上市到現(xiàn)在,短短 4 年內(nèi)成為銷量最 大的隨身錄音設(shè)備,證明其有著極高的性能和質(zhì)量,價(jià)格而 比較合理。隨著電子錄音技術(shù)的發(fā)展和消費(fèi)者使用需求的提 高,數(shù)碼錄音筆的革新也是勢(shì)在必行。 1.3.1 提高錄音質(zhì)量 一方面,隨著科技的發(fā)展,錄音筆的錄音
16、質(zhì)量將會(huì)提升, 高清錄音筆,超長(zhǎng)時(shí)間錄音筆將會(huì)面世。 1.3.2 多功能于一身 近幾年,數(shù)碼產(chǎn)品都朝著多功能化發(fā)展,隨著技術(shù)的不 斷發(fā)展,數(shù)碼產(chǎn)品的整合絕對(duì)是將來的一個(gè)大方向,現(xiàn)在很 多錄音筆都已經(jīng)支持 MP3 播放功能,已經(jīng)從單純的錄音發(fā)展 到具備聽 MP3 音樂,U 盤,復(fù)讀以及電話錄音等多項(xiàng)功能。 此外,錄音筆將發(fā)展到一個(gè)全新的階段,錄音/復(fù)讀, MP3 播放,影像記錄,圖片瀏覽(數(shù)碼伴侶),TXT 文檔閱讀, 移動(dòng)存儲(chǔ)等多功能于一身的錄音筆將會(huì)出現(xiàn)。 1.3.3 降低成本減小體積 降低成本是任何技術(shù)商業(yè)化的重要前提,一般的途徑是 通過規(guī)模生產(chǎn)來攤薄成本。錄音筆的成本在于技術(shù)和原材料 兩
17、個(gè)方面,而技術(shù)的發(fā)展勢(shì)必在成本上很難降低,所以,相 信通過生產(chǎn)原材料價(jià)格的走低,錄音筆也會(huì)漸漸便宜。 既多功能,又小巧實(shí)用,外觀精致創(chuàng)新,也是錄音筆外 形的發(fā)展趨勢(shì)。 1.4 基于單片機(jī)的 SD 卡錄音筆研究意義 本課題主要是研究基于單片機(jī)的 SD 卡錄音筆設(shè)計(jì),本課 題是以單片機(jī) SPCE061A 來實(shí)現(xiàn)一個(gè)錄音筆系統(tǒng)。SPCE061A 該 款單片機(jī)資源豐富,有強(qiáng)大的數(shù)字語(yǔ)音處理功能可應(yīng)用與語(yǔ) 音播放和語(yǔ)音識(shí)別領(lǐng)域,內(nèi)置有 2 路 DA 轉(zhuǎn)換,8 路 AD 轉(zhuǎn)換及 在線仿真等豐富的功能,這些都為實(shí)現(xiàn)數(shù)碼錄音和播放提供 了良好的方便條件。 長(zhǎng)期以來,以 Flash Memory 為存儲(chǔ)體的 S
18、D 卡因具備體 積小、功耗低、可擦寫以及非易失性等特點(diǎn)而被廣泛應(yīng)用于 消費(fèi)類電子產(chǎn)品中特別是近年來,隨著價(jià)格不斷下降且存儲(chǔ) 容量不斷提高,它的應(yīng)用范圍日益增廣。 當(dāng)數(shù)據(jù)采集系統(tǒng)需要長(zhǎng)時(shí)間地采集、記錄海量數(shù)據(jù)時(shí), 選擇 SD 卡作為存儲(chǔ)媒質(zhì)是開發(fā)者們一個(gè)很好的選擇在電能監(jiān) 測(cè)以及無功補(bǔ)償系統(tǒng)中,要連續(xù)記錄大量的電壓、電流、有 功功率、無功功率以及時(shí)間等參數(shù),當(dāng)單片機(jī)采集到這些數(shù) 據(jù)時(shí)可以利用 SD 作為存儲(chǔ)媒質(zhì)。 因此,基于單片機(jī)的 SD 卡錄音筆將會(huì)是今后最常見的錄 音工具。 2 錄音筆功能分析及開發(fā)環(huán)境 2.1 功能概述 隨著數(shù)字存儲(chǔ)技術(shù)的發(fā)展,大容量存儲(chǔ)設(shè)備充斥著電子 應(yīng)用的方方面面。對(duì)于
19、嵌入式系統(tǒng)來說,功能的增強(qiáng),也需 要大容量存儲(chǔ)設(shè)備做支撐。SD 卡是一種輕便的大容量的存儲(chǔ) 設(shè)備。它使用方便,工作穩(wěn)定,可以為嵌入式系統(tǒng)提供大容 量的數(shù)據(jù)存儲(chǔ)擴(kuò)展,使得系統(tǒng)有強(qiáng)大的錄音功能。利用 SPCE061A 為主控芯片,SD 卡做為存儲(chǔ)介質(zhì),實(shí)現(xiàn)單片機(jī)的超 長(zhǎng)時(shí)間錄放音功能。 2.1.1 SPCE061A 對(duì) SD 卡的讀寫功能 (1)SPCE061A 對(duì) SD 卡的操作方式為 SPI 模式; (2)提供 SD 卡插入檢測(cè)功能,并進(jìn)行語(yǔ)音提示; (3)提供 SD 卡寫保護(hù)檢測(cè)功能,并進(jìn)行語(yǔ)音提示; (4)可以對(duì) SD 卡進(jìn)行初始化、扇區(qū)寫、扇區(qū)讀、扇區(qū)擦除、 得到 SD 卡的容量信息等操
20、作。 2.1.2 錄/放音及刪除功能 (1)錄音數(shù)據(jù)存儲(chǔ)在 SD 卡中; (2)支持多段錄音; (3)放音支持“上一曲”、“下一曲”; (4)可以刪除所有的錄音片斷,重新開始錄音。 2.2 設(shè)計(jì)環(huán)境介紹 2.2.1 系統(tǒng)硬件環(huán)境介紹 本系統(tǒng)的硬件部分采用的是 SPCE061A 單片機(jī)。SPCE061A 單片機(jī)是一個(gè) 16 位結(jié)構(gòu)的微控制器。以下是它的性能簡(jiǎn)介: (1)16 位的高性能 unSP 內(nèi)核單片機(jī) (2)CPU 時(shí)鐘范圍:0.32MHz49MHz (3)片內(nèi) 32K 字的 Flash 程序存儲(chǔ)器、2K 字的 SRAM 數(shù)據(jù)存 儲(chǔ)器 (4)4 個(gè) 16 位 I/O 端口 (5)14 個(gè)中
21、斷源 (6)1 通道專用音頻 AD 轉(zhuǎn)換通道,7 通道 AD 轉(zhuǎn)換通道 (7)內(nèi)置 MIC 放大電路和自動(dòng)增益(AGC)放大電路 (8)2 路電流輸出型的 DA 轉(zhuǎn)換通道 (9)2 個(gè) 16 位通用定時(shí)器/計(jì)數(shù)器 (10)實(shí)時(shí)實(shí)鐘(RTC) (11)低電壓復(fù)位、低電壓監(jiān)測(cè) (12)內(nèi)置在線仿真接口(ICE) (13)具有保密功能 (14)具有 Watchdog 功能 SPCE061A 片內(nèi)結(jié)構(gòu),主要包括 SPCE061A 時(shí)鐘電路,PPL 鎖相環(huán)及外圍電路,SPCE061A 系統(tǒng)時(shí)鐘和 Watchdog。圖 2.1 為 SPCE061A 片內(nèi)結(jié)構(gòu)圖。 雙16位定時(shí)器 /計(jì)數(shù)器 7通道10位AD
22、C 單通道ADC+AGC CPU時(shí)鐘 實(shí)時(shí)時(shí)鐘 FLASH RAM 時(shí)基 中斷控制 IOA15 - 0 IOB15 - 0 鎖相環(huán) 振蕩器 IOB0 (SCK)IOB1(SDA) 低電壓監(jiān)測(cè)/ 低電壓復(fù)位 雙通道 10位DAC 串行輸入輸出接口 AUD1 AUD2 MIC_IN 32 管腳通用輸入輸出端口 16 位位微微 控控制制器器 unSP + ICE XI/R XO ICE_SCK ICE_SDA ICE_EN CPV IOB7(RXD)IOB10(TXD) 串行異步通訊接口 Watchdog 圖 2.1 SPCE061A 片內(nèi)結(jié)構(gòu) 2.2.2 軟件工作環(huán)境 nSP IDE 介紹 本系統(tǒng)
23、的軟件設(shè)計(jì)使用的是 nSP IDE 集成開發(fā)環(huán)境。 unSP IDE 集成開發(fā)環(huán)境支持匯編語(yǔ)言和 C 語(yǔ)言混合編程進(jìn) 行程序開發(fā),集程序的編輯、編譯、鏈接、調(diào)試以及仿真等 功能為一體并且支持軟件仿真和調(diào)試的功能。 unSP IDE 的主要特點(diǎn)是:提供了友好的交互界面、易 于操作,使調(diào)試工作方便且高效。工具界面主要分為主菜單, 工具欄,工作區(qū)窗口,編輯區(qū)窗口,輸出區(qū)窗口。圖 2.2 為 工具界面參照?qǐng)D。 圖 2.2 工具界面參照?qǐng)D Workspace 窗口,如圖 2.3。 Workspace 窗口由 FileView 和 ResourceView 兩個(gè)視窗組 成。單擊 FileView 標(biāo)簽,用
24、戶可以方便瀏覽到工程內(nèi)的各文 件。FileView 視窗用層次圖排列出當(dāng)前工程的所有文件的邏 輯關(guān)系。Files 文件夾包含了源程序、程序接口和說明硬件配 置情況的文件。Resource 文件夾包括了各種資源文件(rc)。 Source Files 文件夾用于保存源文件。Head Files 文件夾用 于保存頭文件。External Dependencies 文件夾用于保存對(duì)工 程的一些標(biāo)注信息。ResourceView 視窗列出當(dāng)前工程用到的 所有資源??梢詥螕粢暣皟?nèi)分支頂部旁邊的和號(hào)展開和 收縮層次圖。 Workspace 窗口所體現(xiàn)的邏輯位置不是指文件在硬盤上的 物理位置,而是指一種邏輯
25、從屬關(guān)系。用戶可用拖曳的辦法 改變文件的邏輯位置。在 Workspace 窗口內(nèi),不同類型的文 件有不同的圖標(biāo)表現(xiàn)。 圖 2.3 Workspace 窗口 Output 窗口,如圖 2.4。 Output 窗口用于顯示編譯、調(diào)試和查找的結(jié)果。在窗口 底部有幾個(gè)視窗標(biāo)簽:Build、Debug 和 Find in Files 等。 用鼠標(biāo)單擊這些標(biāo)簽,可以激活相應(yīng)的視窗。 Build:顯示編譯和鏈接過程里產(chǎn)生的信息,包括文件編 輯過程里的錯(cuò)誤和警告信息等。 Debug:顯示程序調(diào)試過程里出現(xiàn)的信息。 Find in Files:顯示在文件中查找字符的結(jié)果。 Edit 窗口:在 Edit 窗口里,
26、文件的打開格式有兩種: 用戶可用文本格式打開文件,也可以用二進(jìn)制代碼格式打開 文件。 圖 2.4 Output 窗口 文件編輯器,如圖 2.5。 文本編輯器可以用來打開匯編語(yǔ)言程序和 C 語(yǔ)言程序。 圖 2.5 文件編輯器 二進(jìn)制代碼編輯器,如圖 2.6。 二進(jìn)制代碼編輯器讓用戶在 Edit 窗口里以十六進(jìn)制數(shù) /ASCII 字符的形式來編輯二進(jìn)制代碼的資源文件。 圖 2.6 二進(jìn)制代碼編輯器 2.2.3 工程的操作 創(chuàng)建工程過程 (1)選擇FileNew,打開 New 對(duì)話框如圖 2.7,選擇 Project 標(biāo)簽; (2)在 File 文本框內(nèi)輸入工程名稱; (3)在 Lo
27、cation 文本框內(nèi)輸入工程文件的路徑; (4)在 Select Body Here 區(qū)域內(nèi)選擇 Probe; (5)單擊OK,創(chuàng)建工程。 圖 2.7 創(chuàng)建工程對(duì)話窗口 開發(fā)操作過程 從開始菜單內(nèi)啟動(dòng)工具; 選擇FileOpen Project,在打開對(duì)話框內(nèi)選 擇所要打開的工程; 窗口(工作區(qū)窗口)顯示在工具的左半邊,在這個(gè)窗口 內(nèi),用戶可以看到當(dāng)前工程所包含的所有文件; 選擇BuildRebuild All,進(jìn)行源文件的編譯和鏈 接。 編譯過程里的語(yǔ)法錯(cuò)誤顯示在 Output 窗口內(nèi); 選擇BuildStart DebugDownload,把程序加 載到 RAM,然后,用
28、戶可以用 Debug 菜單內(nèi)所提供的調(diào)試命令 來優(yōu)化和運(yùn)行程序。選擇 6、BuildStart DebugGo, 在調(diào)試器內(nèi)運(yùn)行程序。 3 錄音筆總體設(shè)計(jì)方案及硬件設(shè)計(jì) 3.1 總體設(shè)計(jì)方案 3.1.1 硬件設(shè)計(jì)總體框圖 系統(tǒng)采用 SPCE061A 做為主控制器,使用其通用 I/O 口控 制 SD 卡設(shè)備,實(shí)現(xiàn)存儲(chǔ)器擴(kuò)展;利用電路板上的三個(gè)按鍵對(duì) 錄放音進(jìn)行控制;利用 SPCE061A 帶有 AGC 的專用 A/D 轉(zhuǎn)換通 道做為音頻輸入,完成語(yǔ)音錄制功能;利用 SPCE061A 的 D/A 進(jìn)行音頻輸出,實(shí)現(xiàn)語(yǔ)音播放功能。圖 3.1 為硬件總體框圖。 輸入指令 麥克風(fēng) 揚(yáng)聲器 電源線 錄音
29、放音 電源 SD 卡 SPCE061A 儲(chǔ)存或刪除數(shù)字信號(hào) 提取數(shù)字信號(hào) 按鍵鍵盤 圖 3.1 硬件總體框圖 3.1.2 系統(tǒng)軟件設(shè)計(jì)架構(gòu) 軟件系統(tǒng)包括以下部分: 主程序:完成系統(tǒng)的初始化,處理按鍵信息,并根據(jù)按 鍵,在語(yǔ)音文件操作管理程序的配合下,創(chuàng)建語(yǔ)音文件進(jìn)行 錄音,或控制讀取語(yǔ)音文件進(jìn)行回放。 按鍵掃描程序:完成對(duì) IOA 口低八位的 18 按鍵進(jìn)行掃 描,并完成去抖、判斷長(zhǎng)/短按鍵等功能。 SD 卡驅(qū)動(dòng)程序:該部分完成對(duì) SD 卡的初始化、得到卡的 容量信息、讀寫操作、擦除操作等。 語(yǔ)音文件操作管理程序:該部分完成對(duì)多段錄音的管理。 每增加一段錄音,程序會(huì)將起始地址、終止地址等相關(guān)信
30、息 保存,以便可以回放。 錄/放音程序:實(shí)現(xiàn)對(duì) A/D 采樣數(shù)據(jù)的編碼和存儲(chǔ),以及 從 SD 卡讀取錄音數(shù)據(jù)并解碼然后送至 D/A 播放等操作。 3.2 系統(tǒng)硬件設(shè)計(jì) 3.2.1 系統(tǒng)硬件連接實(shí)物圖 系統(tǒng)主要由 SPCE061A 單片機(jī),麥克風(fēng),揚(yáng)聲器,電源及 儲(chǔ)存器構(gòu)成。SPCE061A 單片機(jī)控制板作為整個(gè)系統(tǒng)的主控板, 對(duì)麥克風(fēng)采集來的聲音信號(hào)進(jìn)行數(shù)字處理并儲(chǔ)存號(hào)功能。圖 3.3 為硬件連接實(shí)物圖。 3.3 系統(tǒng)硬件連接實(shí)物圖 3.2.2 SPCE061A 最小系統(tǒng) 本設(shè)計(jì)選用的單片機(jī)模塊為 SPCE061A 單片機(jī)模塊,該模 塊包括 SPCE061A 芯片(MCU)、片內(nèi) FLASH
31、和其外圍的基本 模塊。外圍模塊有:電機(jī)驅(qū)動(dòng)電路板、鎖相環(huán)外圍電路 (PLL)、復(fù)位電路(RESET)等。 SPCE061A 的主控芯片,負(fù)責(zé)構(gòu)建語(yǔ)音錄放的數(shù)據(jù)結(jié)構(gòu), 并在單片機(jī)內(nèi)部 Flash 中保存有語(yǔ)音內(nèi)容和相關(guān)語(yǔ)音信息。 SPCE061A 控制端口輸出控制信息,并控制喇叭輸出聲音 信息。實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的控制。通過本系統(tǒng)中的音頻輸入電 路和 MIC,可以采集語(yǔ)音信號(hào)并處理。圖 3.4 為 SPCE061A 最 小系統(tǒng)圖。 圖 3.4 SPCE061A 最小系統(tǒng)圖 3.2.3 按鍵電路 本系統(tǒng)使用三個(gè)按鍵完成錄放音控制。圖 3.5 為按鍵電 路圖。 Key1 為“下一曲”鍵,Key2 為“上
32、一曲”鍵,Key3 為“錄音 鍵”。 圖 3.5 按鍵電路圖 3.2.4 音頻輸出電路 SPCE061A 內(nèi)置 2 路 10 位精度的 DAC,只需要外接功放電 路即可完成語(yǔ)音的播放。電路中 SPY0030 是凌陽(yáng)公司一款音 頻放大芯片。它和 LM386 相比,LM386 工作電壓需在 4V 以上, SPY0030 僅需 2.4V 即可工作(兩顆電池即可工作);LM386 輸 出功率 100mW 以下, SPY0030 約 700mW。圖 3.6 為音頻輸出電 路圖。 圖 3.6 音頻輸出電路圖 3.2.5 SD 卡模組電路 在本系統(tǒng)中,SPCE061A 通過 SPI 總線實(shí)現(xiàn)對(duì) SD 卡設(shè)備
33、的 訪問。SD 卡模組同時(shí)提供卡插入檢測(cè)和寫保護(hù)檢測(cè)接口。圖 3.7 為 SD 卡模組電路圖。 圖 3.7 SD 卡模組電路圖 4 系統(tǒng)軟件設(shè)計(jì) 4.1 主程序設(shè)計(jì) 主程序采用的是匯編語(yǔ)言和 C 語(yǔ)言混合編程。主程序流程圖 如圖 4.1。 系統(tǒng)初始化 檢測(cè) SD 卡是否插入? 否 檢查 SD 卡是否寫保護(hù)? 置寫保護(hù)標(biāo)志 播放“SD 卡寫保護(hù)” 是 否 初始化 SD 卡 按鍵處理 系統(tǒng)狀態(tài)處理 是 播放“注意 SD 卡沒有插入” 檢測(cè) SD 卡是否插入? 否 是 播放“就緒” 語(yǔ)音提示程序 開始 圖 4.1 主程序流程圖 主程序完成系統(tǒng)初始化后檢測(cè) SD 卡是否插入以及是否有 寫保護(hù),并有相應(yīng)
34、的語(yǔ)音提示,告知用戶當(dāng)前的系統(tǒng)狀態(tài)。 如果 SD 卡正確插入,則系統(tǒng)根據(jù)用戶的不同按鍵進(jìn)行錄/放 音控制。同時(shí),在循環(huán)中對(duì)系統(tǒng)當(dāng)前的狀態(tài)進(jìn)行檢測(cè),控制 系統(tǒng)在錄制語(yǔ)音時(shí)不至于超出存儲(chǔ)器容量限制,或控制系統(tǒng) 在放音時(shí)播放至文件尾部自動(dòng)停止播放。 部分程序如下: SACM_DVR1600_Initial();/ 語(yǔ)音初始化 if(0 = SD_ChkCard() / 檢測(cè)卡是否插入 PlaySnd(VOICE_ATTENTION, DAC1 + DAC2); PlaySnd(VOICE_SDCARDNOTINSERT, DAC1 + DAC2); while(0 = SD_ChkCard();/等
35、待卡插入 if(1 = SD_ChkCardWP()/檢測(cè)卡是否有寫保護(hù) WriteProtect = 1; else FS_Init();/沒有寫保護(hù),執(zhí)行初始化操作 PlaySnd(VOICE_READY, DAC1 + DAC2); / 播放就緒 /- while(1) KeyProcess();/按鍵處理 StatusProcess();/系統(tǒng)狀態(tài)處理 SACM_DVR1600_ServiceLoop();/錄/放音服務(wù) 4.2 按鍵處理程序流程 按鍵處理程序中,當(dāng)檢測(cè)到有 SD 卡寫保護(hù)時(shí),會(huì)播放 “卡有寫保護(hù)”的提示音,對(duì)按鍵不做處理。按鍵處理流程 圖如圖 4.2。 初始化 判斷是
36、否有寫保護(hù)標(biāo)志? 否 判斷按鍵 Key3 錄音鍵 是 Key2 上一曲鍵Key1 下一曲鍵 返回 開始 圖 4.2 按鍵處理流程圖 部分程序如下: Key = KeyScan_GetKey( if(1 = WriteProtect)/卡有寫保護(hù),拒絕按鍵操作 if(C_SReleaseKeyState = KeyType) | (C_LReleaseKeyState = KeyType) return; switch(Key) 當(dāng)按下錄音鍵時(shí),若為短按鍵且 SD 卡未滿,提示錄音開 始并置錄音標(biāo)志,開始錄音?!颁浺簟卑存I處理程序的流程 圖如圖 4.3 所示。 圖 正在播放? 短按鍵? 是 是
37、停止播放,關(guān)閉讀取 SD 卡 系統(tǒng)狀態(tài)置空閑 SD 卡已滿? 否 是 否 系統(tǒng)空閑? 否 啟動(dòng)寫入 SD 卡,開始錄音 系統(tǒng)狀態(tài)置錄音 否 是 正在錄音? 結(jié)束錄音,錄音收尾 是 否 開始 返回 4.3 錄音鍵流程圖 部分程序如下: case C_Record: / Record if(C_SReleaseKeyState = KeyType) / 短按鍵,錄/放音控制 if(PLAY = Status) SACM_DVR1600_Stop();/如果正在放音,則先停止播放 FS_CloseOpenFile(); Status = IDLE; if(IDLE = Status) if(g_Fi
38、leNum = FS_MAX_FILENUM) | (FS_GetUnusedSecNum() 0) if(PLAY = Status) /如果正在放音,則先停止播放 SACM_DVR1600_Stop(); FS_CloseOpenFile(); else if(RECORD = Status)/如果正在錄音則不處理 if(C_LReleaseKeyState = KeyType)/長(zhǎng)按鍵,停止當(dāng)前播放 Status = IDLE; else if(C_SReleaseKeyState = KeyType)/短按鍵,播放下一曲 系統(tǒng)狀態(tài)處理程序主要完成在錄音時(shí)判斷是否超出 SD 卡 容量限制
39、,或者在放音時(shí)當(dāng)前語(yǔ)音是否播放完畢。系統(tǒng)狀態(tài) 流程圖如圖 4.6。 檢查 SD 卡是否已滿? 是否正在錄音? 播放是否結(jié)束? 停止錄音 系統(tǒng)狀態(tài)置空閑 是否正在播放? 停止讀取 系統(tǒng)狀態(tài)置空閑 是 否 否 否 是 是 是 否 返回 開始 圖 4.7 系統(tǒng)狀態(tài)處理流程圖 部分程序如下: switch(Status) case RECORD: if(FS_GetUnusedSecNum() 1)/檢測(cè)是否超出 SD 卡容量范圍 SACM_DVR1600_Stop(); Status = IDLE; case PLAY: if(FS_CheckFileEnd()/檢測(cè)當(dāng)前語(yǔ)音是否播放完畢 SACM_
40、DVR1600_Stop(); FS_CloseOpenFile(); Status = IDLE; 4.3 按鍵掃描程序 系統(tǒng)使用 1024Hz 時(shí)基中斷對(duì) IOA 口低八位進(jìn)行掃描,并 進(jìn)行去抖、長(zhǎng)短按鍵判斷等工作。 時(shí)基中斷中的按鍵掃描服務(wù)程序采用了狀態(tài)機(jī)的形式對(duì) 按鍵狀態(tài)進(jìn)行判斷。使用變量 KeyScanState 記錄當(dāng)前按鍵的 掃描狀態(tài),并對(duì)掃描狀態(tài)進(jìn)行計(jì)時(shí),通過判斷計(jì)時(shí)變量 KeyCount 的值來判斷按鍵的類型 KeyState(短按鍵、長(zhǎng)按鍵 等)。 通常狀況下,沒有鍵按下,KeyScanState 處于 First 狀 態(tài)。當(dāng)有鍵被按下后,KeyScanState 便進(jìn)入
41、Debounce 去抖狀 態(tài),此時(shí) KeyCount 開始每 1/1024 秒計(jì)時(shí)累加一次。當(dāng) KeyCount 超過去抖規(guī)定的時(shí)間后(通常為幾十毫秒),便進(jìn) 入 Repeat 狀態(tài),這時(shí)候可以認(rèn)為一個(gè)短按鍵被按下 (KeyState = SKey)。此時(shí)如果檢測(cè)到鍵抬起,則進(jìn)入 ReleaseDebounce 狀態(tài),對(duì)按鍵抬起進(jìn)行去抖,去抖成功后則 可以認(rèn)為形成了一個(gè)抬起的短按鍵(KeyState = SKeyRelease)。相反,如果在 Repeat 狀態(tài)下超過了一個(gè)長(zhǎng) 按鍵規(guī)定的時(shí)間(1 秒)后按鍵仍未抬起,則認(rèn)為一個(gè)長(zhǎng)按鍵 被按下(KeyState = LKey),此時(shí)進(jìn)入 Afte
42、rLKey 狀態(tài),無 需再進(jìn)行計(jì)時(shí)操作,只需等待按鍵抬起即可。當(dāng)按鍵抬起時(shí), 則從 AfterLKey 狀態(tài)進(jìn)入 ReleaseDebounce 狀態(tài),去抖后得 到一個(gè)抬起的長(zhǎng)按鍵(KeyState = LKeyRelease)。 按鍵掃描程序提供如下 API 函數(shù)按鍵功能: void KeyScan_Init(); 功 能:按鍵掃描初始化。調(diào)用該函數(shù)將同時(shí)初始化按鍵掃描 使用的 I/O 口。 void DrvKeyInit(void) *P_KEY_Dir *P_KEY_Attrib #if KEY_COM *P_KEY_Buffer #else *P_KEY_Buffer |= KEY_P
43、ORT_MASK; #endif unsigned int KeyScan_GetKey(unsigned int *KeyType); 功 能:該函數(shù)將返回當(dāng)前按鍵的鍵值,并通過入口參數(shù) KeyType 返回該按鍵的類型。 unsigned int KeyScan_GetKey(unsigned int *KeyType) unsigned int Key; if(C_NullKey = ui_KeyState) Key = C_Null; else Key = ui_KeyID; *KeyType = ui_KeyState; if(C_KeyStateFirst = ui_KeyScan
44、State) ui_KeyID = C_Null; ui_KeyState = C_NullKey; return(Key); 4.4 語(yǔ)音錄/放在 SD 卡上的實(shí)現(xiàn) 在語(yǔ)音錄/放的過程中,存儲(chǔ)/讀取語(yǔ)音資源主要是調(diào)用 F_USER_DVR1600_WriteData和F_USER_DVR1600_GetData兩個(gè) 函數(shù)實(shí)現(xiàn)的。通過自行定義這兩個(gè)函數(shù),即可將語(yǔ)音庫(kù)錄制 的語(yǔ)音資料存儲(chǔ)至SD卡,或從SD卡讀取語(yǔ)音資料給語(yǔ)音庫(kù)解 碼播放。 F_USER_DVR1600_WriteData函數(shù)主要完成存儲(chǔ)錄音數(shù)據(jù) 至用戶存儲(chǔ)器的作用。這里需要調(diào)用“向語(yǔ)音文件寫入多個(gè) word數(shù)據(jù)的函數(shù)”FS_Wr
45、itingFile()以完成此功能。 F_USER_DVR1600_GetData 函數(shù)主要完成從用戶存儲(chǔ)器讀 取語(yǔ)音資料至緩沖區(qū)的作用。這里,需要調(diào)用“從語(yǔ)音文件 中讀取多個(gè) word 數(shù)據(jù)的函數(shù)”FS_ ReadingFile ()以完成從 SD 卡中讀取數(shù)據(jù)。 部分程序如下: F_USER_DVR1600_GetData: F_USER_WriteWordBlock:/Start Adr:R1; Length:R2 push r1, r5 to sp push r2 to sp push r1 to sp call _FS_ReadingFile sp += 2 pop r1, r5 f
46、rom sp RETF; F_USER_DVR1600_WriteData: F_USER_ReadWordBlock:/Start Adr:R1; Length:R2 push r1, r5 to sp push r2 to sp push r1 to sp call _FS_WritingFile sp += 2 pop r1, r5 from sp RETF; 單片機(jī)通過 SPI 總線向 SD 卡發(fā)送命令,控制 SD 卡的動(dòng) 作,并通過 SPI 總線讀取 SD 卡返回的數(shù)據(jù)。 SD 卡上電后工作在具有 1bit 數(shù)據(jù)總線寬度的 SD 模式。 而本系統(tǒng)中,需要令 SD 卡工作于 SPI 模
47、式。單片機(jī)通過使連 接 SD 卡 CS 腳的 I/O 口輸出低電平,并發(fā)送 CMD0 命令,即可 使 SD 卡進(jìn)入 SPI 模式工作。 SD 卡進(jìn)入 SPI 模式后,用戶可以通過調(diào)用 SD_SendCmd() 函數(shù)發(fā)送命令對(duì) SD 卡進(jìn)行控制。 SD 卡每次寫入(讀?。?shù)據(jù),都需要以 Block 為單位。 但是,在語(yǔ)音錄制過程中,編碼器是以幀為單位向 SD 卡內(nèi)寫 入數(shù)據(jù)的,而幀的長(zhǎng)度并不剛好是 Block Size 個(gè)。在語(yǔ)音播 放過程中類似,解碼器每次解碼的數(shù)據(jù)量也并不剛好是 Block Size 個(gè)。 為了解決這個(gè)矛盾,需要首先來看一下 SD 卡 Block 讀寫 的過程。 單片機(jī)從 S
48、D 卡讀取 Block 數(shù)據(jù)的過程。 首先,單片機(jī)發(fā)送 CMD17 命令以及希望讀取的 Block 的 地址參數(shù)給 SD 卡,然后 SD 卡返回一個(gè) byte 的響應(yīng)數(shù)據(jù),告 知單片機(jī)該操作是否可以正常進(jìn)行。 然后,單片機(jī)從 SPI 總線上讀取 Block Size 個(gè)數(shù)據(jù),這 些數(shù)據(jù)就是 SD 卡發(fā)送來的 Block 數(shù)據(jù); 最后,SD 卡發(fā)送 CRC 校驗(yàn)給單片機(jī),單片機(jī)結(jié)束 SPI 總 線的接收操作,至此,一個(gè) Block 被正確讀入單片機(jī)內(nèi)。 讀 Block 操作: 1)發(fā)送 CMD17,啟動(dòng)讀 Block 操作; 2)接收數(shù)據(jù),直至接收完畢 Block Size 個(gè)數(shù)據(jù); 3)接收
49、CRC 校驗(yàn),結(jié)束讀 Block 操作。 .public _SPI_SendByte _SPI_SendByte: .proc r1 = sp + 3 r1 = r1 r2 = 8 ?L_SPI_SendByte_Lop: test r1, 0 x0080 jz ?L_SPI_SendByte_Bit8_0 SPI_DOUT_SET jmp ?L_SPI_SendByte_Bit8_End ?L_SPI_SendByte_Bit8_0: SPI_DOUT_CLR ?L_SPI_SendByte_Bit8_End: SPI_SCK_CLR SPI_SCK_SET r1 = r1 lsl 1 r2
50、 -= 1 jnz ?L_SPI_SendByte_Lop retf .endp 單片機(jī)從 SD 卡寫入 Block 數(shù)據(jù)的過程。 首先單片機(jī)發(fā)送 CMD24 命令以及希望寫入的 Block 的地 址參數(shù)給 SD 卡,然后,SD 卡返回一個(gè) byte 的響應(yīng)數(shù)據(jù),告 知單片機(jī)該操作是否可以正常進(jìn)行。 然后,單片機(jī)通過 SPI 總線發(fā)送 Block Size 個(gè)數(shù)據(jù),這 些數(shù)據(jù)被 SD 卡接收,并緩存。 最后,單片機(jī)發(fā)送 CRC 校驗(yàn),并等待 SD 卡完成這些數(shù)據(jù) 的燒寫。 寫 Block 操作: 1)發(fā)送 CMD24,啟動(dòng)寫 Block 操作; 2)發(fā)送數(shù)據(jù)給 SD 卡,直至寫滿 Block
51、Size 個(gè)數(shù)據(jù); 3)發(fā)送 CRC 校驗(yàn),等待 SD 卡完成內(nèi)部燒寫,結(jié)束寫 Block 操作。 .public _SPI_RecByte _SPI_RecByte:.proc r1 = 0 r2 = 8 ?L_SPI_RecByte_Loop: SPI_SCK_CLR SPI_SCK_SET r1 = r1 lsl 1 r3 = SD_BUS_Data test r3, SD_BUS_Din jz ?L_SPI_RecByte_NoAdd r1 += 1 ?L_SPI_RecByte_NoAdd: r2 -= 1 jnz ?L_SPI_RecByte_Loop retf .endp 4.5
52、 語(yǔ)音文件操作管理程序 語(yǔ)音文件操作管理程序主要完成對(duì)語(yǔ)音文件的管理,以 及在錄/放音的過程中對(duì)寫入 SD 卡的數(shù)據(jù)進(jìn)行控制,保證數(shù) 據(jù)按照 Block 為單位寫入。 程序中使用一個(gè)簡(jiǎn)單的結(jié)構(gòu)體保存每個(gè)語(yǔ)音文件在 SD 卡 中的位置信息: typedef struct _SD_FS unsigned long int StartSec; / 語(yǔ)音文件的起始 Block 地址 unsigned long int EndSec; / 語(yǔ)音文件的結(jié)束 Block 地址 unsigned int Offset; / 語(yǔ)音文件在最后一個(gè) Block 中的使用量 FileList; FileList g_
53、FileListArrayFS_MAX_FILENUM; / 文件 索引表 語(yǔ)音文件操作管理相關(guān)函數(shù)中通過定義一個(gè)全局變量 CurOffset 存儲(chǔ)當(dāng)前 Block 已經(jīng)寫入的數(shù)量,以便在寫入(讀 取)新的數(shù)據(jù)時(shí)對(duì)是否超出 Block 進(jìn)行判斷。當(dāng)連續(xù)讀取 (寫入)數(shù)量超過一個(gè) Block 的大小時(shí)將讀完(寫滿)本 Block 并自動(dòng)切換至下一 Block 繼續(xù)讀取(寫入)剩余數(shù)據(jù)。 同時(shí),程序中規(guī)定語(yǔ)音文件在存儲(chǔ)的時(shí)候如果最后一個(gè) Block 沒有使用完,則下一段語(yǔ)音從下一個(gè) Block 的起始地址開始 存儲(chǔ)。 4.6 錄/放音程序 SPCE061A是16位單片機(jī),具有DSP功能,有很強(qiáng)的信
54、息處 理能力,最高時(shí)鐘頻率可達(dá)到49MHz,具備運(yùn)算速度高的優(yōu)勢(shì) 等等,這些都無疑為語(yǔ)音的播放、錄放、合成及辨識(shí)提供了 條件。壓縮算法中SACM-A1600、SACM-S530、SACM- S480/S720、SACM-S200主要是用來放音,可用于語(yǔ)音提示, 而DVR1600則用來錄/放音。 部分程序如下: .include spce061a.inc .public F_USER_DVR1600_EndRecord /.public _USER_DVR1600_SetStartAddr /.public F_USER_DVR1600_SetStartAddr .public F_USER_D
55、VR1600_GetData .public F_USER_DVR1600_WriteData /.public F_USER_WriteWordBlock/* /.public F_USER_ReadWordBlock/* .external _FS_ReadingFile .external _FS_WritingFile .external _FS_EndEncode void FS_WritingFile(unsigned int *Buf, unsigned int Len) unsigned int i; Len = (SD_BLOCKSIZE - CurOffset) SD_Wr
56、itingBlockData(unsigned long int)(SD_BLOCKSIZE - CurOffset), (unsigned char *)Buf); SD_WriteFinished(); CurFileSec+; CurFileEndSec = CurFileSec; i = SD_BLOCKSIZE - CurOffset; CurOffset = Len - i; i = 1; SD_WriteNewBlock(CurFileSec); SD_WritingBlockData(unsigned long int)CurOffset , (unsigned char *)
57、 else SD_WritingBlockData(unsigned long int)Len, (unsigned char *)Buf); CurOffset += Len; void FS_ReadingFile(unsigned int *Buf, unsigned int Len) unsigned int i; Len = (SD_BLOCKSIZE - CurOffset) SD_ReadingBlockData(unsigned long int)(SD_BLOCKSIZE - CurOffset), (unsigned char *)Buf); SD_ReadFinished
58、(); if(CurFileSec = 1; SD_ReadNewBlock(CurFileSec); SD_ReadingBlockData(unsigned long int)CurOffset, (unsigned char *) else SD_ReadingBlockData(unsigned long int)Len, (unsigned char *)Buf); CurOffset += Len; 5 系統(tǒng)測(cè)試及性能分析 系統(tǒng)的硬件部分和軟件部分完成以后,應(yīng)對(duì)系統(tǒng)進(jìn)行嚴(yán) 格的測(cè)試及性能分析。為了保證系統(tǒng)功能的實(shí)現(xiàn),系統(tǒng)的測(cè) 試按照主程序流程所設(shè)計(jì)的方案依次對(duì)各模塊進(jìn)行測(cè)試。系 統(tǒng)
59、測(cè)試流程圖如圖 5.1。 喇叭測(cè)試 主程序下載運(yùn)行 控制模塊測(cè)試 音頻輸入 音頻輸出 圖 5.1 系統(tǒng)測(cè)試流程圖 5.1 喇叭測(cè)試 目的:測(cè)試?yán)饶芊裾9ぷ?條件:只連接喇叭和電路板,噪音相對(duì)較小的室內(nèi)環(huán)境。 步驟 1:接通電源,用萬用表測(cè)量喇叭的正負(fù)極看是否有 電壓。 步驟 2:將一個(gè)最簡(jiǎn)單的語(yǔ)音播放程序下載并運(yùn)行。 現(xiàn)象 1:萬用表可以測(cè)量出電壓。 結(jié)論:喇叭無損環(huán),電路連接正常。 現(xiàn)象 2:程序下載并運(yùn)行后,聲音能正常播放。 結(jié)論:喇叭可以正常工作。 5.2 程序下載及運(yùn)行 在程序下載前,先按照硬件連接圖 3.3 連接好硬件,然 后把 3 節(jié)五號(hào)電池裝入電池盒并把電源線與系統(tǒng)連接。下載
60、 線的一邊(25 針插座)與 PC 后面的并行接口相接,另一邊的 五針接頭與電路板上標(biāo)有“EZ-Probe”的插座(J11)相接, 并用 J11 接口邊上的 S5 跳線把 S5 的 2 和 3 管腳短接。打開 電池盒開關(guān),POWER 指示燈和 LCD 液晶顯示屏上的電源指示燈 都被點(diǎn)亮,證明系統(tǒng)連接正常,可以開始下載。 用 IDE 打開設(shè)計(jì)好的工程文件,并確認(rèn)以選定了“USE ICE”按鈕。選擇“USE ICE”如圖 5.2。 圖 5.2 選擇“USE ICE” 當(dāng)程序處于下載狀態(tài)時(shí),會(huì)彈出一個(gè)進(jìn)度框。下載進(jìn)程 如圖 5.3。 圖 5.3 下載進(jìn)程對(duì)話框 下載完成后關(guān)閉電池盒開關(guān),斷開“EZ-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游產(chǎn)品的創(chuàng)新開發(fā)
- 二零二五年度綠色能源項(xiàng)目9%股權(quán)置換協(xié)議2篇
- 科技魔力:農(nóng)業(yè)4.0
- 2025版廠房拆除工程環(huán)境保護(hù)及補(bǔ)償協(xié)議4篇
- 專業(yè)設(shè)備銷售協(xié)議樣例版B版
- 2025年度拆遷建筑工程居間服務(wù)委托合同4篇
- 2025年度工業(yè)自動(dòng)化設(shè)備租賃合同參考范文4篇
- 2025年廠房設(shè)備租賃與數(shù)字化管理合同范本3篇
- 二零二五版養(yǎng)老地產(chǎn)租賃合同樣本3篇
- 2025年度體育場(chǎng)館租賃合同保證金與押金支付及退還方案3篇
- 重慶育才中學(xué)2025屆化學(xué)九上期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 成都市2022級(jí)(2025屆)高中畢業(yè)班摸底測(cè)試(零診)數(shù)學(xué)試卷(含答案)
- 【云南省中藥材出口現(xiàn)狀、問題及對(duì)策11000字(論文)】
- 服裝板房管理制度
- 河北省興隆縣盛嘉恒信礦業(yè)有限公司李杖子硅石礦礦山地質(zhì)環(huán)境保護(hù)與治理恢復(fù)方案
- 第七章力與運(yùn)動(dòng)第八章壓強(qiáng)第九章浮力綜合檢測(cè)題(一)-2023-2024學(xué)年滬科版物理八年級(jí)下學(xué)期
- 醫(yī)療機(jī)構(gòu)診療科目名錄(2022含注釋)
- 微視頻基地策劃方案
- 光伏項(xiàng)目質(zhì)量評(píng)估報(bào)告
- 八年級(jí)一本·現(xiàn)代文閱讀訓(xùn)練100篇
- 2023年電池系統(tǒng)測(cè)試工程師年度總結(jié)及下一年計(jì)劃
評(píng)論
0/150
提交評(píng)論