基于51單片機音樂盒程序設(shè)計_第1頁
基于51單片機音樂盒程序設(shè)計_第2頁
基于51單片機音樂盒程序設(shè)計_第3頁
基于51單片機音樂盒程序設(shè)計_第4頁
基于51單片機音樂盒程序設(shè)計_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于51單片機音樂盒程序設(shè)計一、 功能設(shè)計說明1、電路設(shè)計實物圖矩陣鍵盤部分電路圖2、運行流程圖程序開始播放小蘋果歌曲判斷任意按鍵是否按下繼續(xù)播放小蘋果歌曲否是進入電子琴模式判斷K16按鍵是否按下播放完成是否3、電子琴模式按鍵對應(yīng)發(fā)音設(shè)計按鍵發(fā)音按鍵發(fā)音l K1l 低 1l K9l 中 2l K2l 低 2l K10l 中 3l K3l 低 3l K11l 中 4l K4l 低 4l K12l 中 5l K5l 低 5l K13l 中 6按鍵發(fā)音按鍵發(fā)音l K6l 低 6l K14l 中 7l K7l 低 7l K15l 高 1l K8l 中 1l K16l 重新播放小蘋果二、 硬件電路說明1

2、、 程序下載電路音樂盒電路圖ISP下載接口 本設(shè)計采用的單片機為AT89S52單片機,需使用ISP下載器進行下載程序,程序下載電路圖如圖中ISP1接口.2、 音樂發(fā)音電路IO口P10發(fā)出不同頻率的脈沖,則BUZZER產(chǎn)生各種不同的聲音,本設(shè)計采用12MHZ晶振,系統(tǒng)頻率1MHZ,定時器計數(shù)一個1us,其對應(yīng)關(guān)系如下表所示:音符頻率(HZ)簡譜碼(T值)音符頻率(HZ)簡譜碼(T值)低 1 DO26263628# 4 FA#74064860# 1 DO#27763731中 5 SO78464898低 2 RE29463853# 5 SO#83164934# 2 RE#31163928中 6 LA

3、88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE5

4、8764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765282計算方法:例如產(chǎn)生262HZ頻率(發(fā)音DO),周期T=1/262=3816 us,由于定時器中斷使IO不停取反,故周期T=3816/2=1908 us定時器初值N=65536-1908=63628TH0=63628/256TL0=65536%256三、 程序代碼說明1 、脈沖產(chǎn)生 采用定時器0溢出中斷產(chǎn)生脈沖,定時器初始化如下:TMOD = 0x01; /定時器0工作方式1

5、 ,即十六位計數(shù)器計數(shù)TR0 = 1; /啟動定時器ET0 = 1; /定時器0溢出中斷使能EA = 1; /總中斷使能 定時器0溢出中斷產(chǎn)生脈沖,void Timer0() interrupt 1代碼如下:TH0 = th0;TL0 = tl0;if(th0=0)BUZZER=1;/判斷停頓,有停頓不發(fā)音elseBUZZER = BUZZER;/無停頓發(fā)音2、音普規(guī)則:a、音普由一個字節(jié)十六進制數(shù)組成b、高4位代表節(jié)拍,一拍約400MS,將一拍分成8份c、低4位代表音符,一一對應(yīng)Note列表d、0x20代表歌曲結(jié)束符e、uint code Note=0,64580,64684,64777,6

6、4820,64898,64968,65030,/*中音*/ 63628,63853,64021,64103,64260,64400,64524,/*低音*/ 65058,65110,65157,65178,65217,65252,65282/*高音*/; 該列表為發(fā)音所對應(yīng)的定時器初裝值例如編寫如下一段音樂列表:0x83,0x81,0x82,0x8d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40 0x40表示停頓4*50MS/*你是我的小呀小蘋果*/3、 音普列表解讀while(Xiaopingguotemp!=0x20) /不停判斷音樂是否結(jié)尾,結(jié)尾跳出jiepai=

7、Xiaopingguotemp>>4;/獲取節(jié)拍,即高4位數(shù)yinpu=Xiaopingguotemp&0x0F; /獲取音普,即低4位數(shù)Timer_Set(yinpu);/根據(jù)列表對應(yīng)發(fā)音Delay(jiepai*50); /節(jié)拍temp+;P0 = 0x0f;if(P0!=0x0f)goto out;void Timer_Set(uchar num)為定時器0賦值子程序,包含的代碼如下:th0=Notenum/256;tl0=Notenum%256;四、 程序代碼編寫/*項目名 稱:音樂盒單片機型號:AT89S52頻 率:外部石英晶振 12MHZ設(shè)計 時間:2014-0

8、8-06設(shè)計 者:小左MCU工作室Q Q: 576689422*/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit BUZZER=P10;/蜂鳴器輸出uchar th0,tl0; /定時器0賦值變量uchar start_; /返回變量uint code Note=0,64580,64684,64777,64820,64898,64968,65030,/*中音*/ 63628,63853,64021,64103,64260,64400,64524,/*低音*/ 65058,65110,

