基于單片機的SD卡錄音筆設(shè)計與實現(xiàn)_第1頁
基于單片機的SD卡錄音筆設(shè)計與實現(xiàn)_第2頁
基于單片機的SD卡錄音筆設(shè)計與實現(xiàn)_第3頁
基于單片機的SD卡錄音筆設(shè)計與實現(xiàn)_第4頁
基于單片機的SD卡錄音筆設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩96頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于單片機的 SD 卡錄音筆設(shè)計與實現(xiàn) 摘 要 本文介紹的是基于單片機的 SD 卡錄音筆的設(shè)計與實現(xiàn)。 首先介紹了 SD 卡和 SPCE061A 的技術(shù)應(yīng)用,發(fā)展趨勢和研究 意義;然后深入分析了單片機錄音筆的基本原理,同時全面 介紹了實現(xiàn)基于單片機的 SD 卡錄音筆所需要的硬件和軟件; 接下來是詳細(xì)介紹了實現(xiàn)基于單片機的 SD 卡錄音筆的硬件電 路設(shè)計以及軟件結(jié)構(gòu)設(shè)計;最后對整個系統(tǒng)的性能進(jìn)行測試 和分析。 整個系統(tǒng)分為硬件設(shè)計和軟件設(shè)計兩大模塊。硬件部分 由凌陽公司的 SPCE061A 單片機,揚聲器,電池組等構(gòu)成;軟 件環(huán)境選擇的是與硬件配套的 unsp IDE 2.0.0。本系統(tǒng)能 夠?qū)?/p>

2、現(xiàn)對聲音的多段錄音、放音、刪除等功能。 關(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 留聲機.3 1.2.2 鋼絲錄音和磁帶.3 1.2.3 數(shù)碼錄音筆.4 1.3 SD 卡錄音筆的發(fā)展趨勢.5 1.3.1 提高錄音質(zhì)量.5 1.3.2 多功能于一身.5 1.3.3 降低成本

6、減小體積.5 1.4 基于單片機的 SD 卡錄音筆研究意義 .6 2 錄音筆功能分析及開發(fā)環(huán)境 .7 2.1 功能概述 .7 2.1.1 SPCE061A 對 SD 卡的讀寫功能 .7 2.1.2 錄/放音及刪除功能 .7 2.2 設(shè)計環(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è)計方案及硬件設(shè)計 .15 3.1 總體設(shè)計方案 .15 3.1.1 硬件設(shè)計總體框圖.15 3.1.2 系統(tǒng)軟件設(shè)計架構(gòu).16 3.2 系統(tǒng)硬件

7、設(shè)計 .17 3.2.1 系統(tǒng)硬件連接實物圖.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è)計 .21 4.1 主程序設(shè)計 .21 4.2 按鍵處理程序流程 .23 4.3 按鍵掃描程序 .29 4.4 語音錄/放在 SD 卡上的實現(xiàn).31 4.5 語音文件操作管理程序.36 4.6 錄/放音程序.37 5 系統(tǒng)測試及性能分析 .39 5.1 喇叭測試 .39 5.2 程序下載及運行 .40 5.3 系統(tǒng)功能測試 .41 結(jié)論 .42 致謝 .43 參考文獻(xiàn) .44 附錄 .

8、45 附錄 1 主程序代碼(MAIN.C) .45 外文資料翻譯(附原文) .56 1 緒論 1.1 SD 卡錄音筆概論 SD 卡錄音筆,數(shù)字錄音器的一種,特點是機身小巧精致, 攜帶方便,錄音筆是通過 SD 卡的方式來存儲音頻的。比較于 以前的錄音機和磁帶錄音方式來講,錄音筆通過對模擬信號 的采樣、編碼將模擬信號通過數(shù)模轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字信號, 并進(jìn)行一定的壓縮后進(jìn)行存儲,音質(zhì)效果也要比傳統(tǒng)的錄音 機好一些,而數(shù)字信號即使經(jīng)過多次復(fù)制,聲音信息也不會 受到損失,保持原樣不變,由于是數(shù)字的錄制方式,因此數(shù) 碼錄音筆的播放、定位、查找都非常的方便,并且可以實現(xiàn) 循環(huán)播放。 SD 卡是一種基于半導(dǎo)體快

9、閃記憶器的新一代記憶設(shè)備, 它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機和多媒體播 放器等。大小猶如一張郵票的 SD 記憶卡,重量只有 2 克,但 卻擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以 及很好的安全性。 除了體積極小之外,SD 卡的存儲特點是可以經(jīng)受上百萬 次的反復(fù)擦寫,因此反復(fù)使用的成本是零。而且 SD 卡容量越 大,錄音時間也就越長。從現(xiàn)在的情況來看,1GB 閃存可以存 儲大約 272 小時錄音信息。對于傳統(tǒng)的磁帶式錄音方式來說, 簡直是天方夜譚。 本課題是在 SD 卡和凌陽 SPCE061A 單片機的基礎(chǔ)上設(shè)計 一款錄音筆。凌陽 SPCE061A 單片機具有的數(shù)字信號處理功

