單片機(jī)課程設(shè)計(jì)報(bào)告利用蜂鳴器播放音樂_第1頁
單片機(jī)課程設(shè)計(jì)報(bào)告利用蜂鳴器播放音樂_第2頁
單片機(jī)課程設(shè)計(jì)報(bào)告利用蜂鳴器播放音樂_第3頁
單片機(jī)課程設(shè)計(jì)報(bào)告利用蜂鳴器播放音樂_第4頁
單片機(jī)課程設(shè)計(jì)報(bào)告利用蜂鳴器播放音樂_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、-西安科技大學(xué)-成績課程設(shè)計(jì):嵌入式系統(tǒng)應(yīng)用題目名稱:利用蜂鳴器實(shí)現(xiàn)音樂播放功能姓 名:學(xué) 號(hào):完成時(shí)間:1設(shè)計(jì)的任務(wù)設(shè)計(jì)內(nèi)容:動(dòng)手焊接一個(gè)51單片機(jī)設(shè)計(jì)目標(biāo):利用單片機(jī)上的蜂鳴器實(shí)現(xiàn)音樂播放功能2設(shè)計(jì)的過程2.1基本結(jié)構(gòu)1.STC89C52RC在本次的試驗(yàn)中采用了 STC89C52R#片機(jī),STC89C52RC*片機(jī)是宏晶統(tǒng)8051單片機(jī),122.0V( 3V單片機(jī)),工9著通 8051的080MHz,-f-eHP。W Cl W Cl N W N N N科技推出的新一代高速/低功耗/超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳 弭番颼陀韋作也加5成守島3V( 5V單片機(jī))/3.8V 象痢¥

2、; 34°mHz$您孚踞實(shí)際工作頻率可達(dá)48MHZ;酣片應(yīng)用暇件冏療8K學(xué)UO0OOOOOOC-*L L n. tL 1 L口饑卜由仍卜9 G瑁們MI7 2的司H忡U E忡忙頃刊W W EMCINEEP3IP-40TNEp1"心卜小 BTlTIT ITi-T1-(1)口1-田血卻山由卜卜部 'E日"岱曹曾£5啤&曙£艾 STC89C52RCl片機(jī)的工作械d ho 典型功耗0.1吊A,可由外部布皤 空閑模式:典型功耗2mALD O N4 H FH CO « a貴返回后,繼續(xù)執(zhí)行原程序10?';(3) 正常工作模式

3、:典型功耗 4Ma7mA(4) 喚醒,適用丁水表、氣表等電池供電系統(tǒng)及便攜設(shè)備2.蜂鳴器及其工作原理:蜂鳴器按其結(jié)構(gòu)分主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。 接通電源后,振蕩器產(chǎn)生的音頻信號(hào)電流通過電磁線圈,使電磁線圈產(chǎn) 生磁場,振動(dòng)膜片在電磁線圈和磁鐵的相互作用下, 周期性地振動(dòng)發(fā)聲。 本實(shí)驗(yàn)采用的是電磁式蜂鳴器。蜂鳴器按其是否帶有信號(hào)源乂分為有源和無源兩種類型。有源蜂鳴 器只需要在其供電端加上額定直流電壓,其內(nèi)部的震蕩器就可以產(chǎn)生固 定頻率的信號(hào),驅(qū)動(dòng)蜂鳴器發(fā)出聲音。無源蜂鳴器可以理解成與喇叭一 樣,需要在其供電端上加上高低

4、不斷變化的電信號(hào)才可以驅(qū)動(dòng)發(fā)出聲音。 本實(shí)驗(yàn)采用的是有源蜂鳴器。P34FMQ(蜂鳴器與單片機(jī)連接電路圖)2.2軟件設(shè)計(jì)過程1.蜂鳴器發(fā)聲原理本實(shí)驗(yàn)由丁采用有源蜂鳴器,只需將引腳端口 P3M活零,蜂鳴 器即可發(fā)聲;P3A4置位,蜂鳴器停止發(fā)聲。采用置 1置0的方法只 能使蜂鳴器發(fā)聲或停止發(fā)聲,想要使蜂鳴器發(fā)出聲音,必須對(duì)蜂鳴 器發(fā)出聲音的音頻和節(jié)拍進(jìn)行控制。音調(diào):不同音高的樂音是用 C、D、E、F、G、A、B來表示,這7個(gè)字母就 是音樂的音名,它們一般依次唱成 DO、RE MI、FA SQ LA、SI,即唱 成簡譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀 音,這是唱曲時(shí)樂音

