1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 51单片机蜂鸣器播放音乐C语言程序实例 51单片机蜂鸣器音乐之八月桂花播放源程序...

51单片机蜂鸣器播放音乐C语言程序实例 51单片机蜂鸣器音乐之八月桂花播放源程序...

时间:2019-12-05 23:16:35

相关推荐

51单片机蜂鸣器播放音乐C语言程序实例 51单片机蜂鸣器音乐之八月桂花播放源程序...

/************************************************************************

[文件名]C51音乐程序(八月桂花)

[功能] 通过单片机演奏音乐

/**********************************************************************/

#include

#include

//本例采用89C52, 晶振为12MHZ

//关于如何编制音乐代码, 其实十分简单,各位可以看以下代码.

//频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍;

//所以拿出谱子, 试探编吧!

sbit Beep =P2^1 ;

unsigned char n=0;//n为节拍常数变量

unsigned char code music_tab[] ={

0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,

0x20, 0x40, 0x1C , 0x10,

0x18, 0x10, 0x20 , 0x10,

0x1C, 0x10, 0x18 , 0x40,

0x1C, 0x20, 0x20 , 0x20,

0x1C, 0x20, 0x18 , 0x20,

0x20, 0x80, 0xFF , 0x20,

0x30, 0x1C, 0x10 , 0x18,

0x20, 0x15, 0x20 , 0x1C,

0x20, 0x20, 0x20 , 0x26,

0x40, 0x20, 0x20 , 0x2B,

0x20, 0x26, 0x20 , 0x20,

0x20, 0x30, 0x80 , 0xFF,

0x20, 0x20, 0x1C , 0x10,

0x18, 0x10, 0x20 , 0x20,

0x26, 0x20, 0x2B , 0x20,

0x30, 0x20, 0x2B , 0x40,

0x20, 0x20, 0x1C , 0x10,

0x18, 0x10, 0x20 , 0x20,

0x26, 0x20, 0x2B , 0x20,

0x30, 0x20, 0x2B , 0x40,

0x20, 0x30, 0x1C , 0x10,

0x18, 0x20, 0x15 , 0x20,

0x1C, 0x20, 0x20 , 0x20,

0x26, 0x40, 0x20 , 0x20,

0x2B, 0x20, 0x26 , 0x20,

0x20, 0x20, 0x30 , 0x80,

0x20, 0x30, 0x1C , 0x10,

0x20, 0x10, 0x1C , 0x10,

0x20, 0x20, 0x26 , 0x20,

0x2B, 0x20, 0x30 , 0x20,

0x2B, 0x40, 0x20 , 0x15,

0x1F, 0x05, 0x20 , 0x10,

0x1C, 0x10, 0x20 , 0x20,

0x26, 0x20, 0x2B , 0x20,

0x30, 0x20, 0x2B , 0x40,

0x20, 0x30, 0x1C , 0x10,

0x18, 0x20, 0x15 , 0x20,

0x1C, 0x20, 0x20 , 0x20,

0x26, 0x40, 0x20 , 0x20,

0x2B, 0x20, 0x26 , 0x20,

0x20, 0x20, 0x30 , 0x30,

0x20, 0x30, 0x1C , 0x10,

0x18, 0x40, 0x1C , 0x20,

0x20, 0x20, 0x26 , 0x40,

0x13, 0x60, 0x18 , 0x20,

0x15, 0x40, 0x13 , 0x40,

0x18, 0x80, 0x00

};

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;

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。