10、能 及其所提供的音頻壓縮函數(shù)庫來實現(xiàn)語音信號的實時采樣與 壓縮;通過 RS232 接口,將采集到的語音信號實時上傳到 SD 卡中存儲。 SD 卡數(shù)碼錄音筆主要由下列二部分組成: SPCE061A 開 發(fā)板,SD 卡模組。 SD 卡數(shù)碼錄音筆的技術(shù)要求主要是:錄制語音,播放語 音,刪除語音。 SPCE061A 開發(fā)板:SPCE061A 是一款 16 位微控制器,內(nèi) 嵌 32K 的閃存(FLASH)。SPCE061A 為語音產(chǎn)品而集成了 ADC、DAC、AGC 等,還具有 n 項內(nèi)積運算指令,較高的處理 速度使 unSP 能夠非常容易快速地處理復(fù)雜的數(shù)字信號,是 數(shù)字語音識別應(yīng)用領(lǐng)域的一種最經(jīng)濟選

11、擇。 SPCE061A 精簡開發(fā)板配有調(diào)試功能;結(jié)合集成開發(fā)環(huán)境 不需外界任何仿真、調(diào)試器即可以完成編程、仿真、調(diào)試功 能。 本課題利用 SPCE061A 的語音處理功能,以及其強大的處 理能力,再配合 SD 卡模組,很容易實現(xiàn)了大容量超長錄音功 能。 SD 卡模組:SD 卡座模組為單片機提供了 SD 卡的插接裝 置,以 SPI 總線方式與單片機通訊,同時,提供卡檢測、寫 保護(hù)檢測等檢測端口,以便用戶可以方便靈活的為單片機外 擴 SD 卡存儲設(shè)備。 還包括:外置揚聲器,外置電源。 SD 卡數(shù)碼錄音筆廣泛應(yīng)用于社會各個部分,是當(dāng)今最為 常見的錄音設(shè)施之一。錄音筆也由筆形逐漸發(fā)展成為各種形 狀,趨

12、于小巧實用。 1.2 錄音器的發(fā)展歷史 1.2.1 留聲機 1877 年 8 月 15 日,愛迪生發(fā)明了留聲機。這臺留聲機由 金屬大圓桶、曲軸、受話機和膜板構(gòu)成,如上圖。金屬圓桶 上面刻有螺旋的槽紋,并安裝在一個長的曲軸上,曲軸一端 是手柄,搖動手柄圓通就隨之轉(zhuǎn)動。受話器其實是一根金屬 小管,管的一頭有一張振膜,振膜上貼著一個有金屬鈍頭的 細(xì)針,另一頭是受話端。錄音的時候,先在圓桶上貼一張錫 箔,然后將受話器細(xì)針端對準(zhǔn)圓桶,勻速轉(zhuǎn)動圓桶,對受話 器的另一端說話,聲音則被振動的細(xì)針記錄在錫箔上?;胤?的時候,將細(xì)針端再拿回到圓桶的最開始處,轉(zhuǎn)筒圓桶,聲 音就被原樣播放出來。 1.2.2 鋼絲錄音

13、和磁帶 愛迪生的留聲機是純機械錄音技術(shù),在這之后,錄音技 術(shù)發(fā)展為光學(xué)錄音、磁性錄音和電子錄音。其中,光學(xué)錄音 顧名思義就是將聲音信號轉(zhuǎn)變?yōu)楣鈱W(xué)信號,記錄在感光底片 上的一種技術(shù),最初應(yīng)用在有聲電影的研究上,并在最早的 電影領(lǐng)域取得了廣泛的應(yīng)用。在電影膠片的一側(cè)有一條窄條, 叫做聲帶,播放時由播放機轉(zhuǎn)變?yōu)橥降穆曇粜盘栍枰园橐簟?需要說明的是,光學(xué)錄音由于對制作技術(shù)環(huán)節(jié)要求較高,且 不可擦寫,所以當(dāng)時除了電影伴音這部分應(yīng)用廣泛發(fā)展外, 其他應(yīng)用面較為狹窄。 磁性錄音是應(yīng)非常廣泛的錄音技術(shù),最具代表性的革新 就是 1900 年鋼絲錄音機的發(fā)明。鋼絲錄音機利用磁性錄音原 理,將受話器與電磁鐵連接,

14、將聲音信號首先轉(zhuǎn)換為不斷變 化的磁信號,然后將鋼絲與電磁鐵緊密貼在一起并勻速轉(zhuǎn)動, 這樣鋼絲上就形成了強度隨聲音信號變化而變化的磁場,回 放的時候只需要把鋼絲重新在電磁鐵上經(jīng)過一次,聲音就被 還原出來,磁帶錄音機就是鋼絲錄音機的改進(jìn)版本,只是現(xiàn) 代人把鋼絲改為了軟質(zhì)的塑料磁帶而已。 1.2.3 數(shù)碼錄音筆 21 世紀(jì)初,數(shù)碼錄音技術(shù)(也稱電子錄音)誕生,這是 通過對模擬信號的采樣、編碼將模擬信號通過數(shù)模轉(zhuǎn)換器轉(zhuǎn) 換為數(shù)字信號,并進(jìn)行一定的壓縮后進(jìn)行存儲的技術(shù)。而數(shù) 字信號即使經(jīng)過多次復(fù)制,聲音信息也不會受到損失,保持 原樣不變。 通常數(shù)碼錄音筆的音質(zhì)效果要比傳統(tǒng)的錄音機要好一些。 錄音筆通常標(biāo)

