李健,陳銀
(巢湖學(xué)院 電子工程學(xué)院,安徽合肥,238000)
隨著我國經(jīng)濟(jì)快速發(fā)展,人民的生活質(zhì)量逐步提高,娛樂產(chǎn)品走入千家萬戶。電子琴等電子產(chǎn)品的誕生,豐富了業(yè)余生活,讓人民的生活多姿多彩[1]。電子琴是現(xiàn)代電子技術(shù)應(yīng)用于音樂而制作的電子樂器[2]。單片機(jī)高具有強(qiáng)大的控制及邏輯運(yùn)算功能,以單片機(jī)為核心的電器設(shè)備已融入人們的日常生活中,如電視機(jī)、電冰箱、洗衣機(jī)、DVD、汽車音響等[2]。本文利用一款性價(jià)比高的單片機(jī)STC89C52作為核心控制器,設(shè)計(jì)制作一種帶有21鍵,且能顯示音符、指示高中低音的電子琴。該電子琴系統(tǒng)具有電路結(jié)構(gòu)簡(jiǎn)單、音符種類較多、易操作、成本低等優(yōu)點(diǎn),可以作為低齡兒童培養(yǎng)音樂興趣的玩具來用。
電子琴整體方案框圖如圖1所示,系統(tǒng)以STC89C52單片機(jī)為核心,外圍配置了3×7矩陣鍵盤電路、數(shù)碼管音符顯示電路、LED高中低音指示電路和揚(yáng)聲器發(fā)聲電路等,主要工作流程為:有按鍵按下,單片機(jī)識(shí)別后通過揚(yáng)聲器發(fā)出與該按鍵對(duì)應(yīng)的音符的聲音,同時(shí)有一個(gè)數(shù)碼管顯示當(dāng)前音符,還有對(duì)應(yīng)的LED指示當(dāng)前發(fā)出的是高音、中音還是低音。
系統(tǒng)設(shè)計(jì)過程采用了Proteus軟件繪制仿真電路,采用Keil軟件編寫代碼,在計(jì)算機(jī)上仿真通過后,再設(shè)計(jì)制作了實(shí)物電路加以調(diào)試驗(yàn)證。
系統(tǒng)采用了性價(jià)比高的單片機(jī)STC89C52作為核心控制器,圖2為單片機(jī)最小系統(tǒng)組成,是單片機(jī)正常工作需要配置的,包括晶體振蕩器構(gòu)成的時(shí)鐘電路、按鍵復(fù)位電路,還有P0口接了上拉排阻,此外還要提供電源,但Proteus軟件中單片機(jī)默認(rèn)供給了電源,所以圖中無需畫出(圖中選用的AT89C51單片機(jī)與實(shí)際采用的STC89C52是兼容的)。
電子琴必然少不了按鍵電路,按鍵用于彈奏出各種不同的音調(diào)。本系統(tǒng)中設(shè)計(jì)了3×7的矩陣鍵盤電路,如圖3所示,第一行7個(gè)按鍵代表低音的do~si,第二行7個(gè)按鍵代表中音的do~si,第三行7個(gè)按鍵代表高音的do~si。
矩陣鍵盤的三行分別接至單片機(jī)的P2.5~P2.7引腳,七列分別接至單片機(jī)的P1.0~P1.6引腳。
音符顯示與音調(diào)高低指示電路如圖4所示,當(dāng)某個(gè)按鍵按下時(shí),通過一個(gè)共陽型數(shù)碼管顯示對(duì)應(yīng)的音調(diào)符號(hào),上電顯示0,當(dāng)按鍵按下時(shí),顯示的1~7分別對(duì)應(yīng)音調(diào)的do~si。同時(shí)為了顯示音調(diào)的高低,采用三個(gè)不同顏色的LED進(jìn)行指示,綠色代表低音,藍(lán)色代表中音,紅色代表高音。
七段數(shù)碼管按順序接至單片機(jī)的P0.0~P0.6,三個(gè)LED接至P3.0、P3.4和P3.5。
按鍵按下后,單片機(jī)通過控制三極管通斷,驅(qū)動(dòng)揚(yáng)聲器發(fā)出對(duì)應(yīng)的音調(diào),如圖5所示,NPN三極管的基極接至單片機(jī)的P3.7引腳。
設(shè)計(jì)好各個(gè)模塊電路后,將之組合成的整個(gè)電子琴系統(tǒng)的仿真電路如圖6所示。
本系統(tǒng)所需的程序采用C語言在Keil軟件中編程實(shí)現(xiàn)。系統(tǒng)產(chǎn)生不同音調(diào)的原理是:?jiǎn)纹瑱C(jī)在12 MHz的時(shí)鐘頻率下工作,利用它的定時(shí)器T0中斷、工作方式1(16位定時(shí)器工作模式),通過改變定時(shí)器TH0、TL0的計(jì)數(shù)初值,產(chǎn)生不同頻率的脈沖信號(hào)來模擬實(shí)際各種不同的音調(diào),各種音符音調(diào)的頻率和計(jì)數(shù)初值如表1所示。
表1 各種音符的頻率及其對(duì)應(yīng)的定時(shí)初值
系統(tǒng)程序主要包括按鍵的識(shí)別、定時(shí)器初值的修改和定時(shí)、數(shù)碼管音符數(shù)字的顯示和LED的亮滅、利用定時(shí)器產(chǎn)生的不同頻率的脈沖控制三極管通斷來驅(qū)動(dòng)揚(yáng)聲器發(fā)出不同頻率的聲音等幾部分。系統(tǒng)程序流程圖如圖7所示。
按照前面的電路設(shè)計(jì),在Proteus軟件中搭建好仿真電路,且編寫好代碼后運(yùn)行,經(jīng)過反復(fù)調(diào)試得到正確的結(jié)果如圖8所示:按下低音3(mi)鍵,數(shù)碼管顯示數(shù)字3,低音的綠色LED點(diǎn)亮,同時(shí)揚(yáng)聲器發(fā)出對(duì)應(yīng)的聲音。
系統(tǒng)仿真通過后,在此基礎(chǔ)上設(shè)計(jì)實(shí)際的電路原理圖如圖9所示,與仿真電路基本一致,部分位置做了一定的修改以達(dá)到更好的效果;再焊接制作實(shí)際電路,并經(jīng)過調(diào)試得到運(yùn)行后的實(shí)物如圖10所示(圖中按鍵3按下后已松手,數(shù)碼管顯示的數(shù)字不變,但音調(diào)指示LED不再亮,同時(shí)停止發(fā)出聲音)。
本文介紹了一款帶有21個(gè)按鍵,以數(shù)碼管顯示音符、LED指示音調(diào)高低,通過揚(yáng)聲器發(fā)出常規(guī)樂曲聲音的電子琴設(shè)計(jì)過程,其以51單片機(jī)為核心,整體電路結(jié)構(gòu)簡(jiǎn)單、功能較為齊全、性價(jià)比高,經(jīng)過軟硬件設(shè)計(jì)和反復(fù)調(diào)試,最終實(shí)現(xiàn)了預(yù)期的效果,能彈奏出各種音調(diào)的聲音。