/*
标题:蜂鸣器的使用
电路:P1.0口接P11
*/
#include 'sys.h'//包含延时函数头文件
#include
#include 'beep1.h'
sbit beez = P2^1;//位声明,P2端口的第一位为蜂鸣器所用
void beep1() //非空函数+函数名
{
while(1) //while死循环
{
beez = 1; //赋高电平
delays(100); //调用延时函数
beez = 0; //赋低电平
delays(100); //同上
}
}
//----------------------------------------------
/*
if not defined的简写为ifndef,c语言在对程序进行
编译时,会先根据预处理命令进行“预处理”。C语言
编译系统包括预处理,编译和链接等部分。
*/
#ifndef _BEEP1_H_ //先测试函数是否被宏定义过
#define _BEEP1_H_
void beep1(); //如果程序没有被定义过,定义函数
//并编译程序段beep1
#endif //终止if,条件指示符#endif的最主要目的是
//防止头文件的重复包含和编译。
/*
标题:蜂鸣器发出不同的音调
电路:p2.1口接P11
*/
#include
#include 'sys.h'
#include 'beep2.h'
sbit beez = P2^1;
void beep2(){
int i;
while(1){
for(i = 0;i<1000;i++){
beez = 0;
delays(100);
beez = 1;
delays(100);
}
for(i = 0;i<1000;i++){
beez = 0;
delays(200);
beez = 1;
delays(200);
}
for(i = 0;i<1000;i++){
beez = 0;
delays(50);
beez = 1;
delays(50);
}
for(i = 0;i<1000;i++){
beez = 0;
delays(150);
beez = 1;
delays(150);
}
}
}
//----------------------------------------------
#ifndef _BEEP2_H_
#define _BEEP2_H_
void beep2();
#endif
/*
标题:蜂鸣器播放音乐
电路:p2.1口接P11
*/
#include
#include 'beep3.h'
#include 'sys.h'
//八月桂花
unsigned char code music_code[] ={
0x18, 0x30, 0x1C , 0x10, //格式为:频率常数、节拍常数、频率常数、节拍常数
0x20, 0x40, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x10,
0x1C, 0x10, 0x18 , 0x40,
0x1C, 0x20, 0x20 , 0x20,
0x1C, 0x20, 0x18 , 0x20,
0x20, 0x80, 0xFF , 0x20,
0x30, 0x1C, 0x10 , 0x18,
0x20, 0x15, 0x20 , 0x1C,
0x20, 0x20, 0x20 , 0x26,
0x40, 0x20, 0x20 , 0x2B,
0x20, 0x26, 0x20 , 0x20,
0x20, 0x30, 0x80 , 0xFF,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x20, 0x1C , 0x10,
0x18, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x80,
0x20, 0x30, 0x1C , 0x10,
0x20, 0x10, 0x1C , 0x10,
0x20, 0x20, 0x26 , 0x20,
0x2B, 0x20, 0x30 , 0x20,
0x2B, 0x40, 0x20 , 0x15,
0x1F, 0x05, 0x20 , 0x10,
0x1C, 0x10, 0x20 , 0x20,
0x26, 0x20, 0x2B , 0x20,
0x30, 0x20, 0x2B , 0x40,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x20, 0x15 , 0x20,
0x1C, 0x20, 0x20 , 0x20,
0x26, 0x40, 0x20 , 0x20,
0x2B, 0x20, 0x26 , 0x20,
0x20, 0x20, 0x30 , 0x30,
0x20, 0x30, 0x1C , 0x10,
0x18, 0x40, 0x1C , 0x20,
0x20, 0x20, 0x26 , 0x40,
0x13, 0x60, 0x18 , 0x20,
0x15, 0x40, 0x13 , 0x40,
0x18, 0x80, 0x00
};
unsigned char* pin;//频率
unsigned char* pai;//节拍
sbit beez = P2^1;
void beep3()
{
int i,j;
play://为goto所用,当程序执行到goto play时,重回此
pin = music_code;
pai = pin+1;
beez = 0;
while(1)
{
if(pin == 0x00)//if条件函数
{
//遇到结束符
goto play;
}
if(pai == 0xff)
{
//遇到休止符,等待一段时间
delays(200000);
}
for(i=0;i<(*pai)*10;i++)//for嵌套
{
for(j=0;j<(*pin);j++)
{
beez = ~beez;
}
}
pin += 2;
pai += 2;
}
}
//------------------------------------------------
#ifndef _BEEP3_H_
#define _BEEP3_H_
void beep3();
#endif