15、明有 SP,LP 等錄音模式,SP 表示 ShotPlay 即 短時間模式,這種方式壓縮率不高,音質(zhì)比較好,但錄音時 間短。而數(shù)碼錄音筆品牌分布圖 LP 表示 LongPlay,即長時間 模式,壓縮率高,音質(zhì)會有一定的降低。 因此,數(shù)碼錄音筆迅速取代之前所有錄音產(chǎn)品,成為當(dāng) 今錄音領(lǐng)域的“專家”。 1.3 SD 卡錄音筆的發(fā)展趨勢 從首款 SD 卡錄音筆上市到現(xiàn)在,短短 4 年內(nèi)成為銷量最 大的隨身錄音設(shè)備,證明其有著極高的性能和質(zhì)量,價格而 比較合理。隨著電子錄音技術(shù)的發(fā)展和消費者使用需求的提 高,數(shù)碼錄音筆的革新也是勢在必行。 1.3.1 提高錄音質(zhì)量 一方面,隨著科技的發(fā)展,錄音筆的錄音

16、質(zhì)量將會提升, 高清錄音筆,超長時間錄音筆將會面世。 1.3.2 多功能于一身 近幾年,數(shù)碼產(chǎn)品都朝著多功能化發(fā)展,隨著技術(shù)的不 斷發(fā)展,數(shù)碼產(chǎn)品的整合絕對是將來的一個大方向,現(xiàn)在很 多錄音筆都已經(jīng)支持 MP3 播放功能,已經(jīng)從單純的錄音發(fā)展 到具備聽 MP3 音樂,U 盤,復(fù)讀以及電話錄音等多項功能。 此外,錄音筆將發(fā)展到一個全新的階段,錄音/復(fù)讀, MP3 播放,影像記錄,圖片瀏覽(數(shù)碼伴侶),TXT 文檔閱讀, 移動存儲等多功能于一身的錄音筆將會出現(xiàn)。 1.3.3 降低成本減小體積 降低成本是任何技術(shù)商業(yè)化的重要前提,一般的途徑是 通過規(guī)模生產(chǎn)來攤薄成本。錄音筆的成本在于技術(shù)和原材料 兩

17、個方面,而技術(shù)的發(fā)展勢必在成本上很難降低,所以,相 信通過生產(chǎn)原材料價格的走低,錄音筆也會漸漸便宜。 既多功能,又小巧實用,外觀精致創(chuàng)新,也是錄音筆外 形的發(fā)展趨勢。 1.4 基于單片機的 SD 卡錄音筆研究意義 本課題主要是研究基于單片機的 SD 卡錄音筆設(shè)計,本課 題是以單片機 SPCE061A 來實現(xiàn)一個錄音筆系統(tǒng)。SPCE061A 該 款單片機資源豐富,有強大的數(shù)字語音處理功能可應(yīng)用與語 音播放和語音識別領(lǐng)域,內(nèi)置有 2 路 DA 轉(zhuǎn)換,8 路 AD 轉(zhuǎn)換及 在線仿真等豐富的功能,這些都為實現(xiàn)數(shù)碼錄音和播放提供 了良好的方便條件。 長期以來,以 Flash Memory 為存儲體的 S

18、D 卡因具備體 積小、功耗低、可擦寫以及非易失性等特點而被廣泛應(yīng)用于 消費類電子產(chǎn)品中特別是近年來,隨著價格不斷下降且存儲 容量不斷提高,它的應(yīng)用范圍日益增廣。 當(dāng)數(shù)據(jù)采集系統(tǒng)需要長時間地采集、記錄海量數(shù)據(jù)時, 選擇 SD 卡作為存儲媒質(zhì)是開發(fā)者們一個很好的選擇在電能監(jiān) 測以及無功補償系統(tǒng)中,要連續(xù)記錄大量的電壓、電流、有 功功率、無功功率以及時間等參數(shù),當(dāng)單片機采集到這些數(shù) 據(jù)時可以利用 SD 作為存儲媒質(zhì)。 因此,基于單片機的 SD 卡錄音筆將會是今后最常見的錄 音工具。 2 錄音筆功能分析及開發(fā)環(huán)境 2.1 功能概述 隨著數(shù)字存儲技術(shù)的發(fā)展,大容量存儲設(shè)備充斥著電子 應(yīng)用的方方面面。對于

