單片機(jī)-利用蜂鳴器演奏音樂(lè)_第1頁(yè)
單片機(jī)-利用蜂鳴器演奏音樂(lè)_第2頁(yè)
單片機(jī)-利用蜂鳴器演奏音樂(lè)_第3頁(yè)
單片機(jī)-利用蜂鳴器演奏音樂(lè)_第4頁(yè)
單片機(jī)-利用蜂鳴器演奏音樂(lè)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)三-利用蜂鳴器演奏音樂(lè)一、實(shí)驗(yàn)?zāi)康?.了解BlueSkyC51單片機(jī)實(shí)驗(yàn)板中蜂鳴器的硬件電路2.學(xué)會(huì)利用蜂鳴器實(shí)現(xiàn)音樂(lè)的演奏3.掌握蜂鳴器實(shí)現(xiàn)音樂(lè)演奏的編程二、實(shí)驗(yàn)硬件設(shè)計(jì)及電路1. BlueSkyC51單片機(jī)實(shí)驗(yàn)板2.單片機(jī)最小系統(tǒng)3.蜂鳴器電路連接三極管主要是做驅(qū)動(dòng)用的。因?yàn)閱纹瑱C(jī)的IO口驅(qū)動(dòng)能力不夠讓蜂鳴器發(fā)出聲音,所以我們通過(guò)三極管放大驅(qū)動(dòng)電流,從而可以讓蜂鳴器發(fā)出聲音,你要是輸出高電平,三極管導(dǎo)通,集電極電流通過(guò)蜂鳴器讓蜂鳴器發(fā)出聲音,當(dāng)輸出低電平時(shí),三極管截止,沒(méi)有電流流過(guò)蜂鳴器,所以就不會(huì)發(fā)出聲音。三、實(shí)驗(yàn)原理1.音調(diào)及節(jié)拍用一個(gè)口,輸出方波,這個(gè)方

2、波輸入進(jìn)蜂鳴器就會(huì)產(chǎn)生聲音,通過(guò)控制方波的頻率、時(shí)間,就能產(chǎn)生簡(jiǎn)單的音樂(lè)。一般說(shuō)來(lái),單片機(jī)演奏音樂(lè)基本都是單音頻率,因此單片機(jī)奏樂(lè)只需控制音調(diào)和節(jié)拍。(1)音調(diào)的確定音調(diào)是由頻率來(lái)確定的。通過(guò)單片機(jī)的定時(shí)器定時(shí)中斷,將單片機(jī)上對(duì)應(yīng)蜂鳴器的I/O口來(lái)回取反,從而讓蜂鳴器發(fā)出不同頻率的聲音。只需將定時(shí)器給以不同的定時(shí)值就可實(shí)現(xiàn)。通過(guò)延時(shí),即可發(fā)出所需要的頻率。(2)節(jié)拍的確定一拍的時(shí)長(zhǎng)大約為400500ms,每個(gè)音符的時(shí)長(zhǎng)通過(guò)節(jié)拍來(lái)計(jì)算。詳細(xì)見(jiàn)程序代碼。2.軟件設(shè)計(jì)相關(guān)(1)頭文件#include<reg51.h>#define uint unsigned int#define uch

3、ar unsigned char#define ulong unsigned longsbit beep=P14; /蜂鳴器與P1.4口連接(2)歌曲曲譜uchar code diaodata30= /音調(diào)代碼0x10,0x0e,0x0c,0x10,0x0e,0x0c,0x10,0x0e,0x10,0x0c,0x10,0x15,0x13,0x10,0x13,0x15,0x15,0x13,0x15,0x13,0x10,0x0e,0x0c,0x0e,0x0e,0x10,0x0e,0x0c,0x0e,0x00;uchar code jiedata30= /音長(zhǎng)代碼0x04,0x04,0x08,0x0

4、6,0x02,0x08,0x04,0x04,0x04,0x04,0x02,0x06,0x08,0x02,0x02,0x04,0x04,0x04,0x04,0x08,0x02,0x02,0x04,0x04,0x02,0x02,0x04,0x04,0x0c,0x00;(3)音階表uchar code freq36*2= /音階碼表0xf7,0xd8, /440hz , 1 /00xf8,0x50, /466hz , 1# /10xf8,0xbc, /494hz , 2 /20xf9,0x26, /524hz , 2# /30xf9,0x85, /554hz , 3 /40xf9,0xe5, /58

5、8hz , 4 /50xfa,0x3d, /622hz , 4# /60xfa,0x92, /660hz , 5 /70xfa,0xdd, /698hz , 5# /80xfb,0x29, /740hz , 6 /90xfb,0x70, /784hz , 6# /100xfb,0xb0, /830hz , 7 /110xfb,0xef, /880hz , 1 /120xfc,0x29, /932hz , 1# /130xfc,0x62, /988hz , 2 /140xfc,0x95, /1046hz, 2# /150xfc,0xc7, /1108hz, 3 /160xfc,0xf5, /11

