找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5063|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机蜂鸣器生日快乐歌

[复制链接]
跳转到指定楼层
楼主
ID:341039 发表于 2018-6-2 22:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P2^1;
void Music(uchar number);
void delay10us(uchar time);
void delay50us(uchar time);
uchar code SOUNDLONG[]=       //控制音调
{
  18,6,24,24,24,48,
  18,6,24,24,24,48,
  18,6,24,24,24,24,24,
  18,6,24,24,24,48,0
};
uchar code SOUNDTONE[]=       //控制音色
{
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        //生日快乐end
};
void Play_Music()
{
  uint k,n;
  uint SoundLong,SoundTone;
  uint i,j,m;
  do
  {
     if(i>=25) i=0;
     SoundLong=SOUNDLONG[i];
     SoundTone=SOUNDTONE[i];
     i++;
     for(n=0;n<SoundLong;n++)
      {
      for(k=0;k<12;k++)
       {
           BEEP=0;
           for(m=0;m<SoundTone;m++);
           BEEP=1;
           for(m=0;m<SoundTone;m++);
          }
      }
      delay50us(6);
  }while((SOUNDLONG[i]!=0)||(SOUNDTONE[j]!=0));
}
//延时程序
void delay10us(uchar time)
{
  uchar a,b,c;
  for(a=0;a<time;a++)
     for(b=0;b<10;b++)
     for(c=0;c<120;c++);
}
void delay50us(uchar time)
{
  uchar a,b;
  for(a=0;a<time;a++)
    for(b=0;b<6;b++);
}
void main()
{
while(1)
{
   Play_Music();       //生日快乐
   delay10us(250);
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:430234 发表于 2018-11-30 18:35 | 只看该作者
非常感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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