19、嵌入式系統(tǒng)來說,功能的增強,也需 要大容量存儲設(shè)備做支撐。SD 卡是一種輕便的大容量的存儲 設(shè)備。它使用方便,工作穩(wěn)定,可以為嵌入式系統(tǒng)提供大容 量的數(shù)據(jù)存儲擴展,使得系統(tǒng)有強大的錄音功能。利用 SPCE061A 為主控芯片,SD 卡做為存儲介質(zhì),實現(xiàn)單片機的超 長時間錄放音功能。 2.1.1 SPCE061A 對 SD 卡的讀寫功能 (1)SPCE061A 對 SD 卡的操作方式為 SPI 模式; (2)提供 SD 卡插入檢測功能,并進(jìn)行語音提示; (3)提供 SD 卡寫保護(hù)檢測功能,并進(jìn)行語音提示; (4)可以對 SD 卡進(jìn)行初始化、扇區(qū)寫、扇區(qū)讀、扇區(qū)擦除、 得到 SD 卡的容量信息等操

20、作。 2.1.2 錄/放音及刪除功能 (1)錄音數(shù)據(jù)存儲在 SD 卡中; (2)支持多段錄音; (3)放音支持“上一曲”、“下一曲”; (4)可以刪除所有的錄音片斷,重新開始錄音。 2.2 設(shè)計環(huán)境介紹 2.2.1 系統(tǒng)硬件環(huán)境介紹 本系統(tǒng)的硬件部分采用的是 SPCE061A 單片機。SPCE061A 單片機是一個 16 位結(jié)構(gòu)的微控制器。以下是它的性能簡介: (1)16 位的高性能 unSP 內(nèi)核單片機 (2)CPU 時鐘范圍:0.32MHz49MHz (3)片內(nèi) 32K 字的 Flash 程序存儲器、2K 字的 SRAM 數(shù)據(jù)存 儲器 (4)4 個 16 位 I/O 端口 (5)14 個中

21、斷源 (6)1 通道專用音頻 AD 轉(zhuǎn)換通道,7 通道 AD 轉(zhuǎn)換通道 (7)內(nèi)置 MIC 放大電路和自動增益(AGC)放大電路 (8)2 路電流輸出型的 DA 轉(zhuǎn)換通道 (9)2 個 16 位通用定時器/計數(shù)器 (10)實時實鐘(RTC) (11)低電壓復(fù)位、低電壓監(jiān)測 (12)內(nèi)置在線仿真接口(ICE) (13)具有保密功能 (14)具有 Watchdog 功能 SPCE061A 片內(nèi)結(jié)構(gòu),主要包括 SPCE061A 時鐘電路,PPL 鎖相環(huán)及外圍電路,SPCE061A 系統(tǒng)時鐘和 Watchdog。圖 2.1 為 SPCE061A 片內(nèi)結(jié)構(gòu)圖。 雙16位定時器 /計數(shù)器 7通道10位AD

22、C 單通道ADC+AGC CPU時鐘 實時時鐘 FLASH RAM 時基 中斷控制 IOA15 - 0 IOB15 - 0 鎖相環(huán) 振蕩器 IOB0 (SCK)IOB1(SDA) 低電壓監(jiān)測/ 低電壓復(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è)計使用的是 nSP IDE 集成開發(fā)環(huán)境。 unSP IDE 集成開發(fā)環(huán)境支持匯編語言和 C 語言混合編程進(jìn) 行程序開發(fā),集程序的編輯、編譯、鏈接、調(diào)試以及仿真等 功能為一體并且支持軟件仿真和調(diào)試的功能。 unSP IDE 的主要特點是:提供了友好的交互界面、易 于操作,使調(diào)試工作方便且高效。工具界面主要分為主菜單, 工具欄,工作區(qū)窗口,編輯區(qū)窗口,輸出區(qū)窗口。圖 2.2 為 工具界面參照圖。 圖 2.2 工具界面參照圖 Workspace 窗口,如圖 2.3。 Workspace 窗口由 FileView 和 ResourceView 兩個視窗組 成。單擊 FileView 標(biāo)簽,用

24、戶可以方便瀏覽到工程內(nèi)的各文 件。FileView 視窗用層次圖排列出當(dāng)前工程的所有文件的邏 輯關(guān)系。Files 文件夾包含了源程序、程序接口和說明硬件配 置情況的文件。Resource 文件夾包括了各種資源文件(rc)。 Source Files 文件夾用于保存源文件。Head Files 文件夾用 于保存頭文件。External Dependencies 文件夾用于保存對工 程的一些標(biāo)注信息。ResourceView 視窗列出當(dāng)前工程用到的 所有資源??梢詥螕粢暣皟?nèi)分支頂部旁邊的和號展開和 收縮層次圖。 Workspace 窗口所體現(xiàn)的邏輯位置不是指文件在硬盤上的 物理位置,而是指一種邏輯

