找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1|回复: 0
收起左侧

第9章 综合练习9.3 9

[复制链接]
ID:1167894 发表于 2026-4-11 09:44 | 显示全部楼层 |阅读模式
9.3蜂鸣器
蜂鸣器从结构区分分为压电式蜂鸣器和电磁式蜂鸣器。压电式为压电陶瓷片发音,电流比较小一些,电磁式蜂鸣器为线圈通电震动发音,体积比较小。
按照驱动方式分为有源蜂鸣器和无源蜂鸣器。这里的有源和无源不是指电源,而是振荡源。有源蜂鸣器内部带了振荡源,如图9-3所示中,给了BUZZ引脚一个低电平,三极管导通蜂鸣器就会直接响。而无源蜂鸣器内部是不带振荡源的,要让它响必须给500Hz4.5KHz之间的脉冲频率信号来驱动它才会响。有源蜂鸣器往往比无源蜂鸣器稍贵,因为里边多了振荡电路,驱动发音也简单,靠电平就可以驱动,而无源蜂鸣器价格比较便宜,但驱动起来比较麻烦。
9-3.png
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.png
9-4 继电器原理图
9-4中,当单片机的RELAY引脚为高电平时,三极管截止,继电器的控制端没有电流通过,1脚和公共端2脚接到一起;当单片机的RELAY引脚为低电平时,三极管导通,这时候由于磁力的作用,3脚和公共端2脚吸合到一起。
继电器的用法分为常开(NONormally Open)和常闭(NCNormally 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);
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表