国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式系統(tǒng)中高級提示音的設(shè)計與實現(xiàn)

2016-12-02 09:30尹紹杰
關(guān)鍵詞:蜂鳴器音符串口

林 鵬,尹紹杰

(浙江大學臺州研究院 電氣與控制研究所,浙江 臺州 318000)

?

嵌入式系統(tǒng)中高級提示音的設(shè)計與實現(xiàn)

林 鵬,尹紹杰

(浙江大學臺州研究院 電氣與控制研究所,浙江 臺州 318000)

為了在嵌入式系統(tǒng)中加入動聽的提示音或音樂效果,增加音效編輯的靈活性,設(shè)計了一套完整的帶有余音控制的音效解決方案。該方案主要由電腦端的音樂編輯軟件、經(jīng)改進的蜂鳴器驅(qū)動電路及單片機參考處理流程組成,可提供可視化的音樂編輯環(huán)境,能夠及時試聽音樂效果,解決了以往需要將程序燒錄至單片機后才能試聽效果的不便。經(jīng)測試,該方案簡單方便,降低了音效編輯的復(fù)雜度,音效清晰嘹亮,能提升嵌入式產(chǎn)品的人機交互體驗。

單片機;蜂鳴器;音樂;C#;WPF

0 引言

在嵌入式產(chǎn)品中加入提示音或音樂能使用戶的操作得到反饋,提升了人機交互體驗,也提高了產(chǎn)品的檔次。在大多數(shù)的產(chǎn)品中,為了節(jié)省成本,一般使用單片機驅(qū)動蜂鳴器來發(fā)出聲音而非使用專用芯片。然而單片機音效的調(diào)音和編曲工作比較繁復(fù),往往需要燒錄程序后反復(fù)地試聽,大大增加了操作強度。本文介紹一套在嵌入式系統(tǒng)中增加提示音或音樂的開發(fā)方案,能夠比較直觀地編寫出提示音效,并且每個音符帶有余音控制,而非普通的生硬地切換音符。

1 方案簡介

圖1 系統(tǒng)框架圖

本方案包括一套電腦端的音樂編輯軟件、經(jīng)改進的蜂鳴器驅(qū)動電路以及供參考的單片機端的處理流程。系統(tǒng)框架如圖1所示,電腦和單片機通過串口通信,單片機根據(jù)接收到的數(shù)據(jù)驅(qū)動蜂鳴器。在電腦端完成音效的編輯并定型后,可移除串口通信的代碼,將電腦端生成的文件加入單片機工程即可。

2 蜂鳴器音樂的發(fā)聲原理

音樂的基本要素包括音的高低、長短、強弱和音色[1],要使蜂鳴器發(fā)出聲音就需要控制這些要素。蜂鳴器的固有特性決定了音色,無法被控制;通過驅(qū)動蜂鳴器的頻率可以改變音的高低;控制蜂鳴器導(dǎo)通的時間可以決定音的長短;調(diào)節(jié)蜂鳴器的供電電壓可以模擬出音的強弱。值得一提的是,蜂鳴器分為有源和無源兩種,有源蜂鳴器內(nèi)部自帶諧振電路,直接加電壓即可發(fā)出聲音,無法控制聲音的頻率,而無源蜂鳴器需要有脈沖頻率的驅(qū)動。本方案選擇無源蜂鳴器。

本方案使用的蜂鳴器驅(qū)動電路[2]如圖2所示。由圖可見該驅(qū)動電路稍顯復(fù)雜,一般的蜂鳴器驅(qū)動電路只有簡單的右半部分,只能控制音的高低和長短,無法控制音的強弱,加入了左半部分的控制電路后,能調(diào)節(jié)蜂鳴器的供電電壓,在一定程度上使得音的強弱也有所變化。

圖2 經(jīng)改進的蜂鳴器驅(qū)動電路

