找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20788|回復(fù): 26
打印 上一主題 下一主題
收起左側(cè)

51單片機DIY的MP3

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140725 發(fā)表于 2016-10-12 12:56 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式




做這個mp3前后有很長時間了,總體感覺不是很難,當(dāng)然收獲也是不小的,對51單片機有了更深入的了解,在這個學(xué)習(xí)的過程中碰到了很到的問題,譬如單片機的內(nèi)存,單片機的通信速度以及程序的優(yōu)化等。剛開始做這個項目的時候發(fā)現(xiàn)RAM總是不夠用,以至于每次寫程序都得小心翼翼,最后通過學(xué)習(xí)對程序經(jīng)行的大量優(yōu)化,使得RAM不再捉襟見肘,對程序的效率以及內(nèi)存的分配和速度有了深刻的認(rèn)識。這個mp3項目最重要的一點是單片機與VS1003的通信速度,如果你對單片機不熟悉的話,最后可能你會發(fā)現(xiàn)播放的歌曲根本就無法播放 ,聽到的歌曲一點都不流暢,由于51單片機沒有硬件spi,需要單片機模擬spi總線,這就需要模擬的spi總線是否高效,在這個項目中采用了匯編來模擬spi,通過混編的方式來組織程序,F(xiàn)在對于320kps的mp3歌曲都能流暢的播放。U盤的是通過ch375來實現(xiàn)與單片機的通信的,vs1003和ch375的驅(qū)動程序是自己對著數(shù)據(jù)手冊的時序圖一點一點寫出來的,感覺這樣才來的實在,打好基本功是關(guān)鍵。最后花了半個星期才搞定。碰到的問題也很多。記憶最深刻的就是總線的問題,把位選信號CS和A0放在P2口的低兩位,可能在平常不會出現(xiàn)錯誤,但是在ch375的驅(qū)動中外部數(shù)據(jù)儲存器使用超過了512byte,那么就會對P2.0有影響。致使時序錯誤,最后花了很大的力氣才解決。感受頗深啊!總線是51單片機的精華,只有理解了單片機總線才能算的上熟悉51單片機。記得上次到東莞找工作,應(yīng)聘了一個測試工程師的職位,筆試考的單片機的知識很基礎(chǔ),譬如對單片機引腳ALE,PSEN,EA的理解和應(yīng)用。但是我相信對于看了這篇文字的人不看書不一定都能答得出來,這就是考基本功,如果你沒有理解熟悉總線的時序,不熟悉單片機的儲存器,是答不出來的。
  完成了VS1003和ch375的驅(qū)動,配合winhex軟件找到音頻文件的起始扇區(qū)就能夠播放歌曲,STC單片機有倍速的功能,可以提高單片機一倍的速度,這個功能不知道大家知道波!在STC-ISP燒錄軟件中可以配置。記得由“12/單倍速”到“6T/雙倍速”轉(zhuǎn)換的時候需要下載兩次。下載一次是不會改變的。
  聽到歌曲了就要開始搞文件系統(tǒng)了,在mp3項目中其實最難得是文件系統(tǒng)以及液晶顯示部分,這個DIYMP3完全支持長文件名,在液晶屏lcd12864上顯示最多39字符的文件名。學(xué)習(xí)文件系統(tǒng)最好的資料我覺得是《fat文件系統(tǒng)原理》這個資料了!論壇里可以下載。我花了一天的時間通過這份資料用winhex看U盤里的重要數(shù)據(jù),基本上了解了文件系統(tǒng)的結(jié)構(gòu)和存儲方式。最后通過串口調(diào)試助手寫程序讀取文件的一些重要數(shù)據(jù),以及和胡水濤的交流,很快的理解了文件系統(tǒng)。如果有人需要學(xué)習(xí)文件系統(tǒng)我覺得可以借鑒這個方法,完成了文件的初始化后,就可以讀取音頻文件,通過液晶顯示短文件名了。短文件名采用的是“8+3”的形式存儲的。文件名超過8byte就會截斷,看起來很不爽,所以搞定長文件名很有必要。
  這個就涉及到文件名的存儲形式和gbk碼與unicode的轉(zhuǎn)換。我總共花了2天時間解決,當(dāng)然串口調(diào)試時必不可少的工具。需要通過觀察從U盤文件讀取的數(shù)據(jù)發(fā)現(xiàn)和糾正程序的錯誤。充分利用好串口調(diào)試工具是解決問題的關(guān)鍵。
  完成文件了系統(tǒng)相當(dāng)于成功的一大半。接下來就只需要完成菜單的編寫了。我做的DIYMP3只寫了一個菜單界面,沒有目錄顯示及其他復(fù)雜功能。屏太小了不好搞,而且對菜單編程不是很熟悉。打算開學(xué)了買個彩屏回來搞一下,現(xiàn)在的功能是能夠順序播放,音量調(diào)節(jié)和上一曲.下一曲的切換.網(wǎng)上看到有人用stm32和彩屏做的畢業(yè)設(shè)計mp3很強悍,有點心動,也打算買個開發(fā)板學(xué)習(xí)哈!
  用到的模塊:STC89C58RD+(mini51),CH35模塊,vs1003模塊,LCD12864,按鍵。
  系統(tǒng)占用的內(nèi)存:Program Size: data=86.1 xdata=691 code=9899
  
  流暢播放的碼率:320kbps


ch375測試程序: ch375.rar (65.42 KB, 下載次數(shù): 59)
vs1003測試程序: vs1003.rar (22.51 KB, 下載次數(shù): 51)
完整版: MP3_V2.rar (251.14 KB, 下載次數(shù): 113)
能夠顯示短文件名: MP3_V2_1.rar (222.13 KB, 下載次數(shù): 62)

