Bootstrap

单片机基础模块学习——蜂鸣器及继电器

一、蜂鸣器和继电器原理图

1.蜂鸣器

当J6跳线帽接到左侧,蜂鸣器和继电器处于关闭状态,接到右侧时蜂鸣器和继电器处于开启状态。

当N_BUZZ为低电平时,蜂鸣器开启


2.继电器 

图中的矩形是继电器里面的电磁铁

  • 当N_RELAY为高电平时,电磁铁两边无电压差,不会有电流流过,电磁铁处于没有磁性的状态,当没有磁性时,K1默认接到m1。
  • 当N_RELAY为低电平时,电磁铁有电流流过,会将电流转换成磁性,将K1吸下来,吸到m2的位置。

也就是说,当电磁铁没有工作时,m1闭合,m2断开;当电磁铁工作时,m2闭合,m1断开。因此将m1称为常闭触点,m2称为常开触点。

下面的二极管起到保护作用,电磁铁实际上是一个线圈,也就是电感。当N_RELAY有低变为高时,电感会产生感生电动势尽量维持流过自身的电流,此时会通过二极管流回来形成闭合回路,以此来保护电路。

N_RELAY为低电平时,继电器开启。


3.共用VB 

新版原理图里面,当J6短接23时,VCC等于VB,同时也接通了继电器的VB,可以同时为两个元件供电, L10是继电器吸合状态的指示灯,若L10被点亮,说明继电器处于吸合状态。


由于这两个外设所需要的电流更大,所以用到了ULN2003来提供所需电流。同时,ULN2003内部是非门,输入电平和输出电平具有反向关系

  • 开启蜂鸣器,P06输出高电平
  • 开启继电器,P04输出高电平

二、模块代码

注意的是,Peripheral_Val 用或等于的写法,才能使蜂鸣器和继电器的开启互不冲突

Peripheral_Val |=0x40;等价于Peripheral_Val =Peripheral_Val |0x40;

#include "peripheral.h"

void Set_Peripheral(unsigned char Buzzer_Status,unsigned char Relay_Status)
{
	unsigned char Peripheral_Val =0x00;
	
	if(Buzzer_Status == 1)
	{
		Peripheral_Val|=0x40;//P06置高电平,开启蜂鸣器
	}
	if(Relay_Status == 1)
	{
		Peripheral_Val|=0x10;//P04置高电平,开启继电器
	}
	P0 =Peripheral_Val;
	P2=P2&0x1F|0xA0;//将Y5置为低电平
	P2=P2&0x1F;//将Y5的高三位清零
}

 根据下面原理图,当Y5C对应的LE引脚为低电平时, 74HC573锁存器开启,对于该锁存器知识,在数字电路基础知识文章中有详细介绍。

 


 由于Y5和Y5C是取反的效果,所以将Y5设置为低电平,P25、P26、P27由二进制(101)对应的十进制为5,即P2=0xA0.

 

 

;