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

下載本文檔

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

文檔簡介

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

2、波輸入進(jìn)蜂鳴器就會產(chǎn)生聲音,通過控制方波的頻率、時間,就能產(chǎn)生簡單的音樂。一般說來,單片機(jī)演奏音樂基本都是單音頻率,因此單片機(jī)奏樂只需控制音調(diào)和節(jié)拍。(1)音調(diào)的確定音調(diào)是由頻率來確定的。通過單片機(jī)的定時器定時中斷,將單片機(jī)上對應(yīng)蜂鳴器的I/O口來回取反,從而讓蜂鳴器發(fā)出不同頻率的聲音。只需將定時器給以不同的定時值就可實現(xiàn)。通過延時,即可發(fā)出所需要的頻率。(2)節(jié)拍的確定一拍的時長大約為400500ms,每個音符的時長通過節(jié)拍來計算。詳細(xì)見程序代碼。2.軟件設(shè)計相關(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= /音長代碼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ā)聲三、實驗過程及問題1.Keil開發(fā)過程(1)新建

8、“Project”,選擇單片機(jī)為“AT89C52”(2)新建c文件“music.c”,并添加到工程中(3)設(shè)置生成“HEX”文件,編譯(4)將生成的“HEX”文件燒錄到單片機(jī),檢驗(5)不斷修改完善2.編譯實驗相關(guān)問題(1)實際發(fā)音顫音重解決方法為修改蜂鳴器的驅(qū)動頻率.(2)實際節(jié)奏過快或者過慢 調(diào)整延時四、C51程序代碼(部分來源于網(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= /音長代碼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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論