5、的發(fā)音,所以叫“音調(diào)”,即Ton&把C、D、E、F、 G、A、B這一組音的距離分成12個(gè)等份,每一個(gè)等份叫一個(gè)“半音”。 兩個(gè)首之間的距離有兩個(gè)“半首”,就叫“全首” 0在鋼琴等鍵盤樂器上, C-D、D- E、F- G、G-A、A-B兩音之間隔著一個(gè)黑鍵,他們之間的 距離就是全音;E-F、B-C兩音之間沒有黑鍵相隔,它們之間的距離就 是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的 左上角加上#號(hào)或者b號(hào)的叫變化音。#叫升記號(hào),表示把音在原來的 基礎(chǔ)上升高半音,b叫降記音,表示在原來的基礎(chǔ)上降低半音。例如高 音DO的頻率(1046HZ剛好是中音DO的頻率(523Hz

6、)的一倍,中音 DO的頻率( 523HZ岡收子是低音DO頻率(266H0的一倍;同樣的,高 音RE的頻率(1175HZ剛好是中音 RE的頻率(587Hz)的一倍,中音 RE的頻率(587HZ剛好是低音RE頻率(294 HZ)的一倍。節(jié)拍:節(jié)拍是讓音樂具有旋律(固定的律動(dòng)),而且可以調(diào)節(jié)各個(gè)音的快滿 度?!肮?jié)拍”,即Beat,簡單說就是打拍子,就像我們聽音樂不自主的隨之 拍手或跺腳。若1拍實(shí)0.5s,則1/4拍為0.125s。至于1拍多少s,并沒 有嚴(yán)格規(guī)定,就像人的心跳一樣,大部分人的心跳是每分鐘72下,有些 人快一點(diǎn),有些人慢一點(diǎn),只要聽的悅耳就好。音持續(xù)時(shí)間的長短即時(shí) 值,一般用拍數(shù)表小。

7、休止符表小暫停發(fā)首。1)控制發(fā)聲頻率要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),然后將此周 期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)這半個(gè)周期時(shí)間,每當(dāng) 計(jì)時(shí)到后就將輸出脈沖的I/O反相,然后重復(fù)計(jì)時(shí)此半周期時(shí)間再對(duì)I/O 反相,就可在I/O腳上得到此頻率的脈沖。利用STC89C52RC內(nèi)部定時(shí) 器使其工作在計(jì)數(shù)器模式MODE1下,改變計(jì)數(shù)值TH0及TL0從而產(chǎn)生 不同頻率。此外結(jié)束符和休止符可以分別用代碼00H和FFH來表示,若查表結(jié)果為0x00,則表示曲子終了;若查表結(jié)果為 0xff,則產(chǎn)生相應(yīng)的 停頓效果。以標(biāo)準(zhǔn)音高A為例,A的頻率是440Hz,周期T=1/440=2272us

8、=在占 空比為50%的情況下,導(dǎo)通時(shí)間=斷開時(shí)間=半周期t=2272us/2=1136us, 利用P3A4端口的位操作,經(jīng)過不斷地反相變換即可得到標(biāo)準(zhǔn)音高 A的音 頻脈沖。端口導(dǎo)通時(shí)間與斷開時(shí)的時(shí)間利用定時(shí)器實(shí)現(xiàn)。具體的方法是 將單片機(jī)定時(shí)器的中斷觸發(fā)時(shí)間設(shè)為半周期 t,這樣每隔半周期端口反 相,輸出連續(xù)的對(duì)應(yīng)音高的頻率。設(shè)晶振的頻率為f0,中斷觸發(fā)時(shí)間(半周期)為t,定時(shí)器工作在模 式1時(shí)計(jì)數(shù)器的初值為THL,高8位為THL低8位為TLo時(shí)鐘周期即 為1/f0,定時(shí)器每一次累加用去一個(gè)機(jī)器周期,一個(gè)機(jī)器周期包含12個(gè)時(shí)鐘周期,即定時(shí)器每次加一所用時(shí)間是12f0。定時(shí)器在模式1下計(jì)時(shí) 采用16

