资源描述:
《简易c语言蜂鸣器音乐》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、//51单片机播放音乐库文件/**************************************************************************SOUNDPLAYFOR51MCUCOPYRIGHT(c)2005BYJJJ.--ALLRIGHTSRESERVED--FileName:SoundPlay.hAuthor:JiangJianJunCreated:2005/5/16Modified:NORevision:1.0***********************************************************************
2、********//*说明**************************************************************************曲谱存贮格式unsignedcharcodeMusicName{音高,音长,音高,音长....,0,0};末尾:0,0表示结束(Important)音高由三位数字组成:个位是表示1~7这七个音符十位是表示音符所在的音区:1-低音,2-中音,3-高音;百位表示这个音符是否要升半音:0-不升,1-升半音。音长最多由三位数字组成:个位表示音符的时值,其对应关系是:
3、数值(n):
4、0
5、1
6、2
7、3
8、4
9、5
10、6
11、几分音符:
12、1
13、2
14、
15、4
16、8
17、16
18、32
19、64音符=2^n十位表示音符的演奏效果(0-2):0-普通,1-连音,2-顿音百位是符点位:0-无符点,1-有符点调用演奏子程序的格式Play(乐曲名,调号,升降八度,演奏速度);
20、乐曲名:要播放的乐曲指针,结尾以(0,0)结束;
21、调号(0-11):是指乐曲升多少个半音演奏;
22、升降八度(1-3):1:降八度,2:不升不降,3:升八度;
23、演奏速度(1-12000):值越大速度越快;***************************************************************************/#ifndef__SOUNDPLAY_H_R
24、EVISION_FIRST__#define__SOUNDPLAY_H_REVISION_FIRST__#include//**************************************************************************#defineSYSTEM_OSC11059200//12000000//定义晶振频率12000000HZ#defineSOUND_SPACE4/5//定义普通音符演奏的长度分率,//每4分音符间隔#defineucharunsignedchar#defineuintunsignedintsbitBeepI
25、O=P2^4;sbitkey3=P3^4;sbitkey1=P3^2;//按key1可切换花样sbitkey2=P3^3;//按key2可切换歌曲//定义输出管脚ucharcount1;unsignedintcodeFreTab[12]={262,277,294,311,330,349,369,392,415,440,466,494};//原始频率表unsignedcharcodeSignTab[7]={0,2,4,5,7,9,11};//1~7在频率表中的位置unsignedcharcodeLengthTab[7]={1,2,4,8,16,32,64};unsignedcharSound_
26、Temp_TH0,Sound_Temp_TL0;//音符定时器初值暂存unsignedcharSound_Temp_TH1,Sound_Temp_TL1;//音长定时器初值暂存//**************************************************************************voidInitialSound(void){BeepIO=1;Sound_Temp_TH1=(65535-(1/1200)*SYSTEM_OSC)/256;//计算TL1应装入的初值(10ms的初装值)Sound_Temp_TL1=(65535-(1/1200)*SY
27、STEM_OSC)%256;//计算TH1应装入的初值TH1=Sound_Temp_TH1;TL1=Sound_Temp_TL1;TMOD
28、=0x11;ET0=1;ET1=0;TR0=0;TR1=0;EA=1;}voidBeepTimer0(void)interrupt1//音符发生中断{BeepIO=!BeepIO;TH0=Sound_Temp_TH0;TL0=Sound_Temp_TL0;}//*****