资源描述:
《51单片机播放音乐简谱的函数库》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、51单片机播放音乐简谱的函数库作者:PLC来源:单片机学习网 2006-10-2151单片机播放音乐简谱的函数库:/************************************************************************** SOUNDPLAYFOR51MCU COPYRIGHT(c) 2005BYJJJ. -- ALLRIGHTSRESERVED --
2、 FileName: SoundPlay.h Author: JiangJianJun Created: 2005/5/16 Modified: NO Revision: 1.0 *******************************************************************************//*说明**************************************************
3、************************ 曲谱存贮格式unsignedcharcodeMusicName{音高,音长,音高,音长....,0,0}; 末尾:0,0表示结束(Important) 音高由三位数字组成: 个位是表示1~7这七个音符 十位是表示音符所在的音区:1-低音,2-中音,3-高音; 百位表示这个音符是否要升半音:0-不升,1-升半音。 音长最多由三位数字组成: 个位表示音符的时值,其对应关系是:
4、数值(n):
5、0
6、1
7、2
8、3
9、4
10、5
11、6
12、
13、几分音符:
14、1
15、2
16、4
17、8
18、16
19、32
20、64 音符=2^n 十位表示音符的演奏效果(0-2): 0-普通,1-连音,2-顿音 百位是符点位:0-无符点,1-有符点 调用演奏子程序的格式 Play(乐曲名,调号,升降八度,演奏速度);
21、乐曲名 :要播放的乐曲指针,结尾以(0,0)结束;
22、调号(0-11) : 是指乐曲升多少个半音演奏;
23、升降八度(1-3) :1:降八度,2:不升不降,3:升八度;
24、演奏速度(1-12000): 值越大速度越快;
25、***************************************************************************/#ifndef__SOUNDPLAY_H_REVISION_FIRST__#define__SOUNDPLAY_H_REVISION_FIRST__#include//**************************************************************************#defineSYSTEM_OS
26、C 11059200//12000000 //定义晶振频率12000000HZ#defineSOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔sbit BeepIO = P2^6; //定义输出管脚unsignedint codeFreTab[12] ={262,277,294,311,330,349,369,392,415,440,466,494};//原始频率表unsignedcharcodeSignTab[7] ={0,2,4,5,7,9,
27、11}; //1~7在频率表中的位置unsignedcharcodeLengthTab[7]={1,2,4,8,16,32,64}; unsignedcharSound_Temp_TH0,Sound_Temp_TL0; //音符定时器初值暂存unsignedcharSound_Temp_TH1,Sound_Temp_TL1; //音长定时器初值暂存//************************************************************
28、**************voidInitialSound(void){ BeepIO=1; Sound_Temp_TH1=(65535-(1/1200)*SYSTEM_OSC)/256; //计算TL1应装入的初值 (10ms的初装值) Sound_Temp_TL1=(65535-(1/1200)*SYSTEM_OSC)%6; //计算TH1应装入的初值 TH1=Sound_Temp_TH1; TL1=Sound_Temp_TL1; TMOD
29、=0x11; ET0 =1; ET1