51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》?

學習過51微控制器的朋友,相信大家對蜂鳴器並不陌生。蜂鳴器分有源蜂鳴器和無源蜂鳴器兩種,無源蜂鳴器可以通過程式碼來設定頻率。在學習的過程中,我們大都需要做蜂鳴器發聲的實驗,這裡呢,我將和大家分享,基於Keil和Proteus模擬,如何使用無源蜂鳴器演奏樂曲——《敢問路在何方》。希望能和大家多多交流,如有什麼不當之處,還望指正。

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

工具/原料

Keil和Proteus軟體

《敢問路在何方》樂譜

第一步:在Proteus中搭建硬體模擬電路

放置微控制器晶片(這裡我選擇的是AT89C52)。在上一講《【Keil+Proteus模擬】51微控制器實現心形流水燈》中我們已經詳細講過,感興趣的話,大家可以在百度搜索它的標題,然後就可以看到。首先在搜尋框中以關鍵字來搜尋,然後再搜尋結果中找到並選中“AT89C52”,接著單擊“OK”按鈕,最後回到繪圖介面中單擊左鍵即可放置微控制器。具體操作如下圖所示:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

放置蜂鳴器。同樣,先在搜尋框中輸入“sounder”來搜素蜂鳴器,再在搜尋結果中選擇SOUNDER,最後放置在繪圖區內合適的地方,具體情況如下圖所示:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

連線線路,將蜂鳴器正確地和微控制器連線起來。這裡我們使用的是P1口的5管腳,具體情況如下圖所示:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

第二步:在Keil中編寫實現程式,採用自頂向下設計

【說明】:在整個專案工程中,我們採用自頂向下的設計方法,先寫PlayMusic()函式,然後再在PlayMusic()函式中呼叫Buzzer(Tone_Beat[tone],Tone_Beat[beat])函式來使蜂鳴器發出不同頻率的聲調,再加上延時時間的控制,自然形成節拍,有了音調和節拍,自然就可以演奏樂曲了。這裡我們使用定時器中斷0來控制節拍,音調則由我們自己編寫的延時函式來控制,通過延時來實現發出不同頻率的音調。

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

建立工程。其中Buzzer_Music.c檔案用於存放關於蜂鳴器的各個功能的子函式,,最後主函式直接呼叫Buzzer_Music.c原始檔中的子函式即可。具體操作如下圖所示:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

在Buzzer_Music.c檔案中編寫PlayMusic()函式,以便主函式呼叫。具體情況如圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

在Buzzer_Music.c檔案中編寫Buzzer(int Tone,int Beat)函式,以便PlayMusic()函式呼叫。具體情況如圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

在主函式中編寫中斷函式,每1ms產生一次中斷,用來控制節拍。編寫完中斷函式後,還要在Buzzer_Music.c檔案中編寫定時器初始化函式Timer0_Init(),在這裡我們採用定時器0中斷,具體情況如圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

第三步:下載樂譜,根據樂譜編寫相關頻率和節拍

下載電視劇《西遊記》主題曲《敢問路在何方》的樂譜。可以在百度文庫中下載的到。樂譜如下圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

根據樂譜在Buzzer_Music.h標頭檔案中編寫關於音調和節拍定義的巨集,以便後面使用程式碼編寫樂譜,讓程式更加直觀。具體情況如下圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

根據樂譜在Buzzer_Music.c原始檔中用程式碼編寫樂譜(本質上是一個存放著音調和節拍的一維陣列)。具體情況如下圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

第四步:將Keil編譯後生成的hex檔案下載到微控制器中

關於如何將Keil編譯後生成的hex檔案下載到Proteus中的微控制器中,在上一講的《【Keil+Proteus模擬】51微控制器實現心形流水燈》中我們已經詳細講述,這裡就不需要再贅述了。感興趣的話,大家可以在百度中搜索“【Keil+Proteus模擬】51微控制器實現心形流水燈”,即可在中看到。具體情況如下圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

執行模擬電路,觀察效果。具體情況如下圖:

51微控制器模擬—蜂鳴器演奏樂曲《敢問路在何方》

尾聲:

基於Keil和Proteus模擬,如何使用無源蜂鳴器演奏樂曲——《敢問路在何方》,這裡已經介紹完了。如果大家覺得還不錯的話,記得給好評哦!

相關問題答案