9、位數(shù),最大計(jì)數(shù)為2八16-1 (65535),再次加一(65536)溢出觸 發(fā)中斷。根據(jù)以上分析可得如下關(guān)系:音頻對(duì)應(yīng)定時(shí)器初值的高 8位TH=THL/(2A8)=(65536-t*f/12)/256;音頻對(duì)應(yīng)定時(shí)器初值的低 8位TL=THL%(2A8)=(65536-t*f/12)%256;附:八度12音階定時(shí)器初值表(只含自然音)低音音名頻率Hz品振12MHz品振11.0592中音音名頻率Hz品振12MHz品振11.0592同曰曰名頻率Hz品振12MHz品振11.0592MHzMHzMHzDo2620xF8850xF91BDo5230xFC430xFC8EDo10460xFE210xFE4

10、7Re2940xF95A0xF9DFRe5870xFCAD0xFCEDRe11750xFE560xFE76Mi3300xFA130xFA8AMi6590xFD0A0xFD43Mi13180xFE850xFEA1Fa3490xFA680xFAD8Fa6980xFD340xFD6AFa13970xFE9A0xFEC7So3920xFB040xFB68So7840xFD820xFDB3So15680xFEC10xFED9La4400xFB900xFBE9La8800xFDC80xFDF3La17600xFEE40xFEF9Si4940xFC0C0xFC5BSi9880xFE060xFE2DSi197

11、60xFF030xFF162) 控制發(fā)聲節(jié)拍每個(gè)音符的節(jié)拍可通過延時(shí)一定的時(shí)間來實(shí)現(xiàn),在具體實(shí)現(xiàn)時(shí)需要 有一個(gè)基本的帶參延時(shí)程序,用丁主函數(shù)根據(jù)不同的音符調(diào)用不同的時(shí) 延。若以十六分之一音符的時(shí)長為基本延時(shí)時(shí)間,則十六分音符只需調(diào) 用一次延時(shí)程序,八分音符則需調(diào)用兩次延時(shí)程序,以此類推。3) 簡譜及其編碼*簡譜知識(shí)音階CDEFGAB唱名doremifasolasi數(shù)字1234567C1音符音符用數(shù)字1至7表示。這7個(gè)數(shù)字就等丁大調(diào)的自然音階。如果 是C大調(diào),加上音名,就會(huì)是這樣:八度如果是高一個(gè)八度,就會(huì)在數(shù)字上方加上一點(diǎn)。如果是低一個(gè)八度, 就會(huì)數(shù)字下方加上一點(diǎn)。在中間的那一個(gè)八度就什么也不

12、用加。如果要再高一個(gè)八度,就在上方垂直加上兩點(diǎn)(如:5);要再低一個(gè)八度,就在5一下方垂直加上兩點(diǎn)(如:),如此類推。見下表所?。捍笳{(diào)12 2 1S34 5_bJ . 1 1 1H712 3ff 5 6 7li 2105 6 7iil- IH小調(diào)677 * 11 .1 M 11 2345671234516 7i 2 056 5 63)音長通常只有數(shù)字的是四分音符。數(shù)字下加一條橫線,就可令四分音符 的長度減半,即成為八分音符;兩條橫線可令八分音符的長度減半,即 成為十六分音符,余此類推;簡單來說,下加橫數(shù)目與五譜的符尾 數(shù)目相對(duì)應(yīng)。數(shù)字后方的橫線延長音符,每加一條橫線延長一個(gè)四分音 符的長度。正

