如让其响1S,频率约500HZ,可用软延时
uint i
for(i=0i<1000i++)
{
P1^0=~P1^0
delay_ms(1)
}
如果想长时间响,并且还不占用CPU,可以用定时器实现定时中断取反
void delay()void main()
{
PORTD = 0xFF
DDRD = 0xFF//初始化 AVR的不知道是不是这样的
while(1)
{
int i
for(i=0i<3i++)
{
PORTD=0x01//蜂鸣器IO
_delay(X);//x为响一次“滴”的时间
}
PORTD=0x00
delay(Y)//Y为你所说的 间隔1S想一次(改变Y值 调试你要的1s或用你的延时函数里的
}
}
void delay(int t)
{
int i,j
for(i=0i<ti++)
for(j=0j<300j++)
}
你就按反向时间为1ms算,一反一正2ms如果延时时间对的话就是500hz左右,而上面的程序总共响的时间也不过2,3ms对于人耳朵听力来说,2,3ms的短声其实并不敏感能听到滴一下就不错了。。
下面那个100的话起码响0.1秒了。。声音肯定要高的多。。
你这个可以暂时理解为PFM调压。。一个时间长,一个时间短,相同占空比下,肯定时间长的电压高。。所以感觉的也响
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)