首页 > 最新动态 > 晶控课堂 >

51单片机综合学习系统之继电器、蜂鸣器篇

2016-10-11 13:30
分享到:
51单片机综合学习系统之继电器、蜂鸣器篇 《电子制作》2007年12月 站长原创,如需引用请注明出处

9.4蜂鸣器实验

    在很多的单片机系统中除了显示器件外经常还有发声器件,最常见的发声器件是蜂鸣器。蜂鸣器一般用于一些要求不高的声音报警及按键操作提示音等场合。蜂鸣器的形状一般如图9-11所示。虽然它有自己的固有频率,但是它也可以被加以不同频率的方波,从而编制一些简单的音乐。

 

图9-11 蜂鸣器实物图

9.4.1 实例功能

    本实例就是来实现蜂鸣器发声,通过本小节的实验,可以使读者熟练掌握蜂鸣器的应用。

 

图9-12 蜂鸣器实验演示图

9.4.2 器件和原理

    蜂鸣器和普通扬声器相比,最重要一个特点是只要按照极性要求加上合适的直流电压,就可以发出固有频率的声音,因此使用起来比扬声器简单。由此可知,蜂鸣器的控制和LED的控制对单片机而言是没有区别的。

9.4.3 硬件电路

    虽然蜂鸣器的控制和LED的控制对于单片机是一样的,但在外围硬件电路上却有所不同,因为蜂鸣器是一个感性负载,一般不建议用单片机I/O口直接对它进行操作,所以最好加个驱动三极管,在要求较高的场合还会加上反相保护二极管。本例实验只为了达到学习目的并没有加反相二极管保护,硬件电路可以参考下图9-13。

 

 

图9-13 硬件原理图

    通过硬件原理图可知,图中三极管用了PNP型,所以要使蜂鸣器发声只要给单片机P3.6置低电平就可,由此可以为下文的程序编写提供关键参考。

9.4.4 程序设计

01#include <reg51.h>

 

02

 

03sbit BUZZER=P3^7;

 

04

 

05void main(void)

 

06{

 

07BUZZER = 0;

 

08while(1);

 

09}

 

9.4.5 代码分析

 

    序号1:包含51单片机寄存器定义地头文件

 

    序号3:位定义蜂鸣器为P3.7

 

    序号5-9:main程序

 

    序号7:使P3.7端口输出电平0,蜂鸣器发声

 

    序号8:循环等待

 

9.5继电器实验

    在现代自动控制设备中,都存在一个电子电路(弱电)与电气电路(强电)的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(如电动机、电磁铁、电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。继电器便能完成这一桥梁作用。

9.5.1 实例功能

    本实例通过单片机来控制继电器吸合、释放,读者可以熟练掌握继电器的使用方法。在本例中读者也可以用继电器的常开、常闭触点控制电灯的亮灭,实现“以小控大”。

 

图9-14 继电器实验演示图

9.5.2 器件和原理

    继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。在大多数的情况下,继电器就是一个电磁铁,这个电磁铁的衔铁可以闭合或断开一个或数个接触点。当电磁铁的绕组中有电流通过时,衔铁被电磁铁吸引,因而就改变了触点的状态。继电器一般可以分为电磁式继电器、热敏干簧继电器、固态继电器等。本实验板上配置的继电器如图9-15。

 

 

图9-15 继电器实物图

    继电器也是属于感性器件,所以不能用单片机的I/O口直接来控制,且要在三极管等控制器件上加反相保护电路。一般实验中都是单片机通过一个PNP型三极管,把三极管作为电子开关来驱动继电器,继电器的开和关完全由三极管的基极电平进行控制。当三极管基极为高电平,PNP型三极管截止,这时继电器不工作;反之为低电平的话,PNP型三极管导通,继电器得电吸合。

9.5.3 硬件电路

    继电器实验原理图可以参考下图9-16。

 

图9-16 硬件原理图

 

9.5.4 程序设计

 

01#include <reg51.h>

 

02

 

03sbit RELAY = P1^3;

 

04

 

05void Delay()

 

06{

 

07unsigned char i,j;

 

08for(i=0;i<255;i++)

 

09for(j=0;j<255;j++);

 

10}

 

11

 

12void main()

 

13{

 

14while(1)

 

15{

 

16RELAY = 0;

 

17Delay();

 

18RELAY = 1;

 

19Delay();

 

20}

 

21}

 

8.5.5 代码分析

 

    序号1:包含51单片机寄存器定义的头文件

 

    序号3:位定义继电器为I/O口P1.3

 

    序号5-10:一个延时函数,具体延长的时间和使用的晶体相关

 

    序号7:定义两个无符号变量i,j

 

    序号8-9:通过i,j的自加嵌套循环执行,达到延时目的

 

    序号12-21:main函数

 

    序号14:进入主程序的while循环

 

    序号16:继电器吸合

 

    序号17:调用延时程序

 

    序号18:继电器释放

 

    序号19:调用延时程序