用51单片机播放音乐(附C程序).doc

用51单片机播放音乐(附C程序).doc

ID:51710357

大小:49.50 KB

页数:8页

时间:2020-03-15

用51单片机播放音乐(附C程序).doc_第1页
用51单片机播放音乐(附C程序).doc_第2页
用51单片机播放音乐(附C程序).doc_第3页
用51单片机播放音乐(附C程序).doc_第4页
用51单片机播放音乐(附C程序).doc_第5页
资源描述:

《用51单片机播放音乐(附C程序).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用51单片机IO口播放几首音乐(附C程序)以下为51单片机播放音乐简谱的函数库:/*说明************************************************************************曲谱存贮格式unsignedcharcodeMusicName{音高,音长,音高,音长....,0,0};末尾:0,0表示结束(Important)音高由三位数字组成:l个位是表示1~7这七个音符;l十位是表示音符所在的音区:1-低音,2-中音,3-高音;l百位表示这个音符是否要升半音:

2、0-不升,1-升半音。音长最多由三位数字组成:l个位表示音符的时值,其对应关系是:

3、数值(n):

4、0

5、1

6、2

7、3

8、4

9、5

10、6

11、几分音符:

12、1

13、2

14、4

15、8

16、16

17、32

18、64音符=2^n;l十位表示音符的演奏效果(0-2):0-普通,1-连音,2-顿音;l百位是符点位:0-无符点,1-有符点。调用演奏子程序的格式:Play(乐曲名,调号,升降八度,演奏速度);

19、乐曲名:要播放的乐曲指针,结尾以(0,0)结束;

20、调号(0-11):是指乐曲升多少个半音演奏;

21、升降八度(1-3):1:降八度,2:不升不降,3:升八度;

22、演奏

23、速度(1-12000):值越大速度越快;***************************************************************************/#ifndef__SOUNDPLAY_H_REVISION_FIRST__#define__SOUNDPLAY_H_REVISION_FIRST__#include//**************************************************************************#defin

24、eSYSTEM_OSC11059200//12000000//定义晶振频率12000000HZ#defineSOUND_SPACE4/5//定义普通音符演奏的长度分率,//每4分音符间隔sbitBeepIO=P2^6;//定义输出管脚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在频率表中的位置uns

25、ignedcharcodeLengthTab[7]={1,2,4,8,16,32,64};unsignedcharSound_Temp_TH0,Sound_Temp_TL0;//音符定时器初值暂存unsignedcharSound_Temp_TH1,Sound_Temp_TL1;//音长定时器初值暂存//**************************************************************************voidInitialSound(void){BeepIO=1;S

26、ound_Temp_TH1=(65535-(1/1200)*SYSTEM_OSC)/256;//计算TL1应装入的初值(10ms的初装值)Sound_Temp_TL1=(65535-(1/1200)*SYSTEM_OSC)%256;//计算TH1应装入的初值TH1=Sound_Temp_TH1;TL1=Sound_Temp_TL1;TMOD

27、=0x11;ET0=1;ET1=0;TR0=0;TR1=0;EA=1;}voidBeepTimer0(void)interrupt1//音符发生中断{BeepIO=!BeepI

28、O;TH0=Sound_Temp_TH0;TL0=Sound_Temp_TL0;}//**************************************************************************voidPlay(unsignedchar*Sound,unsignedcharSignature,unsignedOctachord,unsignedintSpeed){unsignedintNewFreTab[12];//新的频率表unsignedchari,j;unsignedi

29、ntPoint,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;unsignedcharTone,Length,SL,SH,SM,SLen,XG,FD;for(i=0;i<12;i++)//根据调号及升降八度来生成新的频率表{j=i+Signature;if(j>11){j=j-12;Ne

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。