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