51单片机如何让蜂鸣器到达条件时只响一声,继续检测下一次条件 满足时再响一下(就是满足响一下以后不再持续发声)用到bit位控制。
怎么main函数里没有fmq 只通过q就可以控制 fmq吗?
追答我是用中断在刷的 你不是说用bit变量控制吗 中断1ms更新一次数据 保证I0口和内部中断值一致啊 当然可以把中断去掉 然后把main里的q换成fmq就行了
追问看不懂呢 能具体解释一下么 或者不用bit也行 就是你给个函数让他满足条件响一声就行 现在的问题是我一满足蜂鸣器就响个不停
追答那是你忘了关啦
别忘了在开蜂鸣器之后给个延时代表开的时间
然后关掉 你不关掉当然不会停
sbit fmq =P1^0;
void fmq_run() //写入这个函数就响一下蜂鸣器 放进去就好了 具体条件你自己定
{
fmq =0;
delay(500); //delay你自己打吧 一般0.5秒左右差不多了 长短你自己定
fmq =1;
}
比如
if(xxx)
fmq_run();
不行呢 我这个是有源蜂鸣器 像你这样设置 他就滴滴滴的间断响
追答当然是写入一次就行了 运行一次就响一次啊 变音调还要改pwm的
本回答被提问者采纳