久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 56791|回復: 156
收起左側

2051單片機+SD卡+3310LCD=音樂播放器(附全套制作資料)

  [復制鏈接]
ID:51654 發表于 2013-7-10 01:56 | 顯示全部樓層 |閱讀模式
本帖最后由 zhu123 于 2013-7-11 07:24 編輯

   本作品是參考了51hei論壇上幾位強人的帖子才完工,把他們的程序給整合了了一下為我所有呵呵,這個小玩意,采用 ATMEL 的傳統51MCU作主控制芯片,加上SD卡和顯示屏,就可以作簡單的音樂播放器了,雖然音質不怎么樣,不過作為DIY還是蠻有樂趣,希望大家喜歡。
沒有采用FAT文件系統,只是按扇區讀取SD卡,由于2051資源有限,改為4051有望可以操作FAT,但目前程序還在不斷完善中。
128byte怎樣讀取512byte的扇區數據?可以采用邊讀邊播放的方式,就能解決。音樂文件是32KHz取樣率的WAV文件,所以和HIFI就沾不上邊了。
程序是用C來編寫,以方便交流,資料整理中,完善后再上傳。
1.JPG 2.JPG 3.JPG 4.JPG 5.PNG


還是有就視頻文件,順便聽聽音質。

無法在線觀看的話點擊此處下載視頻:http://www.zg4o1577.cn/f/bofangqi.avi


  下面是測試用的HEX文件,由于部分顯示數據在SD卡中,所以SD卡需要存入一個特別的文件,然后把格式為32KHZ,8bit,單聲的WAV文件存入即可。
點擊此處下載: sdka.rar (2.45 KB, 下載次數: 553)

評分

參與人數 7威望 +11 黑幣 +41 收起 理由
穿著安踏去拉薩 + 7 這設計很給力
onefrog + 5 贊一個!
absflash + 11 很給力!
liunk + 5 + 5
qzsulin + 1 + 1 很給力!
admin + 10 贊一個!
wangyin + 5 + 2 很給力!

查看全部評分

回復

使用道具 舉報

ID:51024 發表于 2013-7-10 08:25 | 顯示全部樓層
這確實很強悍,希望能解釋一下電路
回復

使用道具 舉報

ID:51654 發表于 2013-7-10 08:33 | 顯示全部樓層
wangyin 發表于 2013-7-10 08:25
這確實很強悍,希望能解釋一下電路

R1、C1 組成LCD的上電復位電路。
R2~R4是上拉電阻,雖然2051的IO有內部的弱上拉,但這三個IO是LCD接口與鍵盤接口復用,需要上拉強一點。
R5、R6、Q1組成OC輸出的反相器,當SCE為高電平時,三極管導通,鍵盤使能,LCD通信中止;當SCE為低電平時,LCD通信使能,鍵盤斷開。需要注意的是圖中左右兩鍵沒加隔離二極管,不要同時按下,否則引起顯示錯亂。
R2~R6的參數不要大幅度改動,這些參數是經過計算得到一個比較合適的值。
晶振、C3、C5沒什么好說,這些都單片機系統必需的。
R7、R8是P1.0和P1.1的上拉電阻,因為這兩個口是開漏輸出。
R9~R24組成R2R型DAC,選取50K/100K是因為2051輸出高電平的帶載能力差,電阻太小將導致DAC線性變差。這里的電阻最好用1%的金屬膜電阻,以改善DAC的線性度。50K電阻是非標電阻,這里用51K和2.7M電阻并聯代替。
C6是高頻濾波電容,以減少DAC輸出的高頻噪聲。
C7是輸出耦合電容,連接LINE OUT輸出端子,輸出阻抗較高,50K,只能接功放機或有源音箱。如果接耳機,需加一級放大,可以用運放做跟隨器,或用TDA2822功放IC,能帶個小嗽叭。
回復

使用道具 舉報

ID:51663 發表于 2013-7-10 08:35 | 顯示全部樓層
//由于部分顯示數據在sd卡中,所以sd卡需要存入一個特別的文件//
那個是特別文件還不明白你的意思
回復