蜂鳴器驅(qū)動電路的原理為:在一個音程內(nèi),BUZ_PWM端輸入指定頻率的方波信號,當BUZ_CTRL端的信號為高時,NPN三極管Q2導(dǎo)通,PNP三極管Q1也導(dǎo)通,電解電容C1充電,通過R3、R4的限流和分壓后,蜂鳴器得到供電,在BUZ_PWM端信號的驅(qū)動下發(fā)出特定頻率的聲音;當BUZ_CTRL端的信號為低時,三極管Q2和Q1截止,蜂鳴器由電解電容C1的殘余能量供電,蜂鳴器的音量將逐漸減低,體現(xiàn)出音的強弱特性。BUZ_CTRL端的信號有兩種選擇:一種是輸出PWM(Pulse Width Modulation)脈寬調(diào)制信號,并搭配一個小容量的電容,通過調(diào)整脈沖的寬度,隨意調(diào)節(jié)音的強弱變化;另一種是一個周期的高低信號,配合一個較高容量的電容,驅(qū)動信號先高使電容充電,在某個合適的時刻置低,蜂鳴器僅由電容供電,聲音緩慢減弱。第一種方法需要兩路PWM波驅(qū)動,較復(fù)雜,對單片機的要求也較高,但是能做出非常豐富的音樂效果;第二種方法只要一路PWM波驅(qū)動,外加一路開關(guān)信號,一些單片機即使沒有硬件PWM發(fā)生器也能較好地實現(xiàn)控制效果,產(chǎn)生帶有余音效果的音效。為了方便和控制簡單起見,本方案選用第二種控制方式,驅(qū)動信號和電容上的電壓波形如圖3所示。

圖3 驅(qū)動信號與電容電壓波形圖

3 電腦端音樂編輯軟件的設(shè)計

為了方便編輯單片機音樂,開發(fā)了配套的電腦端單片機音樂編輯器,能夠更加直觀地調(diào)音和編曲,加快開發(fā)進度。

3.1 開發(fā)環(huán)境簡介

電腦端的音樂編輯器采用C#和Windows Presentation Foundation(WPF)技術(shù)開發(fā),使用Visual Studio 2010作為開發(fā)編譯平臺,編譯后的可執(zhí)行文件可運行在裝有.Net Framework 4.0運行環(huán)境的電腦上。選用C#作為軟件開發(fā)語言主要是因其方便、強大,并且隨著微軟宣布終止對Windows XP操作系統(tǒng)的支持,使用C#編寫的軟件可直接運行的電腦將越來越多,從而不必擔心需要再安裝運行環(huán)境的問題。軟件的界面使用了WPF技術(shù)作為用戶界面框架而非傳統(tǒng)的WinForm界面,因為WPF包含諸多優(yōu)異的特性,數(shù)據(jù)驅(qū)動、數(shù)據(jù)綁定、動畫特效、界面可定制程度高等特點使得界面開發(fā)更加得心應(yīng)手,而且這也是被微軟官方所推薦使用的[3-4]。

3.2 電腦端音樂編輯軟件的功能簡介

電腦端音樂編輯軟件的主界面如圖4所示,主要有以下功能:

(1)選擇串口端口號及波特率,啟停串口連接。

(2)鍵盤“←”和“→”按鍵可調(diào)整一個音符的持續(xù)長度,鼠標左右拖動方波中間的下降沿能分配電容的供電時間。

(3)鍵盤“↑”和“↓”按鍵能調(diào)整音符的基礎(chǔ)頻率區(qū)間,以C大調(diào)的頻率為基準。

(4)能載入或新建音樂編輯文件,支持拖拽打開文件。

(5)當軟件主界面獲得焦點時,如果已連上串口通信,按鍵盤的小鍵盤數(shù)字“0~7”按鍵能夠試聽音符效果;在按小鍵盤數(shù)字“0~7”按鍵的同時按住鍵盤上的左“Ctrl”鍵,如果此時已打開編輯音樂文件界面則會將當前的音符添加至編輯界面的音符列表中,否則會打開一個空白的編輯界面。

圖4 電腦端音樂編輯器軟件的主界面

電腦端音樂編輯器軟件的音符編輯界面如圖5所示,從左至右、從上至下其功能有:

(1)將主界面按下的音符添加至列表尾部。

(2)修改音符名或備注,能在下拉菜單選擇音符名并自動修改對應(yīng)的頻率值或直接輸入備注文字。

(3)能修改頻率、電容開通時間及音符持續(xù)時間,帶有數(shù)值合法性檢驗。

(4)列表中的每一個音符選中時能刪除(快捷鍵為鍵盤上的“Delete”鍵)和試聽(快捷鍵“F2”,需連上串口通信)。

(5)當連上串口通信后,可以點擊界面右邊的“播放”按鈕(快捷鍵“F5”)從頭開始播放或停止播放;點擊“播放”按鈕下面的按鈕(快捷鍵“F1”)從當前選中的行開始播放。正在播放的行底色為淡紅色,用以指示播放進度。

(6)有刪除行時提示和修改頻率后試聽選項。

(7)可以在選中的行下面新增一行(快捷鍵“F3”),新增的行底色為淡綠色以區(qū)分其他普通的行。

(8)將當前編輯的音樂進度保存為“.umf”格式,方便以后導(dǎo)入文件繼續(xù)修改。

(9)當完成音樂編輯后,可以導(dǎo)出C語言格式的文件,加入到單片機工程中,以便完成整個單片機音樂功能的開發(fā)。

圖5 電腦端音樂編輯器軟件的音符編輯界面

3.3 音符數(shù)據(jù)的設(shè)計

軟件中的音符數(shù)據(jù)主要由音符名稱或備注、音符頻率、蜂鳴器供電電容上電時間和音符持續(xù)時間組成。其中電容上電時間和音符持續(xù)時間比較簡單,在軟件主界面中能直觀地調(diào)整,下面著重介紹音符名稱及其對應(yīng)的頻率。

根據(jù)科學音調(diào)記號法及相關(guān)的樂理知識[5], C、D、E、F、G、A、B為C大調(diào)的七個主音,唱名分別為do、re、mi、fa、so、la、si,簡譜分別記為數(shù)字1~7,并可以知道每一個音符的頻率值。在軟件中程序默認的八度區(qū)為中央C,即主界面右邊滑塊所指向的“C.262”(科學音調(diào)記號法記為“C4”,為了突出頻率的概念,軟件中的滑塊右邊標示符號格式為“C.”加對應(yīng)的頻率值),音符標示名的格式為音符所在的八度區(qū)C音的頻率值加音符的唱名,如“C4”的音符名稱為“C262_Do”。由于一般簡單的歌曲很少用到升音或降音,為了操作方便,程序中將其忽略,在錄入歌曲時先用臨近的音符代替,調(diào)試時再修改備注和頻率。程序中將各個音符的頻率保存為一個二維數(shù)組,這樣根據(jù)主界面右邊當前滑塊值和按下的數(shù)字鍵就能很方便地獲得所需要錄入音符的頻率值,該二維數(shù)組代碼如下:

private static readonly ushort[,] ToneFrequency = new ushort[7,7] {

{65, 73, 82, 87, 98, 110, 123},

{131, 147, 165, 175, 196, 220, 247},

{262, 294, 330, 349, 392, 440, 494},

{523, 587, 659, 698, 784, 880, 988},

{1047, 1175, 1319, 1397, 1568, 1760, 1976},

{2093, 2349, 2637, 2794, 3135, 3520, 3951},

{4186 ,4699, 5274, 5588, 6272, 7040, 7902}

};

3.4 軟件主界面的程序流程圖

軟件主界面的程序流程圖如圖6所示。

圖6 軟件主界面的程序流程圖

3.5 串口通信的數(shù)據(jù)格式

為了能測試所編輯音樂的實際效果,需要將音符數(shù)據(jù)發(fā)送給單片機演奏,本方案使用串口來傳遞數(shù)據(jù)。播放一

表1 串口通信的數(shù)據(jù)格式

個音符時,只需要通過串口向單片機發(fā)送音符數(shù)據(jù)即可,由于需要發(fā)送定長多字節(jié)的數(shù)據(jù),在數(shù)據(jù)幀中加入頭碼來方便單片機判斷數(shù)據(jù)幀的開始和結(jié)束。數(shù)據(jù)幀的格式如表1所示。

3.6 導(dǎo)出文件的格式

在完成音樂的編輯和調(diào)試后,可以導(dǎo)出C語言文件,加入單片機工程中,完成單片機音樂的功能。導(dǎo)出的文件中包含音符結(jié)構(gòu)體的定義、停止標識符及音符結(jié)構(gòu)體數(shù)組,可以根據(jù)需要添加多個音符結(jié)構(gòu)體數(shù)組,并修改數(shù)組名稱。

4 單片機參考處理流程

在串口接收到完整的一幀音符數(shù)據(jù)后,調(diào)用Music_StartANewTone函數(shù),啟動一次音符演奏的控制流程,在該函數(shù)內(nèi)將音符的電容上電時間賦值給CURBuzzerOnTime全局變量,音符的持續(xù)時間賦值給CURToneTime全局變量,將音符的計時器全局變量ToneTimer置為0,并打開電容的供電控制并設(shè)置好蜂鳴器的驅(qū)動頻率。一個音符的控制過程中每10 ms處理一次相關(guān)的變量操作,其程序流程圖如圖7所示。

