找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11229|回复: 61
收起左侧

单片机蜂鸣器不响

  [复制链接]
ID:304233 发表于 2018-4-11 11:06 来自手机 | 显示全部楼层 |阅读模式
单片机程序:
#include <reg52.h>
sbit beep=P3^6;
void main()
{
  beep=0;
}
収*O_20180411_110526.png
回复

使用道具 举报

ID:304233 发表于 2018-4-11 11:27 来自手机 | 显示全部楼层
已经生成了hex文件,也已经把程序下载好烧录进去了
回复

使用道具 举报

ID:137239 发表于 2018-4-11 13:41 | 显示全部楼层
51xueze 发表于 2018-4-11 11:27
已经生成了hex文件,也已经把程序下载好烧录进去了

楼主确认下蜂鸣器类型,蜂鸣器有有源和无源之分,楼主恐怕是无源蜂鸣器。

评分

参与人数 1黑币 +2 收起 理由
ljldx + 2 分析准确

查看全部评分

回复

使用道具 举报

ID:234790 发表于 2018-4-11 13:51 | 显示全部楼层
你先测量一下p3.6是不是真的输出0。重点是区分有源蜂鸣器和无源蜂鸣器

评分

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

查看全部评分

回复

使用道具 举报

ID:306996 发表于 2018-4-12 22:23 | 显示全部楼层
***************************************************************************************/

#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>                //因为要用到左右移函数,所以加入这个头文件

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit beep=P1^5;          

/*******************************************************************************
* 函 数 名         : delay
* 函数功能                   : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
        while(i--);       
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
*******************************************************************************/
void main()
{       
        while(1)
        {       
                beep=~beep;
                delay(10); //延时大约100us   通过修改此延时时间达到不同的发声效果       
        }
}

评分

参与人数 2黑币 +22 收起 理由
admin + 20 回帖助人的奖励!
ljldx + 2 控制占空比 可以改变音色

查看全部评分

回复

使用道具 举报

ID:290305 发表于 2018-4-13 08:55 | 显示全部楼层
beep没有取反,不能使它震动

评分

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

查看全部评分

回复

使用道具 举报

ID:307107 发表于 2018-4-13 09:37 | 显示全部楼层
亲,从你发的电路图来看应该是高电平才会发声,如果还不发声,请检查三极管和蜂鸣器是否损坏

评分

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

查看全部评分

回复

使用道具 举报

ID:307107 发表于 2018-4-13 09:39 | 显示全部楼层
ssz666 发表于 2018-4-13 08:55
beep没有取反,不能使它震动

浅谈:从电路图看,你的蜂鸣器是高电平工作的,如果还不工作检查三极管和蜂鸣器是否损坏

评分

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

查看全部评分

回复

使用道具 举报

ID:307107 发表于 2018-4-13 09:40 | 显示全部楼层
浅谈,从电路图上看是高电平发声的
回复

使用道具 举报

ID:307186 发表于 2018-4-13 11:06 | 显示全部楼层
楼主的蜂鸣器类型不对吧
回复

使用道具 举报

ID:222006 发表于 2018-4-13 12:06 | 显示全部楼层
高电平。
回复

使用道具 举报

ID:305073 发表于 2018-4-13 12:30 | 显示全部楼层
你把它输出高电平试试
回复

使用道具 举报

ID:307262 发表于 2018-4-13 13:26 | 显示全部楼层
P3.6为1时才会响吧
回复

使用道具 举报

ID:307139 发表于 2018-4-13 13:57 | 显示全部楼层
蜂鸣器是5V还是3.3V?楼主VCC可改成5V试一试

评分

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

查看全部评分

回复

使用道具 举报

ID:307285 发表于 2018-4-13 14:04 | 显示全部楼层
三极管是否导通
回复

使用道具 举报

ID:7485 发表于 2018-4-13 15:05 | 显示全部楼层
092414140zdy 发表于 2018-4-13 09:37
亲,从你发的电路图来看应该是高电平才会发声,如果还不发声,请检查三极管和蜂鸣器是否损坏

不是吧?低电平会响吧?
回复

使用道具 举报

ID:307368 发表于 2018-4-13 15:17 | 显示全部楼层
量一下就知道了。正常来说,如果是无源的话,你的频率高得耳朵听不见,一般蜂鸣器是1K等K级的频率,你的不精度延时,你得试到秒,之后再降下去。太快了。
注意低级错误 ,例如没有接电。IO口看错。如果有没有万用表,用LED+R试一下。有亮就有电。

评分

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

查看全部评分

回复

