收藏 分销(赏)

音乐代码.doc

上传人:w****g 文档编号:4143477 上传时间:2024-08-01 格式:DOC 页数:10 大小:69.50KB 下载积分:8 金币
下载 相关 举报
音乐代码.doc_第1页
第1页 / 共10页
音乐代码.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
挥着翅膀的女孩 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, 0x17,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, 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,0x03, 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,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, 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,0x00, 0x18,0x02, 0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02, 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00}; 天空之城 unsigned char code music_tab[] ={ 0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x19, 0x18, 0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30, 0x20, 0x60, 0x26, 0x30, 0x26, 0x30, 0x24, 0x40, 0x26, 0x30, 0x24, 0x30, 0x18, 0x40, 0x26, 0x60, 0x18, 0x20, 0x18, 0x20, 0x18, 0x20, 0x19, 0x40, 0x24, 0x30, 0x24, 0x30, 0x19, 0x30, 0x19, 0x60, 0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x19, 0x60, 0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30, 0x20, 0x80, 0x26, 0x30, 0x24, 0x30, 0x24, 0x30, 0x18, 0x30, 0x19, 0x20, 0x19, 0x30, 0x18, 0x30, 0x15, 0x20, 0x15, 0x20, 0x13, 0x20, 0x18, 0x40, 0x18, 0x30, 0x19, 0x30, 0x1c, 0x20, 0x1c, 0x20, 0x19, 0x30, 0x20, 0x30, 0x1c, 0x60, 0x18, 0x30, 0x15, 0x30, 0x13, 0x40, 0x15, 0x30, 0x13, 0x30, 0x10, 0x30, 0x15, 0x60, 0x20, 0x30, 0x20, 0x30, 0x18, 0x30, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x13, 0x60, 0x1c, 0x20, 0x19, 0x20, 0x18, 0x30, 0x19, 0x30, 0x15, 0x20, 0x15, 0x20, 0x18, 0x40, 0x20, 0x30, 0x20, 0x30, 0x12, 0x30, 0x13, 0x30, 0x15, 0x30, 0x18, 0x30, 0x13, 0xc0, 0x13, 0x80, 0x13, 0x30, 0x0e, 0x80, 0x10, 0x30, 0x10, 0x30, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30, 0x15, 0x30, 0x18, 0x20, 0x15, 0x20, 0x15, 0x30, 0x10, 0x30, 0x13, 0x60, 0x13, 0x30, 0x0e, 0x60, 0x10, 0x60, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30, 0x15, 0x30, 0x15, 0x20, 0x18, 0x20, 0x15, 0x30, 0x19, 0x30, 0x1c, 0x60, 0x1c, 0x30, 0x19, 0x30, 0x1c,0xc0, 0x00, }; 示例 #include <REG52.H> #include <INTRINS.H> //本例采用89C52, 晶振为11.0592MHZ //关于如何编制音乐代码, 其实十分简单,各位可以看以下代码. //频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍; //所以拿出谱子, 试探编吧! #define LED P0 sbit Beep = P1^5 ; void delaya(unsigned int); unsigned char n=0; //n为节拍常数变量 unsigned char code music_tab[] ={ 0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x19, 0x18, 0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30, 0x20, 0x60, 0x26, 0x30, 0x26, 0x30, 0x24, 0x40, 0x26, 0x30, 0x24, 0x30, 0x18, 0x40, 0x26, 0x60, 0x18, 0x20, 0x18, 0x20, 0x18, 0x20, 0x19, 0x40, 0x24, 0x30, 0x24, 0x30, 0x19, 0x30, 0x19, 0x60, 0x1c, 0x30, 0x19, 0x30, 0x18, 0x40, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x19, 0x60, 0x26, 0x30, 0x26, 0x30, 0x1c, 0x40, 0x20, 0x30, 0x1c, 0x30, 0x18, 0x30, 0x20, 0x80, 0x26, 0x30, 0x24, 0x30, 0x24, 0x30, 0x18, 0x30, 0x19, 0x20, 0x19, 0x30, 0x18, 0x30, 0x15, 0x20, 0x15, 0x20, 0x13, 0x20, 0x18, 0x40, 0x18, 0x30, 0x19, 0x30, 0x1c, 0x20, 0x1c, 0x20, 0x19, 0x30, 0x20, 0x30, 0x1c, 0x60, 0x18, 0x30, 0x15, 0x30, 0x13, 0x40, 0x15, 0x30, 0x13, 0x30, 0x10, 0x30, 0x15, 0x60, 0x20, 0x30, 0x20, 0x30, 0x18, 0x30, 0x19, 0x30, 0x18, 0x30, 0x13, 0x30, 0x13, 0x60, 0x1c, 0x20, 0x19, 0x20, 0x18, 0x30, 0x19, 0x30, 0x15, 0x20, 0x15, 0x20, 0x18, 0x40, 0x20, 0x30, 0x20, 0x30, 0x12, 0x30, 0x13, 0x30, 0x15, 0x30, 0x18, 0x30, 0x13, 0xc0, 0x13, 0x80, 0x13, 0x30, 0x0e, 0x80, 0x10, 0x30, 0x10, 0x30, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30, 0x15, 0x30, 0x18, 0x20, 0x15, 0x20, 0x15, 0x30, 0x10, 0x30, 0x13, 0x60, 0x13, 0x30, 0x0e, 0x60, 0x10, 0x60, 0x13, 0x20, 0x15, 0x20, 0x18, 0x40, 0x18, 0x30, 0x15, 0x30, 0x15, 0x20, 0x18, 0x20, 0x15, 0x30, 0x19, 0x30, 0x1c, 0x60, 0x1c, 0x30, 0x19, 0x30, 0x1c,0xc0, 0x00, }; void delaya(unsigned int x) { unsigned int i; for(i=0;i<x;i++); } void int0() interrupt 1 //采用中断0 控制节拍 { TH0=0xd8; TL0=0xef; n--; } void delay (unsigned char m) //控制频率延时 { unsigned i=3*m; while(--i); } void delayms(unsigned char a) //豪秒延时子程序 { while(--a); //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了! } void main() { unsigned char p,m; //m为频率常数变量 unsigned char i=0; TMOD&=0x0f; TMOD|=0x01; TH0=0xd8;TL0=0xef; IE=0x82; play: while(1) { a: p=music_tab[i]; if(p==0x00) { i=0, delayms(1000); goto play;} //如果碰到结束符,延时1秒,回到开始再来一遍 else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //若碰到休止符,延时100ms,继续取下一音符 else {m=music_tab[i++], n=music_tab[i++];} //取频率常数 和 节拍常数 TR0=1; //开定时器1 while(n!=0) Beep=~Beep,delay(m); //等待节拍完成, 通过P1口输出音频(可多声道哦!) TR0=0; //关定时器1 LED=music_tab[i] ; delayms(100); } } 、 #include <reg51.h> sbit buzzer=P3^7; unsigned char timer0h,timer0l,time; //生日歌 code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4, 5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4, 5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2, 4,2,1, 4,2,1, 3,2,2, 1,2,2, 2,2,2, 1,2,4}; // 音阶频率表 高八位 code unsigned char FREQH[]={ 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, } ; // 音阶频率表 低八位 code unsigned char FREQL[]={ 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, }; void delay(unsigned char t) { unsigned char t1; unsigned long t2; for(t1=0;t1<t;t1++) { for(t2=0;t2<8000;t2++) { ; } } TR0=0; } void t0int() interrupt 1 { TR0=0; buzzer=!buzzer; TH0=timer0h; TL0=timer0l; TR0=1; } void song() { TH0=timer0h; TL0=timer0l; TR0=1; delay(time); } void main(void) { unsigned char k,i; TMOD=1; //置CT0定时工作方式1 EA=1; ET0=1;//IE=0x82 //CPU开中断,CT0开中断 while(1) { i=0; while(i<75){ //音乐数组长度 ,唱完从头再来 k=sszymmh[i]+7*sszymmh[i+1]-1; timer0h=FREQH[k]; timer0l=FREQL[k]; time=sszymmh[i+2]; i=i+3; song(); } } } #include<reg51.h>  #define uchar unsigned char  #define uint unsigned int //必不可少的定义头文件 sbit BEEP=P3^7;  uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0}; //生日快乐歌的音符频率表,不同频率由不同的延时来决定  uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,  9,3,12,12,12,12,12,9,3,12,12,12,24,0}; //生日快乐歌节拍表,节拍决定每个音符的演奏长短  void DelayMS(uint x) //延时  {  uchar t;  while(x--) for(t=0;t<120;t++);  }  void PlayMusic() //播放函数  {  uint i=0,j,k;  while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)  {  for(j=0;j<SONG_LONG[i]*20;j++) //播放各个音符,SONG_LONG 为拍子长度  {  BEEP=~BEEP;  //SONG_TONE 延时表决定了每个音符的频率  for(k=0;k<SONG_TONE[i]/3;k++);  }  DelayMS(10);  i++;   }  }  void main()  {  BEEP=0;  while(1)  {  PlayMusic(); //播放生日快乐  DelayMS(500);  //播放完后暂停一段时间  }  }  #include<reg51.h>  #define uchar unsigned char  #define uint unsigned int //必不可少的定义头文件 sbit BEEP=P3^7;  uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0}; //生日快乐歌的音符频率表,不同频率由不同的延时来决定  uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,  9,3,12,12,12,12,12,9,3,12,12,12,24,0}; //生日快乐歌节拍表,节拍决定每个音符的演奏长短  void DelayMS(uint x) //延时  {  uchar t;  while(x--) for(t=0;t<120;t++);  }  void PlayMusic() //播放函数  {  uint i=0,j,k;  while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)  {  for(j=0;j<SONG_LONG[i]*20;j++) //播放各个音符,SONG_LONG 为拍子长度  {  BEEP=~BEEP;  //SONG_TONE 延时表决定了每个音符的频率  for(k=0;k<SONG_TONE[i]/3;k++);  }  DelayMS(10);  i++;   }  }  void main()  {  BEEP=0;  while(1)  {  PlayMusic(); //播放生日快乐  DelayMS(500);  //播放完后暂停一段时间  }  }  #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit BEEP=P3^7; //生日快乐歌的音符频率表,不同频率由不同的延时来决定 uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159, 212,212,106,126,159,169,190,119,119,126,159,142,159,0}; //生日快乐歌节拍表,节拍决定每个音符的演奏长短 uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24, 9,3,12,12,12,12,12,9,3,12,12,12,24,0}; //延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<120;t++);//播放函数 void PlayMusic() { uint i=0,j,k; while(SONG_LONG[i]!=0||SONG_TONE[i]!=0) { //播放各个音符,SONG_LONG 为拍子长度 for(j=0;j<SONG_LONG[i]*20;j++) { BEEP=~BEEP; //SONG_TONE 延时表决定了每个音符的频率for(k=0;k<SONG_TONE[i]/3;k++); } DelayMS(10); i++; } } void main() { BEEP=0; while(1) { PlayMusic(); //播放生日快乐 DelayMS(500); //播放完后暂停一段时间 } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服