蜂鸣器有无源和有源两种,他们都有自己的工作频率,但是我们用PWM波也能控制蜂鸣器的发声频率
发布网友
发布时间:2022-05-11 16:03
我来回答
共4个回答
热心网友
时间:2023-10-14 19:23
接收的是工作频率,用话筒接受声音信号,然后再用示波器接受话筒产生的电压信号。
热心网友
时间:2023-10-14 19:24
工作频率为实际工作的频率,你用的是无源的可以用方波信号来驱动,但频率最好以工作频率为准
热心网友
时间:2023-10-14 19:24
de <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define max_note 32
uchar play_on;
uchar note_n;
uint int_n;
//flash uint t[9]=;
//flash uint t[9]=;
const uchar t[9]=;
const uchar d[9]=;
const uchar music[max_note]=;
// External Interrupt 1 service routine
#pragma interrupt_handler INT_1:3
void INT_1(void)
{
if(play_on==0)
{
//TCCR1A=0x40;
//TCCR1B=0x08;
//TCCR1B=0X09;
TCCR2=0x1b;
PORTA=~PORTA;
}
}
// Timer 1 output compare A interrupt service routine
#pragma interrupt_handler TIME2_COMP:4
void TIME2_COMP(void)
{
if(play_on==0)
{
note_n=0;
int_n=1;
play_on=1;
}
else
{
if(--int_n==0)
{
if(note_n<max_note)
{
TCCR2=0X18;
OCR2=t[music[note_n]];
int_n=d[music[note_n]];
note_n++;
int_n*=music[note_n];
note_n++;
TCCR2=0x1b;
}
else
{
play_on=0;
TCCR2=0X00; //因为设为CTC后,PD5输出低电平,会使蜂鸣器发声,所以将其转换成一般I/O口
}
}
}
}
void main(void)
{
PORTD=0X88;
DDRD=0X80;
DDRA=0XFF;
PORTA=0X00;
GICR|=0x80;
MCUCR=0x08;
MCUCSR=0x00;
GIFR=0x80;
TIMSK=0X80;
SREG=0X80;
while(1)
{}
}追问谢谢你的回答,但这不是程序的问题
热心网友
时间:2023-10-14 19:25
接受声音的话必须是频率在音频范围内,人耳才可以收听到