资源简介
stc89c52蜂鸣器音乐,内容是栀子花开,很优美动听,值得一试。
代码片段和文件信息
/************************************************************************
[文件名] C51音乐程序(八月桂花)
[功能] 通过单片机演奏音乐
/**********************************************************************/
#include
#include
//本例采用89C52 晶振为12MHZ
//关于如何编制音乐代码 其实十分简单各位可以看以下代码.
//频率常数即音乐术语中的音调而节拍常数即音乐术语中的多少拍;
//所以拿出谱子 试探编吧!
sbit Beep = P2^1 ;
unsigned char n=0; //n为节拍常数变量
unsigned char code music_tab[] ={
0x18 0x30 0x1C 0x10 //格式为: 频率常数 节拍常数 频率常数 节拍常数
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 //采用中断0 控制节拍
{ TH0=0xd8;
TL0=0xef;
n--;
}
void delay (unsigned char m) //控制频率延时
{
unsigned i=3*m;
while(--i);
}
void delayms(unsigned char a) //豪秒延时子程序
{
while(--a); //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了!
}
void main()
{ unsigned char pm; //m为频率常数变量
unsigned char i=0;
TMOD&=0x0f;
TMOD|=0x01;
TH0=0xd8;TL0=0xef;
IE=0x82;
play:
while(1)
{
a: p=music_tab[i];
if(p==0x00) { i=0 delayms(1000); goto play;} //如果碰到结束符延时1秒回到开始再来一遍
else if(p==0xff) { i=i+1;delayms(100)TR0=0; goto a;} //若碰到休止符延时100ms继续取下一音符
else {m=music_tab[i++] n=music_tab[i++];} //取频率常数 和 节拍常数
TR0=1; //开定时器1
while(n!=0) Beep=~Beepdelay(m); //等待节拍完成 通过P1口输出音频(可多声道哦!)
TR0=0; //关定时器1
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-07-14 20:47 6.蜂鸣器音乐之八月桂花 - 副本\
文件 5115 2013-03-13 09:27 6.蜂鸣器音乐之八月桂花 - 副本\STARTUP.A51
文件 11665 2014-06-21 09:59 6.蜂鸣器音乐之八月桂花 - 副本\STARTUP.LST
文件 749 2014-06-21 09:59 6.蜂鸣器音乐之八月桂花 - 副本\STARTUP.OBJ
文件 3965 2015-07-14 18:42 6.蜂鸣器音乐之八月桂花 - 副本\beep
文件 5562 2015-07-14 18:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.LST
文件 6374 2015-07-14 18:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.M51
文件 3626 2015-07-14 18:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.OBJ
文件 1024 2014-11-27 11:11 6.蜂鸣器音乐之八月桂花 - 副本\beep.Opt
文件 2154 2013-03-13 09:27 6.蜂鸣器音乐之八月桂花 - 副本\beep.Uv2.bak
文件 34 2015-07-14 18:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.__i
文件 3246 2015-01-07 16:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.c
文件 1385 2015-07-14 18:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.hex
文件 56 2015-07-14 18:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.lnp
文件 1025 2013-03-13 09:27 6.蜂鸣器音乐之八月桂花 - 副本\beep.opt.bak
文件 187 2015-07-14 20:46 6.蜂鸣器音乐之八月桂花 - 副本\beep.plg
文件 68470 2015-01-07 16:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.uvgui.Administrator
文件 68470 2015-01-07 16:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.uvgui_Administrator.bak
文件 6503 2015-01-07 16:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.uvopt
文件 13416 2015-01-07 16:42 6.蜂鸣器音乐之八月桂花 - 副本\beep.uvproj
文件 1025 2013-03-13 09:27 6.蜂鸣器音乐之八月桂花 - 副本\beep_Opt.Bak
文件 2024 2013-03-13 09:27 6.蜂鸣器音乐之八月桂花 - 副本\beep_Uv2.Bak
文件 73670 2014-06-21 10:05 6.蜂鸣器音乐之八月桂花 - 副本\beep_uvopt.bak
文件 13386 2013-04-19 11:20 6.蜂鸣器音乐之八月桂花 - 副本\beep_uvproj.bak
- 上一篇:校园网组网设计完成版
- 下一篇:教你如何画程序流程图
评论
共有 条评论