6、74hz, 4 /170xfd,0x20, /1244hz, 4# /180xfd,0x4c, /1318hz, 5 /190xfd,0x72, /1396hz, 5# /200xfd,0x97, /1480hz, 6 /210xfd,0xbb, /1568hz, 6# /220xfd,0xdc, /1662hz, 7 /230xfd,0xfb, /1769hz, 1 /240xfe,0x18, /1864hz, 1# /250xfe,0x34, /1976hz, 2 /260xfe,0x4e, /2092hz, 2# /270xfe,0x67, /2218hz, 3 /280xfe,0x7d

7、, /2350hz, 4 /290xfe,0x94, /2488hz, 4# /300xfe,0xa8, /2639hz, 5 /310xfe,0xbc, /2794hz, 5# /320xfe,0xcf, /2960hz, 6 /330xfe,0xe0, /3136hz, 6# /340xfe,0xf1, /3322hz, 7 /35;(4) 音符發(fā)生程序(中斷服務(wù)程序)void timer0() interrupt 1 /用于產(chǎn)生音符的T0中斷服務(wù)程序 TH0=th0_f; TL0=tl0_f; beep=beep; /取反beep引腳,發(fā)聲三、實(shí)驗(yàn)過(guò)程及問(wèn)題1.Keil開(kāi)發(fā)過(guò)程(1)新建

8、“Project”,選擇單片機(jī)為“AT89C52”(2)新建c文件“music.c”,并添加到工程中(3)設(shè)置生成“HEX”文件,編譯(4)將生成的“HEX”文件燒錄到單片機(jī),檢驗(yàn)(5)不斷修改完善2.編譯實(shí)驗(yàn)相關(guān)問(wèn)題(1)實(shí)際發(fā)音顫音重解決方法為修改蜂鳴器的驅(qū)動(dòng)頻率.(2)實(shí)際節(jié)奏過(guò)快或者過(guò)慢 調(diào)整延時(shí)四、C51程序代碼(部分來(lái)源于網(wǎng)絡(luò))#include<reg51.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned longsbit beep=P14; /蜂鳴器與P1.4口連接

9、uchar th0_f; /中斷裝載T0高8位uchar tl0_f; /T0低8位uchar code freq36*2= /音階碼表0xf7,0xd8, /440hz , 1 /00xf8,0x50, /466hz , 1# /10xf8,0xbc, /494hz , 2 /20xf9,0x26, /524hz , 2# /30xf9,0x85, /554hz , 3 /40xf9,0xe5, /588hz , 4 /50xfa,0x3d, /622hz , 4# /60xfa,0x92, /660hz , 5 /70xfa,0xdd, /698hz , 5# /80xfb,0x29, /

10、740hz , 6 /90xfb,0x70, /784hz , 6# /100xfb,0xb0, /830hz , 7 /110xfb,0xef, /880hz , 1 /120xfc,0x29, /932hz , 1# /130xfc,0x62, /988hz , 2 /140xfc,0x95, /1046hz, 2# /150xfc,0xc7, /1108hz, 3 /160xfc,0xf5, /1174hz, 4 /170xfd,0x20, /1244hz, 4# /180xfd,0x4c, /1318hz, 5 /190xfd,0x72, /1396hz, 5# /200xfd,0x9

11、7, /1480hz, 6 /210xfd,0xbb, /1568hz, 6# /220xfd,0xdc, /1662hz, 7 /230xfd,0xfb, /1769hz, 1 /240xfe,0x18, /1864hz, 1# /250xfe,0x34, /1976hz, 2 /260xfe,0x4e, /2092hz, 2# /270xfe,0x67, /2218hz, 3 /280xfe,0x7d, /2350hz, 4 /290xfe,0x94, /2488hz, 4# /300xfe,0xa8, /2639hz, 5 /310xfe,0xbc, /2794hz, 5# /320xf

12、e,0xcf, /2960hz, 6 /330xfe,0xe0, /3136hz, 6# /340xfe,0xf1, /3322hz, 7 /35;uchar code diaodata30= /音調(diào)代碼0x10,0x0e,0x0c,0x10,0x0e,0x0c,0x10,0x0e,0x10,0x0c,0x10,0x15,0x13,0x10,0x13,0x15,0x15,0x13,0x15,0x13,0x10,0x0e,0x0c,0x0e,0x0e,0x10,0x0e,0x0c,0x0e,0x00;uchar code jiedata30= /音長(zhǎng)代碼0x04,0x04,0x08,0x06,0

13、x02,0x08,0x04,0x04,0x04,0x04,0x02,0x06,0x08,0x02,0x02,0x04,0x04,0x04,0x04,0x08,0x02,0x02,0x04,0x04,0x02,0x02,0x04,0x04,0x0c,0x00;void timer0() interrupt 1 /用于產(chǎn)生音符的T0中斷服務(wù)程序 TH0=th0_f; TL0=tl0_f; beep=beep; /取反beep引腳,發(fā)聲void main(void) uchar i,j,k=0; uint n; TMOD=0X01; /T0方式1 TR0=0; /關(guān)閉T0(不發(fā)聲) ET0=1; /允許T0中斷 EA=1;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論