#include
<reg51.h>
#define
u8
unsigned
char
sbit
BEEP=P1^0
void
main
{
EA=1//开总中断
IT0=1//打开定时器0源中断允许开关
TMOD=0x01//选择定时器0工作在方式0
TR0=1//启动定时器0
TH1=(65536-1000)/256//赋值,定时1ms
TL1=(65536-1000)%256
while(1)
{}
}
void
TIM()
interrupt
1
{
TH1=(65536-1000)/256
TL1=(65536-1000)%256
BEEP=~BEEP//蜂鸣器引脚输出1KHz方波
}
让蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。#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)
}
}
}