CH375資料.rar (1.01 MB, 下載次數(shù): 51)

vs1003原理圖.rar (80.24 KB, 下載次數(shù): 73)

驅(qū)動你的vs1003.pdf (314.72 KB, 下載次數(shù): 79)


評分

參與人數(shù) 2黑幣 +10 收起 理由
huyin + 5 贊一個!
zhaok2013 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏15 分享淘帖 頂2 踩1
回復(fù)

使用道具 舉報

沙發(fā)
ID:142685 發(fā)表于 2016-10-14 10:20 來自手機 | 只看該作者
支持。樓主很厲害,向你學(xué)習(xí)
回復(fù)

使用道具 舉報

板凳
ID:148523 發(fā)表于 2016-11-17 22:14 | 只看該作者
很好,good
回復(fù)

使用道具 舉報

地板
ID:148494 發(fā)表于 2016-11-18 16:16 | 只看該作者
向樓主學(xué)習(xí),樓主有扣扣嗎?我初學(xué)者想通過這個項目來提高自己,不會的可以問您請教嗎?
回復(fù)

使用道具 舉報

5#
ID:154115 發(fā)表于 2016-12-12 14:36 | 只看該作者
支持。樓主很厲害,向你學(xué)習(xí)
回復(fù)

使用道具 舉報

6#
ID:164285 發(fā)表于 2017-2-19 18:40 | 只看該作者
好好學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

7#
ID:155785 發(fā)表于 2017-2-20 22:22 | 只看該作者
樓主有原理圖沒,想照著做一個
回復(fù)

使用道具 舉報

8#
ID:165645 發(fā)表于 2017-2-20 23:12 | 只看該作者
向樓主學(xué)習(xí)
回復(fù)

使用道具 舉報

9#
ID:165645 發(fā)表于 2017-2-20 23:13 | 只看該作者
支持樓主,值得參考
回復(fù)

使用道具 舉報

10#
ID:165645 發(fā)表于 2017-2-20 23:14 | 只看該作者
樓主有圖沒,想練習(xí)做一個
回復(fù)

使用道具 舉報

11#
ID:193526 發(fā)表于 2017-4-26 11:19 | 只看該作者
樓主,你好,看了你這篇制作MP3播放器的文章,感覺你在單片機方面實在太厲害了,所有的外圍硬件與控制器的連接都是與總線方式連接通訊。
回復(fù)

使用道具 舉報

12#
ID:193526 發(fā)表于 2017-4-26 11:26 | 只看該作者
請問樓主有CH375和單片機的總線方式電路圖嗎,略看了附件中的相關(guān)程序,對外部數(shù)據(jù)存儲器的編址不是很清楚,還請樓主麻煩能發(fā)下引腳連接圖波,解釋下也行,感激不盡C:\Users\Administrator\Desktop
回復(fù)

使用道具 舉報

13#
ID:194847 發(fā)表于 2017-5-25 23:47 | 只看該作者
 支持。樓主很厲害,向你學(xué)習(xí)
回復(fù)

使用道具 舉報

14#
ID:230667 發(fā)表于 2017-9-12 17:53 | 只看該作者
哇,我正好也行學(xué)做個這個
回復(fù)

使用道具 舉報

15#
ID:146874 發(fā)表于 2017-9-18 11:47 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

16#
ID:249545 發(fā)表于 2017-11-24 17:00 | 只看該作者
10多年前,我買了書,要DIY MP3播放器,現(xiàn)在生活壓力大就停歇啦,都沒整成.
回復(fù)

使用道具 舉報

17#
ID:251133 發(fā)表于 2018-1-9 22:15 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

18#
ID:272874 發(fā)表于 2018-1-30 10:05 | 只看該作者
樓主威武  先馬了以后看啊
回復(fù)

使用道具 舉報

19#
ID:250302 發(fā)表于 2018-1-31 09:15 | 只看該作者
學(xué)習(xí)一下。。。。。。。。。。。
回復(fù)

使用道具 舉報

20#
ID:392177 發(fā)表于 2018-8-31 23:48 | 只看該作者
樓主可以把程序代碼還有原理圖發(fā)我一份嗎,QQ2096165865@qq.com,謝謝
回復(fù)

使用道具 舉報

21#
ID:421636 發(fā)表于 2019-2-28 09:12 | 只看該作者
樓主厲害,謝謝分享
回復(fù)

使用道具 舉報

22#
ID:480636 發(fā)表于 2019-2-28 13:04 | 只看該作者
樓主厲害了
回復(fù)

使用道具 舉報

23#
ID:481555 發(fā)表于 2019-3-1 19:57 | 只看該作者
想問問樓主,您這個驅(qū)動方面的知識是在哪學(xué)的,我想學(xué)驅(qū)動方面的東西,一直沒頭緒
回復(fù)

使用道具 舉報

24#
ID:481555 發(fā)表于 2019-3-1 20:01 | 只看該作者
樓主我有個戰(zhàn)艦V3開發(fā)板,stm32的,去年初買的,我馬上畢業(yè)了,用不到了,要不你收了?
回復(fù)

使用道具 舉報

25#
ID:510342 發(fā)表于 2019-4-12 12:27 | 只看該作者
支持一下,頂頂頂
回復(fù)

使用道具 舉報

26#
ID:626855 發(fā)表于 2019-10-20 03:50 來自手機 | 只看該作者
太厲害了
回復(fù)

使用道具 舉報

27#
ID:277420 發(fā)表于 2021-7-6 17:19 | 只看該作者

電子愛好
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表