微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 蜂鸣器歌曲初试--C51单片机--从零开始的学习笔记

蜂鸣器歌曲初试--C51单片机--从零开始的学习笔记

时间:10-02 整理:3721RD 点击:

蜂鸣器歌曲初试,《祝你生日快乐》。
代码:
#include<reg51.h>
sbit Beep = P1^5;
unsigned char n=0;
unsigned char code music_tab0[]={0,204,182,162,153,136,121,114,102,91,81,76};
unsigned char code music_tab1[]={1,1,2,1,4,3,1,1,2,1,5,4,1,1,8,6,4,3,9,7,7,6,4,5,4,0};
unsigned char code music_tab2[]={2,2,4,4,4,8,2,2,4,4,4,8,2,2,4,4,4,4,4,2,2,4,4,4,8,0};
void delay ( unsigned char m ) {
unsigned char i;
for ( i=m ; i>0 ; i-- );  
}

void main() {
unsigned char m;
unsigned char i=0;   
TMOD=0x01;   
TH0=0xd8;
TL0=0xef;   
EA=1;
ET0=1;
TR0=1;
i=0;
while(1){
  m = music_tab0[music_tab1];
  n = 15 * music_tab2;
  if ( 0==m ) break;
  i++;
  while(n!=0) {Beep = ~Beep;delay (m);}
  delay (60000);
}
for ( i=0 ; i<201 ; i++ ) {
   delay (60000);
}  
}
void timer0() interrupt 1 {  
TH0=0xd8;   
    TL0=0xef;   
    n--;   
}
心得:以前觉得用蜂鸣器放歌是非常难的,但是经过尝试以后才发现,有些东西并没有想象的那么难,如果你愿意去尝试的话。这个程序的
“204,182,162,153,136,121,114,102,91,81,76”
是自己用Excel一个个计算出来的,主要是其中比例的关系。其他具体参数是自己边调试边调整的。



怎么调啊  还有你的头文件那是什么啊?、

  m = music_tab0[music_tab1];

这句什么意思?

学习

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top