发 帖  

[经验] 【proteus练一练2.17】播放生日快乐音乐

2012-2-17 11:07:00  11128
分享
9
/*  名称:播放音乐   
  说明:程序运行时播放生日快乐歌,  未使用定时器中断,所有频率完全用延时实现
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P3^7;
//生日快乐歌的音符频率表,不同频率由不同的延时来决定
uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,
      212,212,106,126,159,169,190,119,119,126,159,142,159,0};
//生日快乐歌节拍表,节拍决定每个音符的演奏长短
uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,
9,3,12,12,12,12,12,9,3,12,12,12,24,0};
//延时
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
//播放函数
void PlayMusic()
{
uint i=0,j,k;
while(SONG_LONG!=0||SONG_TONE!=0)
{ //播放各个音符,SONG_LONG 为拍子长度
  for(j=0;j<SONG_LONG*20;j++)
  {
   BEEP=~BEEP;
   //SONG_TONE 延时表决定了每个音符的频率
   for(k=0;k<SONG_TONE/3;k++);
  }
  DelayMS(10);
  i++;   
}
}
void main()
{
BEEP=0;
while(1)
{
  PlayMusic(); //播放生日快乐
  DelayMS(500); //播放完后暂停一段时间
}
}
proteus仿真图:
游客,如果您要查看本帖隐藏内容请回复


张欢庆 2012-2-17 12:10:40
本帖最后由 eehome 于 2013-1-5 09:54 编辑








回复

举报

大人物啦 2012-2-17 17:21:37
电路图有吗?
回复

举报

joseecoh 2012-2-23 17:01:20
学习学习........
回复

举报

为2011 2012-2-23 21:54:17
好的
回复

举报

1144833520 2012-2-24 00:53:05
回复

举报

wangchunhui2011 2012-2-24 09:13:44
很不错。值得学习。

回复

举报

7293192131 2012-2-27 21:06:38
回复

举报

show___time 2012-2-28 12:17:54
看看

回复

举报

YOUYOU18182002 2012-3-1 08:47:40
学习中
回复

举报

zqf4613916 2012-3-4 16:18:14
谢谢
回复

举报

血疯 2012-3-9 15:19:08
我这个刚刚接触的菜鸟跟着各位大神好好学习学习
回复

举报

寻达 2012-3-11 12:16:31
有趣。。。。。。。。。。。。。。。。
回复

举报

jijun0817 2012-3-11 16:29:53
看看效果

回复

举报

冯丹 2012-3-12 22:17:06
YES 很好很好
回复

举报

myttl1136 2012-3-13 08:56:14
{:1:}
回复

举报

lh0455 2012-3-13 09:43:01
看看

回复

举报

hongking 2012-3-13 14:08:15
好玩,嘿嘿

回复

举报

fangqinhong 2012-3-13 15:17:01
看看
回复

举报

沙漠中的鱼 2012-3-13 16:18:59
学习了
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表