使用道具 舉報

ID:51654 發表于 2013-7-10 08:48 | 顯示全部樓層
longdi 發表于 2013-7-10 08:35
//由于部分顯示數據在sd卡中,所以sd卡需要存入一個特別的文件//
那個是特別文件還不明白你的意思

是一個存放歌曲名稱、歌手名稱、歌曲首址和長度的文件,2051只有2K ROM,不可能把整個中文字庫存進ROM內,只能存在SD卡中,以圖片形式存貯,需要時讀入。哪位能用VB或VC做一個轉換工具自動生成一個playlist.dat就方便了。
回復

使用道具 舉報

ID:51663 發表于 2013-7-10 08:49 | 顯示全部樓層
請問,老大,你這個屏多少錢買的啊???
回復

使用道具 舉報

ID:51654 發表于 2013-7-10 08:50 | 顯示全部樓層
longdi 發表于 2013-7-10 08:49
請問,老大,你這個屏多少錢買的啊???

這是舊手機上拆的,淘寶大約10元以下。
回復

使用道具 舉報

ID:51024 發表于 2013-7-10 08:50 | 顯示全部樓層
樓主,我想問一下你之前說的用電源線驅動595然后帶3個數碼管。
我現在已經知道如何用單線驅動595,然后用QH腳驅動三極管控制2個數碼管,再用595的QH'腳控制第3個數碼管(剛焊電路,還沒驗證,但原理是這樣的吧?)。
我想知道的是如何把這些信號加到電源上,謝謝了。
還有,我現在是3個數碼管,2個按鍵,能用1個IO實現嗎?我用2個可以,1個想不出來。
回復

使用道具 舉報

ID:37685 發表于 2013-7-11 07:04 | 顯示全部樓層
本帖最后由 a119 于 2013-7-11 07:46 編輯

樓主,用你提供的SD卡內示范文件也是一樣,就是一開始時出現了一秒鐘一約而過的雜音,
顯示的時間在走。郁悶啊我搭了整天的電路白搞了
回復

使用道具 舉報

ID:51654 發表于 2013-7-11 07:25 | 顯示全部樓層
a119 發表于 2013-7-11 07:04
樓主,用你提供的SD卡內示范文件也是一樣,就是一開始時出現了一秒鐘一約而過的雜音,
顯示的時間在走。

能走時能顯示畫面說明基本上訪問文件OK了,是不是沒接功放機?或功放輸入阻抗不夠高?由于DAC后沒放大,因而輸出信號很微弱。
可以連接到電腦的LINE IN輸入端,用聲卡放音。
回復

使用道具 舉報

ID:37685 發表于 2013-7-11 07:46 | 顯示全部樓層
已接了功放,情況如下:
SD卡是FAT32,將《SD卡內示范文件》全持拷入SD卡中,接上功放,打開播放器,可以顯示“255.BMP”畫面,按下播放鍵后,顯示“001.BMP”-----001,絕戀,的畫面,在此開始一刻發出“坑--坑”二聲,頻普有顯示起伏,不到一秒,之后就沒有聲音,頻普也靜止了,只是時間地走,9秒后轉入第二首時,進入“002.BMP”----002-陳慧嫻 - 逝去的諾言  畫面,頻普不動,時間在走,沒有聲音,進入第三首“003-張宇 - 用心良苦”時一樣,畫面仍能正常顯示,時間也在走動,開始一刻發出“坑--坑”二聲,頻普有顯示起伏,不到一秒,之后就有持續的“沙沙”聲,頻普也有起伏,直到歌曲結束。“沙沙”聲也停止。
DAC電路嚴格按照一樓的電路。
回復

使用道具 舉報

ID:51654 發表于 2013-7-11 07:59 | 顯示全部樓層
按照你說的情況,很有可能是訪問文件分區表時,鏈表計算出差錯了,只有第一個簇地址計算正確。我檢查了程序,沒發現計算有什么問題。不我知道你的SD卡實際情況,如果你有WINHEX這個軟件,可以打開SD卡的盤符查看其詳細內容,對比著程序進行檢查。
回復

