标题: 请问怎么按键控制蜂鸣器音量大小啊 [打印本页]

作者: sanqisang    时间: 2018-7-9 11:33
标题: 请问怎么按键控制蜂鸣器音量大小啊
百度搜遍了也没找到例子。。。。有没有大神教教啊最简单的例子也可以。
听说无源的不能控制?那有源的呢

作者: hayden    时间: 2018-7-9 12:13
用PWM可调占空比控制音量。
作者: canw    时间: 2018-7-9 12:53
有源无源的貌似都无法控制音量。
作者: sanqisang    时间: 2018-7-9 13:14
hayden 发表于 2018-7-9 12:13
用PWM可调占空比控制音量。

程序不太会写....
作者: lzts88    时间: 2018-7-9 13:30
不能控制音量。音量大小是硬指标,参数定死的
作者: zsyzdx    时间: 2018-7-9 13:50
有源的可以的,控制电压就行了!!
作者: yayay    时间: 2018-7-9 14:00
想办法控制电流啊 电流控制音量啊
作者: 盘盘盘    时间: 2018-7-9 14:17
貌似无法控制哎
作者: 上善-若水    时间: 2018-7-9 15:23
1.可以用计数器然后控制三极管和蜂鸣器,可以简单用单片机实现计数功能,然后通过不同的电阻网络来调节电流。
2.用单片机输出pwm控制三极管然后控制蜂鸣器。仅供参考
#include<reg51.h>
#define uchar unsigned char
#define uint  unsigned int  
uchar count;
sbit  PWM=P2^0;
sbit  zz=P1^0;
uchar N=0;

void delay(uint k)
{  uchar i,j;
   for(i=0;i<k;i++)
    {for(j=0;j<121;j++)
        {;}
     }
}  

void T0_init()
{  TMOD=0x01;
   TH0=(65536-1000)/256;  
   TL0=(65536-1000)%256;  
   ET0=1;  
   TR0=1;
   EA=1;
}  

void time0(void) interrupt 1 using 1
{ TH0=(65536-1000)/256;  
  TL0=(65536-1000)%256;  
  count++;  
  if(count<=N) PWM=0;  
  else PWM=1;
  if(count>=100)
   count=0;
}

void main(void)
{
  T0_init();
   while(1)
    { if(!zz)          
     {delay(100);
            if(!zz)
                  {N=N+1;
                     if(N>100)
                           N=0;
                   }
          }  
          delay(100);
           }
            }





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