找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动蜂鸣器声音很小,且不连续是滴滴滴的声音

[复制链接]
跳转到指定楼层
楼主
ID:497598 发表于 2020-4-30 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
25黑币
我使用的是普中V3.0开发板,使用附带的例程没问题,声音很响亮

但加载上我的程序之后,蜂鸣器的声音很小,且是不连续的为嘀嘀嘀的声音

恳请有经验的大佬指导一下

附上蜂鸣器相关程序

  1. sbit Beep = P1^1;                                                            //蜂鸣器
  2.                                 if(yanwu >= yushe_yanwu)            //烟雾大于等于预设值
  3.                                 {
  4.                                         Led_Red2 = 0;                          /*打开烟雾报警灯*/
  5.                                          Beep= 1;                 //蜂鸣器报警
  6.                                         delay(5);
  7.                                         Beep= 0;
  8.                                         delay(5);
  9.                                         Led_green2 = 1;
  10.                                 }
复制代码



最佳答案

查看完整内容

while(yanwu >= yushe_yanwu) //烟雾大于等于预设值 { Led_Red2 = 0; /*打开烟雾报警灯*/ Beep= 1; //蜂鸣器报警 yanwujiance(); //重新检测烟雾浓度 } Led_Red2 = 1; /*关闭烟雾报警灯*/ Beep= 0; ...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:452950 发表于 2020-4-30 20:17 | 只看该作者
                           
while(yanwu >= yushe_yanwu)            //烟雾大于等于预设值
{
       Led_Red2 = 0;                          /*打开烟雾报警灯*/
       Beep= 1;                 //蜂鸣器报警  
       yanwujiance();         //重新检测烟雾浓度                                    
  }
Led_Red2 = 1;                          /*关闭烟雾报警灯*/                  
Beep= 0;                 //蜂鸣器复位
回复

使用道具 举报

板凳
ID:624817 发表于 2020-4-30 22:50 | 只看该作者
这种情况应该是延时时间太长了  可以发一下延时函数出来看看
回复

使用道具 举报

地板
ID:683289 发表于 2020-4-30 23:00 | 只看该作者
你的delay(5)是延时5ms还是多久?能不能附上你说的附带例程程序看看与你的有什么差别?还有你的硬件和例程的硬件有什么差别?
回复

使用道具 举报

5#
ID:235200 发表于 2020-5-1 00:02 | 只看该作者
硬件电路未加三极管进行驱动
回复

使用道具 举报

6#
ID:420836 发表于 2020-5-1 09:18 | 只看该作者
也许将原始代码与你自己的代码进行比较以检查有什么不同
回复

使用道具 举报

7#
ID:462827 发表于 2020-5-1 09:39 | 只看该作者
因为普中板用的是无源蜂鸣器,要用高频方波驱动才好好发声,它的例程是这么做的,所以正常。而你的代码只是简单地改变电平并稍延时让它响,当然声音不会很响。
回复

使用道具 举报

8#
ID:452950 发表于 2020-5-1 10:18 | 只看该作者
Beep= 1;
delay(5);
  Beep= 0;
  delay(5);
每响5ms中断5ms当然不连续了。
回复

使用道具 举报

9#
ID:497598 发表于 2020-5-1 10:56 | 只看该作者
Jiam 发表于 2020-4-30 22:50
这种情况应该是延时时间太长了  可以发一下延时函数出来看看

void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 100; j > 0; j--);
}
回复

使用道具 举报

10#
ID:497598 发表于 2020-5-1 11:27 | 只看该作者
ibeam 发表于 2020-4-30 23:00
你的delay(5)是延时5ms还是多久?能不能附上你说的附带例程程序看看与你的有什么差别?还有你的硬件和例 ...
  1. 例程
  2. #include <reg51.h>
  3. sbit Beep =  P1^1 ;
  4. void delay(unsigned int i) ;
  5. void main()
  6. {
  7.          Beep= 1;
  8.          delay(5);
  9.          Beep= 0;
  10.          delay(5);
  11. }

  12. void delay(unsigned int i)
  13. {
  14.     char j;
  15.     for(i; i > 0; i--)
  16.         for(j = 200; j > 0; j--);
  17. }


  18. 我的部分程序

  19. sbit Beep = P1^1;                                                            //蜂鸣器
  20. void delay(unsigned int i)
  21. {
  22.     char j;
  23.     for(i; i > 0; i--)
  24.         for(j = 200; j > 0; j--);
  25. }
  26.                                 if(yanwu >= yushe_yanwu)            //烟雾大于等于预设值时
  27.                                 {
  28.                                         Led_Red2 = 0;                          /*打开烟雾报警灯*/
  29.                                         Beep= 1;                 //蜂鸣器报警
  30.                                         delay(5);
  31.                                         Beep= 0;
  32.                                         delay(5);
  33.                                         Led_green2 = 1;
  34.                                 }
复制代码
回复

使用道具 举报

11#
ID:497598 发表于 2020-5-1 11:29 | 只看该作者
TTQ001 发表于 2020-5-1 09:18
也许将原始代码与你自己的代码进行比较以检查有什么不同

我是按例程上改的,用例程的程序很响亮,我的程序不响亮

  1. 例程程序
  2. #include <reg51.h>
  3. sbit Beep =  P1^1 ;
  4. void delay(unsigned int i) ;
  5. void main()
  6. {
  7.          Beep= 1;
  8.          delay(5);
  9.          Beep= 0;
  10.          delay(5);
  11. }

  12. void delay(unsigned int i)
  13. {
  14.     char j;
  15.     for(i; i > 0; i--)
  16.         for(j = 200; j > 0; j--);
  17. }


  18. 我的 程序(部分)
  19. sbit Beep = P1^1;                                                            //蜂鸣器
  20. void delay(unsigned int i)
  21. {
  22.     char j;
  23.     for(i; i > 0; i--)
  24.         for(j = 200; j > 0; j--);
  25. }
  26.                                 if(yanwu >= yushe_yanwu)            //烟雾大于等于预设值时
  27.                                 {
  28.                                         Led_Red2 = 0;                          /*打开烟雾报警灯*/
  29.                                         Beep= 1;                 //蜂鸣器报警
  30.                                         delay(5);
  31.                                         Beep= 0;
  32.                                         delay(5);
  33.                                         Led_green2 = 1;
  34.                                 }
复制代码
回复

使用道具 举报

12#
ID:519352 发表于 2020-5-1 14:12 | 只看该作者
如果是有源的,增大延时试试看,如果是无源的,减小延时试试看
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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