25、從屬關(guān)系。用戶可用拖曳的辦法 改變文件的邏輯位置。在 Workspace 窗口內(nèi),不同類型的文 件有不同的圖標(biāo)表現(xiàn)。 圖 2.3 Workspace 窗口 Output 窗口,如圖 2.4。 Output 窗口用于顯示編譯、調(diào)試和查找的結(jié)果。在窗口 底部有幾個視窗標(biāo)簽:Build、Debug 和 Find in Files 等。 用鼠標(biāo)單擊這些標(biāo)簽,可以激活相應(yīng)的視窗。 Build:顯示編譯和鏈接過程里產(chǎn)生的信息,包括文件編 輯過程里的錯誤和警告信息等。 Debug:顯示程序調(diào)試過程里出現(xiàn)的信息。 Find in Files:顯示在文件中查找字符的結(jié)果。 Edit 窗口:在 Edit 窗口里,

26、文件的打開格式有兩種: 用戶可用文本格式打開文件,也可以用二進(jìn)制代碼格式打開 文件。 圖 2.4 Output 窗口 文件編輯器,如圖 2.5。 文本編輯器可以用來打開匯編語言程序和 C 語言程序。 圖 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 對話框如圖 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)建工程對話窗口 開發(fā)操作過程 從開始菜單內(nèi)啟動工具; 選擇FileOpen Project,在打開對話框內(nèi)選 擇所要打開的工程; 窗口(工作區(qū)窗口)顯示在工具的左半邊,在這個窗口 內(nèi),用戶可以看到當(dāng)前工程所包含的所有文件; 選擇BuildRebuild All,進(jìn)行源文件的編譯和鏈 接。 編譯過程里的語法錯誤顯示在 Output 窗口內(nèi); 選擇BuildStart DebugDownload,把程序加 載到 RAM,然后,用

28、戶可以用 Debug 菜單內(nèi)所提供的調(diào)試命令 來優(yōu)化和運行程序。選擇 6、BuildStart DebugGo, 在調(diào)試器內(nèi)運行程序。 3 錄音筆總體設(shè)計方案及硬件設(shè)計 3.1 總體設(shè)計方案 3.1.1 硬件設(shè)計總體框圖 系統(tǒng)采用 SPCE061A 做為主控制器,使用其通用 I/O 口控 制 SD 卡設(shè)備,實現(xiàn)存儲器擴展;利用電路板上的三個按鍵對 錄放音進(jìn)行控制;利用 SPCE061A 帶有 AGC 的專用 A/D 轉(zhuǎn)換通 道做為音頻輸入,完成語音錄制功能;利用 SPCE061A 的 D/A 進(jìn)行音頻輸出,實現(xiàn)語音播放功能。圖 3.1 為硬件總體框圖。 輸入指令 麥克風(fēng) 揚聲器 電源線 錄音

29、放音 電源 SD 卡 SPCE061A 儲存或刪除數(shù)字信號 提取數(shù)字信號 按鍵鍵盤 圖 3.1 硬件總體框圖 3.1.2 系統(tǒng)軟件設(shè)計架構(gòu) 軟件系統(tǒng)包括以下部分: 主程序:完成系統(tǒng)的初始化,處理按鍵信息,并根據(jù)按 鍵,在語音文件操作管理程序的配合下,創(chuàng)建語音文件進(jìn)行 錄音,或控制讀取語音文件進(jìn)行回放。 按鍵掃描程序:完成對 IOA 口低八位的 18 按鍵進(jìn)行掃 描,并完成去抖、判斷長/短按鍵等功能。 SD 卡驅(qū)動程序:該部分完成對 SD 卡的初始化、得到卡的 容量信息、讀寫操作、擦除操作等。 語音文件操作管理程序:該部分完成對多段錄音的管理。 每增加一段錄音,程序會將起始地址、終止地址等相關(guān)信

30、息 保存,以便可以回放。 錄/放音程序:實現(xiàn)對 A/D 采樣數(shù)據(jù)的編碼和存儲,以及 從 SD 卡讀取錄音數(shù)據(jù)并解碼然后送至 D/A 播放等操作。 3.2 系統(tǒng)硬件設(shè)計 3.2.1 系統(tǒng)硬件連接實物圖 系統(tǒng)主要由 SPCE061A 單片機,麥克風(fēng),揚聲器,電源及 儲存器構(gòu)成。SPCE061A 單片機控制板作為整個系統(tǒng)的主控板, 對麥克風(fēng)采集來的聲音信號進(jìn)行數(shù)字處理并儲存號功能。圖 3.3 為硬件連接實物圖。 3.3 系統(tǒng)硬件連接實物圖 3.2.2 SPCE061A 最小系統(tǒng) 本設(shè)計選用的單片機模塊為 SPCE061A 單片機模塊,該模 塊包括 SPCE061A 芯片(MCU)、片內(nèi) FLASH

31、和其外圍的基本 模塊。外圍模塊有:電機驅(qū)動電路板、鎖相環(huán)外圍電路 (PLL)、復(fù)位電路(RESET)等。 SPCE061A 的主控芯片,負(fù)責(zé)構(gòu)建語音錄放的數(shù)據(jù)結(jié)構(gòu), 并在單片機內(nèi)部 Flash 中保存有語音內(nèi)容和相關(guān)語音信息。 SPCE061A 控制端口輸出控制信息,并控制喇叭輸出聲音 信息。實現(xiàn)對整個系統(tǒng)的控制。通過本系統(tǒng)中的音頻輸入電 路和 MIC,可以采集語音信號并處理。圖 3.4 為 SPCE061A 最 小系統(tǒng)圖。 圖 3.4 SPCE061A 最小系統(tǒng)圖 3.2.3 按鍵電路 本系統(tǒng)使用三個按鍵完成錄放音控制。圖 3.5 為按鍵電 路圖。 Key1 為“下一曲”鍵,Key2 為“上

