先给好兄弟们讲一下这个常规的蜂鸣器模板
因为我学的时候是在设计数组上用了一维数组 其实用二维数组是非常好的
我上传了一个二维的音符编辑 这个东西挺好用 感谢
我这里写一下江科大所讲授的基本逻辑
就是如此
#include
#include "Delay.h"
#include"Timer0.h"
sbit Buzzer=P2^5;
//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
#define P 0
#define L1 1
#define L1_ 2
#define L2 3
#define L2_ 4
#define L3 5
#define L4 6
#define L4_ 7
#define L5 8
#define L5_ 9
#define L6 10
#define L6_ 11
#define L7 12
#define M1 13
#define M1_ 14
#define M2 15
#define M2_ 16
#define M3 17
#define M4 18
#define M4_ 19
#define M5 20
#define M5_ 21
#define M6 22
#define M6_ 23
#define M7 24
#define H1 25
#define H1_ 26
#define H2 27
#define H2_ 28
#define H3 29
#define H4 30
#define H4_ 31
#define H5 32
#define H5_ 33
#define H6 34
#define H6_ 35
#define H7 36
#define SPEED 500 //我们以4分音符为基准
unsigned int FreqTable[]={
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[]={
//音符,时值,
//添加想要的乐谱
//
0xFF
};
unsigned int FreqSelect,MusicSelect;
void main()
{
Timer0Init();
while(1)
{
if(Music[MusicSelect]!=0xFF)
{
FreqSelect=Music[MusicSelect];
MusicSelect++;
Delay(SPEED/4*Music[MusicSelect]);
MusicSelect++;
TR0=0;
Delay(5);
TR0=1;
}
else
{
TR0=0;
while(1);
}
}
}
void Timer0_Routine() interrupt 1
{
if(FreqTable[FreqSelect]) //如果不是休止符
{
/*取对应频率值的重装载值到定时器*/
TL0 = FreqTable[FreqSelect]%256; //设置定时初值
TH0 = FreqTable[FreqSelect]/256; //设置定时初值
Buzzer=!Buzzer; //翻转蜂鸣器IO口
}
}
照抄我前面发的 timer0.c timer0.h delay.c delay.h
给兄弟们写点 流行歌曲的曲谱
直接复制粘贴即可
孤勇者直接从高潮开始
//添加想要的乐谱
//爱你孤身走暗巷
M6_,2,
M7,2,
H1_,2,
M6_,2,
M7,2,
M7,4,
M7,2,
M6_,2,
M7,2,
H1_,2,
M6_,2,
M7,2,
M7,4,
M7,2,
H1_,2,
H2_,2,
H1_,2,
H2_,2,
H1_,2,
H2_,4,
H2_,2,
H1_,2,
H2_,4,
H4_,4,
H2_,4,
M5_,2,
M6_,2,
M7,2,
H1_,2,
M6_,2,
M7,2,
M7,4,
M7,2,
M6_,2,
M7,2,
H1_,2,
M6_,2,
M7,2,
M7,4,
M7,2,
H1_,2,
H2_,2,
H1_,2,
H2_,2,
H1_,2,
H2_,4,
H2_,2,
H1_,2,
H2_,4,
H4_,4,
H2_,4,
H4_,4,
H2_,4+2,
H4_,2,
H2_,4+2,
H4_,2,
H2_,2,
H4_,2,
H5_,2,
H2_,2,
H4_,4,
H4_,4,
H2_,4+2,
H4_,2,
H2_,4+2,
H4_,2,
H2_,2,
H4_,2,
H5_,2,
H2_,2,
H4_,4,
H4_,2,
H4_,2,
H2_,2,
H1_,2,
H1_,4,
H1_,4,
M7,2,
M7,2,
M7,2,
H1_,2,
H1_,4,
H1_,4,
M7,2,
M7,2,
M5_,8+8,
H4_,2,
H4_,2,
H2_,2,
H1_,2,
H1_,4,
H1_,4,
M7,2,
H2_,2,
H2_,2,
H1_,2,
H1_,4,
H1_,4,
M7,2,
M7,2,
M5_,8+8,