俞宏霖,李明明*,白炳斌,張 祥
(嘉興職業(yè)技術(shù)學(xué)院,浙江 嘉興 314000)
基于AT89C51單片機(jī)簡易音樂播放器設(shè)計(jì)與研究
俞宏霖,李明明*,白炳斌,張 祥
(嘉興職業(yè)技術(shù)學(xué)院,浙江 嘉興 314000)
為了適應(yīng)智慧家居應(yīng)用的需求,文章設(shè)計(jì)了一款基于AT89C51單片機(jī)的音樂播放器。首先在理論上分析了音樂播放器的設(shè)計(jì)原理,即通過單片機(jī)的定時(shí)/中斷系統(tǒng)實(shí)現(xiàn)音頻播放;其次,利用定時(shí)器產(chǎn)生不同音頻,借助蜂鳴器轉(zhuǎn)發(fā)放大信號,以實(shí)現(xiàn)不同音調(diào)的播放;最后,在軟件設(shè)計(jì)的基礎(chǔ)上加入中斷系統(tǒng)調(diào)節(jié)以實(shí)現(xiàn)音調(diào)的時(shí)長變化。
AT89C51型單片機(jī);音樂播放器;時(shí)間控制電路
隨著單片機(jī)應(yīng)用技術(shù)在智慧家居中得廣泛應(yīng)用,基于AT89C51單片機(jī)為基礎(chǔ)的單片機(jī)產(chǎn)品,也逐漸受到廣大用戶歡迎[1-3]。音樂播放器效果廣泛應(yīng)用于高校生活當(dāng)中,如傳統(tǒng)的上課鈴聲、早起鈴聲、午間廣播等均轉(zhuǎn)變?yōu)閻偠囊魳?。將單片機(jī)應(yīng)用技術(shù)應(yīng)用于音樂播放器的設(shè)計(jì),以實(shí)現(xiàn)音樂播放效果[4],是單片機(jī)衍生音樂播放器的重點(diǎn)研究之一。
能讓單片機(jī)產(chǎn)生音樂的原因在于:單片機(jī)系統(tǒng)中存在定時(shí)/中斷系統(tǒng),可以輔助單片機(jī)在一定的延時(shí)內(nèi)實(shí)現(xiàn)不同頻率的變化。其中,不同的頻率因信號放大產(chǎn)生不同的方波,方波數(shù)據(jù)傳送到外接的蜂鳴器后,產(chǎn)生聲音。連續(xù)的方波,則產(chǎn)生音樂[5-6]。文獻(xiàn)[7-8]指出了其設(shè)計(jì)音樂播放器的編程原理、定時(shí)器的設(shè)定,通過Keil,Protel99 SE軟件完成PCB板的設(shè)計(jì)。
基于已有研究結(jié)果,設(shè)計(jì)一種以AT89C51型單片機(jī)為基礎(chǔ)元件設(shè)計(jì)出自動式音樂播放器并通過仿真實(shí)驗(yàn)驗(yàn)證可用性,其設(shè)計(jì)原理為基于定時(shí)器所產(chǎn)生的頻率不同的方波,信號放大后、驅(qū)動蜂鳴器以產(chǎn)生不同音調(diào),利用程序設(shè)計(jì)控制音調(diào)時(shí)長,基于Keil軟件完成程序設(shè)計(jì),基于Proteus軟件完成硬件電路設(shè)計(jì)。在軟件設(shè)計(jì)的基礎(chǔ)上加入中斷系統(tǒng)調(diào)節(jié)以實(shí)現(xiàn)音調(diào)的時(shí)長變化,以此設(shè)計(jì)出一套完整的音樂。系統(tǒng)的邏輯結(jié)構(gòu)圖如圖1所示,包括了單片機(jī)、復(fù)位電路、時(shí)鐘電路、晶振電路、按鍵電路、發(fā)聲電路和電源電路。
圖1 系統(tǒng)結(jié)構(gòu)總圖
2.1 總體設(shè)計(jì)框圖
為了進(jìn)一步了解基于AT89C51系列單片機(jī)的音樂播放器的系統(tǒng)接口和硬件電路,筆者設(shè)計(jì)了硬件總體電路原理圖,如圖2所示。
圖2 設(shè)計(jì)原理圖
將AT89C51單片機(jī)作為主控制核心,配置具有3個(gè)按鍵的按鍵電路、時(shí)鐘和復(fù)位電路、音頻放大電路。其中,AT89C51芯片主要完成接收按鍵的輸入,根據(jù)輸入控制音樂播放曲目和揚(yáng)聲器發(fā)音。播放器通過歌曲控制按鈕來將內(nèi)部已經(jīng)存儲好的音頻信號讀取并且傳輸,經(jīng)過晶振和時(shí)鐘電路來輸出長短不一的音頻通過揚(yáng)聲器輸出,然后設(shè)置一個(gè)復(fù)位按鈕能夠隨時(shí)中斷并回到初始狀態(tài),從而方便多次調(diào)試。
2.2 音頻放大電路
單片機(jī)實(shí)際上無法實(shí)現(xiàn)如專業(yè)樂器的多音色效果音樂,原因是因?yàn)槠錄]有多振幅的諧振頻率,因而,對于單片機(jī)而言,音樂來自于單個(gè)音頻率。在單片機(jī)應(yīng)用系統(tǒng)中音頻放大電路中需要注意音調(diào)和節(jié)拍的變化,就可以區(qū)分音樂[9-10]。由于音頻放大這一部分是整個(gè)音樂播放器硬件電路的關(guān)鍵所在,通過ATC89C51的I/O口產(chǎn)生一定頻率的脈沖,基于LM386功放電路驅(qū)動揚(yáng)聲器發(fā)出不同的音調(diào)繼而演奏樂曲。音頻發(fā)聲及放大電路原理圖如圖3所示。
3.1 音調(diào)設(shè)計(jì)
音調(diào)主要由聲音的頻率決定,在單片機(jī)定時(shí)中斷系統(tǒng)的信號放大過程中,通過中斷服務(wù)程序完成單片機(jī)I/O口的來回置高/低電平,以實(shí)現(xiàn)蜂鳴器的發(fā)聲。因此,每個(gè)音符所需時(shí)長需要計(jì)算,循環(huán)延時(shí)可作為控制一個(gè)音符發(fā)聲的時(shí)長,多次循環(huán)從而完成一首完整的音樂。
開展小學(xué)數(shù)學(xué)學(xué)科教學(xué)工作坊工作,目的是更好地調(diào)動各類資源,特別是突破校本教研的局限性,開展更廣泛、更有針對性的教研活動。在這樣的教研活動中能夠依托工作坊研修平臺的課程資源,創(chuàng)新完善線上線下混合式培訓(xùn)模式,促使和推動參加工作坊研修的教師形成一個(gè)共同體。在此過程中,能夠群策群力,注重每位教師的教育教學(xué)能力的提升,把所學(xué)應(yīng)用于實(shí)踐,實(shí)現(xiàn)學(xué)用結(jié)合,從而解決教師在教育教學(xué)中的突出問題。
改變音調(diào)的頻率分為高音、中音和低音,因此,選擇蜂鳴器或揚(yáng)聲器是設(shè)計(jì)的關(guān)鍵。通常情況下,低頻純音的音調(diào)在2 000 Hz以下的隨響度的增加而下降,高頻純音的音調(diào)在3 000 Hz以上隨響度的增加而上升。
綜上所述,如果單片機(jī)內(nèi)部中斷響應(yīng)時(shí)間為1 200μs,其定時(shí)器為工作方式1,則振蕩器脈沖是十二分頻信號,且其外接晶振的頻率為f,則定時(shí)器的預(yù)置初始值如公式(1)所示。
其中N表示當(dāng)前工作狀態(tài)下的定時(shí)器計(jì)數(shù)值。
3.2 程序流程圖
發(fā)聲方法確定之后,程序流程結(jié)果如圖4所示。初始化程序堆棧后,初始化音樂輸出口和按鈕,并根據(jù)當(dāng)前播放歌曲的某個(gè)音符反應(yīng),設(shè)置按鍵,處理上下曲目,直到斷電為止。
圖 3 音頻發(fā)生及放大電路
圖4 程序流程圖
3.3 音樂的產(chǎn)生
基于不同的音調(diào)和節(jié)拍效果,根據(jù)不同組合頻率,產(chǎn)生的音樂往往大相徑庭。因而,基于單片機(jī)的定時(shí)/計(jì)數(shù)器T0/ T1以獲取不同的方波頻率,需要把不同音階對應(yīng)的頻率關(guān)系確認(rèn)無誤,以得到最終音樂。具體方法如下:
基于單片機(jī)內(nèi)部的定時(shí)器,設(shè)置工作計(jì)數(shù)器模式為T1方式,TH1及TL1的計(jì)數(shù)值以產(chǎn)生不同音階。以P1.0引腳為例,如果需要音頻脈沖,則需算出某一音頻的1/2周期時(shí)間。當(dāng)每次計(jì)時(shí)中斷后單片機(jī)的P1.0引腳開始反相,重復(fù)計(jì)時(shí)再反相。最終獲得P1.0引腳的頻率脈沖。其中計(jì)算脈沖與頻率關(guān)系的方法為:
式中,N是計(jì)數(shù)值;fi表示機(jī)器頻率(其頻率為1 MHz);fr是需要的頻率。則對于假設(shè)情況:當(dāng)頻為523 Hz,得到半周期為T/2=2/523=956 μs。因此如果計(jì)數(shù)器計(jì)是956 μs,則每計(jì)數(shù)956次時(shí)P1.0引腳將I/O反相,可得中音DO(523 Hz)[10]。
根據(jù)式(1—2),則計(jì)數(shù)初值的處理結(jié)果如式(3)所示。
基于式(3)結(jié)果,則DO的低音初始值為T=65536-500000/262=63628,高音初始值為T=65536-500000/1046 =65058。如表1所示。
表1 主要音符對應(yīng)頻率表
程序中的全局變量YinFuH,PinlvL就是音符頻率表,分別為數(shù)據(jù)的高8位和低8位,具體情況如下。
unsigned char code YinFuH []={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,//低音1,2,3,4,5,6,7
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,//中音1,2,3,4,5,6,7
0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//高音1,2,3,4,5,6,7
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,//超高音1,2,3,4,5,6,7};
unsigned char code PinlvL []={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,//低音1,2,3,4,5,6,7
0x21 ,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,//中音1,2,3,4,5,6,7
0x8 F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,//高音1,2,3,4,5,6,7
0x47 ,0x77,0xA2,0xB6,0xDA,0xFA,0x16 //超高音1,2,3,4,5,6,7};
FREQH和FREQL中分別為數(shù)據(jù)的高8位和第8位,分別用來初始化TH0,TL0。
基于AT89C51單片機(jī)的定時(shí)/中斷系統(tǒng)設(shè)計(jì)了具有不同音調(diào)的音樂播放器。設(shè)計(jì)原理為:根據(jù)單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生不同頻率,繼而蜂鳴器發(fā)出不同音調(diào)的音樂,通過軟件設(shè)計(jì)延遲以控制發(fā)音時(shí)長。本音樂起硬件電路結(jié)構(gòu)簡單,可讀性高,應(yīng)用性強(qiáng),軟件程序開放性好,適用于多種不同音樂曲目的播放器制作。
[1]王靜霞.單片機(jī)應(yīng)用技術(shù)(C語言版)[M].北京:電子工業(yè)出版社,2009.
[2]張志良.80c51單片機(jī)實(shí)驗(yàn)實(shí)訓(xùn)100例:基于Keil C和Proteus[M].北京:航空航天大學(xué)出版社,2015.
[3]孫珊珊,李欣.基于STC89C51單片機(jī)的智能報(bào)警系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].綏化學(xué)院學(xué)報(bào),2014(5):154-156.
[4]郭進(jìn),彭惠東,劉浩,等.一種基于STC89C52單片機(jī)的智能鬧鐘的設(shè)計(jì)[J].中國科技信息,2013(11):160-161.
[5]向婷婷.基于AT89C51和弦音樂播放器設(shè)計(jì)[J].電力電子與控制技術(shù),2014(1):99-102.
[6]黃振杰,盧小斌.基于AT89S52單片機(jī)的多功能音樂播放器[J].圖像分析多媒體,2009(2):17-18.
[7]張志偉.基于單片機(jī)的音樂播放器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2014(5X):7-8.
[8]徐陽.基于AT89C51SND1C單片機(jī)的MP3音樂播放器設(shè)計(jì)[J].計(jì)算機(jī)科學(xué)與電子信息工程,2015(25):34-37.
[9]莫光良.基于ST89C51單片機(jī)的建議電子琴和音樂播放器的設(shè)計(jì)和實(shí)現(xiàn)[J].電子科技,2014(12):14-15.
[10]何諧,唐大全,張淑廷,等.一種基于51單片機(jī)的音樂播放器設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用技術(shù)—嵌入式技術(shù),2014(23):302-303.
Design and research of simple music player based on AT89C51 single chip machine
Yu Honglin,Li Mingming*,Bai Bingbin,Zhang Xiang
(Jiaxing Vocational Technical College,Jiaxing 314000,China)
In order to meet the needs of intelligent home applications,this paper designed an AT89C51 micro controller-based music player.This paper first makes a theoretical analysis of design principle,which is to achieve audio playback through the micro controller timer/interrupt system;then,using the timer to produce different audio and amplify signal by means of a buzzer to play different tones;finally,the interrupt system is added to adjust the system to achieve the change of the length of pitch.
AT89C51 single chip machine;music player;time control circuit
俞宏霖(1996—),男,浙江嘉興,大專,學(xué)生;研究方向:嵌入式開發(fā)與單片機(jī)應(yīng)用技術(shù)。
*通訊作者:李明明(1988—),女,湖北黃岡,碩士,助教;研究方向:嵌入式開發(fā)與分布式計(jì)算。