|
9.3蜂鸣器 蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。 按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振荡源,如图9-3所示中,给了BUZZ引脚一个低电平,三极管导通蜂鸣器就会直接响。而无源蜂鸣器内部是不带振荡源的,要让它响必须给500Hz~4.5KHz之间的脉冲频率信号来驱动它才会响。有源蜂鸣器往往比无源蜂鸣器稍贵,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,但驱动起来比较麻烦。 图9-3 蜂鸣器电路原理图 如图9-3所示,Kingst51开发板采用的是有源蜂鸣器,由于蜂鸣器电流依然相对较大,因此需要用三极管驱动。蜂鸣器经常用于电脑、打印机、万用表这些设备上做提示音,提示音一般也很简单,发出个声音就可以了。 #include <reg52.h> sbit BUZZ = P1^6; //蜂鸣器控制引脚 void main() { EA = 1; //使能总中断 TMOD = 0x01; //设置T0为模式1 TH0 = 0xFC; //为T0赋初值0xFC67,定时1ms TL0 = 0x67; ET0 = 1; //使能T0中断 TR0 = 1; //启动T0 BUZZ = 0; //启动蜂鸣器鸣叫 while (1); } /* T0中断服务函数,用于控制蜂鸣器发声 */ void InterruptTimer0() interrupt 1 { static unsigned int tmr = 0; TH0 = 0xFC; //重新加载重载值 TL0 = 0x67; tmr++; if (BUZZ == 0) { if (tmr >= 500) //蜂鸣器鸣叫0.5s { BUZZ = 1; tmr = 0; } } else { if (tmr >= 1500) //蜂鸣器关闭1.5s { BUZZ = 0; tmr = 0; } } } 9.4继电器继电器是根据一定的信号来接通或者断开电流电路的控制元件,它具有控制系统和被控制系统。当控制系统达到一定条件时,继电器会动作,使被控制的输出电路导通或者断开。 继电器具有隔离、转换、放大和自动保护等多种功能。它能够将输入电路中的小电流、低电压信号转换为输出电路中的大电流、高电压信号,从而驱动各种负载设备。同时,继电器还能够实现电路之间的隔离,保护电路免受干扰和损坏。此外,继电器还具有灵敏度高、动作速度快、体积小、重量轻等优点。这使得继电器在电力系统、通信系统、自动控制系统等领域得到了广泛应用。 Kingst51开发板所使用的继电器是一个5V控制系统,最大被控制电压250V的继电器。它一共有5个引脚,其中2个控制系统引脚,3个被控制系统引脚。3个被控制引脚为单刀双掷,分别为公共端,常开和常闭,如图9-4所示。 图9-4 继电器原理图 图9-4中,当单片机的RELAY引脚为高电平时,三极管截止,继电器的控制端没有电流通过,1脚和公共端2脚接到一起;当单片机的RELAY引脚为低电平时,三极管导通,这时候由于磁力的作用,3脚和公共端2脚吸合到一起。 继电器的用法分为常开(NO,Normally Open)和常闭(NC,Normally Closed)两种方式。常开指的是继电器线圈在未通电的状态下,其触点处于断开状态。常开方式常用于在特定条件下启动某个电器设备的场景,比如声控灯,电动门禁等。常闭指的是继电器线圈在未通电的状态下,其触点处于闭合状态。常闭常用于在特定条件下断开连接的场合,比如安全监测系统,当检测到气体泄漏时,继电器激活,断开常闭点。 图9-4中加了一个D4这样一个二极管,这个二极管称之为续流二极管。继电器内部有线圈,属于感性器件,当三极管导通给继电器供电时,就会有导通电流流过继电器,电感上也会储存有能量。但是当三极管从导通变截止时的瞬间,经“+5V-三极管-继电器-GND”这条回路就截断了,无法通过电流,而电感由于之前存储了电流这个时候无处可去了,就是要经过D4和继电器自身的环路来消耗,从而避免了关断时由于电感电流造成的反向冲击,接续关断时的电流,这就是续流二极管名称的由来。 继电器的控制程序比较简单,如下所示通过IO口即可控制继电器的开关。 #include <reg52.h> sbit RELAY = P3^3; //继电器控制引脚 void main() { unsigned int i; RELAY = 0; //继电器吸合 for (i=0; i<50000; i++); //延时一段时间 RELAY = 1; //继电器释放 while (1); }
|