單片機因其體積小、功能強、價(jià)格低廉而得到廣泛應用。本文介紹用AT89C51單片機設計微型電子琴的方法,僅需AT89C51最小系統,擴展一組小鍵盤(pán)(這里以4×4鍵盤(pán)為例,可按需要擴展),再加一片LM386做音頻小功放,輸出到揚聲器。電源可由三節5號電池提供。 1 設計原理 樂(lè )音實(shí)際上是有固定周期的信號。我們可以用AT89C51的一個(gè)定時(shí)器(如T1)控制,在P3.4腳上輸出方波周期信號,產(chǎn)生樂(lè )音。根據不同的按鍵,調節T1的溢出時(shí)間,可輸出不同頻率的樂(lè )音,這樣就做出了一臺微型電子琴。 每個(gè)樂(lè )音的音高(頻率)是固定的,表1列出了一個(gè)8度以及其上下共16個(gè)音的音名、頻率及定時(shí)器T1初值對照(設晶體頻率為6MHz),供參考。 2 硬件電路設計 微型電子琴的電原理圖見(jiàn)圖1,其中鍵盤(pán)可使用小按鍵,排成鋼琴鍵盤(pán)狀(鍵多時(shí)可分為幾排),圖中還增加了一只按鍵指示燈(D1)。 3 軟件設計 軟件由初始化程序、主程序、定時(shí)器1中斷服務(wù)程序、鍵盤(pán)掃描程序和延時(shí)程序組成。 (1)初始化程序如下: 主程序框圖見(jiàn)圖2。 (2)主程序: CJNE R4,#00H, PLAYKEY;判斷有無(wú)鍵按下 CLR TR1;無(wú)鍵按下關(guān)閉T1 SETBP3.2;無(wú)鍵按下熄滅指示燈 SJMPSTART;跳回開(kāi)始位置 PLAYKEY:CJNE R4,#20H,K0;有鍵按下由鍵值給TIMER1L和TIMER1H賦值 (3)定時(shí)器1中斷服務(wù)程序框圖見(jiàn)圖3。 定時(shí)器1中斷服務(wù)程序: (4)鍵盤(pán)掃描程序框圖如圖4所示。 鍵盤(pán)掃描程序: 4 結束語(yǔ) 本文介紹了用單片機設計微型電子琴的方法,只要依次將本文中各段程序連寫(xiě),就是完整的16鍵微型電子琴程序,有興趣的讀者可以設計鍵數更多的微型電子琴,甚至可以給微型電子琴添加演奏示范曲的功能〔1〕。如果讀者有更高的編程技巧,可以通過(guò)編程檢測并記錄按鍵的時(shí)間,做出具有錄音功能的微型電子琴。 |