




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、大慶師范學(xué)院本科生畢業(yè)論文基于嵌入式操作系統(tǒng)的MP3播放器設(shè)計院 (系)物理與電氣信息工程學(xué)院 研 究 方 向 嵌入式開發(fā) 學(xué) 生 姓 名 學(xué) 號 指導(dǎo)教師姓名 指導(dǎo)教師職稱 2013年 5 月 20 日IV摘 要時下,隨著科技的不斷發(fā)展和創(chuàng)新,嵌入式領(lǐng)域也得到了飛速的進(jìn)步,而消費(fèi)者日益增長的消費(fèi)需求也刺激著嵌入式技術(shù)的不斷前進(jìn)。消費(fèi)者的主要對象為電子與多媒體結(jié)合的產(chǎn)品,多媒體部件逐漸成為嵌入式產(chǎn)品中重要組成部分。所以,嵌入式技術(shù)與多媒體產(chǎn)品的相互融合顯得尤為重要,并結(jié)方便消費(fèi)者操作的圖形界面將越來越廣泛的應(yīng)用到個人消費(fèi)類電子產(chǎn)品的設(shè)計開發(fā)中?;谝陨媳尘?,本文研究并實(shí)現(xiàn)了基于嵌入式操作系統(tǒng)的
2、MP3播放器。本次設(shè)計開發(fā)了一種應(yīng)用于Linux系統(tǒng)的音樂播放器。該播放器基于QT技術(shù)和 Linux 操作系統(tǒng), 利用 GNU 開發(fā)工具進(jìn)行軟件開發(fā), 使用 C99標(biāo)準(zhǔn)的 C 語言編寫.可以運(yùn)行在ARM920T 硬件平臺。介紹了MP3播放器的軟硬件開發(fā)平臺。細(xì)致分析了軟件開發(fā)平臺的建立,展示出了MP3播放器各功能實(shí)現(xiàn)的詳細(xì)設(shè)計開發(fā)步驟,所計的MP3播放器能夠支持優(yōu)盤、SD卡等外接移動存儲設(shè)備并支持完善的調(diào)節(jié)音量、上一曲、下一曲、快進(jìn)快退、播放暫停、顯示播放進(jìn)度等條等功能。簡述了MP3播放器的開發(fā)過程、ARM的硬件組成,Linux 操作系統(tǒng)的安裝和使用程序移植的的方法,進(jìn)而成功實(shí)現(xiàn)了該播放器的開
3、發(fā)和最后的在硬件環(huán)境下的使用。關(guān)鍵詞:c+軟件語言;MP3播放器;Linux操作系統(tǒng);ARM920TAbstract Nowadays,with the continuous development of science and technology and innovation , the embedded field has also been a rapid progress , the increasing consumer spending also stimulates demand for embedded technology continues to advance .The
4、 main object of consumers for the combination of electronic and multimedia products, multimedia components has gradually become an important part of embedded products . Therefore , embedded technology and multimedia products merging is particularly important, and easy to knot the consumer - to-use g
5、raphical interface will be more widely used in personal consumer electronics product design and development . Based on the above background , this paper embedded operating system - based MP3 player .Developed in this paper applied to the Linux system music player . The player based on the QT and Lin
6、ux operating systems , GNU development tools for software development , using the C99 standard C language and can run on ARM920T hardware platform . MP3 player hardware and software development platform . Detailed analysis of the establishment of a software development platform , demonstrating the M
7、P3 player to achieve the detailed design development steps , the MP3 player can support USB flash drives ,SD card and an external removable storage devices and supports perfect to adjust the volume on the track , next track , fast forward and rewind , playback is paused , playback progress bar and o
8、ther functions . Describes MP3 application , embedded operating system and driver transplant , and then successfully achieved the player to the development board transplantation .Keywords:c+lauguage;MP3 player;Linux system;ARM920T 目錄第一章 緒 論11.1 課題背景及意義11.2 嵌入式系統(tǒng)現(xiàn)狀11.2.1 處理器的發(fā)展11.2.2 處理器的種類21.2.3 Lin
9、ux操作系統(tǒng)的發(fā)展31.2.4 Linux操作系統(tǒng)的特點(diǎn)3第二章 開發(fā)環(huán)境分析52.1 開發(fā)板介紹52.2 LINUX系統(tǒng)的安裝62.3 交叉編譯器7第三章 方案設(shè)計分析93.1 設(shè)計目標(biāo)93.2 方案設(shè)計93.3 可行性分析9第四章 系統(tǒng)軟件開發(fā)104.1 功能實(shí)現(xiàn)流程圖104.2 播放器軟件實(shí)現(xiàn)104.2.1 播放與暫停功能的實(shí)現(xiàn)104.2.2 上下曲功能的實(shí)現(xiàn)114.2.3 音量調(diào)節(jié)功能的實(shí)現(xiàn)124.3 交叉編譯器的搭建134.4 系統(tǒng)調(diào)試運(yùn)行結(jié)果13第五章 結(jié) 論16參考文獻(xiàn)17謝 辭18附錄19大慶師范學(xué)院本科畢業(yè)論文(設(shè)計)第一章 緒 論1.1 課題背景及意義隨著科技的不斷進(jìn)步和發(fā)
10、展各類科技產(chǎn)品走入到普通消費(fèi)者手中,而這些科技產(chǎn)品中電子產(chǎn)品占據(jù)著相當(dāng)大的比重,各種各樣電子產(chǎn)品充實(shí)著普通消費(fèi)者的日常生活。目前,隨著科技的發(fā)展,多功能的ARM處理器取代了功能相對單一的單片機(jī)處理器,成為市場上新的主流處理器,ARM的計算能力不斷增強(qiáng),模塊功能不斷完善,應(yīng)用適用范圍也不斷地擴(kuò)大著,所以了解并掌握基于ARM框架下的LINUX系統(tǒng)的開發(fā)顯得更為重要。而且在設(shè)計開發(fā)過程中,充分利用Linux操作系代碼開源、統(tǒng)穩(wěn)定性高、可裁剪可移植性、和兼容性好等優(yōu)點(diǎn),去設(shè)計基于Linux操作系統(tǒng)的音樂播放器的開發(fā),同時采用QT界面技術(shù)與GUI圖形用戶界面的MP3音樂播放器,完美的實(shí)現(xiàn)MP3音樂播放器
11、的相關(guān)功能。嵌入式作為當(dāng)前的熱門的發(fā)展行業(yè),嵌入式技術(shù)廣泛的引用于工業(yè)控制、設(shè)備通信、醫(yī)療儀器、智能家具等領(lǐng)域,而且廣泛的應(yīng)用于手機(jī)、PDA等消費(fèi)類電子產(chǎn)品中。作為現(xiàn)在主流的音樂存貯格式MP3 作為常用的音樂存貯格式,數(shù)據(jù)壓縮失真率低,再次播放效果好。所以MP3音樂播放器在這些個人消費(fèi)電子設(shè)備中實(shí)現(xiàn)顯得十分有競爭力。1.2 嵌入式系統(tǒng)現(xiàn)狀隨著科技的發(fā)展,智能化,便攜化,快速化的發(fā)展,嵌入式系統(tǒng)技術(shù)也將獲得跟好的發(fā)展空間。美國著名未來學(xué)家尼葛洛龐帝曾建在訪問我國時預(yù)言,3至4年后嵌入式智能電腦,將是筆記本和因特網(wǎng)之后最偉大的發(fā)明。我國著名嵌入式系統(tǒng)專家沈緒榜院士也曾在公開場合語言過嵌入式的發(fā)展前
12、景和未來,并在其98年11月計算機(jī)的發(fā)展一文中,對未來20年以嵌入式系統(tǒng)和芯片為基本的計算機(jī)發(fā)展進(jìn)行了科學(xué)的描述和展望。1.2.1 處理器的發(fā)展ARM代表高級RISC機(jī),它是微處理器行業(yè)的知名企業(yè),始建于20世紀(jì)90年代初的一個谷倉,似乎是稍后SA的情況Linux大約在同一時間。該公司設(shè)計了大量高性能,低成本,低能量的RI ( RISC )處理器。 ARM的特點(diǎn)是只設(shè)計芯片,而不是生產(chǎn)。它將許多世界領(lǐng)先的半導(dǎo)體,軟件和OEM廠商(如飛思卡爾,英特爾,三星,德州儀器等)的技術(shù)許可,并提供服務(wù)。背后隱藏著許多著名的企業(yè),它不為多數(shù)人知曉,但它是仍然有著很高的利潤依靠這些大公司負(fù)責(zé),在這方面它很像是
13、高通通訊領(lǐng)域。 ARM架構(gòu)大大提高,從最初的發(fā)展到現(xiàn)在,仍然是改善和發(fā)展。隨著需求和技術(shù)的發(fā)展, ARM本身也是快速增長。 ARM已經(jīng)由最初的ARM1一步步走的Cortex- A15 。 ARM內(nèi)核不斷進(jìn)步,也導(dǎo)致了經(jīng)濟(jì)的快速發(fā)展。11.2.2 處理器的種類ARM公司已經(jīng)開發(fā)了幾個系列的ARM處理器內(nèi)核。到目前為止,該系列是ARM11 。 ARM6和早期系列一直在市場上是很難見到的ARM7系列和更高級別的處理器沒有進(jìn)入市場的廣泛認(rèn)可。最常用的ARM7系列和ARM9系列,和ARM9E系列, ARM10系列, SecurCore系列, Intel的StrongARM的,XSCALE系列。ARM7系
14、列:包括ARM7TDNI ,的ARM7TDNI -S ,高速緩存處理器ARM720T宏蜂窩和擴(kuò)大ARM7EJ-S Iazelle的。本系列產(chǎn)品廣泛應(yīng)用于多媒體和嵌入式設(shè)備,包括上網(wǎng)的設(shè)備,網(wǎng)絡(luò),調(diào)制解調(diào)器和移動電話, PDA和其它無線設(shè)備。ARM9系列:主要包括ARM9TDMI , ARM920T和ARM940T緩存處理器宏單元。該系列產(chǎn)品主要用于發(fā)動機(jī)管理系統(tǒng),儀器儀表,安防系統(tǒng),機(jī)頂盒,高端打印機(jī),掌上電腦,網(wǎng)絡(luò)計算機(jī)和智能手機(jī)與MP3音頻和MPEG4視頻多媒體格式。ARM9E系列:為綜合處理器,包括ARM926EJ-S、帶有高速緩存處理宏單元的ARM966E-S/ARM946E-S。該系
15、列強(qiáng)化了數(shù)字信號處理功能,可應(yīng)用于需要DSP與微控制器結(jié)合使用的情況,將Thumb技術(shù)和DSP都擴(kuò)展到ARM指令集中,并具有EmbeddedICE-RT邏輯,更好地適應(yīng)了實(shí)時系統(tǒng)的開發(fā)需要。ARM10系列:包括ARM1020E和ARM1020E微處理器核心。其核心在于使用向量浮點(diǎn)單元(VFP) VFP10浮點(diǎn)高性能的解決方案,從而大大提升了處理器的整數(shù)和浮點(diǎn)性能,打下了堅實(shí)的基礎(chǔ)用戶界面, 2D和3D圖形引擎應(yīng)用程序,如視頻游戲機(jī)和高性能打印機(jī)。SecurCore系列:包括SC100 , SC110 , SC200和SC210處理器核心。該系列產(chǎn)品的重點(diǎn)新興的安全市場上的一個新的安全智能卡和其
16、他安全I(xiàn)C開發(fā)提供了一個獨(dú)特的32位系統(tǒng)的設(shè)計,并有特定的防偽設(shè)計的處理器,從而有助于防止盜版的硬件和軟件。StrongARM系列:StrongARM處理器將英特爾處理器技術(shù)和ARM架構(gòu)相結(jié)合為一體,致力于為手提式通信和消費(fèi)電子類設(shè)備提供理想的解決方案。Xscale系列:提供全性能、高性價比和低功耗的解決方案,支持16位Thumb指令和DSP指令。21.2.3 Linux操作系統(tǒng)的發(fā)展 實(shí)際上,Linux 操作系統(tǒng)就是一套免費(fèi)供大家自由使用的開源系統(tǒng)。大家經(jīng)常所說的Linux 就是指Linus Torvalds所撰寫的Linux 操作系統(tǒng)的內(nèi)核。當(dāng)時的Linus 就是芬蘭赫爾辛基大學(xué)的一名普通
17、的學(xué)生,他主要的學(xué)習(xí)方向里有一門課是操作系統(tǒng),這門課程的主要內(nèi)容是研究程序的執(zhí)行和設(shè)計程序。而且這門課程還專門提供了一種稱為Minix的初期UNIX系統(tǒng)。Minix 是一款僅為教學(xué)而臨時設(shè)計的操作系統(tǒng),功能十分有限。因此,和Minix 的眾多使用者一樣,Linus也希望能給它添加一些新的功能。在之后的時間里,萊納斯,根據(jù)實(shí)際需要,編制的磁盤驅(qū)動器下載的文件訪問新聞組,寫了文件系統(tǒng),以便能夠閱讀Minix文件系統(tǒng)中的文件。以這種方式, “當(dāng)你有一個任務(wù)切換時,文件系統(tǒng)和設(shè)備驅(qū)動程序,這是UNIX需要有的至少其基本”。 0.0.1版本的Linux的誕生。萊納斯決定從一開始就被添加到Linux內(nèi)核開
18、發(fā)工作,通過互聯(lián)網(wǎng)自由傳播的Linux的源代碼是在互聯(lián)網(wǎng)上公布,讓許許多多多愛好者和程序員。這個想法與FSF (自由軟件基金會)資助發(fā)起的GNU (GNU不是UNIX )與自由軟件的精神不謀而合。31.2.4 Linux操作系統(tǒng)的特點(diǎn)Linux 系統(tǒng)在現(xiàn)實(shí)應(yīng)用中有很多突出的秀點(diǎn)尤其在技術(shù)特點(diǎn)上。在操作系統(tǒng)的發(fā)展過程中,它一直擁有者技術(shù)上的要到性優(yōu)勢。Linux 操作系統(tǒng)的特點(diǎn)和優(yōu)勢有很多方面,簡單的說, Linux 具有一下特點(diǎn):(1) 多用戶多用戶系統(tǒng)中的資源可以由不同的用戶使用,各自具有自己的資源為每個用戶使用該特定的權(quán)限,彼此獨(dú)立。Linux 和Unix 都具有多用戶的特性。(2) 開放
19、性 開放性是指系統(tǒng)遵循世界標(biāo)準(zhǔn)規(guī)范, 特別是遵循開放系統(tǒng)互連( OSI) 國際標(biāo)準(zhǔn)。(3) 良好的用戶界面Linux 為用戶提供了兩個接口: 用戶界面和系統(tǒng)調(diào)用。簡明的Linux 用戶界面是基于文本的命令行界面外觀, 即 shell, 它既可以聯(lián)機(jī)使用, 又可存在文件上脫機(jī)使用。Linux 還為用戶提供了圖形用戶界面。它利用鼠標(biāo)、菜單、窗口、滾動條等設(shè)施, 給用戶呈現(xiàn)一個直觀、易操作、高度互動的良好的圖形化界面。(4) 設(shè)備獨(dú)立性具有獨(dú)立的操作系統(tǒng)的設(shè)備,可以簡化工作,作為一個單獨(dú)的文件中添加一個新的設(shè)備,通過一個外圍設(shè)備。當(dāng)您需要添加新的設(shè)備,在內(nèi)核中的系統(tǒng)管理員增加必要的連接。這種連接,以
20、確保每次調(diào)用設(shè)備提供服務(wù),以同樣的方式來對付他們的內(nèi)核。當(dāng)一個新的和更好的外設(shè)被開發(fā)并交付給用戶,允許該操作將這些設(shè)備連接到內(nèi)核,可以不受限制地立即訪問它們。(5) 多任務(wù)多任務(wù)是指計算機(jī)同時執(zhí)行多個程序, 而且各個程序的運(yùn)行互相獨(dú)立。(6) 良好的可移植性Linux 是一種可移植的操作系統(tǒng), 能夠在從微型計算機(jī)到大型計算機(jī)的任何環(huán)境中和任何平臺上運(yùn)行。(7) 可靠的系統(tǒng)安全Linux 已經(jīng)采取了一系列的安全和技術(shù)措施,包括訪問控制,讀,寫保護(hù)子系統(tǒng),審計跟蹤,核心授權(quán),在多用戶環(huán)境的網(wǎng)絡(luò)用戶提供必要的安全。綜上所述, Linux 系統(tǒng)正在走向成熟, 不僅與能與 Windows 分庭抗禮, 而
21、且還從其前輩手中奪取幾分天下。Linux 在嵌入式產(chǎn)品開發(fā)中的應(yīng)用也已經(jīng)十分廣泛。為了進(jìn)一步促進(jìn)在這方面的應(yīng)用, 在 Linux 2.6 中, 引入了很多非常有利于開發(fā)嵌入式應(yīng)用的功能, 使Linux 的發(fā)展前景更為光明。4第二章 開發(fā)環(huán)境分析2.1 開發(fā)板介紹 如圖2-1為開發(fā)板圖片:圖2-1以下介紹開發(fā)板模塊:(1) 電源接口電源連接器的輸入電壓不要超過7V,TQ2440配置的電源適配器是5V的,在不知道適配器輸出電壓時,請向適配器的供應(yīng)商確認(rèn)輸出電壓或自行用電壓表測試輸出電壓;以防止因?yàn)檩斎腚妷哼^大使開發(fā)板出現(xiàn)燒毀的情況。(2) Nor/Nand選擇開關(guān)當(dāng)從Nor Flash啟動時,請在
22、開發(fā)板開機(jī)前將開關(guān)撥到遠(yuǎn)離綠色接口的地方。當(dāng)從Nand Flash啟動時,請在開發(fā)板開機(jī)前將開關(guān)撥到靠近綠色接口的地方。(3) 音頻輸入輸出接口TQ2440提供的音頻接口完全按照標(biāo)準(zhǔn)接口提供,綠色為音頻輸出接口,紅色為音頻輸入接口。(4) USB接口(USB Host和USB Slave)TQ2440開發(fā)板有兩個USB端口,一個USB主機(jī)接口USB A端口(開發(fā)板上面,作為主機(jī),主要用于U盤,USB攝像頭) 另外一個是USB B口(開發(fā)板上的USB Deive接口,使用標(biāo)配的USB延長線,連接到PC,用于數(shù)據(jù)傳輸)。當(dāng)使用USB下載功能時,需要連接標(biāo)配提供的USB延長線到開發(fā)板和PC連接。(5
23、) RTC備份電池默認(rèn)出廠時安裝的電池。(6) 串口接口串行口在TQ2440開發(fā)板是一個非常重要的接口TQ2440通過它與PC和開發(fā)板直接互通傳輸?shù)臄?shù)據(jù),調(diào)試功能等。TQ2440開發(fā)板提供了一個標(biāo)準(zhǔn)的串行電纜直接連接到串行電纜,串行電纜的一端開發(fā)板串口使用開發(fā)板, PC機(jī)的串行接口的另一端,然后通過串口互動等操作。三串口擴(kuò)展接口引出的串口的TX和RX引腳均是3.3V電壓,如果需要使用232電平,請使用擴(kuò)展芯片。(7) 網(wǎng)卡接口TQ2440開發(fā)板提供了100M網(wǎng)卡接口。在啟動操作系統(tǒng)后,接上網(wǎng)線就可以進(jìn)行網(wǎng)上操作;在uboot的下載模式下面可以使用TFTP下載數(shù)據(jù)開發(fā)板。(8) Jtag接口在T
24、Q2440開發(fā)板中,Jtag的用途是當(dāng)Nand Flash或Nor Flash中沒有uboot時,使用它燒寫uboot進(jìn)去;或者是進(jìn)行仿真是時使用它。(9) 系統(tǒng)總線接口引出了數(shù)據(jù)總線和地址總線等。(10) SD卡接口接SD卡時。接口面朝下插入即可,支持SD卡和SDHC卡。(11) 電源開關(guān) 控制著整個開發(fā)板的供電,需要開機(jī)時請撥動該開關(guān)到靠經(jīng)電源指示燈的方向,關(guān)機(jī)時撥動該開關(guān)到反方向。52.2 LINUX系統(tǒng)的安裝Linux 系統(tǒng)對硬件的要求很低一些低端設(shè)備上就可以運(yùn)行,而且如果只是想在字符設(shè)備上運(yùn)行,那么我感覺一臺386 的設(shè)備已經(jīng)完全的可以用來運(yùn)行Linux 了;但是如果只想運(yùn)行Wind
25、ows,那么只需要一臺16MB內(nèi)存的機(jī)器即可,600MB存貯盤的486計算機(jī)就可以了。這樣比較起來比那些需要256MB內(nèi)存,2.0GBHz的操作系統(tǒng)要好的多了,這就是Linux的優(yōu)勢所在。(1) 安裝準(zhǔn)備在開始安裝之前,首先需要了解一下機(jī)器的硬件配置,包括以下幾個問題。1)有幾個硬盤,每個硬盤的大小,如果有兩個以上的硬盤哪個是主盤。2)內(nèi)存有多大。3)顯卡的廠家和型號,有多大的顯存。4)顯示器的廠家和型號。(2) 檢測安裝將磁盤放入電腦后會出現(xiàn)安裝界面,單機(jī)界面上的“Skip”挑過即可。接下來選擇語言和鍵盤,選擇“簡體中文”。鍵盤選擇默認(rèn)的“美國英語”即可。(3) 磁盤分區(qū)按照提示往下進(jìn)行,會
26、提示選擇安裝方式是“個人桌面”、“工作站”、“服務(wù)器”還是“定制”,其中若選擇“個人桌面”、“工作站”或是“服務(wù)器”,則之后系統(tǒng)會自動選擇它所要需要的軟件,為了增加靈活性,可選擇“定制”安裝??梢酝ㄟ^雙擊空閑磁盤空間,或者單擊“新建”為Linux 來創(chuàng)建一個新的磁盤分區(qū)。(4) 引導(dǎo)程序選擇由于現(xiàn)在往往存在著多系統(tǒng),因此Linux 為用戶提供了GRUB 系統(tǒng)引導(dǎo)管理器,直接依次單擊“確定”和“下一步”按鈕即可。然后是網(wǎng)絡(luò)的設(shè)置要求此時就要按網(wǎng)絡(luò)情況而定。為了安裝以后能夠驅(qū)動起來,就要把防火墻關(guān)掉防止產(chǎn)生問題。2.3 交叉編譯器編譯器就是把一些高級語言翻譯為機(jī)器能夠識別的機(jī)器語言的程序。一個主流
27、編譯器的主要工作步驟是:源代碼 預(yù)處理器 編譯器 匯編程序 目標(biāo)代碼 鏈接器 可執(zhí)行程序。 (1) 預(yù)處理在編譯之前進(jìn)行的工作,預(yù)處理包括頭文件的處理,文件的處理和宏定義的處理。(2) 編譯編譯時讀取程序的字符流,對之前的軟件語言語法的分析,可以將自己編寫的較高級的語言轉(zhuǎn)化成為匯編語言。 (3) 匯編匯編就是把剛剛形成的匯編語言轉(zhuǎn)變成機(jī)器碼的過程,而處理的每一個匯編文件都將經(jīng)過這個步驟,并且最終形成自己的目標(biāo)文件以便于被機(jī)器識別。(4) 鏈接上一級形成的目標(biāo)文件并不能馬上就被機(jī)器識別并執(zhí)行,產(chǎn)生的目標(biāo)文件還有許多的后期工作沒有完成,鏈接的主要功能就是完成相關(guān)工作,將有關(guān)聯(lián)的文件都相互的連接起來
28、,使這些文件最終一起成為一個整體從而被機(jī)器識別并執(zhí)行。6第三章 方案設(shè)計分析3.1 設(shè)計目標(biāo)此次設(shè)計的主要目標(biāo)是實(shí)現(xiàn)MP3的開發(fā),并使其能夠運(yùn)行在ARM開發(fā)板上,實(shí)現(xiàn)的主要功能有:歌曲的播放、暫停、上一曲、下一曲、快進(jìn)、快退、添加、刪除等功能,從而制作出一款可以在不同軟件平臺運(yùn)行的音樂播放器。3.2 方案設(shè)計本方案設(shè)計過程中主要考慮兩個方面更:軟件方面,硬件方面。軟件部分包含Madplay可執(zhí)行程序,lidmad解器碼庫,TFT觸摸屏驅(qū)動代碼,以及l(fā)inux操作系統(tǒng),arm-linux-gcc交叉編譯,內(nèi)核,根文件系統(tǒng)以及在Windows下的連接工具,燒錄軟件等。硬件部分包括STC2440開發(fā)
29、板,串口線,并口線,LCD觸摸屏,5V變壓器,帶串口、并口的PC機(jī)。7必須要了解嵌入式系統(tǒng)平臺的工作原理,完成在硬件平臺上燒些嵌入式系統(tǒng);了解linux的基本指令令,熟悉linux下的C語言編程,熟悉線程、進(jìn)程、以及各個通信和信號量的編程方法,在以上的基礎(chǔ)下通過模塊化的編程思想逐步編寫實(shí)現(xiàn)MP3的各個功能的C語言程序,通過將每個功能的實(shí)現(xiàn)、驗(yàn)證、測試,然后再將每個功能模塊添加進(jìn)去,整體實(shí)現(xiàn)MP3的每個功能。3.3 可行性分析隨著科技的進(jìn)步我們生活中數(shù)碼產(chǎn)品的比重在不斷的上升,同時產(chǎn)品的質(zhì)量上也有了很大地提高。多媒體技術(shù)正在飛快的、以意想不到的方式進(jìn)入人們生活的方方面面,如今趨勢是生活的各個方面
30、都向著當(dāng)今新的科技技術(shù)綜合的方向靠攏。而這些大致可以歸為兩大類:視頻,音頻。但是如今多媒體的存貯格式越來越繁雜,主流的多媒體格式就有十幾種,他們音質(zhì)畫質(zhì)參差不齊,便攜式設(shè)備上可用的播放器較PC上的完美應(yīng)用還有不小的差距。這就顯現(xiàn)出本課題的研究價值,具有較好的發(fā)展前景和契機(jī)。28第四章 系統(tǒng)軟件開發(fā)4.1 功能實(shí)現(xiàn)流程圖 如圖4-1為功能實(shí)現(xiàn)流程圖:獲取當(dāng)前歌曲列表中選歌沒有歌曲信息有歌曲信息是否同一首歌暫停/停止同一首歌停止當(dāng)前歌曲獲取新歌曲信息,當(dāng)前歌曲所有信息初始化記錄當(dāng)前歌曲信息殺死當(dāng)前歌曲進(jìn)程創(chuàng)建進(jìn)程,在子進(jìn)程中調(diào)用madplay處理歌曲信息音箱發(fā)聲不同圖4-14.2 播放器軟件實(shí)現(xiàn)本
31、人的系統(tǒng)使用QT界面編程制作人機(jī)交互界面,使用代碼完全開源的madplay解碼器對MP3文件進(jìn)行軟件解碼,MP3音樂播放器的主要功能有,播放、暫停、上一曲、下一曲、快進(jìn)、快退、顯示播放時間、添加刪除歌曲等功能,接下來對其中一些重要功能做詳細(xì)講解。4.2.1 播放與暫停功能的實(shí)現(xiàn) 在QT中的QPushButton按鈕類的槽函數(shù)調(diào)用Madplay解碼器進(jìn)行歌曲的播放,播放指令為路徑名加madplay,實(shí)現(xiàn)播放功能。connect(play_button, SIGNAL(clicked(), this, SLOT(play_music(); 暫停功能也同樣是調(diào)用Madplay指令Madplay -s
32、top將歌曲暫停。connect(stop_button, SIGNAL(clicked(), this, SLOT(stop_music();/創(chuàng)建子進(jìn)程來播放歌曲 int pid = fork(); if (pid = 0) /調(diào)用madplay解碼器播放歌曲 /&代表后臺運(yùn)行 change_volume(50); execl(/bin/madplay,./madplay, play_name.toLocal8Bit().data(),&, NULL); exit(0); printf(int grandparentn); status_label-setText(播放); /更新狀態(tài) t
33、itle_label-setText(play_name.section(/, -1); /顯示歌曲名 time_accept(); /開始計時 if (process) /暫停 printf(stopn); system(killall -stop madplay &); /將時間信號斷開實(shí)現(xiàn)時間暫停 disconnect(timer, SIGNAL(timeout(), this, SLOT(time_begin(); process = !process; sign = true; 4.2.2 上下曲功能的實(shí)現(xiàn) 再添加歌曲的時候同時建立一個索引表,將歌曲名標(biāo)號,當(dāng)想實(shí)現(xiàn)上一曲下一曲功能時
34、,索引表的值自動加一或者減一就可以找到上一曲或者下一曲歌曲,然后播放歌曲,這樣就實(shí)現(xiàn)了上一曲下一曲的功能。上一曲:connect(PREV, SIGNAL(clicked(), this, SLOT(left_song();下一曲:connect(ExitMusic, SIGNAL(clicked(), this, SLOT(right_song();/上下曲功能void Mp3:right_song() printf(right_song testn); for(loop = 0; loop mic_list.count(); loop+) printf(loop = %dn, loop);
35、 if (play_name = list_widget-mic_list.at(loop) & (loop != list_widget-mic_list.count() - 1) stop_music(); play_name = list_widget-mic_list.at(loop + 1); get_timer = get_time(play_name.toLocal8Bit().data(); printf(play_namen ); int pid = fork(); if (pid = 0) execl(/bin/madplay, madplay,play_name.toLo
36、cal8Bit().data(),&,NULL); status_label-setText(播放); /更新狀態(tài) title_label-setText(play_name.section(/, -1); /顯示歌曲名 time_accept(); /開始計時 break; 4.2.3 音量調(diào)節(jié)功能的實(shí)現(xiàn) 通過打開聲卡設(shè)備通過ioctl函數(shù)控制mixer變量,為變量賦值從而實(shí)現(xiàn)音量調(diào)節(jié)共能。ioctl函數(shù)為ioctl(mixer, MIXER_WRITE(0), &arg);/調(diào)音量void Mp3:change_volume(int j) arg = j; FILE *mixer_fd;
37、int mixer; /打開聲卡設(shè)備文件 mixer_fd = fopen(/dev/mixer, r); if (mixer_fd show(); return app.exec();*2.主窗口界面布局(mainwindow.cpp)#include mainwindow.hMainWindow:MainWindow(QWidget *parent):QWidget(parent) setMaximumSize(328,184); setMinimumSize(328,184); /添加背景 setAutoFillBackground(true); QPalette palette = t
38、his-palette(); Palette.setBrush(QPalette:Window,QBrush(QPixmap(./image2/345.png).scaled(this-size(),Qt:IgnoreAspectRatio,Qt:SmoothTransformation); setPalette(palette); /構(gòu)建列表 list_widget = new PlayList; /label上添加圖片 picture_label = new QLabel; picture_label-setPixmap(QPixmap(./image2/asd.png); status_
39、label = new QLabel(狀態(tài):); title_label = new QLabel(標(biāo)題:); volume_label = new QLabel(音量:); volume_slider = new QSlider(Qt:Horizontal); volume_slider-setRange(0, 200); volume_slider-setValue(50); stop_button = new QPushButton(停止); stop_button-setFlat(true); / Stop_button-setStyleSheet(QPushButtonborder-
40、radius:5px;border-width:0px); PREV = new QPushButton(上一曲); PREV-setFlat(true); ExitMusic = new QPushButton(下一曲); ExitMusic-setFlat(true); play_button = new QPushButton(播放/暫停); play_button-setFlat(true); listing = new QPushButton(列表); listing-setFlat(true); lcd_number = new QLCDNumber; lcd_number-dis
41、play(00:00); lcd_number -setSegmentStyle(QLCDNumber:Flat); QTimer *timer = new QTimer; QSpacerItem *Vspacer = new QSpacerItem(20, 40, QSizePolicy:Minimum,QSizePolicy:Expanding); /布局 QHBoxLayout *layout_h1 = new QHBoxLayout; layout_h1-addWidget(volume_label); layout_h1-addWidget(volume_slider); QVBox
42、Layout *layout_v1 = new QVBoxLayout; layout_v1-addWidget(status_label); layout_v1-addWidget(title_label); layout_v1-addWidget(lcd_number); layout_v1-addItem(Vspacer); layout_v1-addLayout(layout_h1); QHBoxLayout *layout_h2 = new QHBoxLayout; layout_h2-addWidget(picture_label); layout_h2-addLayout(lay
43、out_v1); QHBoxLayout *layout_button = new QHBoxLayout; layout_button-addWidget(stop_button); layout_button-addWidget(PREV); layout_button-addWidget(play_button); layout_button-addWidget(ExitMusic); layout_button-addWidget(listing); QVBoxLayout *main_layout = new QVBoxLayout; main_layout-addLayout(la
44、yout_h2); main_layout-addLayout(layout_button); setLayout(main_layout); connect(listing, SIGNAL(clicked(), this, SLOT(show_list();void MainWindow:show_list() list_widget-show();*3.Mp3具體功能實(shí)現(xiàn)函數(shù)(mp3.cpp)#include mp3.hint i;static bool p_s = true; /控制播放/暫停static bool process = false; /static bool sign =
45、 false; /控制信號的發(fā)送static int arg; /控制音int sta;int loop;int time_test = 0;int get_timer;Mp3:Mp3() status = true; /播放/暫停 connect(play_button, SIGNAL(clicked(), this, SLOT(play_music(); /停止 connect(stop_button, SIGNAL(clicked(), this, SLOT(stop_music(); /調(diào)音量 connect(volume_slider, SIGNAL(valueChanged(int), this, SLOT(change_volume(int); /下一曲 connect(ExitMusic, SIGNAL(clicked(), this, SLOT(right_song(); /上一曲
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 實(shí)訓(xùn)合同范本
- 2025至2030年中國獼猴桃糕數(shù)據(jù)監(jiān)測研究報告
- 書店招標(biāo)合同范本
- 外債借款合同展期合同范本
- 環(huán)保材料在商業(yè)地產(chǎn)開發(fā)中的應(yīng)用與挑戰(zhàn)
- 科技引領(lǐng)下的安全工作模式創(chuàng)新研究
- 科技產(chǎn)品外觀設(shè)計的美學(xué)原則與實(shí)踐
- 合租室友溝通協(xié)議
- 2025至2030年中國水晶球膠塞數(shù)據(jù)監(jiān)測研究報告
- 2024年中國電信福建公司招聘考試真題
- 新版FMEA控制程序-第五版FMEA
- 過敏性休克完整版本
- 剪叉式升降平臺結(jié)構(gòu)設(shè)計
- 安慶大學(xué)科技園建設(shè)實(shí)施方案
- 中智集團(tuán)招聘筆試題庫2024
- 三晉卓越聯(lián)盟·山西省2024-2025學(xué)年度高三9月質(zhì)量檢測+語文試卷
- 《那一刻我長大了》習(xí)作課件
- 教科版小學(xué)科學(xué)六年級上冊期末考試試卷(含答案)
- 父母買房在子女名下協(xié)議書范本
- DBJ15 31-2016建筑地基基礎(chǔ)設(shè)計規(guī)范(廣東省標(biāo)準(zhǔn))
- 高危新生兒管理專家共識解讀
評論
0/150
提交評論