使用道具 举报

ID:307368 发表于 2018-4-13 15:19 | 显示全部楼层
/*******************************************************************************
* 函 数 名         : delay
* 函数功能                   : 延时函数,i=1时,大约延时10us <-------------------------这个地方大错特错
*******************************************************************************/
void delay(u16 i)
{
        while(i--);        
}

评分

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

查看全部评分

回复

使用道具 举报

ID:307382 发表于 2018-4-13 15:23 来自手机 | 显示全部楼层
51xueze 发表于 2018-4-11 11:27
已经生成了hex文件,也已经把程序下载好烧录进去了

把beep取反就可以
回复

使用道具 举报

ID:307389 发表于 2018-4-13 15:29 | 显示全部楼层
遇到过这样的问题
回复

使用道具 举报

ID:307391 发表于 2018-4-13 15:31 | 显示全部楼层
试试高电平
回复

使用道具 举报

ID:304233 发表于 2018-4-14 10:33 来自手机 | 显示全部楼层
淘宝上买的,店家说是有源的
回复

使用道具 举报

ID:304233 发表于 2018-4-14 10:51 来自手机 | 显示全部楼层
经试验,=1的时候,也不响
回复

使用道具 举报

ID:304233 发表于 2018-4-14 10:55 来自手机 | 显示全部楼层
hzcxq 发表于 2018-4-13 15:23
把beep取反就可以

哇,真的响了,谢谢你,不过我还想知道是什么原理,我看单片机郭天祥51单片机教学视频里说的,直接让它=0就可以了,为什么我这里还有取反呢?
回复

使用道具 举报

ID:304233 发表于 2018-4-14 10:55 来自手机 | 显示全部楼层
我在后面加了一句beep=~beep; 它就响了
回复

使用道具 举报

ID:307857 发表于 2018-4-14 11:27 | 显示全部楼层
改成 beep=~beep;试试
回复

使用道具 举报

ID:308386 发表于 2018-4-15 14:07 | 显示全部楼层
你运行时看看引脚的电平输入是否正确,如果正确就是蜂鸣器的问题了
回复

使用道具 举报

ID:308850 发表于 2018-4-15 21:17 | 显示全部楼层
蜂鸣器类型,引脚电压测量
回复

使用道具 举报

ID:308901 发表于 2018-4-15 22:39 | 显示全部楼层
楼主你可以首先看一下你那蜂鸣器是有源还是无源的,如果是有源的你还需要外加电路,还有就是你蜂鸣器是高电平触发还是低电平触发,这都关系你蜂鸣器响不响的
回复

使用道具 举报

ID:308901 发表于 2018-4-15 22:40 | 显示全部楼层
知道了吗
回复

使用道具 举报

ID:308915 发表于 2018-4-15 23:07 | 显示全部楼层
Q1坏了
回复

使用道具 举报

ID:304233 发表于 2018-4-16 08:42 来自手机 | 显示全部楼层
1314250 发表于 2018-4-15 22:40
知道了吗

我怎么看它是有源还是无源呢?
回复

使用道具 举报

ID:299898 发表于 2018-4-16 10:04 | 显示全部楼层
蜂鸣器高电平发声,或者有时还可以看看你的仪器坏了没
回复

使用道具 举报

ID:309045 发表于 2018-4-16 10:20 | 显示全部楼层
可以试试延迟,把高点电平都输出看看就知道是程序问题还是硬件问题了,如果那样不响,那就是硬件上有问题了,再检查你的电路有没有真的连通了或者没有短路
回复

使用道具 举报

ID:309050 发表于 2018-4-16 10:53 | 显示全部楼层
有源蜂鸣器你这样写没问题,但是无源蜂鸣器就有问题
回复

使用道具 举报

ID:309089 发表于 2018-4-16 10:58 | 显示全部楼层
你这个是无源蜂鸣器   需要给一定方波才会响
回复

使用道具 举报

ID:309091 发表于 2018-4-16 11:04 | 显示全部楼层
有源和无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路
回复

使用道具 举报

ID:309117 发表于 2018-4-16 11:23 | 显示全部楼层
高电平发声,P0口需要上拉电阻
回复

使用道具 举报

ID:309122 发表于 2018-4-16 11:39 | 显示全部楼层
main里面增加while(1)语句,不行的话就改为脉冲去驱动看看
回复

使用道具 举报

ID:309130 发表于 2018-4-16 11:43 | 显示全部楼层
beep=~beep;表明你用的蜂鸣器是无源的,有源蜂鸣器beep=0;就会一直响
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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