成都创新互联网站制作重庆分公司

c语言Beep函数乐谱 c语言beep函数音调

c语言中,beep是个什么函数

是发声函数,运行后通过主板喇叭唱出旋律,可以试试下面:

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的合作网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

TC 试:

#includedos.h

#includeconio.h

#includestdlib.h

/* this founction plays sound until hit any key */

void mysound()

{

long freq ;

while(!kbhit()){/* while no keyboard hit, play sound */

for(freq=200L;freq2000L;freq+=200L){

sound(freq);/*play freq sound*/

delay(200);/*delay 200ms*/

}

}

nosound();/* stop playing */

}

void main()

{

mysound() ;

}

---------------

VC++ 试:

#include stdio.h

#include stdlib.h

#include windows.h

main()

{

Beep(523,500);

Beep(587,500);

Beep(659,500);

Beep(698,500);

Beep(784,500);

Sleep(500);

Beep(523,500);

Beep(587,500);

Beep(659,500);

Beep(698,500);

Beep(784,500);

}

------

wintc 试验上两个。

给一段用BEEP()调用蜂鸣器播放简单乐谱的源代码。。我喜欢通过读代码学程序。。。分数不多,好人一生平安

#includereg52.h

#define uchar unsigned char

#define uint unsigned int

uchar Count;

sbit Speak =P1^2; //蜂鸣器器控制脚  

/*以下数组是音符编码*/

unsigned char code SONG[] ={ //祝你平安

0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,

0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,

0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,

0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,

0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,

0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,

0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,

0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,

0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,

0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,

0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,

0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,

//路边的野华不要采

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,

};

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

* 名称 : Time0_Init()

* 功能 : 定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振,10ms

* 输入 : 无

* 输出 : 无

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

void Time0_Init()

{

TMOD = 0x01;

IE = 0x82;

TH0 = 0xDC;

TL0 = 0x00;

}

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

* 名称 : Time0_Int()

* 功能 : 定时器中断,中断中实现 Count 加一

* 输入 : 无

* 输出 : 无

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

void Time0_Int() interrupt 1

{

TH0 = 0xDC;

TL0 = 0x00;

Count++; //长度加1

}

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

* 名称 : Delay_xMs()

* 功能 : 延时子程序,经过软件调试,测得延时程序大概为55us.

* 输入 : x

* 输出 : 无

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

void Delay_xMs(uint x)

{

uint i,j;

for(i=0; ix; i++)

{

for(j=0; j3; j++);

}

}

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

* 名称 : Play_Song()

* 功能 : 播放蜂鸣器控制程序

