找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9985|回复: 10
收起左侧

单片机驱动无源蜂鸣器不响,求助

  [复制链接]
ID:390190 发表于 2018-9-8 21:40 | 显示全部楼层 |阅读模式

电路图里就是p2.4

电路图里就是p2.4
蜂鸣器在p2.4
Windows 7 x64-2018-09-08-21-28-45.png
开始单步执行
Windows 7 x64-2018-09-08-21-29-06.png
执行后蜂鸣器被给了低电平 可是并没有响
Windows 7 x64-2018-09-08-21-29-20.png


用的是在线调试模式,大神求解

还有一个问题就是 data D区 不是00h-7fh吗 为什么会有0a0h

回复

使用道具 举报

ID:384109 发表于 2018-9-8 23:03 | 显示全部楼层
无源蜂鸣器是需要一定频率的脉冲波来驱动的,首先确定是否是无源蜂鸣器,现在非必要情况一般应该都是用有源蜂鸣器,电路简单,程序也简单。
现在的51单片机的RAM都已经是0-0XFF了,不过0x80-0xff的寻址方式好像和0-0X7F有不同

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:390190 发表于 2018-9-8 23:34 | 显示全部楼层
人中狼 发表于 2018-9-8 23:03
无源蜂鸣器是需要一定频率的脉冲波来驱动的,首先确定是否是无源蜂鸣器,现在非必要情况一般应该都是用有源 ...

可是我写了方波信号,所以无论是有源无源的蜂鸣器都应该至少会响吧。
回复

使用道具 举报

ID:373388 发表于 2018-9-8 23:49 | 显示全部楼层
无源蜂鸣器就是没有震荡源,需要自己加振荡源的,你可以让buzzer驱动管脚,2-3KHz的频率输出试一下

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:277550 发表于 2018-9-9 01:23 | 显示全部楼层

试试将延时时间,减到50~100ms

~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

ID:387733 发表于 2018-9-9 07:10 | 显示全部楼层
光有方波不行,频率必须满足人的耳朵可听范围,过低就是次声波,过高是超声波,蜂鸣器不能工作,人耳也无法接受
回复

使用道具 举报

ID:213173 发表于 2018-9-9 09:44 | 显示全部楼层
给你一个适合这个电路的演示程序试试
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit Buzzer=P2^4;

/*-------------------------------
  1ms延时程序(12MHz 12T)
-------------------------------*/
void delayms(uint k)
{
        uint i,j;
        for(i=k;i>0;i--)
                for(j=114;j>0;j--);
}
/*---------------------------
  无源蜂鸣器驱动程序(12MHz 12T)
---------------------------*/
void BUZZER(uint x)                                //0.24ms半周期蜂鸣器程序
{
        uchar t;
        while(x--)
        {       
                Buzzer=~Buzzer;                        //蜂鸣器谐振频率2048Hz
                for(t=0;t<28;t++);                //0.24ms半周期=2083Hz
        }                                                       
        Buzzer=1;                                                //复位
}
void main()
{  
        while(1)
        {   
                BUZZER(500);
                delayms(500);
        }         
}
回复

使用道具 举报

ID:394504 发表于 2018-9-9 20:25 | 显示全部楼层
无源蜂鸣器震荡须有高低电平变化 三极管导通必须是b极和e极有足够的压降 而你的无源蜂鸣器放在c极无形中抬高了c、b极电势 使b、e极压降不能够使三极管正常导通 就没有了高低电平的变化 蜂鸣器就无法震荡 你可以吧蜂鸣器连接在e极 和vcc之间 再加个限流电阻
回复

使用道具 举报

ID:395800 发表于 2018-9-9 23:14 | 显示全部楼层
应该是你们震荡源有问题,在测试看看
回复

使用道具 举报

ID:393398 发表于 2018-9-10 14:54 | 显示全部楼层
检查焊的是不是搞错成无源蜂鸣器,5V有源蜂鸣器外壳上有标示+号,长脚为正
回复

使用道具 举报

ID:226392 发表于 2018-9-10 16:22 | 显示全部楼层
data D区 不是00h-7fh吗 为什么会有0a0h ?地址是连续的,有但是已经不是data。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表