資源簡介
使用51單片機的蜂鳴器輸出三首音樂:送別、爬音階、八月桂花。當然了,可以隨意更換樂曲,把譜輸入數組就行。在播放過程中,使用外部中斷來暫停音樂,使用獨立按鍵來選擇音樂。經過調試該程序可行。其中蜂鳴器接p1.5,獨立按鍵1接p3.2(外部中斷0)實現暫停播放,獨立按鍵2和3接p0.1和p0.0,實現音樂的選擇

代碼片段和文件信息
#include?????
#include???????????
sbit?Beep?=??P1^5?;
sbit?p1?=?P0^1;
sbit?p2?=?P0^2;
unsigned?char?pause;
???
unsigned?char?n=0;??//constant?of?beat-time?counter
/*0xff
0x200x400x260x400x180x400x1c
0x400x180x400x200x400x200x40
0x300x400x260x400x2b0x400x2b
0x400x000x400x260x400x18
0x400x190x400x1c0x400x180x40
0x200x400x200x400x2b0x400x24
0x400x330x400x300x400x00
*/
unsigned?char?code?music_tab1[]?=?{
0x600x100x550x100x4c0x100x48
0x100x400x100x390x100x330x10
0x300x100x2b0x100x260x100x24
0x100x200x100x1c0x100x190x10
0x180x100x150x100x130x100x12
0x100x100x100x0e0x100x0d0x10
0x00
};???
unsigned?char?code?music_tab2[]?={???
0x18?0x30?0x1C??0x10?//form:frequence?beat?frequence?beat
0x20?0x40?0x1C??0x10???
0x18?0x10?0x20??0x10???
0x1C?0x10?0x18??0x40???
0x1C?0x20?0x20??0x20???
0x1C?0x20?0x18??0x20???
0x20?0x80?0xFF??0x20???
0x30?0x1C?0x10??0x18???
0x20?0x15?0x20??0x1C???
0x20?0x20?0x20??0x26???
0x40?0x20?0x20??0x2B???
0x20?0x26?0x20??0x20???
0x20?0x30?0x80??0xFF???
0x20?0x20?0x1C??0x10???
0x18?0x10?0x20??0x20???
0x26?0x20?0x2B??0x20???
0x30?0x20?0x2B??0x40???
0x20?0x20?0x1C??0x10???
0x18?0x10?0x20??0x20???
0x26?0x20?0x2B??0x20???
0x30?0x20?0x2B??0x40???
0x20?0x30?0x1C??0x10???
0x18?0x20?0x15??0x20???
0x1C?0x20?0x20??0x20???
0x26?0x40?0x20??0x20???
0x2B?0x20?0x26??0x20???
0x20?0x20?0x30??0x80???
0x20?0x30?0x1C??0x10???
0x20?0x10?0x1C??0x10???
0x20?0x20?0x26??0x20???
0x2B?0x20?0x30??0x20???
0x2B?0x40?0x20??0x15???
0x1F?0x05?0x20??0x10???
0x1C?0x10?0x20??0x20???
0x26?0x20?0x2B??0x20???
0x30?0x20?0x2B??0x40???
0x20?0x30?0x1C??0x10???
0x18?0x20?0x15??0x20???
0x1C?0x20?0x20??0x20???
0x26?0x40?0x20??0x20???
0x2B?0x20?0x26??0x20???
0x20?0x20?0x30??0x30???
0x20?0x30?0x1C??0x10???
0x18?0x40?0x1C??0x20???
0x20?0x20?0x26??0x40???
0x13?0x60?0x18??0x20???
0x15?0x40?0x13??0x40???
0x18?0x80?0x00???
};?????
void?int0()??interrupt?1???//n?controls?the?time?of?beat????
{??
???TH0=0xd8;???
???TL0=0xef;???
???n--;???
}???
???
void?delay(unsigned?char?m)???//control?the?delay?of?frequecy??
{???
???unsigned??i=3*m;???
???while(--i);???
}???
???
void?delayms(unsigned?char?a)??//function?of?ms-delay???
{???
???while(--a);??????????????????//can‘t be?a--
}?
??
void?pause_music()?interrupt?0
{
//delayms(100);
pause?=?~?pause;
delayms(100);
/* if(p1?==?0)
{
//load?the?first?song
goto?begin;
}
else?if(p2?==?0)
{
//load?the?second?song
goto?begin;
}
*/
}
?
void?main()???
{
//???unsigned?char?code?music_tab[191];
// ?unsigned?char?n1n2;
???unsigned?char?pm;???//m:constant?of?frequency????
???unsigned?char?i=0;
???unsigned?char?code*?addr?=?music_tab1;
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5048??2017-05-05?17:06??程序\music
?????文件???????4716??2017-05-05?17:07??程序\music.c
?????文件???????1803??2017-05-05?17:06??程序\music.hex
?????文件?????????43??2017-05-05?17:06??程序\music.lnp
?????文件??????12949??2017-05-05?17:06??程序\music.LST
?????文件???????9640??2017-05-05?17:06??程序\music.M51
?????文件???????5020??2017-05-05?17:06??程序\music.OBJ
?????文件????????172??2017-05-05?18:57??程序\music.plg
?????文件??????57506??2017-05-05?18:57??程序\music.uvopt
?????文件??????13398??2017-05-03?21:54??程序\music.uvproj
?????目錄??????????0??2017-05-05?18:57??程序
-----------?---------??----------?-----??----
???????????????110295????????????????????11
- 上一篇:列主元消去 LU分解 最小二乘法等九個算法
- 下一篇:卡爾曼濾波小程序導航誤差分析
評論
共有 條評論