标题: 我想问一下,我这个有源蜂鸣器程序怎么不响啊?我找不到哪有问题? [打印本页]

作者: XH333    时间: 2021-11-21 18:11
标题: 我想问一下,我这个有源蜂鸣器程序怎么不响啊?我找不到哪有问题?
#include <reg52.h>
#include <intrins.h>

sbit buzz=P0^6;

void delay(unsigned int n)//Ñó3ùoˉêy
{
  unsigned i=0,j=0;
    for(i=0;i<n;i++)
    {
      for(j=0;j<120;j++);
    }
}

void main()
{

        while(1)
        {
            buzz=~buzz;
                delay(5000);
        }
}


作者: 188610329    时间: 2021-11-21 19:55
      while(1)
        {
            buzz=~buzz;
                delay(5000);
        }

你确定你是有源蜂鸣器?  你确定是有源蜂鸣器, 你这样写代码?

检查电路吧, 有源蜂鸣器有正负极,接反了绝对不会响.
作者: wulin    时间: 2021-11-21 20:45
单片机端口不能直接驱动蜂鸣器,需要经放大器才能驱动蜂鸣器。
作者: XH333    时间: 2021-11-21 21:56
188610329 发表于 2021-11-21 19:55
while(1)
        {
            buzz=~buzz;

谢谢!
这是买的51单片机,在做实验,电路没问题,是有源蜂鸣器没错。
作者: XH333    时间: 2021-11-21 22:02
wulin 发表于 2021-11-21 20:45
单片机端口不能直接驱动蜂鸣器,需要经放大器才能驱动蜂鸣器。

好的,多谢了!
作者: saint_lee1986    时间: 2021-11-21 22:56
蜂鸣器正极接电源,负极接单片机引脚。
作者: hhdsdy    时间: 2021-11-22 00:19
188610329 发表于 2021-11-21 19:55
while(1)
        {
            buzz=~buzz;

如果延时时间给弄成0.5秒呢?
作者: 溺水之鱼    时间: 2021-11-22 09:47
看看正负极有没接反啊
作者: 小黑屋525    时间: 2021-11-22 10:46
你可以程序直接给1,看响不响,再直接给0,再看响不响,这两种都不想那就是电路的问题了。
作者: 188610329    时间: 2021-11-22 12:21
hhdsdy 发表于 2021-11-22 00:19
如果延时时间给弄成0.5秒呢?

如果弄成0.5秒,电路正确的前提下,每秒钟响一次,一次响0.5秒,停0.5秒。但前提是电路正确,电流足够,所以,建议先检查蜂鸣器是否接正负极后能响,再连接三极管后确认限流电阻大小是否合适,最后再连单片机,如果你是不能推挽的单片机,应当用pnp管,如:8550
作者: dzc3458    时间: 2021-11-22 14:45
51io口驱动能力太小,只有20ma,要做个放大电路




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1