51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我!

我知道单片机发音只要频率及节拍,但我不知道曲谱上是低还是中高音及节拍是几下!谁能上传个五线谱举个例子!用世上只有妈妈好曲谱说明下那个音及相就节拍是多少,怎么看!谢谢解答!... 我知道单片机发音只要频率及节拍,但我不知道曲谱上是低还是中高音及节拍是几下!
谁能上传个五线谱举个例子!
用世上只有妈妈好曲谱说明下那个音及相就节拍是多少,怎么看!
谢谢解答!
展开
 我来答
囧神222222
推荐于2016-12-01
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
  //《世上只有妈妈好》51单片机C语言程序和音乐采灯程序
  //此程序在硬件上调试通过
  //本程序的单片机晶振采用11.0592MHZ
  //此程序的流水灯随音乐的节拍的快慢而动

  #include <reg51.h>
  sbit speaker=P2^0; //接音频放大电路,
  //sbit speaker=P3^2;
  sbit sw=P3^0; //电后位后,sw合上后就开始放音乐,灯开始闪动,sw断开,音乐停 止, 灯也同时停止闪动
  unsigned char timer0h,timer0l,time,led=1,j=0;
  unsigned char flagd=0;
  //世上只有妈妈好数据表
  code unsigned char sszymmh[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
  6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
  6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
  5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
  2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0
  } ;
  // 音阶频率表 高八位
  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;
  speaker=!speaker;
  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;
  time=1;
  sw=1;
  while(time)
  {
  if(sw)
  {P1=0;i=0;continue;}
  if(j==8)
  {
  //led=1;
  j=0;flagd=~flagd;
  if(flagd)
  {
  led=0x80;
  }
  else
  {
  led=1;
  }
  }

  else
  {
  P1=~led;
  if(flagd)
  {
  led=led>>1;
  }
  else
  {
  led=le d<<1;
  }
  j++;
  }
  k=sszymmh[i]+7*sszymmh[i+1]-1;
  timer0h=FREQH[k];
  timer0l=FREQL[k];
  time=sszymmh[i+2];
  i=i+3;
  song();
  }
  }
  }

参考资料: http://hiphotos.baidu.com/mudh118/pic/item/9544b690415a4398a977a4d1.jpg

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式