付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1、單片機(jī)是如何發(fā)出音樂聲 原理: 聲音是通過震動(dòng)產(chǎn)生的。單片機(jī)對(duì)某一I/O引腳以一定的頻率循環(huán)置1 和清0,這一引腳便產(chǎn)生一定頻率的方波,該方法通過放大后作用于揚(yáng)聲器便產(chǎn)生一定頻率的聲音。若改變輸出方波的頻率,產(chǎn)生的聲音也就改變了。通過控制輸出方波的時(shí)間長(zhǎng)短,聲音的長(zhǎng)短也就得到控制,因此,根據(jù)樂譜,單片機(jī)就可以產(chǎn)生音樂。音樂中最關(guān)鍵的兩個(gè)要素是音調(diào)和節(jié)拍。 音調(diào)表示一個(gè)音符唱多高的頻率, 節(jié)拍表示一個(gè)音符唱多長(zhǎng)的時(shí)間。,一、單鍵演奏一組音符,1、單片機(jī)是如何發(fā)出音樂聲 一首音樂是由很多音符組合而成的,一個(gè)音符代表了一種頻率的樂聲,通過不同頻率樂聲的組合,就可以產(chǎn)生一首音樂了。這就是電子音樂的
2、基本方法。 單片機(jī)可以通過定時(shí)器生成不同頻率的信號(hào),按照音樂音符的頻率來生成各種頻率的信號(hào),并將其按照音樂構(gòu)建好,然后將信號(hào)通過電聲器件轉(zhuǎn)換為聲波,這樣單片機(jī)就能發(fā)出一段音樂的聲音了。,一、單鍵演奏一組音符,2、音調(diào)的確定 音調(diào)就是我們常說的音高。它是由頻率來確定的!我們可以查出各個(gè)音符所對(duì)應(yīng)的相應(yīng)的頻率,那么現(xiàn)在就需要我們來用51來發(fā)出相應(yīng)頻率的聲音! 我們常采用的方法就是通過單片機(jī)的定時(shí)器定時(shí)中斷,將單片機(jī)上對(duì)應(yīng)蜂鳴器的 I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時(shí)器預(yù)置不同的定時(shí)值就可實(shí)現(xiàn)。那么怎樣確定一個(gè)頻率所對(duì)應(yīng)的定時(shí)器
3、的定時(shí)值呢?,一、單鍵演奏一組音符,2、音調(diào)的確定 例如:中音DO的頻率為523Hz,周期為:T=1/f=1912us 單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O 口來回取反的時(shí)間應(yīng)即半個(gè)周期為:t=T/2=956us 這個(gè)時(shí)間t 就是單片機(jī)上定時(shí)器應(yīng)有的中斷觸發(fā)時(shí)間。 只要將定時(shí)器的定時(shí)時(shí)間設(shè)置為956us,就可以產(chǎn)生頻率為523Hz的方波信號(hào)。 一般情況下,單片機(jī)奏樂時(shí),其定時(shí)器為工作方式1,設(shè)振蕩器頻率為f,則定時(shí)器的予置初值由下式來確定: t=(216-X)*(12/f),一、單鍵演奏一組音符,2、音調(diào)的確定 因此定時(shí)器的高低計(jì)數(shù)器的初值為: TH =X/ 256 = ( 216 t* f/12) /
4、 256 TL = X % 256 = (216t* f/12) %256,一、單鍵演奏一組音符,C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照表如圖所示:,2、音調(diào)的確定 一般我們要為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。 uint code tab=63628,63835,64021,64103, 64260,64400,64524,64580, 64684,64777,64820,64898, 64968,95030,65058,65110;,一、單鍵演奏一組音符,實(shí)例演示: 要求:用一只單鍵產(chǎn)生一組音符的聲音,發(fā)聲從低音階向高音階進(jìn)展,可以通過虛擬示波器觀察到單片機(jī)產(chǎn)生的方
5、波的周期變化。單片機(jī)演奏音樂的電路只需要單片機(jī)和聲音播放電路,電路原理圖如圖所示。,一、單鍵演奏一組音符,三極管,蜂鳴器,一、單鍵演奏一組音符,一、單鍵演奏一組音符,節(jié)拍的實(shí)現(xiàn): 在一張樂譜中,我們經(jīng)常會(huì)看到這樣的表達(dá)式,如1=C (4/4) 、1=G(3/4) 等等,這里1=C (4/4),1=G(3/4) 表示樂譜的曲調(diào),與前面所談的音調(diào)有很大的關(guān)聯(lián),4/4、3/4 就是用來表示節(jié)拍的。以3/4 為例加以說明,它表示樂譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。,二、演奏一首音樂,其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時(shí)長(zhǎng)為四分音符的一半,即為八分音符長(zhǎng),3、4的時(shí)長(zhǎng)
6、為八分音符的一半,即為十六分音符長(zhǎng),5的時(shí)長(zhǎng)為四分音符的一半,即為八分音符長(zhǎng),6的時(shí)長(zhǎng)為四分音符長(zhǎng)。,二、演奏一首音樂,樂曲的數(shù)據(jù),一般寫入數(shù)據(jù)表,表中每三個(gè)數(shù)字,說明了一個(gè)音符,它們分別代表: 第一個(gè)數(shù)字是音符的數(shù)值1234567之一,代表多來咪.; 第二個(gè)數(shù)字是123之一,代表低音、中音、高音; 第三個(gè)數(shù)字是時(shí)間長(zhǎng)度,以半拍為單位。 樂曲數(shù)據(jù)表的結(jié)尾是三個(gè)0。 樂譜中數(shù)字上面帶點(diǎn)表示高音,下面帶點(diǎn)表示低音。什么都不帶表示中音。 下劃線:?jiǎn)蝹€(gè)數(shù)字是四分音符,兩個(gè)數(shù)字下畫一條線是八分音符了。 感興趣的同學(xué)應(yīng)該去查看樂譜相關(guān)的知識(shí)。,二、演奏一首音樂,據(jù)此就可以寫出送別前二小節(jié)的數(shù)據(jù)表: cod
7、e unsigned char sszymmh = 5, 2, 2, 3, 2, 1, 5, 2, 1, 1, 3, 4, /嗦,中音,2個(gè)半拍;咪,中音,1個(gè)半拍;嗦,中音,1個(gè)半拍;哆,高音,4個(gè)半拍 6, 2, 2, 1, 3, 2, 5, 2, 4, /啦,中音,2個(gè)半拍;哆,高音,1個(gè)半拍;嗦,中音,4個(gè)半拍 0, 0, 0;,二、演奏一首音樂,單片機(jī)演奏音樂的電路只需要單片機(jī)和聲音播放電路,電路原理圖如圖所示。,二、演奏一首音樂,/*演奏“世上只有媽媽好”*/ #include sbit speaker = P30;unsigned char timer0h, timer0l, t
8、ime;/-/單片機(jī)晶振采用11.0592MHz,二、演奏一首音樂,/各種音符頻率所對(duì)應(yīng)的、半周期的定時(shí)時(shí)間初始值。 / 頻率-半周期數(shù)據(jù)表 高八位 code unsigned char FREQH = 0 xF2, 0 xF3, 0 xF5, 0 xF5, 0 xF6, 0 xF7, 0 xF8, /低音1234567 0 xF9, 0 xF9, 0 xFA, 0 xFA, 0 xFB, 0 xFB, 0 xFC, 0 xFC,/1,2,3,4,5,6,7,i 0 xFC, 0 xFD, 0 xFD, 0 xFD, 0 xFD, 0 xFE, /中音 234567 0 xFE, 0 xFE,
9、 0 xFE, 0 xFE, 0 xFE, 0 xFE, 0 xFF; /高音 1234567 / 頻率-半周期數(shù)據(jù)表 低八位code unsigned char FREQL = 0 x42, 0 xC1, 0 x17, 0 xB6, 0 xD0, 0 xD1, 0 xB6, /低音1234567 0 x21, 0 xE1, 0 x8C, 0 xD8, 0 x68, 0 xE9, 0 x5B, 0 x8F, /1,2,3,4,5,6,7,i 0 xEE, 0 x44, 0 x6B, 0 xB4, 0 xF4, 0 x2D, /中音音 234567 0 x47, 0 x77, 0 xA2, 0
10、xB6, 0 xDA, 0 xFA, 0 x16; /高音 1234567,二、演奏一首音樂,二、演奏一首音樂,/世上只有媽媽好數(shù)據(jù)表 要想演奏不同的樂曲, 只需要修改這個(gè)數(shù)據(jù)表code unsigned char sszymmh = 6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1, 5, 2, 1, /一個(gè)音符有三個(gè)數(shù)字。前為第幾個(gè)音、中為第幾個(gè)八度、后為時(shí)長(zhǎng)(以半拍為單位)。/6, 2, 3 分別代表:, 中音, 個(gè)半拍;/5, 2, 1 分別代表:, 中音, 個(gè)半拍;/3, 2, 2 分別代表:, 中音, 個(gè)半拍;/5, 2, 2
11、 分別代表:, 中音, 個(gè)半拍;/1, 3, 2 分別代表:, 高音, 個(gè)半拍;/6, 2, 4, 3, 2, 2, 5, 2, 1, 6, 2, 1, 5, 2, 2, 3, 2, 2, 1, 2, 1,6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2, 3, 3, 2, 1, 5, 2, 2,5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2, 4, 5, 2, 3, 3, 2, 1,2, 2, 1, 1, 2, 1, 6, 1, 1, 1, 2, 1, 5, 1, 6, 0, 0, 0;/-,二、演奏一首音樂,/*定時(shí)器T0中
12、斷函數(shù)*/ void t0int() interrupt 1 /T0中斷程序,控制發(fā)音的音調(diào) TR0 = 0; /先關(guān)閉T0 speaker = !speaker; /輸出方波, 發(fā)音 TH0 = timer0h; /下次的中斷時(shí)間, 這個(gè)時(shí)間, 控制音調(diào)高低 TL0 = timer0l; TR0 = 1; /啟動(dòng)T0 /*延時(shí)程序控制發(fā)音的時(shí)長(zhǎng)*/ void delay(unsigned char t) /延時(shí)程序,控制發(fā)音的時(shí)間長(zhǎng)度 unsigned char t1; unsigned long t2; for(t1 = 0; t1 t; t1+) /雙重循環(huán), 共延時(shí)t個(gè)半拍 for(t
13、2 = 0; t2 8000; t2+); /延時(shí)期間, 可進(jìn)入T0中斷去發(fā)音 TR0 = 0; /關(guān)閉T0, 停止發(fā)音 ,二、演奏一首音樂,/*演奏一個(gè)音符*/ void song() /演奏一個(gè)音符 TH0 = timer0h; /控制音調(diào) TL0 = timer0l; TR0 = 1; /啟動(dòng)T0, 由T0輸出方波去發(fā)音 delay(time); /控制時(shí)間長(zhǎng)度 ,二、演奏一首音樂,/*演奏一個(gè)音符*/ void main(void) unsigned char k, i; TMOD = 1; /置T0定時(shí)工作方式1 ET0 = 1; /開T0中斷 EA = 1; /開CPU中斷 whi
14、le(1) i = 0; time = 1; while(time) k = sszymmhi + 7 * sszymmhi + 1 - 1; /第i個(gè)是音符, 第i+1個(gè)是第幾個(gè)八度 timer0h = FREQHk; /從數(shù)據(jù)表中讀出頻率數(shù)值 timer0l = FREQLk; /實(shí)際上, 是定時(shí)的時(shí)間長(zhǎng)度 time = sszymmhi + 2; /讀出時(shí)間長(zhǎng)度數(shù)值 i += 3; song(); /發(fā)出一個(gè)音符 ,課后思考: 增加一個(gè)按鍵控制選播多首音樂? 也可以增加一個(gè)數(shù)碼管用于顯示正在播放的是第幾首歌曲?,(1)任務(wù)要求: 采用單片機(jī)控制方式,設(shè)計(jì)制造電子琴,能夠通過串口對(duì)鍵盤進(jìn)行
15、簡(jiǎn)單調(diào)音控制。電子琴具有16只音樂輸入鍵盤,可以進(jìn)行簡(jiǎn)單的音樂演奏。LED數(shù)碼管能顯示按下的鍵盤,實(shí)現(xiàn)單片機(jī)電子琴和PC之間的通信,能通過PC向單片機(jī)發(fā)送數(shù)據(jù)指令,實(shí)現(xiàn)對(duì)鍵盤所對(duì)應(yīng)的高低音調(diào)整,并將PC所發(fā)送數(shù)據(jù)顯示出來。各工作小組對(duì)鍵盤調(diào)音的上調(diào)和下調(diào)指令碼分別為0-9和A-J。,三、簡(jiǎn)易電子琴設(shè)計(jì),(2)方案框圖 根據(jù)任務(wù)要求,單片機(jī)電子琴主控芯片為8051單片機(jī),有16只音符輸入鍵盤,可以從PC輸入控制數(shù)碼,輸入數(shù)碼通過串口傳送給單片機(jī),通過控制碼能調(diào)整音鍵的音階,并能顯示從PC輸入的數(shù)碼,用LED數(shù)碼管顯示音鍵名。電子琴方案框圖如圖所示。,三、簡(jiǎn)易電子琴設(shè)計(jì),單 片 機(jī),PC串行輸入數(shù)
16、碼,矩陣鍵盤,時(shí)鐘復(fù)位電源,LED顯示鍵盤名,中斷顯示輸入數(shù)碼,聲頻播放,(2)硬件電路 輸入鍵盤設(shè)計(jì): 矩陣鍵盤:4*4=16只按鍵,P1口接矩陣鍵盤 采用虛擬終端VIRTUAL TERMINAL模擬PC的作用。 虛擬終端接單片機(jī)串口,單片機(jī)的發(fā)送端接虛擬終端接收端,單片機(jī)的接收端連虛擬終端發(fā)送端 P3.7端輸出音頻信號(hào),并連接虛擬示波器以測(cè)試音頻方波的周期,觀察控制數(shù)碼的調(diào)音效果。 P0端口接LED數(shù)碼管顯示音鍵名。 電子琴電路原理圖如圖所示:,三、簡(jiǎn)易電子琴設(shè)計(jì),三、簡(jiǎn)易電子琴設(shè)計(jì),(3)軟件設(shè)計(jì)流程圖-電子琴主程序流程圖,三、簡(jiǎn)易電子琴設(shè)計(jì),初始化,是否有鍵按下,鍵盤掃描,識(shí)別按下鍵的
17、列值,鍵盤掃描,識(shí)別按下鍵的行值,根據(jù)鍵值和控制碼,鍵音調(diào)整,停止定時(shí)器,關(guān)閉播放,Y,N,啟動(dòng)定時(shí)器,生成方波信號(hào)播放音頻,(3)軟件設(shè)計(jì)流程圖電子琴串行通信流程圖,三、簡(jiǎn)易電子琴設(shè)計(jì),串行中斷入口,是否收到數(shù)據(jù)?,讀取數(shù)據(jù),清除接收標(biāo)志,鍵盤向下調(diào)音,Y,是否有下調(diào)控制碼?,是否有上調(diào)控制碼?,鍵盤向上調(diào)音,發(fā)送數(shù)據(jù),清除發(fā)送標(biāo)志,Y,N,N,N,Y,(4)源程序編寫 根據(jù)單片機(jī)串行通信的編寫步驟,首先是編寫定時(shí)器和串口的初始化。 串口工作在方式1,允許接收數(shù)據(jù): SCON=0 x50; 定時(shí)器T0工作于方式1,T1工作于方式2: TMOD=0 x21; 波特率為9600,時(shí)鐘頻率為11.0592MHz,定時(shí)器初值TH1=TL1=0 xfd; 開中斷: EA=1;ET0=1;ET1=1;,三、簡(jiǎn)易電子琴設(shè)計(jì),(4)源程序編寫 矩陣鍵盤采用掃描方式判別按鍵是否按下。首先看是否有鍵按下,若有鍵按下,再判別按鍵的行列位置,根據(jù)行列位置得到按鍵的鍵值,將鍵名送LED
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電車常規(guī)知識(shí)試題及答案
- 大一法律基礎(chǔ)試題及答案
- 中共湖州市委統(tǒng)戰(zhàn)部關(guān)于公開選調(diào)事業(yè)單位工作人員3人考試備考題庫(kù)必考題
- 中央財(cái)經(jīng)大學(xué)金融學(xué)院行政崗招聘1人(非事業(yè)編制)考試備考題庫(kù)附答案
- 北京市房山區(qū)衛(wèi)生健康委員會(huì)所屬事業(yè)單位面向應(yīng)屆畢業(yè)生(含社會(huì)人員)招聘110人備考題庫(kù)必考題
- 南充市經(jīng)濟(jì)合作和外事局關(guān)于下屬事業(yè)單位2025年公開選調(diào)工作人員的備考題庫(kù)必考題
- 四川天府新區(qū)黨工委管委會(huì)工作機(jī)構(gòu)所屬事業(yè)單位2025年下半年面向全國(guó)公開選調(diào)工作人員(30人)參考題庫(kù)附答案
- 宜賓學(xué)院2025年公開選調(diào)工作人員(2人)參考題庫(kù)附答案
- 撫州市臨川區(qū)2025年招聘城市社區(qū)工作者(專職網(wǎng)格員)【106人】考試備考題庫(kù)必考題
- 新干縣人民醫(yī)院公開招聘見習(xí)崗專業(yè)技術(shù)人員【18人】參考題庫(kù)附答案
- 高考物理一輪復(fù)習(xí)重難點(diǎn)逐個(gè)突破專題71旋轉(zhuǎn)圓模型放縮圓模型平移圓模型(原卷版+解析)
- 幼兒園大班社會(huì)課件:《我是中國(guó)娃》
- 重慶市萬州區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試卷+
- 冰雕雪雕工程投標(biāo)方案(技術(shù)標(biāo))
- 內(nèi)科質(zhì)控會(huì)議管理制度
- 鄭州電力高等專科單招職能測(cè)試題
- 魯奇加壓氣化爐的開、停車操作課件
- 美國(guó)怡口全屋水處置介紹
- 常用實(shí)驗(yàn)室檢查血常規(guī)演示文稿
- 生命第一:?jiǎn)T工安全意識(shí)手冊(cè)
- cimatron紫藤教程系列g(shù)pp2運(yùn)行邏輯及block說明
評(píng)論
0/150
提交評(píng)論