32、一曲”鍵,Key3 為“錄音 鍵”。 圖 3.5 按鍵電路圖 3.2.4 音頻輸出電路 SPCE061A 內(nèi)置 2 路 10 位精度的 DAC,只需要外接功放電 路即可完成語音的播放。電路中 SPY0030 是凌陽公司一款音 頻放大芯片。它和 LM386 相比,LM386 工作電壓需在 4V 以上, SPY0030 僅需 2.4V 即可工作(兩顆電池即可工作);LM386 輸 出功率 100mW 以下, SPY0030 約 700mW。圖 3.6 為音頻輸出電 路圖。 圖 3.6 音頻輸出電路圖 3.2.5 SD 卡模組電路 在本系統(tǒng)中,SPCE061A 通過 SPI 總線實現(xiàn)對 SD 卡設(shè)備

33、的 訪問。SD 卡模組同時提供卡插入檢測和寫保護(hù)檢測接口。圖 3.7 為 SD 卡模組電路圖。 圖 3.7 SD 卡模組電路圖 4 系統(tǒng)軟件設(shè)計 4.1 主程序設(shè)計 主程序采用的是匯編語言和 C 語言混合編程。主程序流程圖 如圖 4.1。 系統(tǒng)初始化 檢測 SD 卡是否插入? 否 檢查 SD 卡是否寫保護(hù)? 置寫保護(hù)標(biāo)志 播放“SD 卡寫保護(hù)” 是 否 初始化 SD 卡 按鍵處理 系統(tǒng)狀態(tài)處理 是 播放“注意 SD 卡沒有插入” 檢測 SD 卡是否插入? 否 是 播放“就緒” 語音提示程序 開始 圖 4.1 主程序流程圖 主程序完成系統(tǒng)初始化后檢測 SD 卡是否插入以及是否有 寫保護(hù),并有相應(yīng)