使用道具 舉報

ID:37685 發表于 2013-7-11 08:09 | 顯示全部樓層
樓主,可能就是你說這個原因吧,我測試用的是2G的SD卡,我換用了另外一張512M的TF卡,同樣是你那測試文件,效果卻不一樣,不過仍然放不出聲音,只是三首歌都有“沙沙”聲出現,再者就是我用2G的TF卡測試,先法讀取TF卡,只顯示“E1”的錯誤代碼,看你的程序應該是初始化失敗吧,不過我對FAT32未看懂,所以無從下手,希望樓主多換幾張卡試下
回復

使用道具 舉報

ID:51024 發表于 2013-7-11 08:11 | 顯示全部樓層

LZ真的很強啊 上一個匯編寫的VGA方塊游戲 我已經搭出來了 并且小改一下 加了 紅 黃 綠 黑 白 全屏測試圖 一直懶得發帖
我自己也用洞洞板 C編程 做了個FM收音機 也懶得發帖...LZ強人 膜拜
不知道 LZ能不能用 攝像頭 + 51 + SD 做出超輕錄像裝置?可以用在航模航拍上
回復

使用道具 舉報

ID:51654 發表于 2013-7-11 09:31 | 顯示全部樓層
本帖最后由 zhu123 于 2013-7-11 09:33 編輯

回復a119:
我找來了一些SD卡測試,分別測試了 128M 3張,256M 張,512M 1張,1G 1張,4G 1張,8G 1張,16G 2張。
其中 1G 以下的都能正常放音;
1G 的一張出現 E1 錯誤代碼,原因未明;
1G 以上的都是 SDHC,由于程序尚未支持,均顯示 E1。

按照你測試512M情況,有沙沙聲,能正確走時,能顯示畫面,很可能已是正常放音狀態,仔細檢測一下硬件,DAC電阻網絡是否有錯,阻值是否正確,音頻輸出是否與其它控制線短路。

不知道你下載程序后有沒有重新編譯?償試重新下載,不要編譯,直接燒錄 SD_player.hex 試試。
由于不同版本編譯器,不同的優化級別,可能產生大于2K代碼,大于2051的容量,可能會導致程序跑飛。
回復

使用道具 舉報

ID:37685 發表于 2013-7-11 09:34 | 顯示全部樓層
終于搞定了 爽啊 謝謝樓主熱心回復我這種菜鳥.
回復

使用道具 舉報

ID:2318 發表于 2013-7-11 10:45 | 顯示全部樓層
樓主:


與你討論一個問題:你的播放器應該是播放8位精度的WAV吧。


現在PC上的音樂一般都是16位精度的,使用商業軟件將16位的數字音頻轉換成8位精度后,效果都不是太好,主要是轉換成8位后,有比較大的背靜噪聲,大大影響播放的質量(這個已經不是播放器本身的問題了,各位可以直接在PC上做測試)。


圖1:16bit提示音的WAVE波形圖
1.JPG



圖2:轉換成8BIT的WAVE圖,可以看出,在16BIT圖中前面靜音部分,轉換成8位后變粗了,產生了噪聲
2.JPG



下面是這2個WAV文件,各位可以下載測試。
提示音8bit.rar (38.51 KB, 下載次數: 32)
回復

使用道具 舉報

ID:51654 發表于 2013-7-11 11:46 | 顯示全部樓層
你好,對于你所提及的問題,在我轉換過的聲音文件中也有同樣體現。究其原因,主要是8BIT取樣深度不夠,聲音電平在接近零點時,由于隨機噪聲的影響,導致取樣值在0x80,0x79,0x81這間變化,以產生噪聲。我認為這種噪聲一直都存在,只是其它聲音較大時掩蔽了而矣。
    解決方法,可參考類似杜比動態降噪技術,作這樣的處理:檢測當前聲音幅度,如果在持續的一段時間內(比如0.2秒)聲音幅度小于一定值(比如0x80 正負1),那么都過濾為0x80,即可解決此問題。
    我記得有些音頻處理軟件可以進行這種變換,我回去找找。即使沒有,編個小程序轉一下也不難。
