版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第頁共25頁基于STM32單片機(jī)的MP3播放器模型設(shè)計(jì)目錄TOC\o"1-3"\h\u316201緒論 2175481.1研究背景及意義 2277411.2國(guó)內(nèi)外研究現(xiàn)狀 2218551.3MP3播放器的發(fā)展史 3321031.4本文主要內(nèi)容 338002整體方案設(shè)計(jì) 4260732.1系統(tǒng)概述 418032.2方案設(shè)計(jì) 462192.3方案論證 540223硬件電路設(shè)計(jì) 5191703.1硬件概述 531443.2控制系統(tǒng) 6106913.3音頻輸入電路 9156133.4點(diǎn)陣顯示電路 9200323.5音頻解碼電路 10204393.6USBHOST接口電路 11103373.7音頻放大輸出電路 12201044軟件程序設(shè)計(jì) 13137444.1系統(tǒng)基本框架 13308584.2FATFS文件系統(tǒng) 14305844.3USBHOST接口模塊 15212264.4音頻解碼模塊 16275994.5AD轉(zhuǎn)換和FFT變換 19173114.6點(diǎn)陣顯示模塊 21102784.7按鍵控制 23318385系統(tǒng)整機(jī)測(cè)試 24269385.1硬件功能測(cè)試 24228605.2音樂效果測(cè)試 2419346結(jié)論 27摘要通俗來講MP3播放器就是以MP3格式進(jìn)行音樂播放的工具。本課題是基于STM32單片機(jī)的MP3播放器模型設(shè)計(jì),它是將音樂文件儲(chǔ)存在USB接口的數(shù)據(jù)存儲(chǔ)設(shè)備中,當(dāng)單片機(jī)系統(tǒng)開啟后,插入U(xiǎn)SB接口的數(shù)據(jù)存儲(chǔ)設(shè)備,自動(dòng)讀取設(shè)備中存儲(chǔ)的MP3文件,這種設(shè)計(jì)不單單能夠完成歌曲播放、暫停和上下切換的功能,還能展示音樂效果。音樂效果則使用點(diǎn)陣進(jìn)行顯示并可隨意切換,可以對(duì)音樂節(jié)奏閃爍,音樂頻譜柱狀圖,總音量柱狀圖等進(jìn)行顯示。該設(shè)計(jì)具備易操作、低能耗、低成本和高穩(wěn)定性,并且在市場(chǎng)中具備一定的應(yīng)用價(jià)值。關(guān)鍵詞:MP3播放器;STM32;FFT;點(diǎn)陣顯示;音樂頻譜1緒論1.1研究背景及意義在當(dāng)今社會(huì)經(jīng)濟(jì)蓬勃發(fā)展以及科學(xué)技術(shù)有著突破性進(jìn)展的前提下,消費(fèi)電子產(chǎn)品也抓住了發(fā)展機(jī)遇,取得了良好的發(fā)展。卡爾.伯納克說,音樂是人類生存的基本要素,是使生活有意義的方式之一。MP3播放器是一種極其方便的音樂設(shè)備,由于其便攜性等優(yōu)點(diǎn),在消費(fèi)者的日常生活中已經(jīng)變成了不可缺少的設(shè)備。本設(shè)計(jì)的MP3播放器采用LED點(diǎn)陣作為顯示屏。LED點(diǎn)陣能夠代替其他同類別顯示器,這與其本身的優(yōu)越性分不開。與其他顯示器相比LED在工作時(shí)所需的電壓更低、亮度高、使用壽命長(zhǎng)、消耗少、所需工藝簡(jiǎn)單、質(zhì)量更有保障性。鑒于此,本課題以ST公司旗下Cortex-M系列的32位MCU(微控制單元)作為顯示控制的核心。采用兩個(gè)8×8的點(diǎn)陣模塊作為顯示屏,設(shè)計(jì)一款MP3播放器。該播放器能夠以MP3格式對(duì)音樂文件進(jìn)行播放。憑借LED點(diǎn)陣還可以完成顯示三種音樂效果的功能。可用按鍵來對(duì)歌曲進(jìn)行播放、暫停、切換歌曲、調(diào)節(jié)音量等。該作品顯示屏亮度高、工作穩(wěn)定、成本低、制作過程簡(jiǎn)單、界面簡(jiǎn)單易于操作,具有一定的使用價(jià)值。1.2國(guó)內(nèi)外研究現(xiàn)狀MP3(MovingPictureExpertsGroupAudioLayerIII)是根據(jù)動(dòng)態(tài)影片專家壓縮國(guó)際標(biāo)準(zhǔn)音樂等級(jí)三的一款音樂壓縮技術(shù)。根據(jù)其用途特點(diǎn),主要被用來大幅度范圍地減少音頻數(shù)據(jù)量,因?yàn)槿硕鷮?duì)高頻聲音信號(hào)的敏感度較低,MP3根據(jù)這一特點(diǎn)舍棄掉人耳不能識(shí)別的高頻部分的聲音,只留下人耳能識(shí)別的低頻部分,這樣還能夠保證信號(hào)不失真。這種壓縮方法被稱為MPEG音頻播放器3,簡(jiǎn)稱MP3。將處理后的音樂文件,其格式設(shè)置為MP3,并存儲(chǔ)在內(nèi)部的存儲(chǔ)器中,MP3播放器在播放的過程中,可以直接讀取并播放MP3格式的音樂。MP3播放器已經(jīng)流行了很多年了,隨著手機(jī)等電子產(chǎn)品的層出不窮,MP3播放器的銷售量受到了一些影響,但是隨著科學(xué)的進(jìn)步以及技術(shù)的更新,目前市場(chǎng)上的MP3越來越多樣化,功能也越來越強(qiáng)大。許多嶄新的新概念設(shè)計(jì)吸引了消費(fèi)者,MP3播放器也保持了旺盛的生命力。這些新的賣點(diǎn)一次又一次地引起了MP3銷量的激增,MP3播放器的生產(chǎn)制作工藝已經(jīng)非常成熟了,但是目前在低功耗、低成本方面還有一些欠缺,本課題設(shè)計(jì)是基于STM32系列單片機(jī)設(shè)計(jì)的一款MP3播放器,對(duì)這些問題進(jìn)行了改善。1.3MP3播放器的發(fā)展史MP3播放器的誕生,使美妙動(dòng)聽的聲音有了很好的存儲(chǔ)載體。隨著時(shí)代發(fā)展和科技的進(jìn)步以及新技術(shù)的產(chǎn)生,各式各樣的MP3播放器也在市場(chǎng)上不斷涌現(xiàn)。輕輕地按下播放鍵,周圍的一切喧囂將會(huì)褪去,留下的是一個(gè)屬于自己的世界。人類已經(jīng)有了千年的音樂史,為了音樂不受到時(shí)間、空間的限制,在儲(chǔ)存、播放設(shè)備的發(fā)展上,人類也經(jīng)歷了艱苦且漫長(zhǎng)的奮斗。一八七七年十二月,通過了多次的實(shí)驗(yàn)測(cè)試后,愛迪生終于完成并向公眾展示世界上第一臺(tái)留聲機(jī)。在短時(shí)間內(nèi),一個(gè)能夠發(fā)聲的小機(jī)器人誕生的消息就傳遍全球。在這之后留聲機(jī)也成為19世紀(jì)初最震撼人心的發(fā)明之一。一八九八年,一架鋼絲錄音機(jī)終于在丹麥的波爾森先生手底下出現(xiàn)了,這臺(tái)錄音機(jī)采用硬磁性材料作為載體,并利用磁性材料的特點(diǎn)將聲波儲(chǔ)存在載體上。這一偉大的發(fā)明,使帶有重播放、錄制功能的磁帶錄音機(jī)開始出現(xiàn)在人類的生活中。一九八二年,世界上第一個(gè)CD播放器破空而出,它的出現(xiàn)拉開了激光唱片時(shí)代的序幕,一直到今天許多愛好者仍然對(duì)這臺(tái)機(jī)器念念不忘—它便是SONYCDP-101。CD播放出來的音樂,其音質(zhì)非常的優(yōu)美,并且還可以直接搜索自己想要的音樂,其體積也較小,基于這些優(yōu)點(diǎn),CD一經(jīng)推出,就受到用戶的追捧。一九八八年,這個(gè)領(lǐng)域的新秀—世界上第一款MP3播放器,在韓國(guó)的MPMAN公司推出,它體積小、重量輕、壽命長(zhǎng)。根據(jù)這一新穎的功能,MP3很快宣布了其在便攜式音樂播放器中的主導(dǎo)地位,徹徹底底地改變了一代人的聽歌方式。至今,MP3播放器已經(jīng)走過了20多個(gè)年頭,它正在跟隨時(shí)代發(fā)展的步伐前進(jìn),對(duì)于正在成長(zhǎng)的青少年來說,MP3播放器是他們的青春,是永遠(yuǎn)的音樂寶貝。1.4本文主要內(nèi)容本課題設(shè)計(jì)一款MP3播放器,根據(jù)功能需求和性能指標(biāo),選擇STM32系列芯片作為主控核心,并使用LED點(diǎn)陣顯示屏。LED點(diǎn)陣顯示屏使用兩塊分辨率為8×8的屏幕進(jìn)行級(jí)聯(lián),通過級(jí)聯(lián)的方式組合成較大尺寸的顯示屏,在LED點(diǎn)陣顯示屏上將音樂效果進(jìn)行顯示。本課題主要功能目標(biāo)要求如下:可以用USB進(jìn)行數(shù)據(jù)輸出,將音樂文件保存在MP3中去,并且MP3播放器能夠正常播放其內(nèi)部存儲(chǔ)的音樂。2.對(duì)信息進(jìn)行采樣并處理。3.使用DA轉(zhuǎn)換器進(jìn)行信號(hào)轉(zhuǎn)化,然后轉(zhuǎn)化出來的模擬信號(hào)進(jìn)行濾波處理,避免出現(xiàn)干擾信號(hào),這使用低通濾波電路來實(shí)現(xiàn),然后將處理過的模擬聲音放大至揚(yáng)聲器輸出接口。4.音樂頻譜顯示功能是對(duì)信號(hào)做傅里葉變換。對(duì)信號(hào)進(jìn)行AD轉(zhuǎn)化后,單片機(jī)就會(huì)根據(jù)處理后的信號(hào),控制LED燈工作,LED燈根據(jù)音樂的頻率情況進(jìn)行開啟或者熄滅,還會(huì)將頻率數(shù)據(jù)在顯示屏上顯示,這樣就可以看到音樂的頻譜。2整體方案設(shè)計(jì)2.1系統(tǒng)概述本課題是基于STM32單片機(jī)的MP3播放器的研究和設(shè)計(jì),設(shè)計(jì)一個(gè)LED點(diǎn)陣顯示當(dāng)前音樂的效果情況。核心是STM32F407VET6單片機(jī),主要由供電電源、USB接口、音頻解碼、點(diǎn)陣顯示模塊、揚(yáng)聲器等幾個(gè)部分組成。整個(gè)系統(tǒng)由MCU(微控制器)控制,其他各部分的操作均由它協(xié)調(diào)運(yùn)行,主要是由鋰電池進(jìn)行供電或通過USB接口充電,音樂儲(chǔ)存在USB接口的數(shù)據(jù)存儲(chǔ)設(shè)備中,解碼芯片WM8978對(duì)音頻進(jìn)行解碼,點(diǎn)陣顯示屏是由兩塊8×8的點(diǎn)陣模塊組成,通過行、列驅(qū)動(dòng)器MAX7219M來進(jìn)行驅(qū)動(dòng)。音頻功率放大通過放大電路來實(shí)現(xiàn),聲音則通過揚(yáng)聲器來進(jìn)行播放。整個(gè)設(shè)計(jì)結(jié)構(gòu)并不算太復(fù)雜,操作簡(jiǎn)單。2.2方案設(shè)計(jì)本課題設(shè)計(jì)基本思路是,以STM32F407VET6芯片為主控中心,先讀出在USB接口的數(shù)據(jù)存儲(chǔ)設(shè)備中存放的MP3格式的歌曲文件,將歌曲文件傳送到音樂解碼模塊,再利用音樂解碼芯片的USB轉(zhuǎn)串行接口,將歌曲文件送入單片微控制器或微型計(jì)算機(jī)內(nèi)的RAM緩存中,接著再送入自動(dòng)編碼部分解碼,再通過數(shù)模轉(zhuǎn)換器之后,轉(zhuǎn)變?yōu)槟M信號(hào),接著再將變化后的模擬信號(hào)對(duì)聲音加以擴(kuò)大后,再經(jīng)低通濾波后到揚(yáng)聲器,就可以實(shí)現(xiàn)音樂播放了。MP3播放器使用LED點(diǎn)陣顯示屏來顯示音樂效果,主要是運(yùn)用到傅里葉變換的知識(shí)。音頻信號(hào)通過單片機(jī)內(nèi)部的AD轉(zhuǎn)換器進(jìn)行采樣,然后在緩沖器中進(jìn)行預(yù)處理。濾波處理完成后,通過(FFT)傅里葉變換算法將音頻信號(hào)從時(shí)域轉(zhuǎn)換到頻域,然后驅(qū)動(dòng)LED點(diǎn)陣顯示器,實(shí)時(shí)刷新顯示器。由于人們視覺的持續(xù)效應(yīng),當(dāng)系統(tǒng)快速掃描點(diǎn)陣屏幕時(shí),人們的肉眼可以看到多個(gè)LED燈同時(shí)亮起并實(shí)時(shí)刷新,由此便實(shí)現(xiàn)了音樂頻譜的顯示。本研究項(xiàng)目的項(xiàng)目設(shè)計(jì)工作必須完成以下兩個(gè)部分:硬件集成電路的產(chǎn)品設(shè)計(jì)和應(yīng)用軟件程序的開發(fā)。硬件模塊包含了所有需要使用到的功能模塊,有控制核心電路單片機(jī)控制電路,為整個(gè)系統(tǒng)正常工作而提供動(dòng)力的供電電路,可以手動(dòng)控制系統(tǒng)工作的按鍵電路,還有播放音樂的輸出電路、聲音放大輸出電路等所構(gòu)成;其工作原理框圖如圖2-1所顯示。軟件程序編寫部分是由main主函數(shù),Init系統(tǒng)初始化函數(shù)以及各個(gè)模塊的函數(shù)組成。圖2-1硬件電路原理框圖2.3方案論證采用STM32F407VET6芯片作為系統(tǒng)的主控中心能夠很好地滿足本課題設(shè)計(jì)的性能要求,自帶的功能也方便了對(duì)信號(hào)的轉(zhuǎn)換,并且它成本低,具有高穩(wěn)定性。音頻解碼是MP3中至關(guān)重要的一步,音質(zhì)的好壞便是取決于它。本課題設(shè)計(jì)中直接采用編解碼芯片對(duì)聲音信息進(jìn)行了編解碼,這樣一來聲音信息的品質(zhì)便獲得了良好的還原,在極大程度上補(bǔ)償了聲音信息的質(zhì)量損失,同時(shí)也極大地減輕了產(chǎn)品設(shè)計(jì)的復(fù)雜度,為設(shè)計(jì)人員節(jié)約了時(shí)間,提高了工作效率。LED點(diǎn)陣顯示屏制作起來簡(jiǎn)單,顯示效果明顯,想要大尺寸的顯示屏只需要進(jìn)行多塊點(diǎn)陣模塊的級(jí)聯(lián)即可。只需要使用MAX7219驅(qū)動(dòng)芯片即可完成對(duì)LED點(diǎn)陣屏的驅(qū)動(dòng)。通過設(shè)計(jì)按鍵,賦予其相應(yīng)的功能,通過按鍵來進(jìn)行切換相應(yīng)的音樂效果。設(shè)計(jì)需要的程序文件大多數(shù)都來自ST官方的支持,使用時(shí)只需要根據(jù)相應(yīng)的功能參數(shù)要求,進(jìn)行稍加修改即可正常使用。綜上所述,該設(shè)計(jì)方案具有一定的可行性。本課題設(shè)計(jì)所用到的技術(shù)手段多樣,開發(fā)環(huán)境成熟,該設(shè)計(jì)具有一定的應(yīng)用前景。3硬件電路設(shè)計(jì)3.1硬件概述集成電路設(shè)計(jì)與生產(chǎn)科技日益發(fā)達(dá),電路系統(tǒng)的功用也愈來愈強(qiáng)大,但構(gòu)造愈來愈簡(jiǎn)單。在電路系統(tǒng)中起著決定性因素的是硬件電路,要想電路系統(tǒng)整體設(shè)計(jì)性能良好,硬件電路的設(shè)計(jì)必須具有一定的合理性。本課題研究產(chǎn)品設(shè)計(jì)的硬件電路,主要涉及以下主要功能模塊:電源模塊、stm32f4系列單片機(jī)、音頻解碼模塊、LED點(diǎn)陣顯示模塊、USB接口模塊、按鍵控制模塊、音頻采集、放大和輸出模塊。其硬件及電路的總體結(jié)構(gòu)設(shè)計(jì)如圖3-1所顯示。圖3-1硬件整體設(shè)計(jì)結(jié)構(gòu)3.2控制系統(tǒng)(1)主控芯片選型對(duì)于單片機(jī)采用型號(hào)的選型,為了能夠做出正確的選擇,可以按照以下幾步進(jìn)行。第一步:分析電路的數(shù)據(jù)傳輸情況,根據(jù)系統(tǒng)的總體結(jié)構(gòu),計(jì)算出單片機(jī)控制外部模塊工作時(shí)所需要使用到的引腳數(shù)。第二步:檢查軟件架構(gòu)。軟件架構(gòu)和要求對(duì)單片機(jī)的選擇有著重大影響。計(jì)算每個(gè)部分所需的時(shí)間和頻率。而計(jì)算能力恰恰是微處理器在對(duì)時(shí)間和頻率方面進(jìn)行架構(gòu)的特點(diǎn)之一。第三步:確定內(nèi)存需求。閃存和RAM對(duì)于所有單片機(jī)而言,都是非常重要的部分,提前確定好內(nèi)存需求可以避免程序空間發(fā)生不足的情況。第四步:開始尋找單片機(jī)。選擇可靠的供應(yīng)商,檢查成本和功率限制。第五步:調(diào)查編譯器的和工具。大多數(shù)的微控制器都給出了各種編輯器、范例代碼,以及調(diào)試工具的選擇。在啟動(dòng)前,為該組件準(zhǔn)備好每個(gè)所需要使用的操作工具是至關(guān)重要的。本課題設(shè)計(jì)的單片機(jī)主要用于控制點(diǎn)陣顯示屏的運(yùn)行,涉及到的外設(shè)有ADC、IIC、I2S、PWM、定時(shí)器、SWDIO、SWCLK、OSC、USART等。根據(jù)上面的分析以及結(jié)合自身的經(jīng)濟(jì)情況,決定使用32位的ARMCortex-M4。相比其他系列的單片機(jī),其功能要更加的多樣,工作時(shí)的能耗也要低,擁有較高的性價(jià)比。它的性能基本滿足了項(xiàng)目的需求,而且這個(gè)系列的芯片具備了完善的開發(fā)環(huán)境,極大地方便了開發(fā)人員的設(shè)計(jì)開發(fā)。STM32F407VET6型號(hào)單片機(jī)所具備了多種硬件資源,本課題設(shè)計(jì)用到的部分資源有:定時(shí)器、FLASH(512KB)、IIC、I2S、串口、ADC、DAC等。(2)電源供電部分本課題的設(shè)計(jì)主要以鋰電池供電。鋰電池的重量比較輕,工作電壓高,電池壽命長(zhǎng),充電快速并且非常安全,環(huán)保無污染,無記憶效果,能夠接受的溫度范圍高,是一個(gè)真正意義上的“綠色電池”。正是因?yàn)殇囯姵氐倪@些優(yōu)點(diǎn),才決定了它在電子類產(chǎn)品中的主流地位。根據(jù)stm32f407vet6芯片的數(shù)據(jù)手冊(cè),其工作電壓為1.8V~3.6V。為了更好更便捷的供電,所以還需要利用一個(gè)穩(wěn)壓器進(jìn)行穩(wěn)壓處理,保證輸出穩(wěn)定的電壓,根據(jù)輸出電壓的大小,決定使用ams1117-3.3正向低壓降穩(wěn)壓器,其輸出的電壓為3.3V。供電電路如圖3-2,降壓電路如圖3-3。點(diǎn)陣屏上LED數(shù)量眾多,在點(diǎn)亮?xí)r需要較大的電流,因此整個(gè)系統(tǒng)采用開源電源進(jìn)行供電。5V電壓將會(huì)從大功率開關(guān)電源獲取。圖3-3芯片供電電路圖3-2降壓電路此外,該設(shè)計(jì)還保留了5V的USB充電接口。直接從USB接口給系統(tǒng)供電或給鋰電池充電。鋰電池通過4056充電芯片充電,如圖3-3所示。4056具備恒壓恒流的特性,作為鋰電池的充電裝置。它的底部有散熱片ESOP8封裝和較小的外圍器件,因此受到眾人的青睞。它使用了一個(gè)內(nèi)部PMOSFET結(jié)構(gòu)與一個(gè)防倒置的充電線路。熱反饋電路可以調(diào)節(jié)充電電流大小,來控制芯片的工作溫度。當(dāng)將4.2V作為充電電壓時(shí),其電流的大小會(huì)受到外部電阻的影響。在進(jìn)行充電的過程中,會(huì)對(duì)充電電流進(jìn)行檢測(cè),如果檢測(cè)到電流和浮動(dòng)電壓大小相等,并且其電流值等于預(yù)先設(shè)置的規(guī)定電流大小的1/10時(shí),立即停止自動(dòng)充電。當(dāng)關(guān)閉供電電源之后,芯片會(huì)自動(dòng)調(diào)節(jié)芯片工作模式,以能耗更低的低電流模式進(jìn)行運(yùn)行,保證電流要小于2uA,并且還同時(shí)將芯片設(shè)置為關(guān)機(jī)模式,這時(shí)會(huì)自動(dòng)將電源的電流大小降低到55uA左右,并保持。除此之外,芯片還具有其他多種功能,包括出來電池當(dāng)前的溫度數(shù)值,欠壓鎖定等。圖3-3USB充電接口和鋰電池充電電路(3)復(fù)位電路和系統(tǒng)時(shí)鐘部分復(fù)位電路是時(shí)鐘信號(hào)的來源,其主要功能在系統(tǒng)通電時(shí)給出完全相反的電平。一般來說,電容器和電阻系列都使用電源電壓不會(huì)發(fā)生陡然變化的原則。當(dāng)系統(tǒng)上電之后,由于電容還沒有充滿電,還處于導(dǎo)通的階段,所以其兩邊的電壓等于0。這時(shí)單片機(jī)就接地,獲得了一個(gè)復(fù)位的信號(hào),開始復(fù)位,這時(shí)電容在電壓的作用下,也開始進(jìn)行充電,當(dāng)其電壓值和電源的電壓大小一樣后,復(fù)位引腳獲得高電平。如圖3-4所示,系統(tǒng)失靈恢復(fù)功能是通過帶電復(fù)位和按鍵復(fù)位相結(jié)合來實(shí)現(xiàn)的。根據(jù)芯片的數(shù)據(jù)手冊(cè),芯片的建議工作頻率為168M。經(jīng)查閱有關(guān)資料后,決定采用25M的無源晶振,晶體振蕩器和兩個(gè)電容進(jìn)行并聯(lián),兩個(gè)電容的另外一端全部都和地線相連,組成了振蕩電路,輸出穩(wěn)定的時(shí)鐘信號(hào)。圖3-4復(fù)位電路和系統(tǒng)時(shí)鐘部分3.3音頻輸入電路單片機(jī)的主要作用是處理數(shù)字信息。首先,由模擬信號(hào)變?yōu)閿?shù)字信號(hào),在其內(nèi)部有模數(shù)轉(zhuǎn)化器,自動(dòng)對(duì)接收到的模擬信號(hào)進(jìn)行處理,處理為數(shù)字信號(hào)存儲(chǔ)在單片機(jī)中,編寫程序執(zhí)行FFT(快速傅立葉變換)算法,并結(jié)合基-2fft算法獲得相應(yīng)長(zhǎng)度的頻譜??梢赃B續(xù)測(cè)量的時(shí)間范圍內(nèi)所有時(shí)域映射信息都可以用不同頻率正弦曲線的無限疊加來表示。以存儲(chǔ)數(shù)據(jù)的方式計(jì)算通信通道中單個(gè)信號(hào)的頻率、相位等信息。在時(shí)域中無法有效的發(fā)現(xiàn)信號(hào)的特征情況,但是將其轉(zhuǎn)化為頻率之后,其特性情況就表現(xiàn)的較為清楚,所以需要對(duì)信號(hào)做傅里葉變換。3.4點(diǎn)陣顯示電路(1)LED點(diǎn)陣顯示模塊采用兩塊8×8的LED點(diǎn)陣顯示屏,通過級(jí)聯(lián)的方式組成一個(gè)更大尺寸的點(diǎn)陣屏。對(duì)于一個(gè)8×8的點(diǎn)陣模塊來說,其內(nèi)部包含了8行8列,行列相交處有一個(gè)LED燈。由其結(jié)構(gòu)可以得知,如果想要將某一個(gè)LED燈點(diǎn)亮,則只需控制某列LED的低電平值有效,該行LED為高電平值即可。而如果要將多個(gè)LED點(diǎn)亮,則只需按照實(shí)際狀況相應(yīng)的列為低電平值有效,相應(yīng)的行為高電平值。兩個(gè)8×8的LED點(diǎn)陣如圖3-5所示。圖3-58x8LED點(diǎn)陣(2)行、列驅(qū)動(dòng)器根據(jù)點(diǎn)陣的顯示原理,顯示的數(shù)據(jù)都是由行線傳輸過來的由于點(diǎn)陣的顯示能力有限,在同一時(shí)間內(nèi),只可以顯示一行數(shù)據(jù),然后需要先清除,然后在下一行顯示新數(shù)據(jù),由于顯示的速度很快給人的肉眼感覺像靜態(tài),要想使點(diǎn)陣正常工作,就要加上行驅(qū)動(dòng)電路和列驅(qū)動(dòng)電路,這是點(diǎn)陣顯示的核心部分。本設(shè)計(jì)的行列驅(qū)動(dòng)是由MAX7219M來實(shí)現(xiàn)的。MAX7219M是一款集成的驅(qū)動(dòng)器,輸入方式為串行輸入,輸出為共陰極。其驅(qū)動(dòng)能力較強(qiáng),可以驅(qū)動(dòng)8位數(shù)碼管,并且為了提高其驅(qū)動(dòng)能力,還可以將多個(gè)驅(qū)動(dòng)芯片并聯(lián)使用,以便驅(qū)動(dòng)多個(gè)LED點(diǎn)陣。該芯片與LED點(diǎn)陣之間的電路簡(jiǎn)單易懂,與單片機(jī)之間的連接也僅需要三根線。它有硬件動(dòng)態(tài)掃描電路等。本設(shè)計(jì)通過串行輸入的方式,采用兩片MAX7219M級(jí)聯(lián)來構(gòu)成行列驅(qū)動(dòng)器,如圖3-6所示。圖3-6點(diǎn)陣行、列驅(qū)動(dòng)電路3.5音頻解碼電路(1)音頻解碼電路在聲音傳輸電路的處理過程中,一個(gè)必不可少的組成部分便是音頻編碼系統(tǒng),在專門的聲音編碼方面,它主要是指讀出數(shù)字音頻信息,并將之轉(zhuǎn)化為模擬聲音信息輸出,以便于功率放大器的播放。音頻解碼本質(zhì)上就是D/A(數(shù)字/模擬)轉(zhuǎn)換。本設(shè)計(jì)采用WM8978解碼芯片,是一款功能全面的音樂處理器它是一個(gè)低功耗的立體聲編解碼器,將信號(hào)輸出等電路和驅(qū)動(dòng)進(jìn)行結(jié)合。它不需要耳機(jī)擴(kuò)大器或獨(dú)立的話筒,這大大降低了實(shí)際應(yīng)用中所需要的外圍組件。WM8978解碼電路的電路圖如3-7所示。圖3-6WM8978解碼電路(2)WM8978芯片WM8978芯片中使用的一些引腳功能的描述:AVDD:給芯片中的ADC以及DAC模塊供電;SPKVDD:為揚(yáng)聲器供電;AUXL、AUXR:模擬輸入;(3)I2S簡(jiǎn)介I2S(InterICSound)總線,也就是音頻總線,主要用在在集成電路中傳輸音頻信號(hào),是由飛利浦公司為了規(guī)范行業(yè)的發(fā)展,專門制定的音頻信號(hào)傳輸規(guī)范。是目前主流的信號(hào)傳輸規(guī)范,基本上所有的多媒體系統(tǒng)都是采用I2S規(guī)范進(jìn)行音頻信號(hào)通信。在設(shè)計(jì)中,使用的單片機(jī)有I2S接口,其特點(diǎn)如下:●開始使用全雙工以及半雙工的模式進(jìn)行數(shù)據(jù)通信●支持16bit/24bit/32bit數(shù)據(jù)格式●支持主/從模式設(shè)置●各種I2S協(xié)定都符合●可編程時(shí)鐘極性●支持主時(shí)鐘輸出3.6USBHOST接口電路USB接口的數(shù)據(jù)存儲(chǔ)設(shè)備,即USB閃存盤,英文名“USBflashdisk”。這是一款迷你的大容量移動(dòng)存儲(chǔ)器,在使用的過程中不需要有外部驅(qū)動(dòng)來驅(qū)動(dòng),直接通過USB接口和電腦連接就可以使用,即插即用,目前使用較普遍。本課設(shè)計(jì)需要使用USB閃存盤來儲(chǔ)存音樂文件,為了讀取到USB閃存盤信息,設(shè)計(jì)了一個(gè)USB(UniversalSerialBus)接口。如圖3-7所示電路,使用KH-AF90DIP-112連接器,輕松地連接USB閃存盤和單片機(jī)。接通后,初始化了USB主機(jī)并持續(xù)輪詢。在偵測(cè)和識(shí)別USB閃存盤后,便能夠通過USMART調(diào)用的FATFS相關(guān)功能函數(shù)來實(shí)現(xiàn)對(duì)USB閃存盤數(shù)據(jù)的讀取。在下圖中可以看到,有一種USB_PWR控制信號(hào),可以用來監(jiān)控USB設(shè)備的供電。當(dāng)通過USB主機(jī)驅(qū)動(dòng)外部USB設(shè)備時(shí),就需要先控制USB_PWR輸出1給外部設(shè)備供電,之后才識(shí)別外界器件。圖3-7USB接口電路3.7音頻放大輸出電路(1)音頻放大輸出電路為了讓歌曲可以利用揚(yáng)聲器來進(jìn)行播放,設(shè)計(jì)了一種聲音放大電路。如圖3-8所示電路,采用了型號(hào)為L(zhǎng)M358MX的一款集成運(yùn)算放大芯片,該芯片功能豐富,可以對(duì)音頻信號(hào)進(jìn)行放大,還能進(jìn)行濾波,避免出現(xiàn)雜音,除此之外還有其他功能。圖3-8音頻放大電路音頻放大電路,顧名思義就可以知道,該電路的主要作用就是將信號(hào)放大處理。使用LM358MX芯片,就可以將音頻信號(hào)的電壓放大。音頻放大電路由電阻器、電容器、LM358MX構(gòu)成。電阻的主要功能就是分壓限流,保護(hù)電路,防止揚(yáng)聲器被燒壞。電容則是起到濾波的作用,過濾掉信號(hào)中的雜質(zhì),使信號(hào)不失真。在實(shí)際使用中,由于單片式微型計(jì)算機(jī)最大輸出功率的標(biāo)準(zhǔn)高電平是5V,因此其最大輸出功率十分有限,于是在本設(shè)計(jì)中采用了LM358MX的集成運(yùn)算放大芯片,以增加最大輸出功率,為揚(yáng)聲器提供足夠大的聲音。(2)LM358MX芯片介紹LM358MX是一個(gè)雙運(yùn)算放大器,并且還有兩個(gè)運(yùn)算處理增強(qiáng)器,極大的提高了該芯片的運(yùn)算能力,能夠?qū)σ纛l信號(hào)進(jìn)行頻率補(bǔ)償,以及對(duì)其進(jìn)行增益。它不但適用于單開關(guān)電源工作,而且適用于雙開關(guān)電源工作。其引腳:通過1和7號(hào)兩個(gè)引腳輸出信號(hào),2和6是輸入和輸出極性不同的輸入口,3和5是輸入和輸出極性相同的輸入口,引腳四接地(單開關(guān)電源工作時(shí))或負(fù)電源(雙開關(guān)電源工作時(shí)),引腳八為正電源(主電源輸入)。4軟件程序設(shè)計(jì)4.1系統(tǒng)基本框架在啟動(dòng)后,通過插入U(xiǎn)SB接口的數(shù)據(jù)存儲(chǔ)設(shè)備,運(yùn)行初始化程序,如延時(shí)函數(shù)、WM8978、內(nèi)部?jī)?nèi)存池、CCM內(nèi)存池、USB主機(jī)等初始化。在進(jìn)行USB接口的數(shù)據(jù)存儲(chǔ)設(shè)備初始化前,需要對(duì)它進(jìn)行檢測(cè),這樣做的目的是檢測(cè)USB接口的數(shù)據(jù)存儲(chǔ)設(shè)備是否存在。如果檢測(cè)到存儲(chǔ)設(shè)備,就自動(dòng)檢測(cè)存儲(chǔ)設(shè)備中是否有音頻文件,如果有立即進(jìn)行讀取。各模塊均能正常工作的話,單片機(jī)將會(huì)有序地向WM8978中傳送音樂數(shù)據(jù)流進(jìn)行解碼,從而通過揚(yáng)聲器播放音樂,并且對(duì)音頻文件進(jìn)行傅里葉變換,同時(shí)將音樂的頻率在點(diǎn)陣上顯示出來。在工作的過程中,單片機(jī)會(huì)一直重復(fù)不斷的檢測(cè)按鍵的狀態(tài),如果檢測(cè)到按鍵按下,那么立即啟動(dòng)中斷程序,并根據(jù)按鍵的信號(hào)進(jìn)行處理,控制MP3播放器的工作。系統(tǒng)框圖如圖4-1所示。圖4-1系統(tǒng)基本框圖4.2FATFS文件系統(tǒng)FATFS是一種專為較小型的嵌入式應(yīng)用所設(shè)計(jì)的、絕對(duì)免費(fèi)公開的、可裁剪的FAT文件系統(tǒng)模板。該控制系統(tǒng)由于全部使用標(biāo)準(zhǔn)C編程語言寫成,所以擁有較高的硬件平臺(tái)自主性。FATFS文件系統(tǒng)的優(yōu)點(diǎn)很多,其中包括移植簡(jiǎn)單、代碼少、執(zhí)行效率高等。FATFS模塊的層次結(jié)構(gòu)圖如圖4-2所示,整個(gè)FATFS文檔管理系統(tǒng)的層級(jí)構(gòu)造圖包含了底層接口、中間層FATFS模塊,以及頂層應(yīng)用層。底層連接中包含了儲(chǔ)存媒體的讀/寫端口(磁盤I/O)和提供了文件創(chuàng)建與編輯時(shí)間的實(shí)時(shí)時(shí)鐘。這就要求用戶針對(duì)平臺(tái)和存儲(chǔ)介質(zhì)寫遷移代碼。而FATFS模板所提供的主要是ff.c和ff.h文檔,以滿足FATFS的文件系統(tǒng)讀寫協(xié)議。一般來說,這兩個(gè)文件不需要修改,可以直接使用。使用層僅需要調(diào)用由FATFS模板所提出的一些使用,接口函數(shù)就能夠很容易地完成讀寫功能。通過FATFS文件系統(tǒng)從USB閃存盤讀取音樂信息,大大方便了微控制器對(duì)音樂信息的處理。圖4-2FATFS模塊的層次結(jié)構(gòu)圖FATFS文件系統(tǒng)包結(jié)構(gòu)如表4-1所示,當(dāng)FATFS模板還在移植的時(shí)期,一般只需要對(duì)文檔ffconf.h和diskio.c進(jìn)行修改處理。在ffconf.h中保存了FATFS模板所有選項(xiàng)的參數(shù),用戶可以通過設(shè)置其中的幾個(gè)選擇,來實(shí)現(xiàn)自身的需求。表4-1FATFS文件系統(tǒng)包結(jié)構(gòu)文件名功能說明ffconf.hFATFS模塊配置文件需要根據(jù)需求來修改參數(shù)。ff.hFATFS和應(yīng)用模塊公用的包含文件不需要修改ff.cFATFS模塊源碼不需要修改diskio.hFATFS和diskI/O模塊公用的包含文件不需要修改diskio.cFATFS和diskI/O模塊接口層文件與平臺(tái)相關(guān)的代碼,都要求使用者通過內(nèi)存介質(zhì)來創(chuàng)建函數(shù)。interger.h數(shù)據(jù)類型定義與編譯器有關(guān)。option文件夾可選的外部功能(比如支持中文等)4.3USBHOST接口模塊USBHOST只是一個(gè)數(shù)字設(shè)備,如果它與USBHOST兼容,就能夠從其他USB設(shè)備獲取數(shù)據(jù)。USB主機(jī)可以連接USB閃存驅(qū)動(dòng)器、鼠標(biāo)、讀卡器等多種外部設(shè)備。在設(shè)計(jì)的過程中成功和USB閃存盤進(jìn)行了連接,閃存盤和USB主機(jī)只有連接之后才能正常工作,stm32f4單片機(jī)中具備USB主機(jī)功能,所以需要制作出USB接口實(shí)現(xiàn)數(shù)據(jù)訪問。這個(gè)程序設(shè)計(jì)語言是由ST官方提出的USBHOST大容量存儲(chǔ)器類(MSC)用例程來進(jìn)行修改使用的。USBHOST通信的回調(diào)函數(shù)相當(dāng)多,在這里著重說明了三個(gè):USBH_USR_MSC_Application函數(shù),當(dāng)執(zhí)行到這個(gè)函數(shù)的時(shí)候就代表著USB閃存盤已經(jīng)順利地被識(shí)別到了,在這個(gè)時(shí)候,使用者就能夠按照自己的需要去進(jìn)行一些自己所需要的功能,比如讀寫USB閃存盤里的文字等。USBH_UDISK_Read和USBH_UDISK_Write,這二種函數(shù)都從給定的扇區(qū)位置來讀取給定的個(gè)數(shù)的扇區(qū)數(shù)據(jù),簡(jiǎn)單而言就是可以進(jìn)行USB閃存盤讀取。這兩個(gè)函數(shù),再結(jié)合前面所提到的FATFS文件系統(tǒng),即可實(shí)現(xiàn)對(duì)USB閃存盤文件的讀寫、訪問。USB_HOST的基本結(jié)構(gòu)體概念:USB_Host,它主要是用來保存計(jì)算機(jī)的有關(guān)狀況。所以,在使用USB服務(wù)器時(shí),就一定要使用到以上這兩種結(jié)構(gòu)體,然后需要使用USBH_Init函數(shù)對(duì)USB進(jìn)行初始化,以及對(duì)USB的硬件初始化和對(duì)USB驅(qū)動(dòng)器庫初始化。初始化代碼如下:USBH_Init(&USB_OTG_Core,USB_OTG_FS_CORE_ID,&USB_Host,&USBH_MSC_cb,&USR_Callbacks); while(1) { USBH_Process(&USB_OTG_Core,&USB_Host); delay_ms(1); t++; if(t==200) {LED0=!LED0;t=0;} } 由以上的代碼中可以知道,USB服務(wù)器上還應(yīng)該直接調(diào)出USBH_Process函數(shù)其作用就是和USB主機(jī)進(jìn)行通信,在編程時(shí),要將該函數(shù)保存在主函數(shù)中,在USB閃存盤的識(shí)別階段,還應(yīng)該不斷調(diào)出它。完成識(shí)別USB閃存盤內(nèi)容后,對(duì)剩余的USB閃存盤讀寫操作仍可使用USB中斷功能進(jìn)行處理。4.4音頻解碼模塊本課題設(shè)計(jì)的音頻解碼主要是通過WM8978來實(shí)現(xiàn)的,通過STM32F407VET6的I2S來驅(qū)動(dòng)WM8978來播放音樂。它的程序流程圖如圖4-3所示。圖4-3I2S驅(qū)動(dòng)WM8978程序流程圖初始化WM8978的基本流程是先設(shè)置好寄存器,包括DAC設(shè)置寄存器、音量設(shè)置寄存器等。要對(duì)I2S進(jìn)行初始化處理,就需要對(duì)相應(yīng)的SPI_I2SCFGR寄存器進(jìn)行設(shè)置,在該寄存器中,設(shè)置好I2S的工作模式,標(biāo)準(zhǔn)參數(shù),以及在空閑狀態(tài)下引腳的電平情況等。最后設(shè)置其使能引腳為I2STXDMA,SPI2I2SEN。對(duì)音樂文件的格式進(jìn)行分析,確定其采用頻率以及數(shù)據(jù)的位數(shù)情況,并根據(jù)這些結(jié)果見I2S的時(shí)鐘分頻設(shè)置為相應(yīng)大小。而在這里為什么要設(shè)定DMA,主要是因?yàn)镮2S在播放音頻文件的時(shí)候都是使用DMA來傳輸數(shù)據(jù)的。為方便補(bǔ)充數(shù)據(jù)信息,可以通過DMA傳輸完成中斷服務(wù)工作,在上一次緩沖傳輸完畢后,單片機(jī)會(huì)自動(dòng)進(jìn)入到下一個(gè)緩沖區(qū),并會(huì)調(diào)用中斷函數(shù),對(duì)音樂的數(shù)據(jù)進(jìn)行補(bǔ)充。傳輸過程如圖4-4所示。最后,使用者只需利用函數(shù)DMA_Cmd(DMA1_Stream4,ENABLE)就可以啟動(dòng)DMA的傳輸功能,并把所有MP3或WAV數(shù)據(jù)信息都按時(shí)填充在了DMA的兩個(gè)緩存區(qū)中。此時(shí),用戶就可以通過連接的揚(yáng)聲器聽到音樂。圖4-4DMA雙緩沖發(fā)送音頻數(shù)據(jù)流MP3、WAV格式文件的解碼是由ST官方提供的解碼代碼來實(shí)現(xiàn)的。在這里,使用的是stm32f407vet6的公共IO端口來模擬IIC,并實(shí)現(xiàn)和WM8978的雙向通信。IIC(inter-integratedcircuit)總線接口,是由飛利浦有限公司所開發(fā)的一條用來連結(jié)微邏輯控制器MCU與外界裝置之間的雙線串行式總線。該總線包含了時(shí)鐘芯片以及數(shù)據(jù)線。其主要功能就是在CPU和其受控的IC兩者進(jìn)行數(shù)據(jù)傳輸。但是要注意的時(shí),該總線在同一時(shí)間內(nèi),只可以發(fā)送或者接收數(shù)據(jù),不能兩者同時(shí)進(jìn)行。IIC的通信模式為半雙工,在數(shù)據(jù)傳輸?shù)倪^程中,有開始、結(jié)束以及應(yīng)答這幾個(gè)信號(hào)。其中開始和結(jié)束這兩個(gè)信號(hào)類型為跳變時(shí)序。開始信號(hào)的時(shí)序情況:當(dāng)SCL上的電平是高的時(shí)候,SDA上的電平會(huì)一瞬間就從高變?yōu)榈?,其程序?yàn)椋?/產(chǎn)生起始信號(hào)voidIIC_Start(void){ SDA_OUT();//SDA線輸出 IIC_SDA=1; IIC_SCL=1; delay_us(4); IIC_SDA=0;//START:當(dāng)SCL上的電平是高的時(shí)候,SDA上的電平會(huì)一瞬間就從高變?yōu)榈停?delay_us(4); IIC_SCL=0;//啟用IIC總線,準(zhǔn)備開始通信}結(jié)束信號(hào):當(dāng)SCL上的電平是高的時(shí)候,SDA上的電平會(huì)在一瞬間就從低變高,程序代碼如下://產(chǎn)生IIC結(jié)束信號(hào)voidIIC_Stop(void){ SDA_OUT();//SAD線輸出 IIC_SCL=0; IIC_SDA=0;//STOP:當(dāng)SCL為高電平值時(shí),SDA由低電平值跳變到高電平值 delay_us(4); IIC_SCL=1; IIC_SDA=1;//發(fā)送IIC總線結(jié)束信號(hào) delay_us(4); }應(yīng)答信號(hào):信號(hào)發(fā)射模塊向接收模塊發(fā)出相應(yīng)的信號(hào),接收模塊會(huì)發(fā)出應(yīng)答信號(hào),發(fā)射模塊在接收到應(yīng)答信號(hào)后,就可以知道,接收模塊有沒有接收到信號(hào),并且還需不需要繼續(xù)發(fā)射信號(hào)出去。如果發(fā)射出的應(yīng)答信號(hào)為低電平,這時(shí)就是一個(gè)有效的的應(yīng)答位,其表示的含義就會(huì)信號(hào)接收成功。如果應(yīng)答信號(hào)是一個(gè)高電平,就說明信號(hào)沒有成功接收,是一個(gè)非應(yīng)答位。程序代碼如下://ACKvoidIIC_Ack(void){ IIC_SCL=0; SDA_OUT(); IIC_SDA=0; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0;}//NACK voidIIC_NAck(void){ IIC_SCL=0; SDA_OUT(); IIC_SDA=1; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0;} IIC總線時(shí)序圖如圖4-5所示.圖4-5IIC總線時(shí)序圖4.5AD轉(zhuǎn)換和FFT變換軟件的質(zhì)量和運(yùn)作的效率主要取決于對(duì)算法的選取,而在本次設(shè)計(jì)中,最為關(guān)鍵的就是AD轉(zhuǎn)換和FFT變換。程序流程圖如圖4-6所示。圖4-6AD轉(zhuǎn)換和FFT變換流程圖本設(shè)計(jì)中主要使用庫函數(shù)設(shè)置在ADC1的通道1進(jìn)行AD切換。首先,啟動(dòng)了GPIOA的時(shí)鐘,并且把PA1設(shè)定為模擬輸入。因?yàn)镻A1將被復(fù)用為ADC,所以有必要啟用ADC1時(shí)鐘。具體的方法是:RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;接下來,通過設(shè)定ADC的通用調(diào)節(jié)寄存器CCR,將工作模式設(shè)定為獨(dú)立模式,并設(shè)置ADC的輸入時(shí)鐘分頻器。為使ADC的時(shí)鐘不大于36MHz,我們可以把分頻系數(shù)設(shè)定為ADC_Prescaler_Div4,即4分頻。由ADCCLK=PCLK2/4=84/4=21Mhz可知,ADC時(shí)鐘沒有超過36Mhz。然后就是配置ADC1的相關(guān)參數(shù),設(shè)置完信息后就可以開啟AD轉(zhuǎn)換器,在轉(zhuǎn)換結(jié)束后,讀取ADC的值。當(dāng)收集到ADC的數(shù)值信息以后,就需要調(diào)用FFT來運(yùn)算,從而使音樂信息由時(shí)域轉(zhuǎn)化為頻域,利用點(diǎn)陣屏來表示音樂頻率。FFT也就是快速傅里葉變換,通過FFT就可以把以音頻信息,從時(shí)域轉(zhuǎn)化成為與之相應(yīng)的頻率區(qū)間中去,相比于時(shí)域,頻率區(qū)間能夠更好展示出信號(hào)的特征信息,方便對(duì)信號(hào)進(jìn)行分析處理。FFT能夠?qū)⑿盘?hào)的頻譜直接給提取出來,大大方便了人們的分析和處理。在本設(shè)計(jì)中,先按照規(guī)定的采樣頻率F收集信息,再按照取樣個(gè)數(shù)N采集N個(gè)點(diǎn),然后再利用FFT算法對(duì)N個(gè)點(diǎn)進(jìn)行解析,如此即可發(fā)現(xiàn)信息的頻譜特征。根據(jù)采樣定理,采樣頻率F所采集出來的信號(hào)頻率要等于其最大頻率的二倍,以確保信號(hào)不失真,即f>2*的fmax。單片機(jī)對(duì)模擬信號(hào)進(jìn)行ADC采樣處理之后,得到的數(shù)字信號(hào)都是離散型的,所以還需要進(jìn)行FFT運(yùn)算,得出N個(gè)點(diǎn)的運(yùn)算結(jié)果。在計(jì)算的過程中,為了方便,N等于2的整次方冪?;A(chǔ)2-FFT算法主要由倒序操作和多級(jí)蝶形操作組成。倒序運(yùn)算是將原始數(shù)據(jù)以倒序的形式存儲(chǔ)。經(jīng)過運(yùn)算后,可以按正常順序輸出?;跇颖敬笮。罱ǔ龇崔D(zhuǎn)表陣列,然后查表對(duì)其進(jìn)行快速反轉(zhuǎn)操作,與移位操作相比,運(yùn)算速度大大提高。蝶形算法的思想是將FFT的N點(diǎn)運(yùn)算分為幾級(jí)。每個(gè)關(guān)卡都有一個(gè)蝶形操作。蝶形運(yùn)算流程圖及相應(yīng)關(guān)系如圖4-7所示。圖4-7蝶形運(yùn)算流程圖及相應(yīng)關(guān)系簡(jiǎn)而言之,蝴蝶算法的精髓是將復(fù)雜的數(shù)學(xué)過程簡(jiǎn)化為若干簡(jiǎn)潔明了的數(shù)學(xué)過程。頻譜顯示的原理很簡(jiǎn)單,音頻信號(hào)的頻譜在系統(tǒng)中被分為256段,前16段的頻譜通過LED點(diǎn)陣屏顯示。為了能夠在點(diǎn)陣屏上顯示音頻信號(hào),需要將FFT運(yùn)算的結(jié)果轉(zhuǎn)換為輸入到顯示屏。因此,可以假設(shè)對(duì)N個(gè)點(diǎn)(N>1)的FFT計(jì)算的結(jié)論均為N個(gè)點(diǎn)的復(fù)數(shù)a+bi,即各個(gè)點(diǎn)都相對(duì)于某個(gè)頻率點(diǎn),且該點(diǎn)的模值即為頻率值下的振幅特征。實(shí)際信號(hào)的振幅是該點(diǎn)的模值除以N/2,則各個(gè)點(diǎn)的相位即為該頻段下信號(hào)的實(shí)際相位。最終結(jié)果存儲(chǔ)在一個(gè)數(shù)組中。4.6點(diǎn)陣顯示模塊在本次的設(shè)計(jì)方案中所有的音樂效果都是由8×8點(diǎn)陣屏來完成,而MAX7219芯片的作用則是驅(qū)動(dòng)點(diǎn)陣屏。MAX7219的驅(qū)動(dòng)方式主要是通過設(shè)定它的輸入輸出模塊和控制寄存器,包括譯碼方式、屏幕亮度、掃描方式界限、關(guān)閉模式和顯示測(cè)試等,代碼如下:voidinit_MAX7219(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; GPIO_Init(GPIOC,&GPIO_InitStructure); Write_Max7219_N(0x09,0x00,0x00); Write_Max7219_N(0x0a,0x03,0x03); Write_Max7219_N(0x0b,0x07,0x07); Write_Max7219_N(0x0c,0x01,0x01); Write_Max7219_N(0x0f,0x00,0x00);}進(jìn)行初始化以后,便開始往MAX7219中寫入字節(jié)和數(shù)據(jù)。它由SPI總線驅(qū)動(dòng),與MAX7219聯(lián)系的前提條件是需要知道它的控制字。MAX7219在工作的時(shí)候規(guī)定一次只可以收到十六位數(shù)據(jù)。先從最高位的D15位開始接收數(shù)據(jù),然后在接收其最低位上的數(shù)據(jù)信號(hào)。所以要先將最高位上的數(shù)據(jù)傳輸出去,這時(shí)才能開始循壞移位。D0~D7是待顯示的數(shù)據(jù)信息,D8~D11是移位寄存器位置信息,D12~D15無關(guān)位,可任意寫入。16位數(shù)據(jù)包結(jié)構(gòu)如下圖所示:圖4-816位數(shù)據(jù)包結(jié)構(gòu)MP3播放器的音樂效果都是通過點(diǎn)陣屏來顯示的。音量柱狀圖使用第一塊點(diǎn)陣的第一列來顯示,總音量為八行,全部點(diǎn)亮即為最高音量。音樂節(jié)奏閃爍則是使用兩塊點(diǎn)陣屏同時(shí)顯示,在點(diǎn)陣屏閃爍的同時(shí)伴隨著一個(gè)LED燈的閃爍,給人帶來一場(chǎng)具有沖擊性的視覺盛宴。音樂頻譜的顯示也是需要兩塊點(diǎn)陣屏同時(shí)顯示,根據(jù)傅立葉變換的結(jié)果,在點(diǎn)陣屏上顯示出結(jié)果。電池電量是用兩塊點(diǎn)陣屏的最下面一行來顯示,由于有電壓波動(dòng),電量顯示會(huì)有稍微的不穩(wěn)定。本設(shè)計(jì)的各種音樂效果是通過按鍵來進(jìn)行切換顯示的。4.7按鍵控制本設(shè)計(jì)的音樂效果的切換是通過按鍵來控制的,程序流程圖如下:圖4-9按鍵控制程序流程圖在按鍵控制的代碼中用到三個(gè)函數(shù),分別是KEY_Init、KeyDriver、KeyScan。KEY_Init函數(shù)是用來初始化按鍵輸入時(shí)的IO端口;KeyDriver是一個(gè)按鍵驅(qū)動(dòng)函數(shù),可以用來檢查鍵盤動(dòng)作;而KeyScan則是按鍵掃描函數(shù),用于掃描這四個(gè)IO端口是否按下按鍵。在KEY.H中,還具體界定了KEY0_PRES、KEY1_PRES、KEY2_PRES、KEY3_PRES等四種宏定義,其中各自相對(duì)應(yīng)了開發(fā)板的四個(gè)按鍵KEY0、KEY1、KEY2、KEY3。還有最關(guān)鍵的4個(gè)宏定義它是直接調(diào)用庫函數(shù)來讀取某個(gè)IO口。代碼如下:#defineKEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_7)//PE7#defineKEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_8)//PE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國(guó)化學(xué)原料制造業(yè)市場(chǎng)競(jìng)爭(zhēng)力深度剖析及投資趨勢(shì)研究報(bào)告
- 2025-2030中國(guó)化妝品物流行業(yè)市場(chǎng)現(xiàn)狀分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030中國(guó)化妝品原料制造業(yè)市場(chǎng)分析與發(fā)展戰(zhàn)略規(guī)劃研究報(bào)告
- 2024年周口理工職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫附答案解析
- 2025年重慶科創(chuàng)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試模擬測(cè)試卷附答案解析
- 2023年徽商職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試模擬測(cè)試卷附答案解析
- 2026保安員理論考試及答案(名校卷)
- 2025年湖南科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫附答案解析
- 2025年湖南財(cái)經(jīng)工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試模擬測(cè)試卷附答案解析
- 2024年永州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫附答案解析
- 社區(qū)警務(wù)工作復(fù)習(xí)測(cè)試附答案
- 《民航法律法規(guī)》課件-7-2 民用航空器不安全事件的處置
- 2024秋期國(guó)家開放大學(xué)《西方行政學(xué)說》一平臺(tái)在線形考(任務(wù)一至四)試題及答案
- 2024秋國(guó)家開放大學(xué)《交通工程》形考任務(wù)1-4答案
- 創(chuàng)新設(shè)計(jì)前沿智慧樹知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 股東合作合同模板
- 中國(guó)書法藝術(shù)智慧樹知到期末考試答案章節(jié)答案2024年中國(guó)美術(shù)學(xué)院
- 小學(xué)生古詩詞大賽備考題庫(300題)
- DB14-T 2644-2023旅游氣候舒適度等級(jí)劃分與評(píng)價(jià)方法
- 藥店食品安全管理制度目錄
- GB/T 25085.3-2020道路車輛汽車電纜第3部分:交流30 V或直流60 V單芯銅導(dǎo)體電纜的尺寸和要求
評(píng)論
0/150
提交評(píng)論