求教,怎样控制51单片机的蜂鸣器发出不同频率的声音

2024-12-02 23:01:45
推荐回答(2个)
回答1:

蜂鸣器是不能发出不同频率的声音的,要发出不同频率的声音,你需要选择speaker,比如:
#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);
}
}
}

回答2:

用定时器来产生频率,如产生100Hz的声音。
思路:
100Hz即每秒变换200次,每次的时间就是1/200秒=0.005秒=5毫秒。
计算定时器的初值:TH0 = 0x0EE; TL0 = 0x00;

#include
sbit BEEP=P0^0;//蜂鸣器引脚
void main(void)
{
//初始化定时器(晶振:11.0592MHz,12T)
TMOD = 0x01;
TH0 = 0x0EE;//5毫秒中断一次
TL0 = 0x00;
EA = 1;//开总中断
ET0 = 1;;//开中断
TR0 = 1;//启动定时器
while(1);//死循环等蜂鸣器响。
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x0EE;
TL0 = 0x00;
BEEP=!BEEP;//变换一次蜂鸣器
}