圖7 一個音符的控制程序流程圖

程序中定義了音符結(jié)構(gòu)體指針變量pMusicTone,用于方便控制音樂的播放和停止,在需要播放音樂或停止播放時,將指針變量pMusicTone指向?qū)?yīng)的音樂音符數(shù)組即可,在音符的控制流程中將自動處理。

5 結(jié)束語

本文介紹了一套完整的在嵌入式系統(tǒng)中加入高級提示音或音樂的方法,能夠快速方便地編輯音樂和調(diào)試音樂效果,加快嵌入式系統(tǒng)提示音或音樂功能的開發(fā)進度,能夠廣泛地適用于需要警報提示音或開關(guān)機音樂的應(yīng)用場合。

[1] 百度百科.音樂基本要素[EB/OL]. [2016-06-10]. http://baike.baidu.com/view/1417685.htm.

[2] 深圳和而泰智能控制股份有限公司. 一種蜂鳴器電路:中國,2006200340907[P]. 2007-07-25.

[3] 劉鐵猛. 深入淺出WPF[M]. 北京:中國水利水電出版社,2010.

[4] KARLI W, JACOB V H, JON D R,等. C#入門經(jīng)典[M]. 齊立波,黃俊偉,譯. 北京:清華大學出版社,2013.

[5] Wikipedia. Scientific pitch notation[EB/OL]. [2016-06-10]. https://en.wikipedia.org/wiki/Scientific_pitch_notation.

Design and realization of advanced prompt sound in embedded systems

Lin Peng, Yin Shaojie

(Institute of Electrical and Control, Research Institute of Zhejiang University-Taizhou,Taizhou 318000, China)

In order to add wonderful prompt sound or music in embedded systems and increase the flexibility of editing sound effects,a completely solution with residual sound controlling is designed. This solution mainly contains three parts, a software which is for editing music, an enhanced buzzer driver circuit and a micro-controllers’ reference procedure. This solution provides a visual music editing environment, it is able to check out music effect imminently without download code into micro-controllers as usual, which is much more convenient. The experimental results show that this solution is simple and convenient, reduces the complexity of music editing, the sound is loud and clear. In can improve the human-computer interaction experiment of embedded products.

micro-controllers; buzzer; music; C#; WPF

TP368

A

10.19358/j.issn.1674- 7720.2016.21.006

林鵬,尹紹杰. 嵌入式系統(tǒng)中高級提示音的設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2016,35(21):20-23.

2016-08-03)

林鵬(1989-),男,本科,助理工程師,主要研究方向:嵌入式系統(tǒng)應(yīng)用、電力電子技術(shù)。

尹紹杰(1986-),男,本科,助理工程師,主要研究方向:電力電子技術(shù)、嵌入式系統(tǒng)應(yīng)用。

猜你喜歡
蜂鳴器音符串口
電動自行車產(chǎn)品車速提示音檢測現(xiàn)狀和整改技術(shù)研究(2)
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
掌控板制作簡易鋼琴
美妙音符
春天的音符
單片機驅(qū)動蜂鳴器的程序設(shè)計
豐田凱美瑞240V車間隙警告蜂鳴器異常鳴響
數(shù)字電源內(nèi)部數(shù)據(jù)傳輸?shù)拇谕ㄐ欧椒▽崿F(xiàn)
USB接口的多串口數(shù)據(jù)并行接收方法探索
串口技術(shù)的實物調(diào)試和虛擬仿真聯(lián)合教學模式
上林县| 沙雅县| 北川| 宁德市| 温泉县| 平武县| 嵊泗县| 布尔津县| 连平县| 托里县| 上虞市| 会东县| 中阳县| 墨竹工卡县| 富民县| 崇文区| 长宁区| 苍山县| 灵川县| 石棉县| 连平县| 日照市| 黄石市| 漯河市| 尉氏县| 湖州市| 三原县| 茶陵县| 灵寿县| 平武县| 津南区| 奉新县| 元阳县| 洪洞县| 金川县| 九台市| 宜宾市| 巩留县| 平塘县| 利川市| 大悟县|