📄 beep.h
字号:
#ifndef BEEP_H
#define BEEP_H
#include <reg52.h>
#include"key.h"
sbit beep=P3^7;
unsigned char Count=0;
/*******************************************************************
音乐编码存放区
注意:code char 类型
*******************************************************************/
unsigned char code SONG[] ={
/************************************
祝你平安
**********************************/
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,
0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x0,
0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,
0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,
0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,
0x20,0x30,0x20,0x39,0x10,0x6,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,
0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,
0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,
0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,
0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,
0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,
0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,
0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,
0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,
0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00
};
/*************************************************************
延时函数
****************************************************************/
void Delay_xMs(unsigned char x)
{
unsigned char i,j;
for( i =0;i < x;i++ )
{
for( j =0;j<3;j++ );
}
}
/***************************************************************
定时器初始化函数
******************************************************************/
void Time0_Init()
{
TMOD = 0x01;
IE|= 0x82;
TH0 = 0xD8;
TL0 = 0xEF; //12MZ晶振,10ms
}
/**********************************************************************
定时中断服务函数
*************************************************************************/
void Time0_Int() interrupt 1
{
TH0 = 0xD8;
TL0 = 0xEF;
Count++; //长度加1
}
/*****************************************************************************
播放子函数
******************************************************************************/
void beeping(unsigned char frequence,unsigned char length)
{
TR0=1;
while(1)
{
beep = !beep;
Delay_xMs(frequence);
if ( length == Count )
{
Count = 0;
break;
}
}
TR0=0;
beep=1;
}
/********************************************************************************
播放闹铃声音
********************************************************************************/
void play_respond()
{ unsigned int i=20;
for(;i>0;i--)
{
beeping(i,10);
}
}
/***********************************************************************************
播放主函数
************************************************************************************/
void Play_Song()
{
unsigned char Temp1,
key=0;
unsigned int Addr=0,
Count = 0; //中断计数器清0
while(1)
{
key=getch(); //按键扫描
if(key!=255)break; //若按下13,停止放音
Temp1 = SONG[Addr++];
if ( Temp1 == 0xFF ) //休止符
{
TR0 = 0;
Delay_xMs(100);
}
else
{
if ( Temp1 == 0x00 ) //歌曲结束符
{
return;
}
else
{
beeping(Temp1,SONG[Addr++]);
}
}
}
play_respond();
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -