proteuswilliam hill官网 |仿真william hill官网
直播中

zhihuizhou

13年用户 7005经验值
擅长:测试与测量
私信 关注
[经验]

【proteus练一练2.17】播放生日快乐音乐

/*  名称:播放音乐   
  说明:程序运行时播放生日快乐歌,  未使用定时器中断,所有频率完全用延时实现
*/
#include
#define uchar unsigned char
#define uint unsigned int
***it 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*20;j++)
  {
   BEEP=~BEEP;
   //SONG_TONE 延时表决定了每个音符的频率
   for(k=0;k/3;k++);
  }
  DelayMS(10);
  i++;   
}
}
void main()
{
BEEP=0;
while(1)
{
  PlayMusic(); //播放生日快乐
  DelayMS(500); //播放完后暂停一段时间
}
}
proteus仿真图:
游客,如果您要查看本帖隐藏内容请回复


回帖(166)

张欢庆

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
好的
举报

曹晓君

2012-2-24 00:53:05
{:soso_e103:}
举报

wangchunhui2011

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

举报

7293192131

2012-2-27 21:06:38
{:soso_e113:}
举报

show___time

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

举报

2012-3-1 08:47:40
学习中
举报

zqf4613916

2012-3-4 16:18:14
谢谢
举报

屈裕超

2012-3-9 15:19:08
我这个刚刚接触的菜鸟跟着各位大神好好学习学习{:soso_e130:}
举报

393316

2012-3-11 12:16:31
有趣。。。。。。。。。。。。。。。。
举报

jijun0817

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

举报

冯丹

2012-3-12 22:17:06
YES 很好很好
举报

六六六

2012-3-13 08:56:14
{:1:}
举报

lh0455

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

举报

杨宏建

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

举报

416060

2012-3-13 15:17:01
看看
举报

king

2012-3-13 16:18:59
学习了
举报

更多回帖

×
20
完善资料,
赚取积分