注意蜂鸣器正负极,如果两引脚的高度不一样,长为正短为负。然后试试输出为高电平。 |
beep没有取反,已经产生错误了 |
应该是beep的问题,试试取反,这里面涉及了你的蜂鸣器时有源和无源的问题 |
STC89C51 发表于 2018-4-11 13:41 那就是蜂鸣器信号没对 |
是无缘蜂鸣器吧 |
你用的应该是无源蜂鸣器 它必须通过对beep取反才能获得一定频率的声音 如果你希望beep=0就可以一直响必须还要用有源的蜂鸣器 |
如果是无源蜂鸣器要写一个程序产生一个方波才能发声 |
说这个图是高电平使Q1导通的回去好好学习三极管原理...... |
先确定有源还是无源,一个是高电平驱动的一个是低电平的 |
husb2018 发表于 2018-4-16 11:43 回答的好 |
是不是有源蜂鸣器 |
用高频三极管 |
可以试一下= |
给高电平试试 |
单片机输出驱动蜂鸣器,还是单片机拉低然后电源驱动蜂鸣器了 |
来个pwm脉冲试试 |
你这个是无源蜂鸣器 要来回取反才行 |
高电平触发 |
程序里beep取反应该没问题了 |
你可以试试speaker 或者看看电压有没有给够 |
换个三极管试试 ,还有那个蜂鸣器有个本来就是不响的 |
高电平 |
beep=~beep;表明你用的蜂鸣器是无源的,有源蜂鸣器beep=0;就会一直响 |
main里面增加while(1)语句,不行的话就改为脉冲去驱动看看 |
高电平发声,P0口需要上拉电阻 |
有源和无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路 |
你这个是无源蜂鸣器 需要给一定方波才会响 |
有源蜂鸣器你这样写没问题,但是无源蜂鸣器就有问题 |
可以试试延迟,把高点电平都输出看看就知道是程序问题还是硬件问题了,如果那样不响,那就是硬件上有问题了,再检查你的电路有没有真的连通了或者没有短路 |
蜂鸣器高电平发声,或者有时还可以看看你的仪器坏了没 |
1314250 发表于 2018-4-15 22:40 我怎么看它是有源还是无源呢? |
Q1坏了 |
知道了吗 |
楼主你可以首先看一下你那蜂鸣器是有源还是无源的,如果是有源的你还需要外加电路,还有就是你蜂鸣器是高电平触发还是低电平触发,这都关系你蜂鸣器响不响的 |
蜂鸣器类型,引脚电压测量 |
你运行时看看引脚的电平输入是否正确,如果正确就是蜂鸣器的问题了 |
改成 beep=~beep;试试 |
我在后面加了一句beep=~beep; 它就响了 |
hzcxq 发表于 2018-4-13 15:23 哇,真的响了,谢谢你,不过我还想知道是什么原理,我看单片机郭天祥51单片机教学视频里说的,直接让它=0就可以了,为什么我这里还有取反呢? |
经试验,=1的时候,也不响 |