回復

使用道具 舉報

ID:51654 發表于 2013-7-11 11:46 | 顯示全部樓層

聽過你所提供的8BIT聲音樣本,發現其噪聲很大,估計所用的商業軟件在轉換算法上有問題。我用WINDOWS XP附件自帶的錄音機,打開原始16BIT聲音文件,然后另存為44KHz 8BIT,效果也比你的好得多。
回復

使用道具 舉報

ID:2318 發表于 2013-7-11 12:02 | 顯示全部樓層
謝謝!

我使用過幾個商業軟件,如上圖中的AUDITION、天天靜聽等,都是如此。自己寫了一個轉換程序,就是直接簡單的采用除256的方法,直接把16位降成8位,這樣處理后,靜音部分可以完全轉換為靜音,而且總的噪聲比這些商業軟件小了許多(-3db左右),但是還有,還是可以比較清晰的聽到,尤其是當調節音量輸出比較大的時候。

我會試一下WINDOWNS的附件,聽聽效果。

現在手頭的項目,需要語音提示。考慮到存儲容量,使用8K、8位的WAV數據,應該可以達到電話的語音質量,對于一般應用夠了。其它都可以,成本也不高,就是轉換數據本聲的噪聲。想找一種簡單的處理辦法。

后面我還會繼續提供一些我使用過的處理辦法。

另外是否其它的朋友有這方面的經驗,軟件或算法,只要提供一個思路就可以了,先表示感謝。
回復

使用道具 舉報

ID:1 發表于 2013-7-11 12:10 | 顯示全部樓層
點擊此處下載:http://www.zg4o1577.cn/f/goldwave v5.23.rar 漢化版
用這個轉換成8Bit單聲道PCM文件,效果很好。16Bit轉8Bit不會改變采樣頻率,故需先轉成32KHz的其它格式再轉成PCM
回復

使用道具 舉報

ID:1 發表于 2013-7-11 12:12 | 顯示全部樓層
hkccd:我提個建議吧。我做過類似的項目,是用PWM直接接一功放驅動喇叭。沒有加低通濾波,當使用20K以下的采樣頻率WAV文件時有嘯聲,使用20K以上時人就聽不到了。這里應該是由PWM的高低電平跳動引起的,使用DA應該沒有類似問題。
所以我就沒有采用8K的采樣,而是使用24K采樣,8:2的ADPCM編碼方式。對比下文件大小:8KHz 8Bit的PCM格式64Kbps, 24KHz 8Bit ADPCM為 24*8/4 = 48Kbps,只有8K的3/4大小。而音質上壓縮的肯定比降低采樣頻率更好一些。
這里也有一個小問題,我使用這個軟件編8:4 ADPCM再解碼時有很大噪音,這里是因為其碼表可能與我用的不同。網上8bit的ADPCM基本上沒有,我是將16位的改成8位的,所以碼表是可能不同。我的解決辦法是自己編碼再自己解碼,8:2也能達到較好的效果,聽歌尚可,語音更不用說,用DA的話效果肯定更好,而加濾波的話有些音色會變。
回復

使用道具 舉報

ID:1 發表于 2013-7-11 13:13 | 顯示全部樓層
播放BUF和讀取BUF我是分開的,開辟了兩個數據區A,B,這樣就不用讀一個播放一個。播放完BUF_A再播放BUF_B,同時BUF_A從FLASH中讀取相應數據,依此循環。
回復

使用道具 舉報

ID:2318 發表于 2013-7-11 14:14 | 顯示全部樓層
謝謝您了,我會用你建議的goldwave v5.23.rar試一下的。

壓縮編碼的方式我知道,做過圖象的壓縮,JPEG,H26x等。在這個項目上,不想使用這么復雜的東西。我設計是提供一個DS卡,和規定的文件名,然后給的PC程序給用戶。用戶自己需要什么語音自己在PC上做,然后轉換成8位的,考入SD卡就可以了。

