俞宏霖,李明明*,白炳斌,張 祥
(嘉興職業(yè)技術學院,浙江 嘉興 314000)
基于AT89C51單片機簡易音樂播放器設計與研究
俞宏霖,李明明*,白炳斌,張 祥
(嘉興職業(yè)技術學院,浙江 嘉興 314000)
為了適應智慧家居應用的需求,文章設計了一款基于AT89C51單片機的音樂播放器。首先在理論上分析了音樂播放器的設計原理,即通過單片機的定時/中斷系統(tǒng)實現(xiàn)音頻播放;其次,利用定時器產生不同音頻,借助蜂鳴器轉發(fā)放大信號,以實現(xiàn)不同音調的播放;最后,在軟件設計的基礎上加入中斷系統(tǒng)調節(jié)以實現(xiàn)音調的時長變化。
AT89C51型單片機;音樂播放器;時間控制電路
隨著單片機應用技術在智慧家居中得廣泛應用,基于AT89C51單片機為基礎的單片機產品,也逐漸受到廣大用戶歡迎[1-3]。音樂播放器效果廣泛應用于高校生活當中,如傳統(tǒng)的上課鈴聲、早起鈴聲、午間廣播等均轉變?yōu)閻偠囊魳贰纹瑱C應用技術應用于音樂播放器的設計,以實現(xiàn)音樂播放效果[4],是單片機衍生音樂播放器的重點研究之一。
能讓單片機產生音樂的原因在于:單片機系統(tǒng)中存在定時/中斷系統(tǒng),可以輔助單片機在一定的延時內實現(xiàn)不同頻率的變化。其中,不同的頻率因信號放大產生不同的方波,方波數(shù)據傳送到外接的蜂鳴器后,產生聲音。連續(xù)的方波,則產生音樂[5-6]。文獻[7-8]指出了其設計音樂播放器的編程原理、定時器的設定,通過Keil,Protel99 SE軟件完成PCB板的設計。
基于已有研究結果,設計一種以AT89C51型單片機為基礎元件設計出自動式音樂播放器并通過仿真實驗驗證可用性,其設計原理為基于定時器所產生的頻率不同的方波,信號放大后、驅動蜂鳴器以產生不同音調,利用程序設計控制音調時長,基于Keil軟件完成程序設計,基于Proteus軟件完成硬件電路設計。在軟件設計的基礎上加入中斷系統(tǒng)調節(jié)以實現(xiàn)音調的時長變化,以此設計出一套完整的音樂。系統(tǒng)的邏輯結構圖如圖1所示,包括了單片機、復位電路、時鐘電路、晶振電路、按鍵電路、發(fā)聲電路和電源電路。
圖1 系統(tǒng)結構總圖
2.1 總體設計框圖
為了進一步了解基于AT89C51系列單片機的音樂播放器的系統(tǒng)接口和硬件電路,筆者設計了硬件總體電路原理圖,如圖2所示。
圖2 設計原理圖
將AT89C51單片機作為主控制核心,配置具有3個按鍵的按鍵電路、時鐘和復位電路、音頻放大電路。其中,AT89C51芯片主要完成接收按鍵的輸入,根據輸入控制音樂播放曲目和揚聲器發(fā)音。播放器通過歌曲控制按鈕來將內部已經存儲好的音頻信號讀取并且傳輸,經過晶振和時鐘電路來輸出長短不一的音頻通過揚聲器輸出,然后設置一個復位按鈕能夠隨時中斷并回到初始狀態(tài),從而方便多次調試。
2.2 音頻放大電路
單片機實際上無法實現(xiàn)如專業(yè)樂器的多音色效果音樂,原因是因為其沒有多振幅的諧振頻率,因而,對于單片機而言,音樂來自于單個音頻率。在單片機應用系統(tǒng)中音頻放大電路中需要注意音調和節(jié)拍的變化,就可以區(qū)分音樂[9-10]。由于音頻放大這一部分是整個音樂播放器硬件電路的關鍵所在,通過ATC89C51的I/O口產生一定頻率的脈沖,基于LM386功放電路驅動揚聲器發(fā)出不同的音調繼而演奏樂曲。音頻發(fā)聲及放大電路原理圖如圖3所示。
3.1 音調設計
音調主要由聲音的頻率決定,在單片機定時中斷系統(tǒng)的信號放大過程中,通過中斷服務程序完成單片機I/O口的來回置高/低電平,以實現(xiàn)蜂鳴器的發(fā)聲。因此,每個音符所需時長需要計算,循環(huán)延時可作為控制一個音符發(fā)聲的時長,多次循環(huán)從而完成一首完整的音樂。
開展小學數(shù)學學科教學工作坊工作,目的是更好地調動各類資源,特別是突破校本教研的局限性,開展更廣泛、更有針對性的教研活動。在這樣的教研活動中能夠依托工作坊研修平臺的課程資源,創(chuàng)新完善線上線下混合式培訓模式,促使和推動參加工作坊研修的教師形成一個共同體。在此過程中,能夠群策群力,注重每位教師的教育教學能力的提升,把所學應用于實踐,實現(xiàn)學用結合,從而解決教師在教育教學中的突出問題。
改變音調的頻率分為高音、中音和低音,因此,選擇蜂鳴器或揚聲器是設計的關鍵。通常情況下,低頻純音的音調在2 000 Hz以下的隨響度的增加而下降,高頻純音的音調在3 000 Hz以上隨響度的增加而上升。
綜上所述,如果單片機內部中斷響應時間為1 200μs,其定時器為工作方式1,則振蕩器脈沖是十二分頻信號,且其外接晶振的頻率為f,則定時器的預置初始值如公式(1)所示。
其中N表示當前工作狀態(tài)下的定時器計數(shù)值。
3.2 程序流程圖
發(fā)聲方法確定之后,程序流程結果如圖4所示。初始化程序堆棧后,初始化音樂輸出口和按鈕,并根據當前播放歌曲的某個音符反應,設置按鍵,處理上下曲目,直到斷電為止。
圖 3 音頻發(fā)生及放大電路
圖4 程序流程圖
3.3 音樂的產生
基于不同的音調和節(jié)拍效果,根據不同組合頻率,產生的音樂往往大相徑庭。因而,基于單片機的定時/計數(shù)器T0/ T1以獲取不同的方波頻率,需要把不同音階對應的頻率關系確認無誤,以得到最終音樂。具體方法如下:
基于單片機內部的定時器,設置工作計數(shù)器模式為T1方式,TH1及TL1的計數(shù)值以產生不同音階。以P1.0引腳為例,如果需要音頻脈沖,則需算出某一音頻的1/2周期時間。當每次計時中斷后單片機的P1.0引腳開始反相,重復計時再反相。最終獲得P1.0引腳的頻率脈沖。其中計算脈沖與頻率關系的方法為:
式中,N是計數(shù)值;fi表示機器頻率(其頻率為1 MHz);fr是需要的頻率。則對于假設情況:當頻為523 Hz,得到半周期為T/2=2/523=956 μs。因此如果計數(shù)器計是956 μs,則每計數(shù)956次時P1.0引腳將I/O反相,可得中音DO(523 Hz)[10]。
根據式(1—2),則計數(shù)初值的處理結果如式(3)所示。
基于式(3)結果,則DO的低音初始值為T=65536-500000/262=63628,高音初始值為T=65536-500000/1046 =65058。如表1所示。
表1 主要音符對應頻率表
程序中的全局變量YinFuH,PinlvL就是音符頻率表,分別為數(shù)據的高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ù)據的高8位和第8位,分別用來初始化TH0,TL0。
基于AT89C51單片機的定時/中斷系統(tǒng)設計了具有不同音調的音樂播放器。設計原理為:根據單片機內部的定時器產生不同頻率,繼而蜂鳴器發(fā)出不同音調的音樂,通過軟件設計延遲以控制發(fā)音時長。本音樂起硬件電路結構簡單,可讀性高,應用性強,軟件程序開放性好,適用于多種不同音樂曲目的播放器制作。
[1]王靜霞.單片機應用技術(C語言版)[M].北京:電子工業(yè)出版社,2009.
[2]張志良.80c51單片機實驗實訓100例:基于Keil C和Proteus[M].北京:航空航天大學出版社,2015.
[3]孫珊珊,李欣.基于STC89C51單片機的智能報警系統(tǒng)的設計與實現(xiàn)[J].綏化學院學報,2014(5):154-156.
[4]郭進,彭惠東,劉浩,等.一種基于STC89C52單片機的智能鬧鐘的設計[J].中國科技信息,2013(11):160-161.
[5]向婷婷.基于AT89C51和弦音樂播放器設計[J].電力電子與控制技術,2014(1):99-102.
[6]黃振杰,盧小斌.基于AT89S52單片機的多功能音樂播放器[J].圖像分析多媒體,2009(2):17-18.
[7]張志偉.基于單片機的音樂播放器的設計與實現(xiàn)[J].電子科技,2014(5X):7-8.
[8]徐陽.基于AT89C51SND1C單片機的MP3音樂播放器設計[J].計算機科學與電子信息工程,2015(25):34-37.
[9]莫光良.基于ST89C51單片機的建議電子琴和音樂播放器的設計和實現(xiàn)[J].電子科技,2014(12):14-15.
[10]何諧,唐大全,張淑廷,等.一種基于51單片機的音樂播放器設計[J].計算機應用技術—嵌入式技術,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—),男,浙江嘉興,大專,學生;研究方向:嵌入式開發(fā)與單片機應用技術。
*通訊作者:李明明(1988—),女,湖北黃岡,碩士,助教;研究方向:嵌入式開發(fā)與分布式計算。