13、如五譜的附點(diǎn)一樣,數(shù)字后方加一點(diǎn)會(huì)將音符長度增加,(4休止符休止符用“噪表示。比四分休止符長,就只需在每一個(gè)四分休止符 再多加一個(gè)“0;不需在后方加上橫線。若整個(gè)小節(jié)均是休止?fàn)顟B(tài)的話, 就在每個(gè)四分音符加一個(gè)“0;就像是3拍4就寫成“| 0 0 0 | ,而4拍4 就寫成“| 0 0 0 0 |。 ”忑無音高音符就像敲擊樂的樂器那樣是沒有音高的,這時(shí),簡譜就需要用“X戡“x” 表達(dá)。例如啦啦隊(duì)拍手時(shí),簡譜上就需如此表達(dá):44> >拍手:| X X X X X | X X X X 0 X X |(6小節(jié)線正如五經(jīng)譜一樣,小節(jié)與小節(jié)之間以縱(稱小節(jié)線)分隔,樂曲終止 以一粗一細(xì)的直經(jīng)表

14、示(但是一般不分粗細(xì));重復(fù)樂段以縱經(jīng)后兩點(diǎn)表示 開始,縱前兩點(diǎn)表示終止。拍號(hào)的表達(dá)方式為:“Z4”、"/4”、74”、78”等等。拍號(hào)一般都是置 丁調(diào)號(hào)的后方。(8變調(diào)與調(diào)號(hào)表示調(diào)號(hào)有兩種方法:可以直接寫“C調(diào)”,W、調(diào)”或“Key:G”“Key: Crn。亦可寫活楚主音代表哪一個(gè)音,例如 1=C,就是C大調(diào)(大調(diào)以1 為主音)。6=C就是C小調(diào)(小調(diào)以6為主音)。2=D就是D多利安調(diào)(多 利安調(diào)以2為主音)。五線譜有升降號(hào),簡譜同樣有升降號(hào)。在簡譜中, 若需表達(dá)升降號(hào),就把符號(hào)加在數(shù)字1至7的前方,讓該音升高或降低。 若要把升降號(hào)加在調(diào)號(hào)跟和弦CDEFGA由個(gè)字母,就須加在它們的

15、后方。 在五經(jīng)譜中,C小調(diào)要把B-E-A三個(gè)音降低半音。所以表達(dá)它的和聲小調(diào) 時(shí),就會(huì)把一個(gè)還原號(hào)放在 B?前面。簡譜就一定得寫?5,因?yàn)?不能 下降。簡譜延音線(Tie)跟圓滑g! (slur)都是跟五線譜相同,一定得置在 數(shù)字上方。表達(dá)跳音(staccato)時(shí)需要特別小心,因?yàn)楹苋菀讜?huì)跟低八 度的那一點(diǎn)混淆,因此在表達(dá)跳音時(shí)把那一點(diǎn)寫得粗點(diǎn)及低點(diǎn)。*簡譜編碼將簡譜中的每個(gè)音符進(jìn)行編碼,每個(gè)音符用一個(gè)unsigned char字符類型表示,簡譜可用一個(gè)unsigned char字符數(shù)組表示。字符的前四位表示音頻,可以 表示0-f共十六個(gè)音符。本實(shí)驗(yàn)中采用了中音區(qū)和高音區(qū)。中音do-si分別

16、編碼為 17,高音do-si分別編碼為8E,停頓編為0。字符的后四位表示節(jié)拍,節(jié)拍以 十六分音符為單位(在本程序中為 165ms), 一拍即四分音符等丁 4個(gè)十六分音 符,編為4,其它的播放時(shí)間以此類推。以0xff作為曲譜的結(jié)束標(biāo)志。程序從數(shù)組 中取出一個(gè)數(shù),然后分離出高 4位得到音調(diào),將值賦給定時(shí)器0,得到音調(diào); 接著分離出該數(shù)的低4位,得到節(jié)拍。本實(shí)驗(yàn)中播放音樂使用簡譜如下:宛八戒昔膜婦S &藍(lán) I函 1 Itsmi 3 I幽迪 6 |$ 5 66 63 5SB | 6Ji 5句促踞& 沮3 12 22Z 3再5 9 i« 9 斐幽1 i 2 2 |松眼整啊-II

