当前位置:首页 > 蜂鸣器
  • 蜂鸣片的发生原理及驱动电路

    蜂鸣片的发生原理及驱动电路

      1、先来讲一讲蜂鸣片,蜂鸣片为银色的金属,如下图实物,有些不带焊接线缆,主要是靠两个振动板在通电的情况下,将电能转化为机械能,从而发生     蜂鸣片的发生原理如下,借助一下大神Amber_mon的解释:   压电蜂鸣片声音元件的声源主要来自压电振动板。压电振动板由一块两面印刷有电极的压电陶瓷板和一块金属板(黄铜或不锈钢等)组成。 使用粘合剂,将压电振动板和金属片粘接在一起,这就是我们俗称的蜂鸣片。   图2所示为压电振动板的振荡体系。 当在压电振动板的两个电极间施加直流电压时,由于压电效应,导致机械变形。对于形状扭曲的压电元件,其变形以辐射方向伸展。   压电振动板则沿图2(a)所示方向弯曲,而粘结于压电振动板的金属片不会伸展。相反,当压电元件收缩时,压电振动板则会沿图2(b)所示方向弯曲。因此,当交流电压穿过电极时,如图2(c)所示,图2(a)和图2(b)所示之弯曲就会交替重复发生,从而在空气中产生声波。   蜂鸣片一般而言,人的声频范围大约在20Hz到20kHz之间。人们最易听到的声频为2kHz到4kHz。因此,绝大部分压电声音元件应用在此声频范围内。   蜂鸣片一般而言,人的声频范围大约在20Hz到20kHz之间。人们最易听到的声频为2kHz到4kHz。因此,绝大部分压电声音元件应用在此声频范围内。同时,蜂鸣片谐振频率(f0)一般也选定在相同的范围内。如图3所示,谐振频率取决于支承压电振动板所采用的方法。如果压电振动板的形状相同,其数值将按照(a)、(b)和(c)的顺序变小。   但是,裸露的压电陶瓷片发声的效果是比较差的,因此需要有音腔,也就是共鸣腔,,压电振动板被安装在共鸣腔室内,以产生高声压(如图4)。利用公式(1)(赫尔姆霍茨公式),可以计算出图4中共鸣腔室的谐振频率(fcav)。由于压电振动板和共鸣腔室具有适当的谐振频率,分别为(f0)和(fcav),因此,可以通过控制两者的位置来增大特定频率下的声压和获得特定的带宽。   共鸣腔的直接效果是将声音的音量放大,也是就声音集中在一起发出,这和喇叭装腔体的效果是一样的,如果有兴趣,你拿一个没有音腔的喇叭,先放个音乐,发现声音很小,拿个纸板,围绕一圈喇叭,发现效果增大了很多,就是这个原理。   蜂鸣片的驱动电路   2、然后将蜂鸣器,蜂鸣器就是将蜂鸣片封装在一个腔体内的发生器件,分有源和无源,   有源和无源的区别是驱动上需不需要输出频率的脉冲发生,有源直接高低电平就能发声,无源需要输出一定频率的波形驱动发声。电路上两者可以兼容通用   3、驱动电路区别   其实蜂鸣器和蜂鸣片从上面的分析也知道,都是同一类器件,所以驱动电路都是一致的,都是采用三极管去放大驱动,电路图如此类:   然而,。。。。。蜂鸣片如果你用这种方式驱动,基本只能听到 嘤嘤嘤的萝莉音了,哈哈哈,所以蜂鸣片一般都是升压驱动,就会用到升压电感,   使用这种升压电感,配合下面的电路,就能达到蜂鸣片+音腔,制造出轰天响一样的报警声了,前提是频率设计正确。

    时间:2020-05-13 关键词: 蜂鸣器 蜂鸣片

  • 电磁式蜂鸣器和压电式蜂鸣器的区别

    电磁式蜂鸣器和压电式蜂鸣器的区别

      电磁式蜂鸣器广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件;压电式蜂鸣器用于音乐贺卡、电子门铃和电子玩具等小型电子用品上作发声器件。   按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器。   1、电磁式蜂鸣器   电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。电磁式由于音色好,所以多用于语音、音乐等设备。   2、压电式蜂鸣器   压电式蜂鸣器的主要部件是一种叫压电陶瓷片的电子发音元件,是在两片铜制圆形电极中间放入压电陶瓷介质材料,当在两片电极上面接通交流音频信号时,压电片根据信号的大小频率发生震动而产生相应的声音。      电磁式蜂鸣器和压电式蜂鸣器的区别   压电式蜂鸣器是以压电陶瓷的压电效应,来带动金属片的振动而发声;电磁式蜂鸣器,则是用电磁的原理,通电时将金属振动膜吸下,不通电时依振动膜的弹力弹回,故压电式蜂鸣器是以方波来驱动。   电磁式是1/2方波驱动,压电式蜂鸣器需要比较高的电压才能有足够的音压,一般建议为9V以上。压电的有些规格,可以达到120dB以上,较大尺寸的也很容易达到100dB。电磁式蜂鸣器用1.5V就可以发出85dB以上的音压。

    时间:2020-05-13 关键词: 蜂鸣器 压电式蜂鸣器 电磁式蜂鸣器

  • 关于调试蜂鸣器驱动电路的解决办法

      说法一:   并联上电阻,提供了放电的通路,有充有放,音量会提高。   蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。   蜂鸣器在电路中用字母“H”或“HA”(旧标准“FM”、“ZZG”、“LB”、“JD”等)表示。   说法二:   首先确定你的蜂鸣器工作电压是否与实际工作电压相符, 不要将12V蜂鸣器拿到5V系统使用,肯定声音小。还有一种情况是电路设计不合理,如下所述:   你的蜂鸣器大概直接(或者经过电阻)接到三级管的集电极去了, 这样的话,即使三极管完全导通,蜂鸣器也难响,只会有唧唧的小声。原因是蜂鸣器工作电流不是均衡的,瞬间需要电流大,因此,电源要有能力给蜂鸣器提供瞬间大电流的能力,而小功率三极管难以做到这一点。解决办法是:给蜂鸣器并联一个小电容,比如1UF以上的,1UF, 2.2UF,4.7UF都可以,这样就能依靠电容放电提供瞬间电流了,你试试看。   说法三:   蜂鸣器,是电容性的器件,三极管通断,只是间歇充电,充满了不放,声音较小。   用单片机的引脚直接驱动蜂鸣器,声音肯定小,不可能大呀。   因单片机的引脚的驱动能力很小,不能直接驱动蜂鸣器的。   首先,要看你的单片机是什么型号的,如果是STC10及以上系列的单片机,I/O设置为强推挽模式才可以。   其它型号的单片机,就必须用一个三极管放大后再驱动蜂鸣器了。

    时间:2020-05-13 关键词: 驱动电路 蜂鸣器

  • 如何解决蜂鸣器声音小的问题

      说法一:   并联上电阻,提供了放电的通路,有充有放,音量会提高。   蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。   蜂鸣器在电路中用字母“H”或“HA”(旧标准“FM”、“ZZG”、“LB”、“JD”等)表示。   说法二:   首先确定你的蜂鸣器工作电压是否与实际工作电压相符, 不要将12V蜂鸣器拿到5V系统使用,肯定声音小。还有一种情况是电路设计不合理,如下所述:   你的蜂鸣器大概直接(或者经过电阻)接到三级管的集电极去了, 这样的话,即使三极管完全导通,蜂鸣器也难响,只会有唧唧的小声。原因是蜂鸣器工作电流不是均衡的,瞬间需要电流大,因此,电源要有能力给蜂鸣器提供瞬间大电流的能力,而小功率三极管难以做到这一点。解决办法是:给蜂鸣器并联一个小电容,比如1UF以上的,1UF, 2.2UF,4.7UF都可以,这样就能依靠电容放电提供瞬间电流了,你试试看。   说法三:   蜂鸣器,是电容性的器件,三极管通断,只是间歇充电,充满了不放,声音较小。   用单片机的引脚直接驱动蜂鸣器,声音肯定小,不可能大呀。   因单片机的引脚的驱动能力很小,不能直接驱动蜂鸣器的。   首先,要看你的单片机是什么型号的,如果是STC10及以上系列的单片机,I/O设置为强推挽模式才可以。   其它型号的单片机,就必须用一个三极管放大后再驱动蜂鸣器了。

    时间:2020-05-13 关键词: 单片机 蜂鸣器

  • 单片机蜂鸣器控制程序和驱动电路

    蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。 按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振荡源,如图 9-8 所示中,给了 BUZZ 引脚一个低电平,蜂鸣器就会直接响。而无源蜂鸣器内部是不带振荡源的,要让他响必须给 500Hz~4.5KHz 之间的脉冲频率信号来驱动它才会响。有源蜂鸣器往往比无源蜂鸣器贵一些,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,此外无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来“do re mi fa sol la si”的效果,可以用它制作出简单的音乐曲目,比如生日歌、两只老虎等等。   图 蜂鸣器电路原理图 我们来看一下图中的电路,蜂鸣器电流依然相对较大,因此需要用三极管驱动,并且加了一个 100 欧的电阻作为限流电阻。此外还加了一个 D4 二极管,这个二极管叫做续流二极管。我们的蜂鸣器是感性器件,当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。而我们知道,电感的一个特点就是电流不能突变,导通时电流是逐渐加大的,这点没有问题,但当关断时,经“电源-三极管-蜂鸣器-地”这条回路就截断了,过不了任何电流了,那么储存的电流往哪儿去呢,就是经过这个 D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击。接续关断时的电流,这就是续流二极管名称的由来。 蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,就是简单发出个声音就行,我们用程序简单做了个 4KHZ 频率下的发声和 1KHZ 频率下的发声程序,同学们可以自己研究下程序,比较下实际效果。 #include sbit BUZZ = P1^6; //蜂鸣器控制引脚 unsigned char T0RH = 0; //T0 重载值的高字节 unsigned char T0RL = 0; //T0 重载值的低字节 void OpenBuzz(unsigned int frequ); void StopBuzz(); void main(){ unsigned int i; TMOD = 0x01; //配置 T0 工作在模式 1,但先不启动 EA = 1; while (1){ //使能全局中断 OpenBuzz(4000); //以 4KHz 的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); //停止蜂鸣器 for (i=0; i<40000; i++); OpenBuzz(1000); //以 1KHz 的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); //停止蜂鸣器 for (i=0; i<40000; i++); } } /* 蜂鸣器启动函数,frequ-工作频率 */ void OpenBuzz(unsigned int frequ){ unsigned int reload;//计算所需的定时器重载值 reload = 65536 - (11059200/12)/(frequ*2); //由给定频率计算定时器重载值 T0RH = (unsigned char)(reload >> 8); //16 位重载值分解为高低两个字节 T0RL = (unsigned char)reload; TH0 = 0xFF; //设定一个接近溢出的初值,以使定时器马上投入工作 TL0 = 0xFE; ET0 = 1; //使能 T0 中断 TR0 = 1; //启动 T0 } /* 蜂鸣器停止函数 */ void StopBuzz(){ ET0 = 0; //禁用 T0 中断 TR0 = 0; //停止 T0 } /* T0 中断服务函数,用于控制蜂鸣器发声 */ void InterruptTimer0() interrupt 1{ TH0 = T0RH; //重新加载重载值 TL0 = T0RL; BUZZ = ~BUZZ; //反转蜂鸣器控制电平 } 另外用蜂鸣器来输出音乐,仅仅是好玩而已,应用很少,里边包含了音阶、乐谱的相关内容,程序也有一点复杂,所以就不详细给大家去讲解了。仅提供一个可以播放《两只老虎》的程序,大家可以下载到板子上玩玩,满足一下好奇心。 纯文本复制 #include sbit BUZZ = P1^6; //蜂鸣器控制引脚 unsigned int code NoteFrequ[] = { //中音 1-7 和高音 1-7 对应频率列表 523, 587, 659, 698, 784, 880, 988, //中音 1-7 1047, 1175, 1319, 1397, 1568, 1760, 1976 //高音 1-7 }; unsigned int code NoteReload[] = { //中音 1-7 和高音 1-7 对应的定时器重载值 65536 - (11059200/12) / (523*2), //中音 1 65536 - (11059200/12) / (587*2), //2 65536 - (11059200/12) / (659*2), //3 65536 - (11059200/12) / (698*2), //4 65536 - (11059200/12) / (784*2), //5 65536 - (11059200/12) / (880*2), //6 65536 - (11059200/12) / (988*2), //7 65536 - (11059200/12) / (1047*2), //高音 1 65536 - (11059200/12) / (1175*2), //2 65536 - (11059200/12) / (1319*2), //3 65536 - (11059200/12) / (1397*2), //4 65536 - (11059200/12) / (1568*2), //5 65536 - (11059200/12) / (1760*2), //6 65536 - (11059200/12) / (1976*2), //7 }; bit enable = 1; //蜂鸣器发声使能标志 bit tmrflag = 0; //定时器中断完成标志 unsigned char T0RH = 0xFF; //T0 重载值的高字节 unsigned char T0RL = 0x00; //T0 重载值的低字节 void PlayTwoTiger(); void main(){ unsigned int i; EA = 1; //使能全局中断 TMOD = 0x01; //配置 T0 工作在模式 1 TH0 = T0RH; TL0 = T0RL; ET0 = 1; //使能 T0 中断 TR0 = 1; //启动 T0 while (1){ PlayTwoTiger(); //播放乐曲--两支老虎 for (i=0; i<40000; i++); //停止一段时间 } } /* 两支老虎乐曲播放函数 */ void PlayTwoTiger(){ unsigned char beat; //当前节拍索引 unsigned char note; //当前节拍对应的音符 unsigned int time = 0; //当前节拍计时 unsigned int beatTime = 0; //当前节拍总时间 unsigned int soundTime = 0; //当前节拍需发声时间 //两只老虎音符表 unsigned char code TwoTigerNote[] = { 1, 2, 3, 1, 1, 2, 3, 1, 3, 4, 5, 3, 4, 5, 5,6, 5,4, 3, 1, 5,6, 5,4, 3, 1, 1, 5, 1, 1, 5, 1, }; //两只老虎节拍表,4 表示一拍,1 就是 1/4 拍,8 就是 2 拍 unsigned char code TwoTigerBeat[] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 8, 3,1, 3,1, 4, 4, 3,1, 3,1, 4, 4, 4, 4, 8, 4, 4, 8, }; //用节拍索引作为循环变量 for (beat=0; beat while (!tmrflag); //每次定时器中断完成后,检测并处理节拍 tmrflag = 0; if (time == 0){ //当前节拍播完则启动一个新节拍 note = TwoTigerNote[beat] - 1; T0RH = NoteReload[note] >> 8; T0RL = NoteReload[note]; //计算节拍总时间,右移 2 位相当于除 4,移位代替除法可以加快执行速度 beatTime = (TwoTigerBeat[beat] * NoteFrequ[note]) >> 2; //计算发声时间,为总时间的 0.75,移位原理同上 soundTime = beatTime - (beatTime >> 2); enable = 1; //指示蜂鸣器开始发声 time++; }else{ //当前节拍未播完则处理当前节拍 //当前持续时间到达节拍总时间时归零, //并递增节拍索引,以准备启动新节拍 if (time >= beatTime){ time = 0; beat++; }else{ //当前持续时间未达到总时间时, time++; //累加时间计数 //到达发声时间后,指示关闭蜂鸣器, //插入 0.25*总时间的静音间隔, if (time == soundTime){ enable = 0; //用以区分连续的两个节拍 } } } } } /* T0 中断服务函数,用于控制蜂鸣器发声 */ void InterruptTimer0() interrupt 1{ TH0 = T0RH; //重新加载重载值 TL0 = T0RL; tmrflag = 1; if (enable){ //使能时反转蜂鸣器控制电平 BUZZ = ~BUZZ; }else{ //未使能时关闭蜂鸣器 BUZZ = 1; } }

    时间:2019-07-12 关键词: 单片机 驱动电路 蜂鸣器

  • 单片机轻松入门之蜂鸣器

    该电路较简单,用PNP型三极管驱动蜂鸣器,当P3.7为低电平时,PN结正向偏置,三极管导通,蜂鸣器发声。   程序如下: #include #define uchar unsigned char sbit sounder=P3^7; void delay(uchar z) { uchar j,i; for(i=z;i>0;i--) for(j=110;j>0;j--); } void main() { sounder=1; while(1) { sounder=~sounder; delay(500); } 仿真结果如下:  

    时间:2019-06-28 关键词: 单片机 蜂鸣器

  • 单片机蜂鸣器控制程序和驱动电路

    蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。 按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振荡源,如图9-8所示中,给了 BUZZ 引脚一个低电平,蜂鸣器就会直接响。而无源蜂鸣器内部是不带振荡源的,要让他响必须给 500 Hz~4.5 KHz 之间的脉冲频率信号来驱动它才会响。有源蜂鸣器往往比无源蜂鸣器贵一些,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,此外无源蜂鸣器声音频率可以控制,而音阶与频率又有确定的对应关系,因此就可以做出来“do re mi fa sol la si”的效果,可以用它制作出简单的音乐曲目,比如生日歌、两只老虎等等。   图 9-8 蜂鸣器电路原理图 我们来看一下图9-8的电路,蜂鸣器电流依然相对较大,因此需要用三极管驱动,并且加了一个100欧的电阻作为限流电阻。此外还加了一个 D4 二极管,这个二极管叫做续流二极管。我们的蜂鸣器是感性器件,当三极管导通给蜂鸣器供电时,就会有导通电流流过蜂鸣器。而我们知道,电感的一个特点就是电流不能突变,导通时电流是逐渐加大的,这点没有问题,但当关断时,经“电源-三极管-蜂鸣器-地”这条回路就截断了,过不了任何电流了,那么储存的电流往哪儿去呢,就是经过这个 D4 和蜂鸣器自身的环路来消耗掉了,从而就避免了关断时由于电感电流造成的反向冲击。接续关断时的电流,这就是续流二极管名称的由来。 蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,就是简单发出个声音就行,我们用程序简单做了个 4 KHZ 频率下的发声和 1 KHZ 频率下的发声程序,同学们可以自己研究下程序,比较下实际效果。 #include sbit BUZZ = P1^6; //蜂鸣器控制引脚 unsigned char T0RH = 0; //T0 重载值的高字节 unsigned char T0RL = 0; //T0 重载值的低字节 void OpenBuzz(unsigned int frequ); void StopBuzz(); void main(){ unsigned int i; TMOD = 0x01; //配置 T0 工作在模式1,但先不启动 EA = 1; while (1){ //使能全局中断 OpenBuzz(4000); //以 4 KHz 的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); //停止蜂鸣器 for (i=0; i<40000; i++); OpenBuzz(1000); //以 1 KHz 的频率启动蜂鸣器 for (i=0; i<40000; i++); StopBuzz(); //停止蜂鸣器 for (i=0; i<40000; i++); } } /* 蜂鸣器启动函数,frequ-工作频率 */ void OpenBuzz(unsigned int frequ){ unsigned int reload;//计算所需的定时器重载值 reload = 65536 - (11059200/12)/(frequ*2); //由给定频率计算定时器重载值 T0RH = (unsigned char)(reload >> 8); //16 位重载值分解为高低两个字节 T0RL = (unsigned char)reload; TH0 = 0xFF; //设定一个接近溢出的初值,以使定时器马上投入工作 TL0 = 0xFE; ET0 = 1; //使能 T0 中断 TR0 = 1; //启动 T0 } /* 蜂鸣器停止函数 */ void StopBuzz(){ ET0 = 0; //禁用 T0 中断 TR0 = 0; //停止 T0 } /* T0 中断服务函数,用于控制蜂鸣器发声 */ void InterruptTimer0() interrupt 1{ TH0 = T0RH; //重新加载重载值 TL0 = T0RL; BUZZ = ~BUZZ; //反转蜂鸣器控制电平 } 另外用蜂鸣器来输出音乐,仅仅是好玩而已,应用很少,里边包含了音阶、乐谱的相关内容,程序也有一点复杂,所以就不详细给大家去讲解了。仅提供一个可以播放《两只老虎》的程序,大家可以下载到板子上玩玩,满足一下好奇心。 #include sbit BUZZ = P1^6; //蜂鸣器控制引脚 unsigned int code NoteFrequ[] = { //中音1-7 和高音1-7 对应频率列表 523, 587, 659, 698, 784, 880, 988, //中音1-7 1047, 1175, 1319, 1397, 1568, 1760, 1976 //高音1-7 }; unsigned int code NoteReload[] = { //中音1-7 和高音1-7 对应的定时器重载值 65536 - (11059200/12) / (523*2), //中音1 65536 - (11059200/12) / (587*2), //2 65536 - (11059200/12) / (659*2), //3 65536 - (11059200/12) / (698*2), //4 65536 - (11059200/12) / (784*2), //5 65536 - (11059200/12) / (880*2), //6 65536 - (11059200/12) / (988*2), //7 65536 - (11059200/12) / (1047*2), //高音1 65536 - (11059200/12) / (1175*2), //2 65536 - (11059200/12) / (1319*2), //3 65536 - (11059200/12) / (1397*2), //4 65536 - (11059200/12) / (1568*2), //5 65536 - (11059200/12) / (1760*2), //6 65536 - (11059200/12) / (1976*2), //7 }; bit enable = 1; //蜂鸣器发声使能标志 bit tmrflag = 0; //定时器中断完成标志 unsigned char T0RH = 0xFF; //T0 重载值的高字节 unsigned char T0RL = 0x00; //T0 重载值的低字节 void PlayTwoTiger(); void main(){ unsigned int i; EA = 1; //使能全局中断 TMOD = 0x01; //配置 T0 工作在模式1 TH0 = T0RH; TL0 = T0RL; ET0 = 1; //使能 T0 中断 TR0 = 1; //启动 T0 while (1){ PlayTwoTiger(); //播放乐曲--两支老虎 for (i=0; i<40000; i++); //停止一段时间 } } /* 两支老虎乐曲播放函数 */ void PlayTwoTiger(){ unsigned char beat; //当前节拍索引 unsigned char note; //当前节拍对应的音符 unsigned int time = 0; //当前节拍计时 unsigned int beatTime = 0; //当前节拍总时间 unsigned int soundTime = 0; //当前节拍需发声时间 //两只老虎音符表 unsigned char code TwoTigerNote[] = { 1, 2, 3, 1, 1, 2, 3, 1, 3, 4, 5, 3, 4, 5, 5,6, 5,4, 3, 1, 5,6, 5,4, 3, 1, 1, 5, 1, 1, 5, 1, }; //两只老虎节拍表,4 表示一拍,1 就是 1/4 拍,8 就是 2 拍 unsigned char code TwoTigerBeat[] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 8, 3,1, 3,1, 4, 4, 3,1, 3,1, 4, 4, 4, 4, 8, 4, 4, 8, }; //用节拍索引作为循环变量 for (beat=0; beat> 8; T0RL = NoteReload[note]; //计算节拍总时间,右移2位相当于除4,移位代替除法可以加快执行速度 beatTime = (TwoTigerBeat[beat] * NoteFrequ[note]) >> 2; //计算发声时间,为总时间的 0.75,移位原理同上 soundTime = beatTime - (beatTime >> 2); enable = 1; //指示蜂鸣器开始发声 time++; }else{ //当前节拍未播完则处理当前节拍 //当前持续时间到达节拍总时间时归零, //并递增节拍索引,以准备启动新节拍 if (time >= beatTime){ time = 0; beat++; }else{ //当前持续时间未达到总时间时, time++; //累加时间计数 //到达发声时间后,指示关闭蜂鸣器, //插入 0.25*总时间的静音间隔, if (time == soundTime){ enable = 0; //用以区分连续的两个节拍 } } } } } /* T0 中断服务函数,用于控制蜂鸣器发声 */ void InterruptTimer0() interrupt 1{ TH0 = T0RH; //重新加载重载值 TL0 = T0RL; tmrflag = 1; if (enable){ //使能时反转蜂鸣器控制电平 BUZZ = ~BUZZ; }else{ //未使能时关闭蜂鸣器 BUZZ = 1; } }

    时间:2019-06-26 关键词: 单片机 驱动电路 蜂鸣器 控制程序

  • 蜂鸣器在单片机驱动原理与设计

    蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用 单片机 驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15v直流工作电压),多谐振荡器起振,输出1.5~2.5kHz的音频信号,阻抗匹配器推动压电蜂鸣片发声。 下面是电磁式蜂鸣器的外形图片及结构图 电磁式蜂鸣器实物图: 电磁式蜂鸣器结构示意图: 电磁式蜂鸣器内部构成: 1. 防水贴纸 2. 线轴 3. 线圈 4. 磁铁 5. 底座 6. 引脚 7. 外壳 8. 铁芯 9. 封胶 10. 小铁片 11. 振动膜 12. 电路板 一、电磁式蜂鸣器驱动原理 蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它, 单片机 io引脚输出的电流较小,单片机输出的ttl电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。s51增强型单片机实验板通过一个三极管c8550来放大驱动蜂鸣器,原理图见下面图3: s51增强型 单片机 实验板蜂鸣器驱动原理图: 蜂鸣器的正极接到vCC(+5v)电源上面,蜂鸣器的负极接到三极管的发射极e,三极管的基级b经过限流电阻r1后由 单片机 的p3.7引脚控制,当p3.7输出高电平时,三极管t1截止,没有电流流过线圈,蜂鸣器不发声;当p3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制p3.7脚的电平来使蜂鸣器发出声音和关闭。 程序中改变 单片机 p3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变p3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。 二、蜂鸣器列子 下面我们举几个简单的 单片机 驱动蜂鸣器的编程和电路设计的列子。 1、简单的蜂鸣器实验程序:本程序通过在p3.7输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中delay延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20khz以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。大家可以在实验中更改#228为其他值,听听蜂鸣器音调的改变。 org 0000h ajmp main ;跳转到主程序 org 0030h main: cpl p3.7 ;蜂鸣器驱动电平取反 lcall delay ;延时 ajmp main ;反复循环 delay: MOV r7,#228 ;延时子程序,更改该延时常数可以改变蜂鸣器发出的音调 de1: djnz r7,de1 ret end 2、倒车警示音实验程序:我们知道各种卡车、货柜车在倒车时候,会发出倒车的蜂鸣警示提示音,同时警示黄灯也同步闪烁,提醒后面的人或车辆注意。本实验例程就实现倒车警示功能,通过实验板上的蜂鸣器发出警示音,同时通过实验板上p1.2和p1.5上的两个黄色发光二极管来发出黄色警示灯。 org 0000h ajmp start ;跳转到初始化程序 org 0033h start: MOV sp,#60h ;sp初始化 MOV p3,#0ffh ;端口初始化 main: acall sound ;蜂鸣器发声 acall ys500m ;延时 ajmp main sound: MOV p1,#11011011b ;点亮2个警示黄色发光二极管 MOV r2,#200 ;响200个周期 snd1: clr p3.7 ;输出低电平t1导通,蜂鸣器响 acall ys1ms ;延时 setb p3.7 ;输出高电平t1截止,蜂鸣器不响 acall ys1ms ;延时 djnz r2,snd1 MOV p1,#0ffh ;熄灭黄色警示灯 ret ys1ms: ;1ms延时子程序 MOV r0,#2 yl1: MOV r1,#250 ;改变r0的数值可改变声音频率 djnz r1,$ djnz r0,yl1 ret ys500m: ;500ms延时子程序 MOV r0,#6 yl2: MOV r1,#200 yl3: MOV r2,#250 djnz r2,$ djnz r1,yl3 djnz r0,yl2 ret end 3、“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的k1按钮时候,蜂鸣器发出“叮咚” 音乐 声,是一个比较实用的程序。 “叮咚”电子门铃实验asm源程序: “叮咚”电子门铃c语言源程序: org 0000h ljmp start ;跳转到初始化程序 org 000bh ljmp pgt0 ;跳转到t0中断服务程序 start: obuf1 equ 30h ;初始化程序 obuf2 equ 31h obuf3 equ 32h obuf4 equ 33h flagb bit 00h stopb bit 01h k1 bit p3.2 ;定义按钮k1,作为门铃按钮 MOV tmod,#02h ;定时器初始化 MOV th0,#06h MOV tl0,#06h setb et0 ;启动定时器t0 setb ea ;启动总中断 main: ;主程序 jb k1,main ;检测k1按钮 lcall ys10m ;延时去抖动 jb k1,main setb tr0 ;按钮有效 MOV p1,#00h ;点亮按钮指示灯 MOV obuf1,#00h MOV obuf2,#00h MOV obuf3,#00h MOV obuf4,#00h clr flagb clr stopb jnb stopb,$ MOV p1,#0ffh ljmp main ;发出“叮咚”完毕,返回重新检测按钮 ys10m: ;10ms延时子程序 MOV r6,#20 d1: MOV r7,#248 djnz r7,$ djnz r6,d1 ret pgt0: ;定时器t0中断服务程序 inc obuf3 ;中断服务程序中发出一声“叮咚”响声 MOV a,obuf3 cjne a,#100,next MOV obuf3,#00h inc obuf4 MOV a,obuf4 cjne a,#20,next MOV obuf4,#00h jb flagb,pgstp cpl flagb ajmp next pgstp: setb stopb clr tr0 ljmp int0ret next: jb flagb,sou2 inc obuf2 MOV a,obuf2 cjne a,#03h,int0ret MOV obuf2,#00h cpl p3.7 ljmp int0ret sou2: inc obuf1 MOV a,obuf1 cjne a,#04h,int0ret MOV obuf1,#00h cpl p3.7 ljmp int0ret int0ret: reti end #include unsigned char obuf1; unsigned char obuf2; unsigned int obuf3; bit stopb; bit flagb; void main(void) { unsigned char i,j; tmod=0×02; //定时器t0初始化 th0=0×06; tl0=0×06; et0=1; ea=1; //允许总中断 while(1) { if(p3_2==0) //检测k1按键 { p1=0×00; for(i=10;i>0;i–) for(j=248;j>0;j–); if(p3_2==0) { obuf1=0; obuf2=0; obuf3=0; flagb=0; stopb=0; tr0=1; //启动定时器t0,发出“叮咚”声 while(stopb==0); p1=0xff; } } } } void t0(void) interrupt 1 using 0 { obuf3++; if(obuf3==2000) { obuf3=0; if(flagb==0) { flagb=~flagb; } else { stopb=1; tr0=0; } } if(flagb==0) { obuf2++; if(obuf2==3) { obuf2=0; p3_7=~p3_7; } } else { obuf1++; if(obuf1==4) { obuf1=0; p3_7=~p3_7; } } }

    时间:2019-06-23 关键词: 蜂鸣器 单片机驱动

  • 单片机轻松入门之三:蜂鸣器

    单片机轻松入门之三蜂鸣器该电路较简单,用PNP型三极管驱动蜂鸣器,当P3.7为低电平时,PN结正向偏置,三极管导通,蜂鸣器发声。程序如下:#include#define uchar unsigned charsbit sounder=P3^7;void delay(uchar z){uchar j,i; for(i=z;i>0;i--) for(j=110;j>0;j--);}void main(){sounder=1; while(1) { sounder=~sounder; delay(500);}仿真结果如下:

    时间:2019-01-10 关键词: 单片机 蜂鸣器

  • AVR单片机驱动无源蜂鸣器C程序

    /* 内部1M晶振。 定时器实险,周期信号驱动无源蜂鸣器,些实验基于定时器的CTC模式,由硬件产生频率信号。 程序中实现单一频率的周期性提示音。 程序采用单任务方式,软件延时。 */ #include"iom16v.h"/*延时函数*/ voiddelay_ms(unsignedchari){unsignedchara,b; for(a=1;a

    时间:2019-01-01 关键词: 无源 单片机 AVR 蜂鸣器

  • STM32开发指南--第七章 蜂鸣器实验

    上一章,我们介绍了STM32的IO口作为输出的使用,这一章,我们将通过另外一个例子讲述STM32的IO口作为输出的使用。在本章中,我们将利用一个IO口来控制板载的有源蜂鸣器,实现蜂鸣器控制。通过本章的学习,你将进一步了解STM32的IO口作为输出口使用的方法。本章分为如下几个小节:7.1 蜂鸣器简介7.2 硬件设计7.3 软件设计7.4 仿真与下载

    时间:2018-12-17 关键词: 嵌入式开发 指南 蜂鸣器 第七章

  • 神舟IV学习笔记(三)蜂鸣器与串口1打印

    今天多学习几个模块,首先是蜂鸣器。板上所用的是无源蜂鸣器,可以用直流电压直接驱动。还有一种叫有源蜂鸣器,要使用频率的方波才能驱动。使用的蜂鸣器的驱动电压,典型值为5V,额定工作电流为30mA。STM32的GPIO管脚绝大多数能承受5V的电压,但是承受的电流最多为25mA,还需要使用三极管将电流放大,并且采用了一个限流电阻。我们把与蜂鸣器的GPIO设置为推挽输出,当输出1时,蜂鸣器响。当输出0时蜂鸣器灭。下面是我封装的文件:BEEP.C#include "beep.h"void BEEP_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //打开时钟GPIO_InitStructure.GPIO_Pin =BEEP ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_Init(GPIOA, &GPIO_InitStructure);}BEEP.H#ifndef __BEEP_H#define __BEEP_H#include "stm32f10x_conf.h"#define BEEPGPIO_Pin_3#define BEEP_ON()GPIOA->BRR = BEEP#define BEEP_OFF()GPIOA->BSRR = BEEP//#define BEEP_ON() GPIO_ResetBits(GPIOA, BEEP)//#define BEEP_OFF() GPIO_SetBits(GPIOA, BEEP)void BEEP_Configuration(void);#endif串口模块。串口是电脑常用的设备,虽然笔记本上没有串口,使用USB转串口线就相当有串口的功能。串口简单容易实现,常常用于程序的打印显示等等。串口属于串行通信协议,大体指的是在一个线上传递多位数据,像SPI/I2C/USB都属于串行通信协议。串口模式通常使用3根线:(1)地GND,(2)发送TXD,(3)接收RXD。编程的时候只需配置好波特率,常用的是9600,意思就是每秒发生9600bit,我们知道一个字节等于8个比特位,如果要采集卡要传输1M个unsigned char的数据,大约要二十多分钟。当然我们可以把波特率提高,STM32最高能支持4.5M/S,但是速度增加,传输的距离将速度,误码率会提高。软件编程的时候我们首先:打开相应功能的时钟,比如使用到串口一引脚的GPIOA时钟和串口一时钟USART1。然后我们对引脚和串口进行相应的配置。最后调用库函数写相应的功能。简单而言就是:时钟—配置—功能。STM32有一优势是,对于不同芯片有些功能对应的引脚是相同的。比如串口一,我发现大多数都是对于PA9和PA10的。在IAR环境中,如果要使用printf,需要进行如下的设置。好像IAR对puts不是很支持,打印字符用printf还行,最后是效果图。

    时间:2018-12-10 关键词: 打印 串口 蜂鸣器 神舟iv

  • 基于stm32处理器的PWM 异步驱动蜂鸣器

    这两天应工作需求研究了一下M3处理器的PWM(脉宽调制)实现对蜂鸣器的异步控制。鉴于阻塞式对蜂鸣器的控制比较耗时,影响用户体验,因此对原有阻塞式控制方案进行了改善,提出了异步控制蜂鸣器的实现方法。以下主要对实现中需要注意的重点知识以及所遇到的问题进行了讨论。PWM波利用M3的定时器产生,出于对平台资源的有效利用,选择定时器1用来输出脉宽调制信号。这就引出了本文的重点,M3定时器的应用。M3的定时器资源一共有11个,其中两个高级定时器(Timer1和Timer8)、4个通用定时器(Timer2-Timer5)、2个普通定时器(Timer6-Timer7)、2个看门狗定时器以及一个SysTick定时器。相对于普通定时器来说,高级定时器的功能更为强大,相对应的应用自然更为复杂,这个主要体现在电机控制中,比如直接输出具有调节死区时间的PWM。不过本项目的应用不涉及此点,也就不做讨论了。M3的高级定时器理解为一个可供用户编程的预分频器驱动16bit的计数器。主要功能包括利用它的输入捕获模式可以实现对输入信号脉冲宽度的测量,利用PWM和输出比较模式可以实现波形输出。M3具有复杂的时钟系统,它的外设都有自己独立的时钟控制,这就造成在应用上相对比较复杂一些,但是这为系统在降低功耗方面带了不小的优势。在实际应用中我们可以关掉那些不用的外设,这样就可以大大的降低功耗。因此,要想熟练的掌握M3,就必须对它的时钟树要很清楚,定时器的应用当然也不例外。我们就从时钟开始一步步的揭秘M3定时器的奥妙之处。高级定时器1的时钟信号流向通过图1可以清楚的看到。M3处理器使用外部8M高速时钟,然后通过内部的倍频因数为9的锁相环将频率加倍到72M,将此时钟作为系统时钟。系统时钟通过分频因数为1的AHB预分频器将72M时钟提供给AHB总线,AHB总线通过分频因数为1的APB2预分频器将72M的时钟提供给APB2总线。APB2总线将时钟通过一个倍频器,与其他倍频器不同的是这个倍频器根据APB2分频因数有系统自动设置,如果APB2分频因数为1,则保持时钟不变,否则进行2倍频。通过倍频之后,接将72M的时钟信号提供给高级定时器1,而时钟信号在定时器内部又通过PSC的分频来驱动定时器1的计数器。我们对定时器的操作实际上主要是通过设置PSC的分频值和计数器的装载值来达到准确的定时和输出需要的波形等功能。。图1 Timer1的时钟信号流向理解了定时器的工作原理及时钟信号工作情况后,我们就来具体分析一下如何应用。从上文可以看出要想让M3的定时器工作首先必须得打开时钟,因此在系统进行初始化后得到72M的时钟后,打开Timer1的时钟。这个可以通过设置PB2ENR寄存器的第二位实现,后者也可以利用库函数RCC_APB2PeriphClockCmd直接使能。接下来就需要设置计数器初始装载值TIME1_ARR、分频器PSC,具体设置根据公式1进行设置。例如定时器1输入时钟为72M时,设置PSC(预分频器)为7199,当ARR(计数器装载数)为9时,一次中断我们就可以得1ms的定时。至于怎么配置中断函数以及中断函数然后编写此处不做赘述,详情可以参考STM32中文参考手册。Time = (1+ARR)*(1+PSC)/Fsys公式1 定时器时间计算公式接下来讨论一下PWM的产生,在STM32定时器1-8中除了Timer6和Timer7不能产生PWM外,其它都可以产生。高级定时器1和8可以产生7路的PWM波,其它的可以产生4路。对于波的输出频率也利用公式1进行计算,至于波的占空比取CCR/ARR。我们以图2中3路不同占空比的波来看,它们的频率都一样约为1.2khz,计算值与测量值存在13hz的误差,这个是处理器本身的精度造成的。对于第一个波形来说ARR = 59999、CCR = 30000,就得到了约等于1.2Khz且50%占空比的波。而第二个波的ARR = 59999、CCR = 15000,就得到了频率约为1.2khz且25%占空比的波。图2 Time1 PWM波仿真图既然需要输出波对Beep进行控制,那么就需要进行IO口的设置,基本IO口的设置大家应该比较清楚,这里只介绍比较容易出错的地方,这就是关于管脚重映射,具体设置见图表1。由于在本项目中Beep是连接到PA11的,由表1可见PA11没有完全映像,因此对它只进行复用设置或者设置成部分映像。这里对时钟的设置除了打开PA口时钟,还需打开复用时钟。表1 定时器1管脚复用功能映像除了以上设置之外当然还有一些基本设置比如设置计数器向上加模式、极性为正、输出使能、使用PWM模式1或者模式2、使能预装载寄存器等基本设置。因为要实现异步控制,因此还利用了M3的定时器2,利用定时器2对PWM波的输出进行控制。定时器2的应用与1类似,只需配置成定时模式即可。根据需要定时一定的时间,在中断处理函数中关掉定时器1即可。转载请注明出处。

    时间:2018-12-10 关键词: pwm 蜂鸣器 stm32处理器 异步驱动

  • 蜂鸣器常见错误电路分析

    蜂鸣器常见错误电路分析

    蜂鸣器是电路设计中常用的器件,广泛用于工业控制、机房监控、门禁控制、计算机等电子产品,作为预警发声器件。然而很多人在设计时往往随意设计,导致实际电路中蜂鸣器不发声、轻微发声和乱发声的情况发生。蜂鸣器(Buzzer)是一类常见的电声器件,具有结构简单、紧凑、体积小、重量轻、成本低等优点,发声范围一般有数百Hz到十几kHz,广泛应用于各种电子设备当中(空调、洗衣机、电脑等内部都有蜂鸣器)。蜂鸣器在电路中电路图形符号用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。下面我们介绍最常用的两类蜂鸣器:有源蜂鸣器和无源蜂鸣器。从驱动方式分类,有源驱动和无源驱动,有源蜂鸣器又称为直流蜂鸣器,其内部已经包含了一个多谐振荡器,只要在两端施加额定直流电压即可发声,具有驱动、控制简单的特点,但价格略高。无源蜂鸣器又称为交流蜂鸣器,内部没有振荡器,需要在其两端施加特定频率的方波电压(注意并不是交流,即没有负极性电压)才能发声,具有可靠、成本低、发声频率可调整等特点。有源蜂鸣器与无源蜂鸣器有什么区别:这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它。有源蜂鸣器往往比无源的贵,就是因为里面多了个震荡电路。图7.22蜂鸣器下面我们从EasyARM-i.MX283开发套件入手,就3.3V NPN三极管驱动有源蜂鸣器设计,从实际产品中分析电路设计存在的问题,提出电路的改进方案,使读者能从小小的蜂鸣器电路中学会分析和改进电路的方法,从而设计出更优秀的产品,达到抛砖引玉的效果。图7.24错误接法1图7.24为典型的错误接法,当BUZZER端输入高电平时蜂鸣器不响或响声太小。当I/O口为高电平时,基极电压为3.3/4.7*3.3V≈2.3V,由于三极管的压降0.6~0.7V,则三极管射极电压为2.3-0.7=1.6V,驱动电压太低导致蜂鸣器无法驱动或者响声很小。图7.25错误接法2图7.25为第二种典型的错误接法,由于上拉电阻R2,BUZZER端在输出低电平时,由于电阻R1和R2的分压作用,三极管不能可靠关断。图7.26错误接法3图7.26为第三种错误接法,三极管的高电平门槛电压就只有0.7V,即在BUZZER端输入电压只要超过0.7V就有可能使三极管导通,显然0.7V的门槛电压对于数字电路来说太低了,在电磁干扰的环境下,很容易造成蜂鸣器鸣叫。图7.27错误接法4图7.27为第四种错误接法,当CPU的GPIO管脚存在内部下拉时,由于I/O口存在输入阻抗,也可能导致三极管不能可靠关断,而且和图7.26一样 BUZZER端输入电压只要超过0.7V就有可能使三极管导通。图7.28 NPN三极管控制有源蜂鸣器常规设计图7.28为通用有源蜂鸣器的NPN三极管控制有源蜂鸣器常规设计驱动电路。电阻R1为限流电阻,防止流过基极电流过大损坏三极管。电阻R2有着重要的作用,第一个作用,R2相当于基极的下拉电阻,如果输入端悬空则由于R2的存在能够使三极管保持在可靠的关断状态,如果删除R2则当BUZZER输入端悬空时则易受到干扰而可能导致三极管状态发生意外翻转或进入不期望的放大状态,造成蜂鸣器意外发声。第二个作用,R2可提升高电平的门槛电压。如果删除R2,则三极管的高电平门槛电压就只有0.7V,即A端输入电压只要超过0.7V就有可能导通,添加R2的情况就不同了,当从A端输入电压达到约2.2V时三极管才会饱和导通,具体计算过程如下:假定β=120为晶体管参数的最小值,蜂鸣器导通电流是15mA,那么集电极电流IC=15mA,则三极管刚刚达到饱和导通时的基极电流是:流经R2的电流是:流经R1的电流:最后算出BUZZER端的门槛电压是:图7.28中的C2为电源滤波电容,滤除电源高频杂波。C1可以在有强干扰环境下,有效的滤除干扰信号,避免蜂鸣器变音和意外发声。在RFID射频通讯、Mifare卡的应用中,这里初步选用0.1uF的电容,具体可以根据实际情况选择。在NPN 3.3V控制有源蜂鸣器时,在电路的BUZZER输入高电平,让蜂鸣器鸣叫,检测蜂鸣器输入管脚(NPN三极管的C极)处信号,发现蜂鸣器在发声时,向外发生1.87KHZ,-2.91V的脉冲信号,如图7.29所示。图7.29蜂鸣器自身发放脉冲在电路的BUZZER输入20Hz的脉冲信号,让蜂鸣器鸣叫,检测蜂鸣器输入管脚处信号,发现蜂鸣器在发声时,在控制电平上叠加了1.87KHz,-2.92V的脉冲信号,并且在蜂鸣器关断时出现正向尖峰脉冲(≥10V),如图7.30所示。图7.30蜂鸣器自身发放脉冲图7.30中1.87KHz,-2.92V的脉冲信号应该是有源蜂鸣器内部震荡源释放出来的信号常用有源蜂鸣器主要分为压电式、电磁震荡式两种,i.MX283开发板上用的是压电式蜂鸣器,压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成,而多谐震荡器由晶体管或集成电路构成,我们所用的蜂鸣器内部含有晶体管震荡电路(有兴趣的朋友可以自己拆开看看)。有源蜂鸣器产生脉冲信号能量不是很强,可以考虑增加滤波电容将脉冲信号滤除。消除蜂鸣器EMI辐射后改进电路图如图7.31所示,在有源蜂鸣器的两端添加一个104的滤波电容后,脉冲信号削减到-110mV,如图7.32所示,但顶部信号由于电容充电过慢,有点延时。图7.31 NPN有源蜂鸣器控制电路改善后电路图图7.32减少蜂鸣器自身发放脉冲

    时间:2018-10-26 关键词: 预警 电源技术解析 蜂鸣器 zlg致远电子

  • 51 汇编编程:使蜂鸣器发出“嘀、嘀。。。”报警声

    对蜂鸣器控制,使蜂鸣器发出“嘀、嘀。。。”报警声。报警声从 P1.3 端口输出,产生频率为 2.5KHz,声长 1.1 秒,间隔 1 秒。晶振暂定12MHz。使用汇编语言编写。要求发音频率是 2.5KHz,其半周期就是 200us。可令单片机每隔 200us 中断一次。每中断一次,就对 P1.3 取一次反,这就发出了 2.5KHz 方波。取反 55 000 次,就是发音 1.1s。再中断 50 000 次,不取反,就是发音间隔 1s。中断的次数:50 000、55 000,可以用两个寄存器来计数。定时 200us,可以使用方式2。用汇编语言编写的程序如下:    ORG   0000H    JMP   MAIN    ORG   000BH    JMP   T0_INT      ;T0中断入口;------------------------------------MAIN:    MOV   TMOD, #02H  ;T0定时方式2    MOV   TH0, #56    ;200us @ 12MHz    MOV   TL0, #56    SETB  TR0         ;启动T0    MOV   IE, #82H    ;允许T0中断    MOV   R2, #100    MOV   R3, #50     ;中断计数初始值    SJMP  $           ;等待中断;------------------------------------T0_INT:    JNB   F0, NO    CPL   P1.3        ;发音    DJNZ  R2, EXIT    MOV   R2, #100    DJNZ  R3, EXIT    MOV   R3, #50     ;中断次数定为50000    CPL   F0          ;下次中断,将不发音1s    RETINO:    SETB  P1.3        ;不发音    DJNZ  R2, EXIT    MOV   R2, #100    DJNZ  R3, EXIT    MOV   R3, #55     ;中断次数定为55000    CPL   F0          ;下次中断,将发音1.1sEXIT:    RETI;------------------------------------END本程序,已经经过了测试。发音的频率,题目规定的是 2.5KHz,听起来,稍稍有些尖锐刺耳。定时 200us 和发音 1.1s、静音 1s,做而论道仅仅使用了一个计数器T0,就解决了问题,这对于节省硬件资源,很有意义。在回答这个题目的答案中,有人用上了两个定时/计数器,程序还长了许多,也没有满足题目的要求。当然,把程序修改一下,还是可以的,但是,使用两个定时/计数器,这可不是正确的思路。如果晶振频率改成 8MHz,分析如下:输出的频率,题目要求是 2.5KHz,其半周期是 200us,必须定时 200us。上面是用 12MHz 的晶振,机器周期是 1us,需要定时 200us,初值就是 256 - 200 = 56。如果使用 8MHz 的晶振,机器周期是 1.5us,仍然定时 200us,初值就是 256 - 200/1.5 = 256 - 133 = 123。把上面的程序中,有 56 的地方,改成 123,其它的,都不用改动。这么改动之后,在 8MHz 的频率下,仍然是每隔 200us 中断一次。

    时间:2018-10-15 关键词: 蜂鸣器

  • STM32蜂鸣器实例详解

    //======================================================//**基于STM32的蜂鸣器实例详解//======================================================//在学习蜂鸣器实验前,先来看看什么是蜂鸣器,蜂鸣器又有哪些种类。下面看看百度是怎么描述蜂鸣器的。//===========================百度搜索===========================//蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。结构原理:1.电压式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。2.电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。分类:有源蜂鸣器和无源蜂鸣器//======================================================//首先说明一下,所谓的有源跟无源不是说是否有没有带电源,这里的有源是指带有震荡电路,带有震荡电路的蜂鸣器的特点就是一通电就会发声。无源蜂鸣器则没有自带震荡电路,必须外部提供2~5kHZ的方波来驱动,才能发声。无源蜂鸣器的优点是:1. 便宜2. 声音频率可控,可以做出“多来米发索拉西”的效果3. 在一些特例中,可以和LED复用一个控制口有源蜂鸣器的优点是:程序控制方便。一般情况下,开发板上都会采用有源蜂鸣器,那么伴随着一个问题就是是否直接把有源蜂鸣器直接接在单片机的GPIO上就能响呢?其实不然,在讨论这个问题时,我们要明确单片机的GPIO最大可以提供的电流是多少?有源蜂鸣器的驱动电流又要多少?答案:单片机有很多种,这里就只说STM32F1系列的其中一款STM32F103ZET6,STM32F103ZET6这款芯片的单个GPIO最大可以提供的电流在25mA左右,当然不同的单片机其GPIO的驱动电流不尽相同,会有所差别,这个数据可以直接从IC的数据手册上查到。而蜂鸣器的驱动电流是30mA左右,相比之下,两个电流值相当接近,那么是否就可以驱动起来呢?我们全盘考虑一下,STM32F1整个芯片的电流,最大才150mA,如果直接驱动的话,其他GPIO的电流就得相应降下一定值,也就是说,其他GPIO就会出现供电不足的不稳定状态,所以在这种情况下,一般就会在驱动电路上考虑问题。也就是既然不能在单片机GPIO上直接驱动,那是否可以考虑用驱动电路来使得GPIO以一个较小的值来驱动蜂鸣器呢?答案也是一定的,可以。一般在单片机上不用GPIO直接驱动蜂鸣器,而是通过一个三极管扩流后再驱动蜂鸣器,这样就可以使单片机的GPIO只需要接近1mA的电流,就可以驱动蜂鸣器。下面放一个蜂鸣器的驱动电路图:不同的厂家,不同单片机上的驱动电路会有稍微不同。图中我们用到一个NPN三极管(S8050)来驱动蜂鸣器,R33主要用于防止蜂鸣器的误发声。当PB.8输出高电平的时候,,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声。蜂鸣器的使用,跟跑马灯的使用,方法是一样的,也是通过对相应的寄存器,来实现GPIO的输出控制,BEEP在就直接代表PB8的输出状态。(我的开发板蜂鸣器接在PB8上,如上面的驱动电路图所示,不同的开发板会有所不同)。我们只需要控制ODR寄存器的高低电平,就可以实现蜂鸣器的控制。代码如下://=======================beep.c===============================//#include "stm32f10x.h"void beep_Init(void){RCC ->APB2ENR "= 1 CRH |= 3 CRH &=~ (3 ODR &= ~(1 ODR &= ~ (1 ODR &= ~(1 ODR |= (1 ODR |= 1 ODR |= 1 ODR &= ~(1

    时间:2018-10-11 关键词: STM32 蜂鸣器

  • 51单片机 蜂鸣器

    蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。三极管的作用为驱动,通过三极管放大驱动电流,从而可以让蜂鸣器发出声音。有源蜂鸣器和无源蜂鸣器的区别:这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。无源蜂鸣器的优点是:1。便宜,2。声音频率可控,可以做出“多来米发索拉西”的效果。3。在一些特例中,可以和LED复用一个控制口 有源蜂鸣器的优点是:程序控制方便 。例程,参考自网络。 1 /************************************************************************ 2 [文件名] C51音乐程序(八月桂花) 3 [功能] 通过单片机演奏音乐 4 5 /**********************************************************************/ 6 #include 7 #include 8 //本例采用89C52, 晶振为11.0592MHZ 9 //关于如何编制音乐代码, 其实十分简单,各位可以看以下代码. 10 //频率常数即音乐术语中的音调,而节拍常数即音乐术语中的多少拍; 11 //所以拿出谱子, 试探编吧! 1213 sbit Beep = P1^5 ;14 15 unsigned char n=0; //n为节拍常数变量 16 unsigned char code music_tab[] ={ 17 0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数, 18 0x20, 0x40, 0x1C , 0x10, 19 0x18, 0x10, 0x20 , 0x10, 20 0x1C, 0x10, 0x18 , 0x40, 21 0x1C, 0x20, 0x20 , 0x20, 22 0x1C, 0x20, 0x18 , 0x20, 23 0x20, 0x80, 0xFF , 0x20, 24 0x30, 0x1C, 0x10 , 0x18, 25 0x20, 0x15, 0x20 , 0x1C, 26 0x20, 0x20, 0x20 , 0x26, 27 0x40, 0x20, 0x20 , 0x2B, 28 0x20, 0x26, 0x20 , 0x20, 29 0x20, 0x30, 0x80 , 0xFF, 30 0x20, 0x20, 0x1C , 0x10, 31 0x18, 0x10, 0x20 , 0x20, 32 0x26, 0x20, 0x2B , 0x20, 33 0x30, 0x20, 0x2B , 0x40, 34 0x20, 0x20, 0x1C , 0x10, 35 0x18, 0x10, 0x20 , 0x20, 36 0x26, 0x20, 0x2B , 0x20, 37 0x30, 0x20, 0x2B , 0x40, 38 0x20, 0x30, 0x1C , 0x10, 39 0x18, 0x20, 0x15 , 0x20, 40 0x1C, 0x20, 0x20 , 0x20, 41 0x26, 0x40, 0x20 , 0x20, 42 0x2B, 0x20, 0x26 , 0x20, 43 0x20, 0x20, 0x30 , 0x80, 44 0x20, 0x30, 0x1C , 0x10, 45 0x20, 0x10, 0x1C , 0x10, 46 0x20, 0x20, 0x26 , 0x20, 47 0x2B, 0x20, 0x30 , 0x20, 48 0x2B, 0x40, 0x20 , 0x15, 49 0x1F, 0x05, 0x20 , 0x10, 50 0x1C, 0x10, 0x20 , 0x20, 51 0x26, 0x20, 0x2B , 0x20, 52 0x30, 0x20, 0x2B , 0x40, 53 0x20, 0x30, 0x1C , 0x10, 54 0x18, 0x20, 0x15 , 0x20, 55 0x1C, 0x20, 0x20 , 0x20, 56 0x26, 0x40, 0x20 , 0x20, 57 0x2B, 0x20, 0x26 , 0x20, 58 0x20, 0x20, 0x30 , 0x30, 59 0x20, 0x30, 0x1C , 0x10, 60 0x18, 0x40, 0x1C , 0x20, 61 0x20, 0x20, 0x26 , 0x40, 62 0x13, 0x60, 0x18 , 0x20, 63 0x15, 0x40, 0x13 , 0x40, 64 0x18, 0x80, 0x00 65 }; 66 67 void int0() interrupt 1 //采用中断0 控制节拍 68 { TH0=0xd8; 69 TL0=0xef; 70 n--; 71 } 72 73 void delay (unsigned char m) //控制频率延时 74 { 75 unsigned i=3*m; 76 while(--i); 77 } 78 79 void delayms(unsigned char a) //豪秒延时子程序 80 { 81 while(--a); //采用while(--a) 不要采用while(a--); 各位可编译一下看看汇编结果就知道了! 82 } 83 84 void main() 85 { unsigned char p,m; //m为频率常数变量 86 unsigned char i=0; 87 TMOD&=0x0f; 88 TMOD"=0x01; 89 TH0=0xd8;TL0=0xef; 90 IE=0x82; 91 play: 92 while(1) 93 { 94 a: p=music_tab[i]; 95 if(p==0x00) { i=0, delayms(1000); goto play;} //如果碰到结束符,延时1秒,回到开始再来一遍 96 else if(p==0xff) { i=i+1;delayms(100),TR0=0; goto a;} //若碰到休止符,延时100ms,继续取下一音符 97 else {m=music_tab[i++], n=music_tab[i++];} //取频率常数 和 节拍常数 98 TR0=1; //开定时器1 99 while(n!=0) Beep=~Beep,delay(m); //等待节拍完成, 通过P1口输出音频(可多声道哦!) 100 TR0=0; //关定时器1 101 } 102 }

    时间:2018-10-08 关键词: 51单片机 蜂鸣器

  • STM32F103学习笔记(二) 创建工程模板+点亮LED+蜂鸣器

    捣鼓了几天,终于点亮led了,那个欣慰啊。。。至于建立工程模板,对于我这种小白来说确实不容易上手,捣鼓了好久,不是忘记添加.c文件,就是忘记加入头文件的路径(头文件的路径千万要是英文)。其实模板建立好之后,只需要编写两个文件夹(1)USER,用来编辑主函数的。(2)HADEWARE(硬件)用来配置相关硬件的,eg:包含led.c led.h 后面要用的话,直接在这里边调用就行了。接下来就是led的点亮和蜂鸣器发出响声了。对于led,首先上个电路图:板子上有两个led,DS0和DS1分别接了PB5,PE5,.重要的是对init(初始化)的配置:voidLED_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);//使能PB,PE端口时钟GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//LED0-->PB.5推挽输出GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB.5输出高GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//LED1-->PE.5推挽输出GPIO_Init(GPIOE,&GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_5);/PE.5输出高}要调好GPIO_InitTypeDef结构体中三个成员,传递参数进去完成初始化。每个HADEWARE中的.c文件对应一个.h文件,再看#include "led.h",这是自己写的头文件#ifndef__LED_H#define__LED_H#include"sys.h"//LED端口定义#defineLED0PBout(5)//DS0#defineLED1PEout(5)//DS1voidLED_Init(void);//初始化#endif这段代码里面最关键就是 2 个宏定义:#defineLED0PBout(5)//DS0#defineLED1PEout(5)//DS1这样调用led更加方便,增加可读性。重要的是要将led.c加到HADEWARE这个组里边:然后就是主函数了,挺简单的:#include"led.h"#include"delay.h"#include"sys.h"//ALIENTEK战舰STM32开发板实验1144//跑马灯实验intmain(void){delay_init();//延时函数初始化LED_Init();//初始化与LED连接的硬件接口while(1){LED0=0;LED1=1;delay_ms(300);//延时300msLED0=1;LED1=0;delay_ms(300);//延时300ms}}对于蜂鸣器,电路图没看懂,模数电没学过,电路也只学到11章,考了83分的渣渣,确实不知道NPN三极管怎么用,只是记住当 PB.8 输出高电平的时候,蜂鸣器将发声, 当 PB.8 输出低电平的时候,蜂鸣器停止发声。蜂鸣器在HADEWARE中配置beep.c和beep.h和led差不多不再赘述,#include"beep.h"151//初始化PB8为输出口.并使能这个口的时钟//LEDIO初始化voidBEEP_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIOB端口时钟GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//BEEP-->GPIOB.8端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度为50MHzGPIO_Init(GPIOB,&GPIO_InitStructure);//根据参数初始化GPIOB.8GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出0,关闭蜂鸣器输出}注意要使能相应的时钟端口RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);同样,beep.h中#ifndef__BEEP_H#define__BEEP_H#include"sys.h"//蜂鸣器端口定义#defineBEEPPBout(8)//BEEP,蜂鸣器接口voidBEEP_Init(void);//初始化#endif主函数:#include"sys.h"#include"delay.h"#include"led.h"#include"beep.h"//ALIENTEK战舰STM32开发板实验2//蜂鸣器实验intmain(void){delay_init();//延时函数初始化LED_Init();//初始化与LED连接的硬件接口BEEP_Init();//初始化蜂鸣器端口while(1){LED0=0;BEEP=0;delay_ms(300);LED0=1;BEEP=1;delay_ms(300);}

    时间:2018-10-03 关键词: stm32f103 蜂鸣器 点亮led 工程模板

  • C51单片机 蜂鸣器两只蝴蝶代码

    #include // 这是 单片机音乐代码生成器 生成的代码#define uchar unsigned charsbit beepIO=P1^5; // 输出 为 P1.5 可以修改 成 其它 IO 口uchar m,n;uchar code T[49][2]={{0,0},{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},{0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},{0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}};uchar code music[][2]={{0,4},{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,24},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{21,24},{23,4},{21,4},{23,16},{23,4},{21,4},{23,4},{21,4},{19,16},{16,4},{19,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{19,4},{14,24},{23,4},{26,4},{26,16},{26,4},{28,4},{26,4},{23,24},{21,4},{23,4},{21,8},{21,4},{23,4},{21,4},{19,4},{16,4},{16,2},{19,2},{19,24},{0,20},{26,4},{26,4},{28,4},{31,4},{30,4},{30,4},{28,4},{23,4},{21,4},{21,4},{23,16},{0,4},{23,4},{23,4},{26,4},{28,8},{28,12},{16,4},{23,4},{21,4},{21,24},{23,4},{26,4},{26,4},{23,4},{26,8},{0,4},{31,8},{30,4},{28,4},{30,4},{23,8},{0,4},{28,4},{28,4},{30,4},{28,4},{26,4},{23,4},{21,8},{23,4},{21,4},{23,4},{26,16},{0xFF,0xFF}};void delay(uchar p){uchar i,j;for(;p>0;p--)for(i=181;i>0;i--)for(j=181;j>0;j--);}void pause(){uchar i,j;for(i=150;i>0;i--)for(j=150;j>0;j--);}void T0_int() interrupt 1{beepIO=!beepIO;TH0=T[m][0]; TL0=T[m][1];}void main(){uchar i=0;TMOD=0x01; EA=1; ET0=1;while(1){m=music[i][0];n=music[i][1];if(m==0x00){TR0=0;delay(n);i++;}else if(m==0xFF){TR0=0;delay(30);i=0;}else if(m==music[i+1][0]){TR0=1;delay(n);TR0=0;pause();i++;}else{TR0=1;delay(n);i++;}}}

    时间:2018-09-27 关键词: C51 单片机 蜂鸣器

  • 基于微控制器引脚的大电压驱动压电蜂鸣器设计方案

    基于微控制器引脚的大电压驱动压电蜂鸣器设计方案

    往期的一篇设计实例,描述了如何用一只微控制器以大交流电压驱动一个压电蜂鸣器,它使用了一个四MOSFET的电路,与微控制器的两个I/O引脚连接(参考文献1)。本文是这个电路的修改扩充,能节省下一只微控制器的I/O引脚。Q4的栅极连接到Q2的漏极,而不是第二个I/O引脚(图)。微处理器在I/O引脚施加一个高逻辑电平,使Q2导通,将Node A拉至低逻辑电平。这个动作打开Q3,关闭Q4.Node B上的电压变为15V,Q1关闭。压电元件上的电压现在为15V.一只微控制器I/O引脚驱动这个电路,在压电蜂鸣器两端产生一个交流电压然后,微控制器将I/O引脚切换为低,Q2关闭。Q1也关闭,因此Node A通过上拉电阻R1,缓慢地升至高逻辑电平。当Node A上的电压达到Q3和Q4管对构成的反相器开关阈值时,Q3快速关断,Q4快速导通。结果Node B上的低逻辑电平使Q1导通,并加快NodeA上电压的上升。现在,压电蜂鸣器上的15V电压是相反极性了。R2削弱了Q4输出与输入之间的耦合,因为存在着压电元件。R2取值330Ω通常就足以抑制反馈所造成的高频振荡。如果R1阻值小,就会增加从电源拉出的功率。R1取值过大也会增加功耗,因为这样会延长晶体管的开关时间,增加有关的直通电流。R1的最佳值约为1kΩ。此设计节省了一只I/O引脚,但付出的是增加功耗的代价。因此,电路的功耗要比前面设计实例所述电路高一个数量级。

    时间:2018-09-26 关键词: 设计方案 电压 电源技术解析 蜂鸣器

首页  上一页  1 2 3 下一页 尾页
发布文章

技术子站

更多

项目外包