另外,系統使用8位MCU,時鐘也就10M左右,還要做其它的事情,ADPCM解碼,還是不做的好。

另外,你的解釋是不對的。我提供的兩個文件與系統播放無關,就是在PC上轉換,然后在PC上播放,采樣率為44.1k。僅用PC轉換,在PC播放,沙沙的噪聲非常明顯。與什么PWM沒有關系。
回復

使用道具 舉報

ID:1 發表于 2013-7-11 15:37 | 顯示全部樓層
嗯,我所說的是針對用單片機PWM來驅動喇叭的,而你所說的沙沙樓主說的很對
回復

使用道具 舉報

ID:2318 發表于 2013-7-11 15:51 | 顯示全部樓層
本帖最后由 hkccd 于 2013-7-11 15:53 編輯

網上有個軟件,叫WAVclean。

用它可以把8BIT帶沙沙聲的WAVE轉換成無沙沙聲的WAVE,但是又回到16bit了,但是,的確沙沙聲沒有了(其它軟件將8BIT沙沙的WAV轉換成16bit,沙沙聲是去不掉的)。

但用它轉換成8BIT的,不管原來是16位的,還是8位的,都沒有用,沙沙聲仍然存在。
所以我就沒有采用8K的采樣,而是使用24K采樣,8:2的ADPCM編碼方式。對比下文件大小:8KHz 8Bit的PCM格式64Kbps, 24KHz 8Bit ADPCM為 24*8/4 = 48Kbps,只有8K的3/4大小。而音質上壓縮的肯定比降低采樣頻率更好一些。
這里也有一個小問題,我使用這個軟件編8:4 ADPCM再解碼時有很大噪音,這里是因為其碼表可能與我用的不同。網上8bit的ADPCM基本上沒有,我是將16位的改成8位的,所以碼表是可能不同。我的解決辦法是自己編碼再自己解碼,8:2也能達到較好的效果,聽歌尚可,語音更不用說,用DA的話效果肯定更好,而加濾波的話有些音色會變。
--------------------------------------------------------------------------------------
我都是使用44.1K做測試的,所以應該與采樣頻率關系不大了。
WAVE的PCM是最原始的編碼,然后在此基礎上再進行ADPCM壓縮。如果16位PCM轉到8位PCM后,已經有沙沙聲了,ADPCM壓縮好象是去不掉的。不知道你的方法是如何處理的。
回復

使用道具 舉報

ID:51654 發表于 2013-7-11 15:55 | 顯示全部樓層
看來51hei論壇的交流氣氛還是不錯的.
  三個工具軟件轉換后的效果基本一致,都比18樓的效果好,但背景沙沙聲還是有,這可能已是8BIT取樣深度的極限,不是通過降噪軟件可以處理的。
    下面是我對降噪的一些見解,不一定正確,馬老師看看是否能用得上:
    為了提高信噪比,既然噪聲沒法減弱,我們可以采用增強信號的方法,即把原來的聲音放大。我用工具軟件可以檢測到,原始的聲音文件錄電電平只是-5dB左右,還沒有達到最大幅度,因而可以把聲音規格化到0dB后再作8BIT變換,這樣處理可以使轉換后的聲音文件信噪比提高5dB.
    另外,硬件上的低通濾波器也很重要。背景噪聲的頻率絕大部分都是1/2取樣頻率以上,可以通過高階低通濾波器濾除。常規的RC濾波器滾降率太小,一般不能滿足要求,用運放構成的二階濾波器效果較好,適當調節阻容參數,使Q值稍高,可以達到較陡峭的濾波特征,高頻衰減滾降較快。電腦聲卡為了兼容各種不同取樣率的音頻,輸出級的低通濾波器不一定做得很好。
回復

使用道具 舉報

ID:51025 發表于 2013-7-11 17:58 | 顯示全部樓層
小弟不才,
請問樓主
void timer0 (void) interrupt 1 using 1
{
    if (TL0 & 1) _nop_(); //消除中斷響應時間不一致,造成的頻率抖動
    P1  = pbuf[++p & 63]; //輸出一個聲音數據
}

