#include "reg52.h" //reg52.h在安装目录下D:\Keil_v5\C51\INC\Atmel中
sbit BEEP=P1^5; //蜂鸣器管脚定义
#define FLICKER 500 //定时值
/*变量命名规则:驼峰法(Camel-Case),小驼峰法用于变量和方法,
uc 小写表示unsigned char ,KEY中K大写,Long中L大写。 */
unsigned char ucKeyLong=0; //按键切换
unsigned int uiTimeStart=0;//定时器初值决定蜂鸣器的音调
unsigned int uiTimeCount=0;//定时器计数器
//循环中的语句是尾和首相连接的,特别是延时要求比较高的程序要特别注意
//右移指令需要注意i=i>>1;不能写成i>>1
//必须在中断服务程序中重装初值TMR0必须重装初值
#define ZERO 0x00 //休止符
//C调低音的音频宏定义do 1 频率HZ
#define DAOL 130
#define REL 146
#define MIL 164
#define FAL 174
#define SOL 196
#define LAL 220
#define XIL 247
//C调中音的音频宏定义do 1 频率523HZ
#define DAO 262
#define RE 294
#define MI 330
#define FA 349
#define SO 392
#define LA 440
#define XI 494
//c调高音的音频宏定义
#define DAOH 523
#define REH 587
#define MIH 659
#define FAH 689
#define SOH 784
#define LAH 880
#define XIH 988
//c调试音
unsigned int TONE[]={DAOL,REL,MIL,FAL,SOL,LAL,XIL,DAO,0xff};
unsigned int DELAY[]={4,4,4,4,4,4,4,4};
//两只老虎
unsigned int code TWO_TIGER_TONE[]={DAO,RE,MI,DAO,//简谱记号1=C 4/4拍
DAO,RE,MI,DAO,
MI,FA,SO,
MI,FA,SO,
SO,LA,SO,FA,MI,DAO,
SO,LA,SO,FA,MI,DAO,
DAO,SOL,DAO,
DAO,SOL,DAO,
0xff};//以0xff作为音乐的结束标志
unsigned int code TWO_TIGER_DELAY[]={8,8,8,8,//节拍时长记号
8,8,8,8,
8,8,16,
8,8,16,
6,2,6,2,8,8,
6,2,6,2,8,8,
8,8,16,
8,8,16,
};
//黑蝙蝠中队
unsigned int code HEI_TONE[]={MI,MI,RE,MI,LA,//简谱记号1=C 4/4拍
单片机蜂鸣器播放音乐C语言Protues 仿真实验
于 2023-06-23 14:27:45 首次发布