* 输入 : i (选择播放哪首歌曲,0为“祝你平安”,1为“路边的野花你不要采”

* 输出 : 无

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

void Play_Song(uchar i)

{

uchar Temp1,Temp2;

uint Addr;

Count = 0; //中断计数器清0

Addr = i * 217;

while(1)

{

Temp1 = SONG[Addr++];

if (Temp1 == 0xFF) //休止符

{

TR0 = 0;

Delay_xMs(100);

}

else if (Temp1 == 0x00) //歌曲结束符

{

return;

}

else

{

Temp2 = SONG[Addr++];

TR0 = 1;

while(1)

{

Speak = ~Speak;

Delay_xMs(Temp1);

if(Temp2 == Count)

{

Count = 0;

break;

}

}

}

}

}

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

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

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

void Main()

{

Time0_Init(); //定时器0中断初始化

while(1)

{

Play_Song(0); //Play_Song(0)为祝你平安 Play_Song(1)为路边的野花你不要裁

}

}

beep函数的问题!

只要你有乐谱。根据乐理,就可以走在调上。比如:

你可以写一个文件,存储你自己的声音格式:

struct tagSound

{

int frequency; //频率

int soundDelay; //发音时间(单位ms)

int nosoundDelay; //发完音之后暂停的时间(单位ms)

};

1。音符与频率的关系

========低音部分

低1DO:262

#1DO#:277

低2RE:294

#2RE#:311

低3MI:330

低4FA:349

#4FA#:370

低5SO:392

#5SO#:415

低6LA:440

#6LA#:466

低7SI:494

========中音部分=低音X2

中1DO:523 956us FC44;

#1DO#:554 902us

中2RE:578 865us FC9F;

#2RE#:622 803us

中3MI:659 759us FD09;

中4FA:698 716us FD34

#4FA#:740

中5SO:784 638us FD82

#5SO#:831

中6LA:880 568us FDC8

#6LA#:932

中7SI:988 506us FE06

========高音部分=中音X2

高1DO:1046

#1DO#:1109

高2RE:1175

#2RE#:1245

高3MI:1318

高4FA:1480

#4FA#:1480

高5SO:1568

#5SO#:1661

高6LA:1760

#6LA#:1865

高7SI:1976

“#”表示半音,用于上升或下降半个音

2。频率的产生

利用定时器来控制IO口的高低变化实现

周期=1/频率

半周期中断产生IO口电平

定时时间常数按照单片机的方式计算

3。音乐节拍的产生

每个音符用1个字节,字节的高4位代表音符的高低,低4位代表

音符的节拍,如果 1节拍是0.4秒,则1/4拍就是0.1秒。

其他节拍为1/4拍的整数倍。

4。节拍与节拍码对照表

节拍 节拍数 节拍数

1 1/4 1/8

2 2/4 2/8

3 3/4 3/8

4 1 1/2

5 5/4 5/8

6 6/4 6/8

8 2 1

A 10/4 5/4

C 3 12/8

F 15/4

曲调 1/4拍的延迟时间 1/8拍的延迟时间

4/4 125ms 62ms

3/4 187ms 94ms

2/4 250ms 125ms

不过,真的好不准。

这样就可以编辑文件了。

送你一个函数:

void MyDelay(long tt) /*暂停tt个百分之一秒*/

{

struct time now,last;

gettime(last);

gettime(now);

while((((now.ti_sec-last.ti_sec)*100+now.ti_hund-last.ti_hund))tt)

{

gettime(now);

}

}

这个函数可以暂停 0.01*tt 秒。

循环使用下面的句子:

Beep(frequency,soundDelay);

MyDelay(nosoundDelay/10);

就可以模拟那个音乐了。

在C语言里可以循环使用:

sound(frequency);

MyDelay(soundDelay/10);

nosound();

MyDelay(nosoundDelay/10);

就可以了

如何用c语言编出能用键盘敲出音乐的的程序

下面用beep函数发音,按键 1,2,3,4,5,6,7,8 对应 多来米发少。。。

按换行键结束。0.3秒一个音,不要按得太快。

#include windows.h

#include stdio.h

#include stdlib.h

void main()

{

char p;

int i=0;

printf("input 12345678..\n");

while ( i 50 ){

p = getch();

if (p == '\r') break;

switch(p-'0'){

case 1: Beep(523,300);break;

case 2: Beep(587,300);break;

case 3: Beep(659,300);break;

case 4: Beep(698,300);break;

case 5: Beep(784,300);break;

case 6: Beep(880,300);break;

case 7: Beep(980,300);break;

case 8: Beep(1060,300);break;

default: break;

}

i++;

}

exit(0);

}

求用C语言Beep函数弹出的黑人抬棺代码

全部给出,则程序太长了。这里教你关键技术,然后你可以自己写程序。

(1)用 Beep函数 ,要 包含 头文件 #include windows.h

(2)Beep函数有2个参数,第一个参数是声音的频率,第二个参数是所发声音长度毫秒

Beep(523,500); -- 中音 多,发0.5秒即500毫秒

Beep(587,500); -- 中音 来

Beep(659,500); -- 中音 米

Beep(698,500); -- 中音 法

Beep(784,500); -- 中音 少

Beep(880,500); -- 中音 拉

Beep(980,500); -- 中音 梯

Beep(1060,500); -- 高音 多

(3)休止符 用 Sleep(时间,单位毫秒);

如果 一拍用500毫秒,休息一拍 则为 Sleep(500);

弹出抬棺音乐,则要按曲子一个音符一个音符地去写。

例如:

#include stdio.h

#include stdlib.h

#include windows.h

int main () {

int t1=500,t05=250,t15=750;

Beep(523,t1);Beep(587,t1);Beep(659,t1);

Beep(698,t1);Beep(784,t1);Beep(880,t1);

Beep(980,t1);Beep(1060,t1);

Sleep(t1);

Beep(523,t05);Beep(587,t05);Beep(659,t05);

Beep(698,t05);Beep(784,t05);

return(0);

}

曲子: 1234567高1 发音各500毫秒,停500毫秒, 12345 发音各250毫秒。

求c语言 beep函数 的高音 中音 低音 的函数值

下面程序演奏低、中、高音音阶,每个音500毫秒:

#includewindows.h

#includestdio.h

void main()

{ float ss[7]={261.6,293.7,329.6,349.2,392,440,493.9};

int i;

for ( i=0;i7;i++ ) Beep((DWORD)ss[i]/2,(DWORD)500); //低音就是中音除以2

Beep((DWORD)0,(DWORD)1000); //音阶间停顿一秒

for ( i=0;i7;i++ ) Beep((DWORD)ss[i],(DWORD)500);

Beep((DWORD)0,(DWORD)1000);

for ( i=0;i7;i++ ) Beep((DWORD)ss[i]*2,(DWORD)500); //高音频率是中音的一倍

}


当前文章:c语言Beep函数乐谱 c语言beep函数音调
标题来源:http://cxhlcq.com/article/hggsid.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部