找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7862|回复: 44
打印 上一主题 下一主题
收起左侧

简单的单片机蜂鸣器不发声问题

  [复制链接]
跳转到指定楼层
楼主
50黑币

这是一个书上的蜂鸣器发声的项目,我觉得程序没有问题,但是仿真的时候为什么那个蜂鸣器他就是不会闪烁(就是 仿真的时候小正方块会变色的),是什么问题呢?还有就是 蜂鸣器到底要选那个好,sounder还是speaker还是buzzer  不太懂啊 ,书上的是speaker,但是speaker不是说要输入的信号要是波形吗,所以我用了buzzer。。。还有就是我百度了下不发声的可能原因是什么 要接VCC电源?..what  我这不是接了电源吗。。..帮帮忙谢谢     楼下 帮忙    谢谢啊....

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2019-6-16 06:35 | 只看该作者
加个上啦电阻试看
回复

使用道具 举报

板凳
ID:552614 发表于 2019-6-16 07:44 | 只看该作者
无源蜂鸣器好像是要一直取反的,beep=~beep,有源的话不用,还有可能是蜂鸣器电压参数没设置好
回复

使用道具 举报

地板
ID:483407 发表于 2019-6-16 08:38 | 只看该作者
你这样接,BUZ得不到工作电源的。改为Q1集电极接地,BUZ串接在电源与Q1发射极之间。
回复

使用道具 举报

5#
ID:207421 发表于 2019-6-16 09:56 | 只看该作者
1. X1改为 12MHz
2. R1改1K
3. BUZ1 电压改下,系统默认电压是5V ? 蜂鸣器可能是12V的
代码基本上没问题
回复

使用道具 举报

6#
ID:512883 发表于 2019-6-16 11:19 | 只看该作者
只是简单看了一下,蜂鸣器的接线都好像接错了吧,代码中定义的是“sbit beep=P2^7”,电路图中接的是P1^0接口,当然是不可能有反应的
回复

使用道具 举报

7#
ID:563590 发表于 2019-6-16 13:18 | 只看该作者
R1电阻是不是大了,你改成连接一个滑阻,然后测试一下哪个值合适
回复

使用道具 举报

8#
ID:563598 发表于 2019-6-16 13:28 | 只看该作者
P1.1口连线有问题,改成P1.3口
回复

使用道具 举报

9#
ID:105364 发表于 2019-6-16 14:26 | 只看该作者
1.代码P2.7接P1.0
2.高低电平延时太大 ,频率极低。
3.改模型SPEAKER(active),delay(200);试试
回复

使用道具 举报

10#
ID:559170 发表于 2019-6-16 16:05 | 只看该作者
系统默认电压是5V ? 蜂鸣器可能是12V的代码基本上没问题
回复

使用道具 举报

11#
ID:56665 发表于 2019-6-16 17:04 | 只看该作者
你这个电路上的蜂鸣器要选无源的。然后再看delay延时多长时间,时间长了和短了超出音频范围也会听不到响声,一般取1K-2KHZ,也就是1-2mS,自己试一下。
回复

使用道具 举报

12#
ID:207421 发表于 2019-6-16 18:29 | 只看该作者
看电路图片接口与程序接口不一致?  那P10怎么输出了低电平呢?
应该截图时间不一致,中间改动了吧。
回复

使用道具 举报

13#
ID:332444 发表于 2019-6-17 08:00 | 只看该作者
今天看一下应该是延时函数问题
回复

使用道具 举报

14#
ID:353118 发表于 2019-6-17 09:44 来自手机 | 只看该作者
更改频率试试
回复

使用道具 举报

15#
ID:564333 发表于 2019-6-17 10:52 来自手机 | 只看该作者
检查单片机最小系统是否工作
回复

使用道具 举报

16#
ID:564486 发表于 2019-6-17 13:26 | 只看该作者
要看你焊的蜂鸣器是共阴还是共阳,共阴的话代码取反就可以响,共阳得高低电平来回转换
回复

使用道具 举报

17#
ID:566504 发表于 2019-6-26 20:20 | 只看该作者
应该把P2^7改成P1^0
回复

使用道具 举报

18#
ID:425735 发表于 2019-7-3 16:55 | 只看该作者
程序是P2^7接线是P1^0
beep=~beep用取反
回复

使用道具 举报

19#
ID:98195 发表于 2019-7-5 08:23 来自手机 | 只看该作者
P2^7换成P1^0
回复

使用道具 举报

20#
ID:18297 发表于 2019-7-5 09:48 | 只看该作者
请更换整个发生器进行仿真,器件搜索:SOUNDER.
经过测试这个能发出声音。

新建位图图像.jpg (22.58 KB, 下载次数: 47)

