单片机开发板上的蜂鸣器--------黑人抬棺

使用前提,
1,单片机是stc89c52,
2,晶振是12.000
在这里插入图片描述
在这里插入图片描述
由上图可知:蜂鸣器的BZ端链接在单片机的P15口

废话少说,来代码:

#include <REGX52.H>
#include “Delay.h”
#include “time.h”

sbit Buzzer=P1^5;

unsigned int pinlv[]=
{0,63628,63731,63835,63928,64021,64103,64185,
64260,64331,64400,64463,64524,64580,64633,
64684,64732,64777,64820,64860,64898,64934,
64968,65000,65030,65058,65085,65110,65134,
65157,65178,65198,65217,65235 ,65252 ,65268, 65283,
}; //每一个数字代表着一个音符

unsigned int code music[]={
18,2, //18表示的是65535那些数字中的第18位(就是上一行的矩阵)
18,2, //以1/16拍子为基本单位1,则1/4拍子显示为4,1/8拍子则显示为2
18,2,
18,2,
22,2,
22,2,
22,2,
22,2,
20,2,
20,2,
20,2,
20,2,
25,2,
25,2,
25,2,
25,2,
27,2,
27,2,
27,2,
27,2,
27,2,
27,2,
27,2,
27,2,
20,2,
18,2,
17,2,
13,2,
15,2,
0,2,
15,2,
22,2,
//1行
20,2,
0,2,
18,2,
0,2,
17,2,
0,2,
17,2,
17,2,
20,2,
0,2,
18,2,
17,2,
15,2,
0,2,
15,2,
30,2,
29,2,
30,2,
29,2,
30,2,
15,2,
0,2,
15,2,
30,2,
29,2,
30,2,
29,2,
30,2,
15,2,
0,2,
15,2,
22,2,
//2行
20,2,
0,2,
18,2,
0,2,
17,2,
0,2,
17,2,
17,2,
20,2,
0,2,
18,2,
17,2,
15,2,
0,2,
15,2,
30,2,
29,2,
30,2,
29,2,
30,2,
15,2,
0,2,
15,2,
30,2,
29,2,
30,2,
29,2,
30,2,
18,2,
18,2,
18,2,
18,2,
//3行
22,2,
22,2,
22,2,
22,2,
20,2,
20,2,
20,2,
20,2,
25,2,
25,2,
25,2,
25,2,
27,2,
27,2,
27,2,
27,2,
27,2,
27,2,
27,2,
27,2,
20,2,
18,2,
17,2,
13,2,
15,2,
0,2,
15,2,
22,2,
20,2,
0,2,
18,2,
0,2,
1000}; //1000为结束标注
unsigned char pinlvxuanz,musicselect;

void main()

{ Timer0Init();
while(1)
{
if(music[musicselect]!=1000)
{pinlvxuanz=music[musicselect];
musicselect++;
Delay(5*music[musicselect]);//修改5的大小可以改变音乐的快慢
musicselect++;
TR0=0;
Delay(50);
TR0=1;
}
else
{TR0=0;
while(1);

}
 }

}

void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;

{		TL0 = pinlv[pinlvxuanz]%256;		//设置定时初值
		TH0 = pinlv[pinlvxuanz]/256;		//设置定时初值
		Buzzer=!Buzzer;
}

}
以上仅展示主程序

这个程序所需要的模块若打出来的话所需页面太大,如果有需要的话,可在百度网盘下载。

链接:https://pan.baidu.com/s/1BP_GoVxUT9wg5K_WfSym9A
提取码:hb78

能给个小赞吗?您的点赞是我最大的动力,谢谢!!!!!!!

  • 25
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值