标题: 单片机驱动蜂鸣器声音很小,且不连续是滴滴滴的声音 [打印本页]

作者: gyg    时间: 2020-4-30 20:17
标题: 单片机驱动蜂鸣器声音很小,且不连续是滴滴滴的声音
我使用的是普中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.                                 }
复制代码




作者: xxpp2011    时间: 2020-4-30 20:17
                           
while(yanwu >= yushe_yanwu)            //烟雾大于等于预设值
{
       Led_Red2 = 0;                          /*打开烟雾报警灯*/
       Beep= 1;                 //蜂鸣器报警  
       yanwujiance();         //重新检测烟雾浓度                                    
  }
Led_Red2 = 1;                          /*关闭烟雾报警灯*/                  
Beep= 0;                 //蜂鸣器复位
作者: Jiam    时间: 2020-4-30 22:50
这种情况应该是延时时间太长了  可以发一下延时函数出来看看
作者: ibeam    时间: 2020-4-30 23:00
你的delay(5)是延时5ms还是多久?能不能附上你说的附带例程程序看看与你的有什么差别?还有你的硬件和例程的硬件有什么差别?
作者: csmyldl    时间: 2020-5-1 00:02
硬件电路未加三极管进行驱动
作者: TTQ001    时间: 2020-5-1 09:18
也许将原始代码与你自己的代码进行比较以检查有什么不同
作者: hantu    时间: 2020-5-1 09:39
因为普中板用的是无源蜂鸣器,要用高频方波驱动才好好发声,它的例程是这么做的,所以正常。而你的代码只是简单地改变电平并稍延时让它响,当然声音不会很响。
作者: xxpp2011    时间: 2020-5-1 10:18
Beep= 1;
delay(5);
  Beep= 0;
  delay(5);
每响5ms中断5ms当然不连续了。
作者: gyg    时间: 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--);
}
作者: gyg    时间: 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.                                 }
复制代码

作者: gyg    时间: 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.                                 }
复制代码

作者: 银河天地    时间: 2020-5-1 14:12
如果是有源的,增大延时试试看,如果是无源的,减小延时试试看




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1