新建位图图像.jpg
回复

使用道具 举报

21#
ID:578291 发表于 2019-7-5 10:03 | 只看该作者
小正方形接在地上或者正极上就是固定的电平,不会变;
建议用示波器查看一下蜂鸣器的另一端,看是否有电平变化,如果有的话,可能是频率不对,如果没有的话说明单片机内部的程序有一些问题。
回复

使用道具 举报

22#
ID:578291 发表于 2019-7-5 10:08 | 只看该作者
小正方形接在电源和地上面的话就是固定的电平,不会变化;建议用示波器查看一下蜂鸣器的另一个引脚,看是否有电平变化,如果没有变化的话说明可能是单片机的程序有一些问题,如果有变化的话,可能是频率不对,也就是延时之后产生的频率不能使蜂鸣器发出声音,需要更改延时长短。
回复

使用道具 举报

23#
ID:539631 发表于 2019-7-5 10:59 | 只看该作者
延时函数有问题,编译器编译时会将for 循环优化掉,建议在for函数里面添加_nop_()函数,这个函数可用于延时,只占用时间,不做任何事
回复

使用道具 举报

24#
ID:45439 发表于 2019-7-5 13:50 | 只看该作者
@博蒗 这个回答还是比较正确的,先把IO口连接修改一下,如果还是不能点亮再去找电路问题
回复

使用道具 举报

25#
ID:426861 发表于 2019-7-5 14:38 | 只看该作者
图中你单片机的复位引脚是高电平啊,你确认单片机能正常工作?
回复

使用道具 举报

26#
ID:433700 发表于 2019-7-5 15:21 | 只看该作者
第一:先用万用表测一下蜂鸣器有没有问题
回复

使用道具 举报

27#
ID:433700 发表于 2019-7-5 15:28 | 只看该作者
首先检查一下蜂鸣器有没有问题,然后判断电路有没有接好,最后看看程序有没有问题!!!!
首先检查一下蜂鸣器有没有问题,然后判断电路有没有接好,最后看看程序有没有问题!!!!
首先检查一下蜂鸣器有没有问题,然后判断电路有没有接好,最后看看程序有没有问题!!!!
回复

使用道具 举报

28#
ID:574936 发表于 2019-7-5 16:38 | 只看该作者

P1.1口连线有问题,改成P1.3口,然后最好加一个上拉电阻
回复

使用道具 举报

29#
ID:309976 发表于 2019-7-5 17:13 | 只看该作者
应该是你在图里把蜂鸣器接到了P10上,程序设置到P27了
回复

使用道具 举报

30#
ID:524818 发表于 2019-7-5 21:36 | 只看该作者
程序指定的P口和实际接线不符啊!
回复

使用道具 举报

31#
ID:420836 发表于 2019-7-6 11:08 | 只看该作者
Proteus图里蜂鸣器接的是P1^0,程序中定义的是 sbit beep=P2^7, 改Proteus图, or "sbit beep=P1^0"
回复

使用道具 举报

32#
ID:503018 发表于 2019-7-6 12:24 | 只看该作者
无源蜂鸣器好像是要一直取反的,beep=~beep,有源的话不用,还有可能是蜂鸣器电压参数没设置好
回复

使用道具 举报

33#
ID:578975 发表于 2019-7-6 15:33 | 只看该作者
用示波器看一下P1.0引脚是否有输出啊,如果电平都不对,那就检查软件,电平变化正常,再去检查硬件,硬件包括硬件失效以及引脚连接错误,焊接错误,等各种情况
回复

使用道具 举报

34#
ID:93224 发表于 2019-7-7 13:44 | 只看该作者
首先是蜂鸣器的电压 其次是蜂鸣器选择是有源还是无源
回复

使用道具 举报

35#
ID:582077 发表于 2019-7-11 09:53 | 只看该作者
我用的单片机蜂鸣器接的是P1^5口,您的延时太长了,改2000
回复

使用道具 举报

36#
ID:582077 发表于 2019-7-11 09:54 | 只看该作者
#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   通过修改此延时时间达到不同的发声效果       
        }
}
回复

使用道具 举报

37#
ID:582281 发表于 2019-7-11 13:56 | 只看该作者
线都接错啦,怎么响
回复

使用道具 举报

38#
ID:421308 发表于 2019-7-12 09:03 | 只看该作者
线接错了
回复

使用道具 举报

39#
ID:217539 发表于 2019-7-12 14:19 | 只看该作者
先不说线接错了,我一般都是接的NPN三极管再串联接一个电阻就可以了
回复

使用道具 举报

40#
ID:98195 发表于 2019-7-12 19:33 来自手机 | 只看该作者
程序里beep=P2^7改为Pq^0
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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