如何用C语言编一个发出声音的程序?

如何用C语言编一个发出声音的程序?,第1张

这个唱 多来米法少\x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0amain()\x0d\x0a{\x0d\x0aBeep(523,500)\x0d\x0aBeep(587,500)\x0d\x0aBeep(659,500)\x0d\x0aBeep(698,500)\x0d\x0aBeep(784,500)\x0d\x0aBeep(880,500)\x0d\x0aBeep(980,500)\x0d\x0aBeep(1060,500)\x0d\x0a\x0d\x0aSleep(500)\x0d\x0aBeep(523,500)\x0d\x0aBeep(587,500)\x0d\x0aBeep(659,500)\x0d\x0aBeep(698,500)\x0d\x0aBeep(784,500)\x0d\x0a}

蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。

#include<reg51.h>

#define

uchar

unsigned

char

#define

uint

unsigned

int

sbit

SPK=P1^0

sbit

K1=P1^7

//发声函数

void

Alarm(uchar

t)

{

uchari,j

for(i=0i<200i++)

{

SPK=~SPK

for(j=0j<tj++)

//由参数t行成不同的频率

}

}

voidmain()

{

SPK=0

while(1)

{

if(K1==1)

{

Alarm(90)

Alarm(120)

}

}

}

试试这个

int   speaker(unsigned   int   freq,unsigned   int   delay)  

{   static   int   flag=0,bit  

        if(flag==0)  

        {  

                flag=1  

                iopl(3)  

        }  

        outb(0xb6,0x43)  

        outb((freq   &   0xff),0x42)  

        outb((freq   >>   8),0x42)  

        bit=inb(0x61)  

        outb(3   |   bit,0x61)  

        usleep(10000*delay)  

        outb(0xfc   |   bit,0x61)  

}  

#include   <sys/io.h>  

#include   <unistd.h>  

main()  

{  

        int i

        for(i = 0 i<1 i++)  

        {  

                speaker( 2000,   40 )   

                sleep(2)

        }  

        speaker( 1000,   40 )  

}

希望对你有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11093477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存