本帖最后由 eehome 于 2013-1-5 10:08 编辑
蜂鸣器歌曲初试,《祝你生日快乐》。
代码:
#include
***it 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一个个计算出来的,主要是其中比例的关系。其他具体参数是自己边调试边调整的。
|