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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上實驗三-利用蜂鳴器演奏音樂一、實驗目的1.了解BlueSkyC51單片機實驗板中蜂鳴器的硬件電路2.學會利用蜂鳴器實現音樂的演奏3.掌握蜂鳴器實現音樂演奏的編程二、實驗硬件設計及電路1. BlueSkyC51單片機實驗板2.單片機最小系統3.蜂鳴器電路連接三極管主要是做驅動用的。因為單片機的IO口驅動能力不夠讓蜂鳴器發出聲音,所以我們通過三極管放大驅動電流,從而可以讓蜂鳴器發出聲音,你要是輸出高電平,三極管導通,集電極電流通過蜂鳴器讓蜂鳴器發出聲音,當輸出低電平時,三極管截止,沒有電流流過蜂鳴器,所以就不會發出聲音。三、實驗原理1.音調及節拍用一個口,輸出方波,這個方

2、波輸入進蜂鳴器就會產生聲音,通過控制方波的頻率、時間,就能產生簡單的音樂。一般說來,單片機演奏音樂基本都是單音頻率,因此單片機奏樂只需控制音調和節拍。(1)音調的確定音調是由頻率來確定的。通過單片機的定時器定時中斷,將單片機上對應蜂鳴器的I/O口來回取反,從而讓蜂鳴器發出不同頻率的聲音。只需將定時器給以不同的定時值就可實現。通過延時,即可發出所需要的頻率。(2)節拍的確定一拍的時長大約為400500ms,每個音符的時長通過節拍來計算。詳細見程序代碼。2.軟件設計相關(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= /音調代碼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) 音符發生程序(中斷服務程序)void timer0() interrupt 1 /用于產生音符的T0中斷服務程序 TH0=th0_f; TL0=tl0_f; beep=beep; /取反beep引腳,發聲三、實驗過程及問題1.Keil開發過程(1)新建

8、“Project”,選擇單片機為“AT89C52”(2)新建c文件“music.c”,并添加到工程中(3)設置生成“HEX”文件,編譯(4)將生成的“HEX”文件燒錄到單片機,檢驗(5)不斷修改完善2.編譯實驗相關問題(1)實際發音顫音重解決方法為修改蜂鳴器的驅動頻率.(2)實際節奏過快或者過慢 調整延時四、C51程序代碼(部分來源于網絡)#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= /音調代碼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 /用于產生音符的T0中斷服務程序 TH0=th0_f; TL0=tl0_f; beep=beep; /取反beep引腳,發聲void main(void) uchar i,j,k=0; uint n; TMOD=0X01; /T0方式1 TR0=0; /關閉T0(不發聲) ET0=1; /允許T0中斷 EA=1;

溫馨提示

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

評論

0/150

提交評論