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

2024年12月02日 17:57
有4个网友回答
网友(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=300;a>0;a--)//第一个声音的长度

{
BUZ = ~BUZ;//产生音频
Delay_1us(100);//音调设置,延时调整赋值量可以调节音调
}
BUZ = 1;//音乐结束后扬声器关闭
}

网友(2):

sbit SPK = P1^7;
//-------------------------
void beep1()
{
int i, j;
for(i = 0; i < 200; i++) { SPK = ~SPK; for(j = 0; j < 200; j++);}
}
//-------------------------
void beep2()
{
int i, j;
for(i = 0; i < 200; i++) { SPK = ~SPK; for(j = 0; j < 400; j++);}
}
//-------------------------

其中的数字,随便改一改,自己听听效果。

网友(3):

改变发生频率,用定时器生成两个频率就行了

网友(4):

让蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。
#include
#define uchar unsigned char
#define uint unsigned int
sbit SPK=P1^0;
sbit K1=P1^7;
//发声函数
void Alarm(uchar t)
{
uchari,j;
for(i=0;i<200;i++)
{
SPK=~SPK;
for(j=0;j }
}
voidmain()
{
SPK=0;
while(1)
{
if(K1==1)
{
Alarm(90);
Alarm(120);
}
}
}