34、的語音提示,告知用戶當(dāng)前的系統(tǒng)狀態(tài)。 如果 SD 卡正確插入,則系統(tǒng)根據(jù)用戶的不同按鍵進(jìn)行錄/放 音控制。同時,在循環(huán)中對系統(tǒng)當(dāng)前的狀態(tài)進(jìn)行檢測,控制 系統(tǒng)在錄制語音時不至于超出存儲器容量限制,或控制系統(tǒng) 在放音時播放至文件尾部自動停止播放。 部分程序如下: SACM_DVR1600_Initial();/ 語音初始化 if(0 = SD_ChkCard() / 檢測卡是否插入 PlaySnd(VOICE_ATTENTION, DAC1 + DAC2); PlaySnd(VOICE_SDCARDNOTINSERT, DAC1 + DAC2); while(0 = SD_ChkCard();/等

35、待卡插入 if(1 = SD_ChkCardWP()/檢測卡是否有寫保護(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)檢測到有 SD 卡寫保護(hù)時,會播放 “卡有寫保護(hù)”的提示音,對按鍵不做處理。按鍵處理流程 圖如圖 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)按下錄音鍵時,若為短按鍵且 SD 卡未滿,提示錄音開 始并置錄音標(biāo)志,開始錄音?!颁浺簟卑存I處理程序的流程 圖如圖 4.3 所示。 圖 正在播放? 短按鍵? 是 是

37、停止播放,關(guān)閉讀取 SD 卡 系統(tǒng)狀態(tài)置空閑 SD 卡已滿? 否 是 否 系統(tǒ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)/長按鍵,停止當(dāng)前播放 Status = IDLE; else if(C_SReleaseKeyState = KeyType)/短按鍵,播放下一曲 系統(tǒng)狀態(tài)處理程序主要完成在錄音時判斷是否超出 SD 卡 容量限制

39、,或者在放音時當(dāng)前語音是否播放完畢。系統(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)/檢測是否超出 SD 卡容量范圍 SACM_DVR1600_Stop(); Status = IDLE; case PLAY: if(FS_CheckFileEnd()/檢測當(dāng)前語音是否播放完畢 SACM_

40、DVR1600_Stop(); FS_CloseOpenFile(); Status = IDLE; 4.3 按鍵掃描程序 系統(tǒng)使用 1024Hz 時基中斷對 IOA 口低八位進(jìn)行掃描,并 進(jìn)行去抖、長短按鍵判斷等工作。 時基中斷中的按鍵掃描服務(wù)程序采用了狀態(tài)機的形式對 按鍵狀態(tài)進(jìn)行判斷。使用變量 KeyScanState 記錄當(dāng)前按鍵的 掃描狀態(tài),并對掃描狀態(tài)進(jìn)行計時,通過判斷計時變量 KeyCount 的值來判斷按鍵的類型 KeyState(短按鍵、長按鍵 等)。 通常狀況下,沒有鍵按下,KeyScanState 處于 First 狀 態(tài)。當(dāng)有鍵被按下后,KeyScanState 便進(jìn)入

41、Debounce 去抖狀 態(tài),此時 KeyCount 開始每 1/1024 秒計時累加一次。當(dāng) KeyCount 超過去抖規(guī)定的時間后(通常為幾十毫秒),便進(jìn) 入 Repeat 狀態(tài),這時候可以認(rèn)為一個短按鍵被按下 (KeyState = SKey)。此時如果檢測到鍵抬起,則進(jìn)入 ReleaseDebounce 狀態(tài),對按鍵抬起進(jìn)行去抖,去抖成功后則 可以認(rèn)為形成了一個抬起的短按鍵(KeyState = SKeyRelease)。相反,如果在 Repeat 狀態(tài)下超過了一個長 按鍵規(guī)定的時間(1 秒)后按鍵仍未抬起,則認(rèn)為一個長按鍵 被按下(KeyState = LKey),此時進(jìn)入 Afte

42、rLKey 狀態(tài),無 需再進(jìn)行計時操作,只需等待按鍵抬起即可。當(dāng)按鍵抬起時, 則從 AfterLKey 狀態(tài)進(jìn)入 ReleaseDebounce 狀態(tài),去抖后得 到一個抬起的長按鍵(KeyState = LKeyRelease)。 按鍵掃描程序提供如下 API 函數(shù)按鍵功能: void KeyScan_Init(); 功 能:按鍵掃描初始化。調(diào)用該函數(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 語音錄/放在 SD 卡上的實現(xiàn) 在語音錄/放的過程中,存儲/讀取語音資源主要是調(diào)用 F_USER_DVR1600_WriteData和F_USER_DVR1600_GetData兩個 函數(shù)實現(xiàn)的。通過自行定義這兩個函數(shù),即可將語音庫錄制 的語音資料存儲至SD卡,或從SD卡讀取語音資料給語音庫解 碼播放。 F_USER_DVR1600_WriteData函數(shù)主要完成存儲錄音數(shù)據(jù) 至用戶存儲器的作用。這里需要調(diào)用“向語音文件寫入多個 word數(shù)據(jù)的函數(shù)”FS_Wr

45、itingFile()以完成此功能。 F_USER_DVR1600_GetData 函數(shù)主要完成從用戶存儲器讀 取語音資料至緩沖區(qū)的作用。這里,需要調(diào)用“從語音文件 中讀取多個 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; 單片機通過 SPI 總線向 SD 卡發(fā)送命令,控制 SD 卡的動 作,并通過 SPI 總線讀取 SD 卡返回的數(shù)據(jù)。 SD 卡上電后工作在具有 1bit 數(shù)據(jù)總線寬度的 SD 模式。 而本系統(tǒng)中,需要令 SD 卡工作于 SPI 模

47、式。單片機通過使連 接 SD 卡 CS 腳的 I/O 口輸出低電平,并發(fā)送 CMD0 命令,即可 使 SD 卡進(jìn)入 SPI 模式工作。 SD 卡進(jìn)入 SPI 模式后,用戶可以通過調(diào)用 SD_SendCmd() 函數(shù)發(fā)送命令對 SD 卡進(jìn)行控制。 SD 卡每次寫入(讀?。?shù)據(jù),都需要以 Block 為單位。 但是,在語音錄制過程中,編碼器是以幀為單位向 SD 卡內(nèi)寫 入數(shù)據(jù)的,而幀的長度并不剛好是 Block Size 個。在語音播 放過程中類似,解碼器每次解碼的數(shù)據(jù)量也并不剛好是 Block Size 個。 為了解決這個矛盾,需要首先來看一下 SD 卡 Block 讀寫 的過程。 單片機從 S

48、D 卡讀取 Block 數(shù)據(jù)的過程。 首先,單片機發(fā)送 CMD17 命令以及希望讀取的 Block 的 地址參數(shù)給 SD 卡,然后 SD 卡返回一個 byte 的響應(yīng)數(shù)據(jù),告 知單片機該操作是否可以正常進(jìn)行。 然后,單片機從 SPI 總線上讀取 Block Size 個數(shù)據(jù),這 些數(shù)據(jù)就是 SD 卡發(fā)送來的 Block 數(shù)據(jù); 最后,SD 卡發(fā)送 CRC 校驗給單片機,單片機結(jié)束 SPI 總 線的接收操作,至此,一個 Block 被正確讀入單片機內(nèi)。 讀 Block 操作: 1)發(fā)送 CMD17,啟動讀 Block 操作; 2)接收數(shù)據(jù),直至接收完畢 Block Size 個數(shù)據(jù); 3)接收

49、CRC 校驗,結(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 單片機從 SD 卡寫入 Block 數(shù)據(jù)的過程。 首先單片機發(fā)送 CMD24 命令以及希望寫入的 Block 的地 址參數(shù)給 SD 卡,然后,SD 卡返回一個 byte 的響應(yīng)數(shù)據(jù),告 知單片機該操作是否可以正常進(jìn)行。 然后,單片機通過 SPI 總線發(fā)送 Block Size 個數(shù)據(jù),這 些數(shù)據(jù)被 SD 卡接收,并緩存。 最后,單片機發(fā)送 CRC 校驗,并等待 SD 卡完成這些數(shù)據(jù) 的燒寫。 寫 Block 操作: 1)發(fā)送 CMD24,啟動寫 Block 操作; 2)發(fā)送數(shù)據(jù)給 SD 卡,直至寫滿 Block