9、65157,65178,65217,65252,65282/*高音*/;/*音普規(guī)則:1、音普由一個字節(jié)十六進制數(shù)組成2、高4位代表節(jié)拍,一拍約400MS,將一拍分成8份3、低4位代表音符,一一對應(yīng)Note列表4、0x20代表歌曲結(jié)束符*/uchar code Xiaopingguo=0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40,/*你是我的小呀小蘋果*/0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,/*怎么愛你都不嫌多*/0x41,0x4e,0x8d,0x4e,0x41,0x82,0x

10、8c,0x46,0x45,0x83,0x83,0x43,0x40,/*紅紅的小臉溫暖我的心窩*/0x42,0x81,0x42,0x43,0x42,0x43,0x42,0x23,0x25,0x85,0x30,0x45,0x10,0x45,0x30,0x45,0x10,0x45,0x30,0x85,0x85,0x85,0x40,/*點亮我生命的火 火火 火火 火*/0x83,0x81,0x82,0x6d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x40,/*你是我的小呀小蘋果*/0x83,0x81,0x82,0x82,0x45,0x43,0x8e,0x81,0x40,/*就像天

11、邊最美麗的云朵*/0x41,0x4e,0x8d,0x4e,0x41,0x82,0x8c,0x46,0x45,0x83,0x83,0x43,0x40,/*春天又來到了花開滿山坡*/0x42,0x81,0x42,0x43,0x82,0x8c,0x8d,0x4d,0x41,0x8d,0x20/*種下希望就會收獲*/;/-延時子程序-void Delay(uint xms)uint j;for(;xms>0;xms-)for(j=110;j>0;j-);/-/-定時器變量賦值-void Timer_Set(uchar num)th0=Notenum/256;tl0=Notenum%256;

12、/-/-系統(tǒng)初始化-void Init()BUZZER = 1; /關(guān)閉蜂鳴器TMOD = 0x01; /定時器0工作方式1TR0 = 1; /啟動定時器ET0 = 1; /定時器0溢出中斷使能EA = 1;/總中斷使能start_ = 0;/返回變量初始化/-/-按鍵掃描-void Key_Scan()P0 = 0x0f;if(P0!=0x0f)Delay(5);if(P0!=0x0f)P0=0xfe;if(P0=0xee)Timer_Set(8);/按鍵1被按下else if(P0=0xde)Timer_Set(12);/按鍵5被按下else if(P0=0xbe)Timer_Set(2)

13、; /按鍵9被按下else if(P0=0x7e)Timer_Set(6); /按鍵13被按下else;P0=0xfd;if(P0=0xed)Timer_Set(9);/按鍵2被按下else if(P0=0xdd)Timer_Set(13);/按鍵6被按下else if(P0=0xbd)Timer_Set(3); /按鍵10被按下else if(P0=0x7d)Timer_Set(7); /按鍵14被按下else;P0=0xfb;if(P0=0xeb)Timer_Set(10);/按鍵3被按下else if(P0=0xdb)Timer_Set(14);/按鍵7被按下else if(P0=0xb

14、b)Timer_Set(4); /按鍵11被按下else if(P0=0x7b)Timer_Set(15);/按鍵15被按下else;P0=0xf7;if(P0=0xe7)Timer_Set(11);/按鍵4被按下else if(P0=0xd7)Timer_Set(1); /按鍵8被按下else if(P0=0xb7)Timer_Set(5); /按鍵12被按下else if(P0=0x77)start_=1;/按鍵16被按下else;elseth0=0;/-/-主程序-void main()uchar temp,yinpu,jiepai;Init();while(1)start:temp=0;while(Xiaopingguotemp!=0x20)jiepai=Xiaopingguotemp>>4;/獲取節(jié)拍yinpu=Xiaopingguotemp&0x0F; /獲取音普Timer_Set(yinpu);Delay(jiepai*50);temp+;P0 = 0x0f;if(P0!=0x0f)goto out;ou

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。