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