摘要:用電子琴可以演奏出各種美妙的音樂,而音樂是由音符組成,不同的音符又是由相應(yīng)頻率的振動(dòng)產(chǎn)生,而用單片機(jī)來產(chǎn)生不同的頻率非常方便,可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號。用AT89S51單片機(jī)作為主控核心,設(shè)計(jì)了一個(gè)簡單電子琴,其特點(diǎn)是運(yùn)行穩(wěn)定、硬件電路簡單、性價(jià)比高,具有一定的實(shí)用價(jià)值。
關(guān)鍵詞:單片機(jī);電子琴;鍵盤;揚(yáng)聲器
中圖分類號:TP368文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)24-6766-02
The Design of Electronic Organ Based on AT89S51
TIAN Qi-chong, ZHENG Wei-guo, SUN Da-lei
(School of Computer Science and Technology, China University of Mining and Technology, Xuzhou 221116,China)
Abstract: The electronic organ can play a variety of wonderful music which are composed by the musical notes. And the different notes are produced by the vibration of corresponding frequencies. It's very convenient for the single-chip to generate different frequencies by the timer/counter T0. In this paper, we design an electronic organ with AT89S51. Stable circulation, simple hardware circuit and high performance-to-price ratio are characteristics of the design.
Key words: single-chip; electronic organ; keyboard; speaker
該文主要通過對電子琴主體部分的電路進(jìn)行設(shè)計(jì),達(dá)到電子琴固有的基本功能。整個(gè)設(shè)計(jì)利用單片機(jī)定時(shí)器可發(fā)出不同頻率的脈沖,不同頻率的脈沖經(jīng)喇叭驅(qū)動(dòng)電路放大濾波后,就會(huì)發(fā)出不同音調(diào)的原理來設(shè)計(jì)。首先,利用一個(gè)鍵盤電路把所需要發(fā)出聲音的信號輸入單片機(jī);其次通過程序,定時(shí)器按設(shè)置的定時(shí)參數(shù)產(chǎn)生中斷,這一次中斷發(fā)出脈沖低電平,下一次反轉(zhuǎn)發(fā)出脈沖高電平,由于定時(shí)參數(shù)不同,就發(fā)出不同頻率的脈沖,本設(shè)計(jì)中按鍵一次,就會(huì)調(diào)用一個(gè)延時(shí)程序,在延時(shí)后繼續(xù)檢測鍵盤,若此時(shí)又有鍵被按下,若被按下的仍為原鍵則聲音不變,否則鍵盤會(huì)譯出被按下的另一個(gè)鍵的音調(diào)。通過按播放鍵,還可以播放預(yù)先存儲的一段音樂。
1 AT89S51概述
AT89S51是一個(gè)低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4k Bytes ISP的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。
AT89S51具有如下特點(diǎn):40個(gè)引腳(引腳圖如圖1所示),4k Bytes Flash片內(nèi)程序存儲器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲器,32個(gè)外部雙向I/O口,5個(gè)中斷優(yōu)先級2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。
此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz,并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口、外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。
2 總體分析與設(shè)計(jì)
2.1 總體分析
本次設(shè)計(jì)的要求如下:
1)利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)揚(yáng)聲器,能發(fā)出不同的音調(diào)。
2)能播放預(yù)先存儲的一段音樂。
3)線路板焊點(diǎn)飽滿、圓潤,無虛焊等現(xiàn)象。
本次設(shè)計(jì)主要是要通過軟硬件的配合實(shí)現(xiàn)一個(gè)簡單電子琴的功能,操作人員可以通過按下鍵盤上任意一個(gè)鍵來發(fā)出相應(yīng)的音符,按下播放鍵就能播放預(yù)先存儲的一段音樂。
設(shè)計(jì)電路時(shí)采用AT89S51單片機(jī)的接口來實(shí)現(xiàn)各種輸入、輸出功能。P2口用來實(shí)現(xiàn)輸入鍵盤的功能;P1.0口用來作輸出口,向發(fā)聲電路輸出信號;P0口實(shí)現(xiàn)數(shù)碼管顯示功能。
2.2 總體設(shè)計(jì)
2.2.1 硬件部分
采用AT89S51單片機(jī)作為主控制部件,AT89S51用上電自動(dòng)復(fù)位,12MHZ的晶振和兩個(gè)電容形成晶振電路。面板上的7個(gè)按鍵,用于輸入音符,1個(gè)用于播放音樂,1個(gè)用于復(fù)位。
電路原理圖如圖2所示。
2.2.2 軟件部分
軟件部分采用匯編語言編寫程序,單片機(jī)匯編語言程序設(shè)計(jì)步驟如下:
第一步:分析問題。
第二步:畫出程序的基本輪廓。
第三步:實(shí)現(xiàn)該程序。
主程序流程圖如圖3所示。
2.2.3 軟硬件調(diào)試
使用KEIL軟件,將程序輸入進(jìn)行編譯,編譯通過后,則將制作的電路進(jìn)行聯(lián)機(jī)仿真,檢測功能和設(shè)計(jì)任務(wù)能不能實(shí)現(xiàn)。如果不能達(dá)到預(yù)期效果,則必須重新檢查硬件或修改程序。
2.2.4 程序固化
經(jīng)過調(diào)試,實(shí)現(xiàn)了預(yù)期的成果和功能,就可以開始程序固化了。將程序燒錄到AT89S51內(nèi)部ROM中,然后將單片機(jī)放入到電路中,再進(jìn)行觀察。
3 模塊介紹
3.1 發(fā)聲模塊
發(fā)聲模塊是電子琴電路中的一個(gè)重要的組成部分,它承擔(dān)著把單片機(jī)所產(chǎn)生的聲音信號放大并用揚(yáng)聲器輸出的重要作用。
音樂由各種不同的音符組成,而不同的音符又是由相應(yīng)頻率的振動(dòng)產(chǎn)生,用單片機(jī)來產(chǎn)生不同的頻率非常方便,可以利用AT89S51單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號。利用AT89S51的內(nèi)部定時(shí)器使其工作在計(jì)數(shù)器模式(MODE1)下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為587Hz,其周期T=1/587=1704μs,因此只要令計(jì)數(shù)器計(jì)時(shí)1704μs÷2÷1μs=852,每計(jì)數(shù)852次時(shí)將I/O反相,就可得到中音RE(587Hz)。
現(xiàn)以單片機(jī)12MHZ晶振為例,列出高中低音符與計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表1所示。
本次設(shè)計(jì),我們采用7個(gè)鍵來產(chǎn)生音符,故只選取了上表中的7個(gè)音符,建立了一個(gè)表格,單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。建立的表格如下:
TABLE DW63628, 63835, 64021, 64103, 64260, 64400, 64524
3.2 鍵盤模塊
鍵盤模塊作為電子琴系統(tǒng)中最重要的輸入部分,在系統(tǒng)中承擔(dān)著把操作人員想要輸入的信號輸入單片機(jī)的重要作用。鍵盤模塊必須具有去抖動(dòng)、防串鍵、按鍵識別和鍵碼產(chǎn)生4個(gè)基本功能。用AT89S51的并行口P2接鍵盤,硬件連線如圖4所示。
3.3 LED顯示模塊
七段LED數(shù)碼管內(nèi)部由七個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型。LED數(shù)碼管的七個(gè)發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,表2給出了共陰極LED數(shù)碼管的字形碼表。
LED顯示模塊如圖5所示,利用AT89S51單片機(jī)的P0端口的P0.0-P0.7連接到一個(gè)共陰數(shù)碼管的a-h的筆段上,數(shù)碼管的公共端接地。
4 結(jié)束語
將程序燒入芯片,調(diào)試成功后,可任意彈奏自己想要的旋律,按播放鍵則可以預(yù)想存儲的音樂。該文通過設(shè)計(jì)電子琴,將幾個(gè)模塊很好的融合起來,對使用AT89S51單片機(jī)設(shè)計(jì)簡易電子琴進(jìn)行了分析,
并介紹了基于單片機(jī)電子琴的硬件組成。利用單片機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,最終可隨意彈奏想要表達(dá)的音樂。
參考文獻(xiàn):
[1] 劉建超.用單片機(jī)制作電子琴[J].電子制作,2005(7):24-25.
[2] 王兵.音樂學(xué)習(xí)器的原理與設(shè)計(jì)[J].電子工程師,2004(2):15-16.
[3] AT89S51[EB/OL].http://baike.baidu.com/view/1641206.htm, 2009-05-19.
[4] 陳慧杰,趙姮蒞.計(jì)算機(jī)揚(yáng)聲器發(fā)聲的控制[J].內(nèi)蒙古民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2001(6).
[5] 蔡朝洋,單片機(jī)控制實(shí)習(xí)與專題制作[M].北京:北京航空航天大學(xué)出版社,2006.
[6] 周荷琴,吳秀清.微型計(jì)算機(jī)原理與接口技術(shù)[M].合肥:中國科學(xué)技術(shù)大學(xué)出版社,2004.
[7] 楊恢先,黃輝先.單片機(jī)原理及應(yīng)用[M].北京:人民郵電出版社,2006.