這其中的" & 63"的作用是什么呢?
回復

使用道具 舉報

ID:51654 發表于 2013-7-11 19:02 | 顯示全部樓層
lizi 發表于 2013-7-11 17:58
小弟不才,
請問樓主
void timer0 (void) interrupt 1 using 1

p & 63 是取8位“p”中的低6位,舍棄高2位,由于緩沖區只有64字節,“++p & 63”正好循環指向pbuf[0]至pbuf[63]。
回復

使用道具 舉報

ID:51479 發表于 2013-7-19 12:20 | 顯示全部樓層
樓主,我也在做這個,前一個程序下載進去是只顯示00:00 ||按下播放再按下暫停,聲音也沒有,圖片也沒顯示,要怎么弄呢?示范文件跟你的一樣,要怎么改程序、原理圖?
回復

使用道具 舉報

ID:52972 發表于 2013-8-13 09:05 | 顯示全部樓層
回復

使用道具 舉報

ID:48075 發表于 2013-8-14 04:25 來自手機 | 顯示全部樓層
留名備用。。。。。
回復

使用道具 舉報

ID:51540 發表于 2013-8-21 08:19 | 顯示全部樓層
不錯
回復

使用道具 舉報

ID:53823 發表于 2013-8-31 10:27 | 顯示全部樓層
請問你那個分時間片顯示時間或標志是怎么回事啊?我看你的視頻中,他不是同時顯示的嗎?
回復

使用道具 舉報

ID:55734 發表于 2013-10-9 02:09 | 顯示全部樓層
看看學習學習。。
回復

使用道具 舉報

ID:56209 發表于 2013-10-22 15:49 | 顯示全部樓層
樓主在么?請問我要做一個這種播放器,不要顯示屏,該怎么處理啊?另外你能不能把你的程序改下,發給我,我著急做一個送人,謝謝,請看到了盡快和我聯系,632033558這是我的QQ號碼。
回復

使用道具 舉報

ID:56893 發表于 2013-11-14 20:24 | 顯示全部樓層
想問一句,樓主還在么
回復

使用道具 舉報

ID:33668 發表于 2013-11-20 20:56 | 顯示全部樓層
謝謝樓主分享!!!!!!!!!!!!!
回復

使用道具 舉報

ID:52919 發表于 2013-11-22 15:40 | 顯示全部樓層
頂,學習一下
回復

使用道具 舉報

ID:56523 發表于 2013-11-22 23:02 | 顯示全部樓層
感謝樓主了! 已下載,作個參考資料很不錯的. 請多多提供這方面的東西, 以吸引更多初學無經驗的愛好者們/
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩成人在线观看 | 伊人久久大香线 | 欧美精品久久久 | 亚洲综合资源 | 亚洲精品高清视频 | 欧美久久精品一级c片 | 国外成人免费视频 | 亚洲一区二区三区四区五区中文 | 国产色婷婷精品综合在线播放 | 久久小视频 | 成人一区二区三区在线观看 | 亚洲一区二区三区视频免费观看 | 国产日韩欧美在线播放 | 日日摸日日碰夜夜爽2015电影 | 在线a视频 | 欧美日韩一区在线播放 | 欧美一级免费看 | 另类亚洲视频 | 国产精品区二区三区日本 | 国产一区2区 | a免费在线 | 日韩成人免费视频 | av天天干 | hitomi一区二区三区精品 | 日日骚网 | 精品少妇一区二区三区在线播放 | 亚洲午夜小视频 | 欧美精品一区二区免费 | 欧美lesbianxxxxhd视频社区 | 中文字幕11页 | 国产激情精品一区二区三区 | 国产日产久久高清欧美一区 | 欧美精品99 | 国产成人短视频在线观看 | 涩爱av一区二区三区 | 国产精品成av人在线视午夜片 | 免费视频二区 | 国产视频一区二区 | 国产精品美女视频 | 精品一区二区三区电影 | 精品99在线 |