51、Size 個數(shù)據(jù); 3)發(fā)送 CRC 校驗,等待 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、 語音文件操作管理程序 語音文件操作管理程序主要完成對語音文件的管理,以 及在錄/放音的過程中對寫入 SD 卡的數(shù)據(jù)進(jìn)行控制,保證數(shù) 據(jù)按照 Block 為單位寫入。 程序中使用一個簡單的結(jié)構(gòu)體保存每個語音文件在 SD 卡 中的位置信息: typedef struct _SD_FS unsigned long int StartSec; / 語音文件的起始 Block 地址 unsigned long int EndSec; / 語音文件的結(jié)束 Block 地址 unsigned int Offset; / 語音文件在最后一個 Block 中的使用量 FileList; FileList g_

53、FileListArrayFS_MAX_FILENUM; / 文件 索引表 語音文件操作管理相關(guān)函數(shù)中通過定義一個全局變量 CurOffset 存儲當(dāng)前 Block 已經(jīng)寫入的數(shù)量,以便在寫入(讀 取)新的數(shù)據(jù)時對是否超出 Block 進(jìn)行判斷。當(dāng)連續(xù)讀取 (寫入)數(shù)量超過一個 Block 的大小時將讀完(寫滿)本 Block 并自動切換至下一 Block 繼續(xù)讀?。▽懭耄┦S鄶?shù)據(jù)。 同時,程序中規(guī)定語音文件在存儲的時候如果最后一個 Block 沒有使用完,則下一段語音從下一個 Block 的起始地址開始 存儲。 4.6 錄/放音程序 SPCE061A是16位單片機,具有DSP功能,有很強的信

54、息處 理能力,最高時鐘頻率可達(dá)到49MHz,具備運算速度高的優(yōu)勢 等等,這些都無疑為語音的播放、錄放、合成及辨識提供了 條件。壓縮算法中SACM-A1600、SACM-S530、SACM- S480/S720、SACM-S200主要是用來放音,可用于語音提示, 而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)測試及性能分析 系統(tǒng)的硬件部分和軟件部分完成以后,應(yīng)對系統(tǒng)進(jìn)行嚴(yán) 格的測試及性能分析。為了保證系統(tǒng)功能的實現(xiàn),系統(tǒng)的測 試按照主程序流程所設(shè)計的方案依次對各模塊進(jìn)行測試。系 統(tǒng)

59、測試流程圖如圖 5.1。 喇叭測試 主程序下載運行 控制模塊測試 音頻輸入 音頻輸出 圖 5.1 系統(tǒng)測試流程圖 5.1 喇叭測試 目的:測試?yán)饶芊裾9ぷ?條件:只連接喇叭和電路板,噪音相對較小的室內(nèi)環(huán)境。 步驟 1:接通電源,用萬用表測量喇叭的正負(fù)極看是否有 電壓。 步驟 2:將一個最簡單的語音播放程序下載并運行。 現(xiàn)象 1:萬用表可以測量出電壓。 結(jié)論:喇叭無損環(huán),電路連接正常。 現(xiàn)象 2:程序下載并運行后,聲音能正常播放。 結(jié)論:喇叭可以正常工作。 5.2 程序下載及運行 在程序下載前,先按照硬件連接圖 3.3 連接好硬件,然 后把 3 節(jié)五號電池裝入電池盒并把電源線與系統(tǒng)連接。下載

60、 線的一邊(25 針插座)與 PC 后面的并行接口相接,另一邊的 五針接頭與電路板上標(biāo)有“EZ-Probe”的插座(J11)相接, 并用 J11 接口邊上的 S5 跳線把 S5 的 2 和 3 管腳短接。打開 電池盒開關(guān),POWER 指示燈和 LCD 液晶顯示屏上的電源指示燈 都被點亮,證明系統(tǒng)連接正常,可以開始下載。 用 IDE 打開設(shè)計好的工程文件,并確認(rèn)以選定了“USE ICE”按鈕。選擇“USE ICE”如圖 5.2。 圖 5.2 選擇“USE ICE” 當(dāng)程序處于下載狀態(tài)時,會彈出一個進(jìn)度框。下載進(jìn)程 如圖 5.3。 圖 5.3 下載進(jìn)程對話框 下載完成后關(guān)閉電池盒開關(guān),斷開“EZ-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論