用单片机播放音乐

上传人:woxinch****an2018 文档编号:38999159 上传时间:2018-05-10 格式:DOC 页数:22 大小:134.50KB
返回 下载 相关 举报
用单片机播放音乐_第1页
第1页 / 共22页
用单片机播放音乐_第2页
第2页 / 共22页
用单片机播放音乐_第3页
第3页 / 共22页
用单片机播放音乐_第4页
第4页 / 共22页
用单片机播放音乐_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《用单片机播放音乐》由会员分享,可在线阅读,更多相关《用单片机播放音乐(22页珍藏版)》请在金锄头文库上搜索。

1、用单片机播放音乐 一、仿真图二、再建一个 SoundPlay.h 文件 就是将下面的程序复制到新建的文件中保存到你的文件夹中,和.c 文件在一个文件夹, 但不需要添加到工程。 /* *SOUND PLAY FOR 51MCUCOPYRIGHT (c) 2005 BY JJJ.- ALL RIGHTS RESERVED -File Name: SoundPlay.hAuthor: Jiang Jian JunCreated: 2005/5/16Modified:NORevision: 1.0* */*说明 *曲谱存贮格式 unsigned char code MusicName音高,音长,音高,

2、音长., 0,0; 末尾:0,0 表示结束(Important)音高由三位数字组成:个位是表示 17 这七个音符 十位是表示音符所在的音区:1-低音,2-中音,3-高音;百位表示这个音符是否要升半音: 0-不升,1-升半音。音长最多由三位数字组成: 个位表示音符的时值,其对应关系是: |数值(n): |0 |1 |2 |3 | 4 | 5 | 6 |几分音符: |1 |2 |4 |8 |16 |32 |64 音符=2n十位表示音符的演奏效果(0-2): 0-普通,1-连音,2-顿音百位是符点位: 0-无符点,1-有符点调用演奏子程序的格式Play(乐曲名,调号,升降八度,演奏速度); |乐曲名

3、 : 要播放的乐曲指针,结尾以(0,0)结束; |调号(0-11) :是指乐曲升多少个半音演奏; |升降八度(1-3) : 1:降八度, 2:不升不降, 3:升八度; |演奏速度(1-12000):值越大速度越快;* */ #ifndef _SOUNDPLAY_H_REVISION_FIRST_ #define _SOUNDPLAY_H_REVISION_FIRST_/* *#define SYSTEM_OSC 12000000/定义晶振频率 12000000HZ #define SOUND_SPACE 4/5 /定义普通音符演奏的长度分率,/每 4 分音符间 隔 sbit BeepIO =

4、P37;/定义输出管脚unsigned int code FreTab12 = 262,277,294,311,330,349,369,392,415,440,466,494 ; /原始频率表 unsigned char code SignTab7 = 0,2,4,5,7,9,11 ; /17 在频率表中的位置 unsigned char code LengthTab7= 1,2,4,8,16,32,64 ;unsigned char Sound_Temp_TH0,Sound_Temp_TL0; /音符定时器初值暂存 unsigned char Sound_Temp_TH1,Sound_Tem

5、p_TL1; /音长定时器初值暂存 /* *void InitialSound(void) BeepIO = 0;Sound_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 |= 0x11; ET0 = 1; ET1 = 0; TR0 = 0; TR1 = 0; EA

6、= 1; void BeepTimer0(void) interrupt 1/音符发生中断 BeepIO = !BeepIO; TH0 = Sound_Temp_TH0;TL0 = Sound_Temp_TL0; /* * void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed) unsigned int NewFreTab12;/新的频率表 unsigned char i,j; unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,L

7、Div4,CurrentFre,Temp_T,SoundLength; unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;for(i=0;i 11) j = j-12; NewFreTabi = FreTabj*2; else NewFreTabi = FreTabj;if(Octachord = 1)NewFreTabi=2; else if(Octachord = 3) NewFreTabi= 2; /低音 if (SM=3) CurrentFre 0;i-) /发规定长度的音 while(TF1=0); TH1 = Sound_Temp_TH1;

8、 TL1 = Sound_Temp_TL1; TF1=0; if(LDiv2!=0) TR0=0; BeepIO=0;for(i=LDiv2;i0;i-) /音符间的间隔 while(TF1=0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; Point+=2; Tone=SoundPoint; Length=SoundPoint+1; BeepIO = 0; /* * #endif三、将下面程序保存为.c 文件,并生成.hex 文件,然后下载到你自己连接的实物中即可,或者用 proteus 仿真也可以。至于想换歌,可以找到音符即可实现

9、 #include #include “SoundPlay.h“void Delay1ms(unsigned int count) unsigned int i,j; for(i=0;icount;i+) for(j=0;j120;j+); /*Music*/挥着翅膀的女孩 unsigned char code Music_Girl= 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0

10、x17,0x03, 0x18,0x02, 0x18,0x03,0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03

11、,0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x15,0x

12、03, 0x15,0x03, 0x17,0x03,0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,

13、0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号