本文主要是介绍单片机开发板上的蜂鸣器--------黑人抬棺,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用前提,
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
能给个小赞吗?您的点赞是我最大的动力,谢谢!!!!!!!
这篇关于单片机开发板上的蜂鸣器--------黑人抬棺的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!