17、* . 將其編碼成:uchar code zbjbxf=( 0x64,0xA3,0xC1,0xA2,0x62,0x84,0x61,0x81,0x61,0xA4,0xA1,0x91,0xA1,0x81,0x64,0xA3,0xC1,0xD2,0xD2,0xD2,0xA2,0xC4,0xA1,0xC1,0xA1,0xC1,0xD2,0xD2,0xD2,0xA2,0x C4,0xC2,0x62,0xC2,0x62,0xA2,0xA2,0x84,0x94,0x94,0x92,0x81,0x91,0xA2,0xC2,0xD4 ,0xE4,0xA4,0xE4,0xA2,0xE2,0xA2,0xE2,0xA

18、2,0xA2,0x84,0x94,0x94,0x92,0x81,0x91,0x A2,0xC2,0xD8;2.3程序流圖及說明開始定義變量大循決temp.i* JP !1F20E3年1月&日初始化:定時(shí)器晉散蛆中取出音符 成給臨時(shí)變量TM0D=0x01IE=0x82,判斷簡譜是杏彳Mg終點(diǎn)jp=temp/16、temp-zbjbxfCi:據(jù)音頻竊佰在初佰散 中找至師同的定時(shí)器, 初值的信弓位饋位1關(guān)閉雨器;矢團(tuán)蜂昭器白散值進(jìn)彳 精與蜂鳴 日延遲'刃弓延iR后關(guān)閉'timel=chuzhi jp*2+l& TRO=1中斷服務(wù)程序TRO = 0fm=l結(jié)束delay

19、(temp%16 )TRO=Ofmldelay (5)i+十(主程序流程圖)程序代碼:#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit fm=P3A4;/Z蜂鳴器控制端口uchar timeh,timel;/Z用丁存放定時(shí)器的高 8位和低8位uchar code zbjbxf=/Z定義豬八戒背媳婦的簡譜數(shù)組 0x64,0xA3,0xC1,0xA2,0x62,0x84,0x61,0x81,0x61,0xA4,0xA1, 0x91,0xA1,0x81,0x64,0xA3,0xC1,0xD

20、2,0xD2,0xD2,0xA2,0xC4, 0xA1,0xC1,0xA1,0xC1,0xD2,0xD2,0xD2,0xA2,0xC4,0xC2,0x62, 0xC2,0x62,0xA2,0xA2,0x84,0x94,0x94,0x92,0x81,0x91, 0xA2,0xC2,0xD4,0xE4,0xA4,0xE4,0xA2,0xE2,0xA2,0xE2,0xA2,0xA2,0x84,0x94,0x94,0x92,0x81,0x91,0xA2,0xC2,0xD8;/適合12M的晶振定時(shí)器初值表,高低 8位分開uchar code chuzhi=0xff,0xff,/ 占位0xFC,0x8E,

21、/中央 C調(diào) 1-70xFC,0xED,0xFD,0x43,0xFD,0x6A,0xFD,0xB3,0xFD,0xF3,0xFE,0x2D,0xFE,0x47,偏八度 1-70xFE,0x76,0xFE,0xA1,0xFE,0xC7,0xFE,0xD9,0xFE,0xF9,0xFF0x16;void timer0() interrupt 1/定時(shí)器0中斷服務(wù)程序(TH0=timeh; /將timeh賦給計(jì)時(shí)器的高8位TL0=timel; /將timel賦給計(jì)時(shí)器的低8位fm=fm;/定時(shí)器每次到時(shí)將蜂鳴器反相void delay(uint z)/延時(shí)165MS,即十六分音符( uint y;f

22、or(z;z>0;z-)for(y=19000;y>0;y-);/大致時(shí)間void delay1(uint z) 延時(shí) IMS( uint y;for(z;z>0;z-)for(y=112;y>0;y-);/ 大致時(shí)間void main()(uint temp; /存放簡譜數(shù)組中的每一個(gè)音符的臨時(shí)變量uchar i=0;uchar jp; /jp用丁取出temp中的高8位和低8位TMOD=0x01;/設(shè)置定時(shí)器T0工作丁方式1IE=0x82; 允許T0中斷while(1)(temp=zbjbxfi;if(temp=0xff)break;jp=temp/16; 取數(shù)的高4位,音頻數(shù)值if(jp!=0)(timeh=chuzhijp*2;/構(gòu)造定時(shí)器初值高8位timel=chuzhijp*2+1; /構(gòu)造定時(shí)器初值低8位TR0=1;開定時(shí)器else(TR0=0;/關(guān)定時(shí)器fm=1;關(guān)蜂鳴器delay(temp%16); 取數(shù)的低4位,節(jié)拍(音符總時(shí)延)TR0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論