打印
[51单片机]

蜂咛器声音很小,像蚊子一样

[复制链接]
4536|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
呵呵与哈哈|  楼主 | 2014-7-18 12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
sbit Beep=  P1^5 ;
int a;
void Delay(unsigned int i) ;
void main()
{
          while(1)
        {
        a=60000;
        Beep= 1;
        while(a--);
        a=60000;
        Beep= 0;
        while(a--);
       
        }
}


#include <reg52.h>
sbit Beep =  P1^5 ;
void Delay(unsigned int i) ;
void main()
{
        Beep= 1;
        Delay(5);
        Beep= 0;
        Delay(5);
}
void Delay(unsigned int i)
{
        char j;
        for(i; i > 0; i--)
                for(j = 200; j > 0; j--);
}  

第一个程序声音很小,第二个声音就正常,为什么呢?有什么区别?

相关帖子

沙发
呵呵与哈哈|  楼主 | 2014-7-18 12:38 | 只看该作者
新手啊,刚买的HC6800开发板

使用特权

评论回复
板凳
gonggu8181| | 2014-7-18 12:42 | 只看该作者
蜂鸣器

使用特权

评论回复
地板
ddllxxrr| | 2014-7-18 12:46 | 只看该作者
第一个反转的速度太慢,第二个快,所以响

使用特权

评论回复
5
呵呵与哈哈|  楼主 | 2014-7-18 12:48 | 只看该作者
ddllxxrr 发表于 2014-7-18 12:46
第一个反转的速度太慢,第二个快,所以响

我把a值调小,只是响的频率快了,但声音还是很小啊

使用特权

评论回复
6
呵呵与哈哈|  楼主 | 2014-7-18 12:48 | 只看该作者
ddllxxrr 发表于 2014-7-18 12:46
第一个反转的速度太慢,第二个快,所以响

我把a值调小,只是响的频率快了,但声音还是很小啊

使用特权

评论回复
7
呵呵与哈哈|  楼主 | 2014-7-18 12:53 | 只看该作者
ddllxxrr 发表于 2014-7-18 12:46
第一个反转的速度太慢,第二个快,所以响

可以了,我把A值改到50

使用特权

评论回复
8
asfraee| | 2014-7-18 12:54 | 只看该作者
你的晶振取多大,用软件模拟下看看延时时间多少,频率太低或太高都不行,超过音频的范围人耳是听不到的

使用特权

评论回复
9
NE5532| | 2014-7-18 13:47 | 只看该作者
先搞清楚你驱动的是有源蜂鸣器还是无源的,无源的要送震荡信号,有源的是送电源,另外软件延时的时间长度要实际测试,时间断了蜂鸣器根本来不及叫出声音。
一般来说开发板上都是有源蜂鸣器,驱动时间50mS以下,就不是很听得清了。

使用特权

评论回复
评分
参与人数 1威望 +10 收起 理由
icecut + 10
10
NWPU_CHEN| | 2014-7-18 14:20 | 只看该作者
楼上版主正解,弄清有源无源才是关键,知道有源无源一个蜂鸣器还怕它叫不大声?

使用特权

评论回复
11
旭日东起| | 2014-7-18 14:21 | 只看该作者
无源蜂鸣器的响度与频率有关的,一般是2K的频率

使用特权

评论回复
12
ALISWANG| | 2014-7-18 17:10 | 只看该作者
顶下斑主!

使用特权

评论回复
13
yht0917| | 2014-7-18 17:22 | 只看该作者
我一般都用的PWM波控制的

使用特权

评论回复
14
moyue| | 2014-7-18 17:26 | 只看该作者
看蜂鸣器规格,驱动电流、有源无源、最佳频率、、、、、、、

使用特权

评论回复
15
moyue| | 2014-7-18 17:27 | 只看该作者
moyue 发表于 2014-7-18 17:26
看蜂鸣器规格,驱动电流、有源无源、最佳频率、、、、、、、

还有驱动波形

使用特权

评论回复
16
xg3469| | 2014-7-18 20:59 | 只看该作者
uint a;

使用特权

评论回复
17
lu50211| | 2014-7-19 08:27 | 只看该作者
楼上说的对,楼主int a的值达不到60000,uint a 才能

使用特权

评论回复
18
mcu5i51| | 2014-7-19 09:25 | 只看该作者
int a = 60000;while(a--)...;
应该可以的,while中不会判断符号,只会判断是不是0;这就是补码负数的好处之一了;
出现赋值符号处,应该有些警告

使用特权

评论回复
19
通宵敲代码| | 2014-7-19 10:25 | 只看该作者
确定是无源蜂鸣器,控制方式不一样!
查一下振荡频率,太高了声音会变小!
增加一下驱动电流!

使用特权

评论回复
20
shi910229| | 2014-7-19 10:45 | 只看该作者
频率,驱动电流。你看下这俩~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