单片机用C语言让蜂鸣器发出两种声调,怎么编程?

Python014

单片机用C语言让蜂鸣器发出两种声调,怎么编程?,第1张

不会修改程序,但是可以送你一段程序,如果有心就看看吧;

//以下程序运行于STC12C**单片机

// BUZ为蜂鸣器输出I/O口定义名称

void Delay_1us(uint aa) //1T单片机/12MHz的n个us用于蜂鸣器

{

while (aa--)

{

_nop_()

_nop_()

}

}

/*----------------------------

响一声短音

----------------------------*/

void beep(void)

{

uint a//定义变量用于发声的长度设置

for(a=300a>0a--)//第一个声音的长度

{

BUZ = ~BUZ//产生音频

Delay_1us(100)//音调设置,延时调整赋值量可以调节音调

}

BUZ = 1//音乐结束后扬声器关闭

}

通过中断的方式,使用定时器0来提供1KHz的方波,蜂鸣器引脚定义为P1.0。代码如下:#include<reg51.h>#defineu8unsignedcharsbitBEEP=P1^0voidmain{EA=1//开总中断IT0=1//打开定时器0源中断允许开关TMOD=0x01//选择定时器0工作在方式0TR0=1//启动定时器0TH1=(65536-1000)/256//赋值,定时1msTL1=(65536-1000)%256while(1){}}voidTIM()interrupt1{TH1=(65536-1000)/256TL1=(65536-1000)%256BEEP=~BEEP//蜂鸣器引脚输出1KHz方波}

#include<reg51.h>

#define uchar unsigned char

sbit k1=P1^0

sbit k2=P1^1

sbit k3=P1^2

sbit k4=P1^3

sbit fmq=P1^7

uchar cnt,sec

vodi t0isr() interrupt 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

cnt++

if(cnt>=20)

    {

    cnt=0

    sec--

    if(sec==0)

        {

        TR0=0

        fmq=1

        }

    }

}

main()

{

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

ET0=1

EA=1

while(1)   

    {

    if(k1==0)

        {

        sec=1

        cnt=0

        TR0=1

        while(k1==0)

        fmq=0

        }

    if(k2==0)

        {

        sec=2

        cnt=0

        TR0=1

        while(k1==0)

        fmq=0

        }

    if(k3==0)

        {

        sec=3

        cnt=0

        TR0=1

        while(k3==0)

        fmq=0

        }

    if(k4==0)

        {

        sec=4

        cnt=0

        TR0=1

        while(k1==0)

        fmq=0

        }

    }

}