基于AT89C51 單片機(jī)的節(jié)拍器
1 硬件電路原理
節(jié)拍器以AT89C51 單片機(jī)為控制中心,由LED 顯示模塊、調(diào)節(jié)鍵盤模塊、聲音輸出模塊組成。圖1 是節(jié)拍器的電路原理圖。ATMEL 公司生產(chǎn)的AT89C51 單片機(jī)與MCS51指令系統(tǒng)兼容,40 腳結(jié)構(gòu),是系統(tǒng)的控制中心。顯示模塊由四位一體的共陽(yáng)極藍(lán)色LED 顯示器構(gòu)成,采用動(dòng)態(tài)掃描顯示方式, Q11~ Q14是LED 的位選擇開(kāi)關(guān)三極管, R6~ R13是數(shù)碼管段發(fā)光二極管的限流電阻。四位一體的LED 數(shù)碼管完成顯示節(jié)拍數(shù)、各功能代碼及參數(shù)值的功能。鍵盤調(diào)節(jié)模塊由4 只按鍵構(gòu)成,分別是功能選擇鍵A、設(shè)置參數(shù)選擇鍵B、參數(shù)增加鍵C和參數(shù)減少鍵D ,4 只按鍵可以完成各種功能的選擇和各參數(shù)的設(shè)置。聲音輸出模塊由以Q1、Q2、Q3和揚(yáng)聲器為中心的功率放大電路組成,不同頻率的脈沖從單片機(jī)的P2.6口輸出, 經(jīng)R14限流和功率放大后,推動(dòng)揚(yáng)聲器發(fā)出洪亮的聲音。由于輸出的音頻信號(hào)是脈沖波,三極管工作在開(kāi)關(guān)狀態(tài),損耗小發(fā)熱量不大, Q2、Q3使用小功率管C8050和C8550 即可。整個(gè)系統(tǒng)硬件結(jié)構(gòu)簡(jiǎn)單。由外部提供12 V直流電直接供音頻功放模塊使用,經(jīng)LM7805 穩(wěn)壓成5 V 后供單片機(jī)及LED 顯示用。
2 軟件說(shuō)明
軟件系統(tǒng)采用模塊化結(jié)構(gòu)設(shè)計(jì),分別是主程序模塊、節(jié)拍器模塊、鍵盤識(shí)別和參數(shù)設(shè)置模塊等。其中每個(gè)模塊又由若干個(gè)子模塊構(gòu)成。上電或復(fù)位后進(jìn)入調(diào)節(jié)功能,重復(fù)按A鍵在調(diào)節(jié)功能、節(jié)拍器功能之間輪換。當(dāng)進(jìn)入調(diào)節(jié)功能后,重復(fù)按B 鍵可選中不同的調(diào)節(jié)對(duì)象,再按C 或D 鍵增加或減少調(diào)節(jié)對(duì)象的參數(shù)值,調(diào)節(jié)時(shí)顯示調(diào)節(jié)對(duì)象的代碼和參數(shù)值。
2.1 主程序模塊
在主程序模塊中完成存儲(chǔ)單元的初始化、定時(shí)器計(jì)數(shù)器的初始化、中斷初始化、標(biāo)志位的初始化、掃描鍵盤,并根據(jù)功能選擇鍵A 的值啟動(dòng)以下功能模塊之一:參數(shù)設(shè)置功能、節(jié)拍器功能。
2.2 節(jié)拍器功能模塊
節(jié)拍速度在24~400 拍/min 范圍內(nèi)可調(diào),節(jié)拍誤差小于2%,節(jié)拍數(shù)為1~9可調(diào)。顯示器顯示節(jié)拍數(shù),揚(yáng)聲器發(fā)出節(jié)拍聲,顯示節(jié)拍數(shù)1 時(shí)發(fā)出600 Hz 的高頻聲0.1 s ,顯示其他節(jié)拍數(shù)時(shí)發(fā)出300 Hz 的低頻聲0.1 s。該模塊由節(jié)拍延時(shí)部分、節(jié)拍數(shù)顯示部分、音頻脈沖形成部分組成。節(jié)拍功能模塊程序流程圖如圖2 所示。
2.3 參數(shù)調(diào)節(jié)模塊
按A 鍵選擇進(jìn)入?yún)?shù)調(diào)節(jié)功能模塊后,重復(fù)按B 鍵,可以依次選擇節(jié)拍速度、節(jié)拍分度參數(shù)的設(shè)置,LED 顯示器上顯示參數(shù)類型代碼和該參數(shù)的數(shù)字,按C 或B 鍵則在該參數(shù)的取值范圍內(nèi)循環(huán)增加或減少一個(gè)單位值。代碼1 是節(jié)拍數(shù),取值范圍1~9。代碼2 是節(jié)拍速度,取值范圍是24~400拍/min。該模塊程序由鍵盤掃描識(shí)別部分、參數(shù)顯示部分、A鍵處理部分、B 鍵處理部分和C、D 鍵處理等子程序組成。
圖2 節(jié)拍器模塊流程圖
3 實(shí)驗(yàn)
從顯示、按鍵、聲音和節(jié)拍精度等方面進(jìn)行測(cè)試。
顯示觀察:處于節(jié)拍工作狀態(tài)時(shí)4 個(gè)數(shù)碼管同時(shí)循環(huán)顯示節(jié)拍數(shù),練琴時(shí)眼睛的余光就能看清節(jié)拍數(shù)。處于調(diào)節(jié)模式時(shí),最高位顯示待調(diào)節(jié)的參數(shù)代碼,其余3 位顯示參數(shù)值,當(dāng)參數(shù)高位為零時(shí)不顯示。顯示正確。
按鍵測(cè)試:按下功能鍵A ,可以在參數(shù)調(diào)節(jié)和節(jié)拍模式之間轉(zhuǎn)換。當(dāng)處于參數(shù)調(diào)節(jié)模式時(shí),按下參數(shù)更改鍵B ,可以在節(jié)拍數(shù)和節(jié)拍速度之間轉(zhuǎn)換;按下增加鍵C 或減少鍵D ,參數(shù)值在當(dāng)前值基礎(chǔ)上增加或減少1 ,并且在參數(shù)的調(diào)節(jié)范圍內(nèi)循環(huán)變化。當(dāng)處于節(jié)拍工作模式時(shí),BCD 鍵不起作用。鍵盤工作正常。
聲音觀測(cè):節(jié)拍音短促有力,起始拍與其余拍音調(diào)區(qū)別明顯。在鋼琴?gòu)椬嗟沫h(huán)境中清晰可聞。
節(jié)拍精度測(cè)量:用秒表測(cè)量節(jié)拍器500 拍所用時(shí)間。節(jié)拍速度分別為72、112、144 拍/min 的時(shí)候, 用時(shí)分別為418.1 s、268.9 s、210.5 s ,誤差分別為0.29%、0.35%、1.1%。節(jié)拍精度達(dá)到設(shè)計(jì)要求。
4 結(jié)束語(yǔ)
節(jié)拍器的起始拍的聲音和其它拍的聲音不同,聽(tīng)覺(jué)和視覺(jué)效果好,節(jié)拍精度高,調(diào)節(jié)方便。多名琴童使用該節(jié)拍器練鋼琴均取得很好的效果。硬件成本低廉,不易損壞,可以將外形設(shè)計(jì)成工藝品?;贏T89C51 單片機(jī)的節(jié)拍器具有較好的應(yīng)用價(jià)值。