一、继电器、继电器概述
(1)蜂鸣器原理
蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型,蜂鸣器的发声原理为:
- 1、无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信号输出。
- 2、有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号。
- 有源蜂鸣器和无源蜂鸣器的主要差别是:二者对输入信号的要求不一样,有源蜂鸣器工作的理想信号是直流电,一般标示为VDD、VDC等。因为蜂鸣器内部有一个简单的振荡电路,可以把恒定的直流电转变成一定频率的脉冲信号,从而产生磁场交变,带动钼片振动发出声音。
(2)继电器原理
继电器,开关电器的一种,在控制电路中用的非常多:
- 继电器(英文名称:relay)是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。
- 它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。
- 通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
- 通电(电生磁)→K1 与 m2 相连
(3)继电器蜂鸣器原理图
(4)ULN2003概述(了解)
- ULN2003是高耐压、大电流复合品体管阵列,由七个硅NPN 复合晶体管组成,每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
- ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。
- 输入5VTTL电平,输出可达500mA/50V。
- ULN2003是高耐压、大电流达林顿系列,由七个硅NPN达林顿管组成。该电路的特点如下:ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路,直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
- ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
二、开发板原理图
倒推:
- (以控制LED为例)想打开控制LED的P0口→打开Y4C(Y4C置为1)→找出Y4C的输出端→找到74LS02(74LS02:或非门,先进行取或,再进行取非输出)
- 只有当Y4为0(根据译码器的真值表给P2赋值,从而将Y4置为0)时,经过或非门,Y4C为1
- 理解:Y4 Y7 Y5 Y6其中一个通过74HC138译码器置为低电平,则对应的Y4C或Y7C或Y5C或Y6C置为高电平,则打开了控制LED或数码管或蜂鸣器或继电器的P0口控制
三、蜂鸣器、继电器例程
(1)例程1:LED例程初始化分析。
//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量定义区域
unsigned char LED = 0xFE;
//函数定义区域
void Delay(unsigned int ms) //@11.0592MHz
{
unsigned char i, j;
while(ms--)
{
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
}
//主程序
void main()
{
P2=0XA0;P0=0X00;//使能控制蜂鸣器、继电器的74HC573锁存器,并关闭蜂鸣器
P2=0x80;//使能控制LED的74HC573锁存器 0x80 == 1000 0000 == P27 = 1;P26 = 0;P25 = 0
P0=0XFF;//关闭所有LED
while(1)
{
P0 = LED;
Delay(100);
LED = _crol_(LED,1);
}
}
(2)蜂鸣器、继电器例程。本例以循环“打开蜂鸣器保持500MS,关闭蜂鸣器保持500MS,打开继电器保持500MS,关闭继电器保持500MS”为例。
//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量定义区域
unsigned char LED = 0xFE;
//函数定义区域
void Delay(unsigned int ms) //@11.0592MHz
{
unsigned char i, j;
while(ms--)
{
_nop_();
_nop_();
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
}
//主程序
void main()
{
P2=0XA0;//1010 0000 使能控制蜂鸣器、继电器的74HC573锁存器
P0=0X00;
P2=0X80;//1000 0000 使能控制LED的74HC573锁存器
P0=0XFF;// 关闭全部LED
P2=0XA0;//1010 0000 使能控制蜂鸣器、继电器的74HC57锁存器
while(1)
{
/*用于验证,最好不要将蜂鸣器继电器写入while循环*/
P06=1;Delay(500);//打开蜂鸣器,并延迟500ms
P06=0;Delay(500);//关闭蜂鸣器,并延迟500ms
P04=1;Delay(500);//打开继电器,并延迟500ms
P04=0;Delay(500);//关闭继电器,并延迟500ms
P0=0X10;Delay(500);//打开蜂鸣器,并延迟500ms
P0=0X00;Delay(500);//关闭蜂鸣器,并延迟500ms
P0=0X40;Delay(500);//打开继电器,并延迟500ms
P0=0X00;Delay(500);//关闭继电器,并延迟500ms
}
}
(3)数码管例程分析
void SEG_Display12(unsigned char yi,unsigned char er)
{
P0=0XFF;//消影
P2=0XC0;//1100 0000 打开控制数码管位选的锁存器
P0=0X01;//0000 0001 选中第一个数码管
P2=0XFF;//打开控制数码管段选的锁存器
P0=tab[yi];//给上述打开的数码管赋值
Delay(1);
P0=0XFF;//消影
P2=0XC0;//1100 0000 打开控制数码管位选的锁存器
P0=0X02;//0000 0010 选中第二个数码管
P2=0XFF;//打开控制数码管段选的锁存器
P0=tab[2];//给上述打开的数码管赋值
Delay(1);
}
(4)例程4:上电初始化程序,上电之后关闭所有的LED、数码管、蜂鸣器、继电器
void All_Init(void)
{
P2=0XA0;//1010 00000 打开控制蜂鸣器继电器的74HC573锁存器
P0=0X00;//0000 0000 关闭蜂鸣器继电器
P2=0X80;//1000 0000 打开控制LED灯的74HC573的锁存器
P0=0XFF;//1111 1111 关闭所有LED
P2=0XC0;//1100 0000 打开控制数码管位选的锁存器
P0=0XFF;//1111 1111 选中所有数码管
P2=0XE0;//1110 0000 打开控制数码管段选的锁存器
P0=0XFF;//1111 1111关闭所有数码管
}