2.蜂鸣器和继电器的基本控制
1.蜂鸣器
蜂鸣器已经接了一个vcc,还有一个N_BUZZ引脚,当N_BUZZ被置低电平的时候,蜂鸣器被打通,打通了他就响了。
2.继电器
继电器,一般指的是电磁继电器,也就是机械动作那种。继电器的作用本质是用一个回路(一般是小电流)去控制另外一个回路(一般是大电流)的通断,而且这个控制过程中,两个回路一般是隔离的,它的基本原理,是利用了电磁效应来控制机械触点达到通断目的,给带有铁芯线圈通电-线圈电流产生磁场-磁场吸附衔铁动作通断触点,整个过程是“小电流-磁-机械-大电流”这样一个过程。
当N_RELAY被置低电平时,铁芯线圈被打通,产生磁力把k1吸了下来,连接到了m2上,此时继电器上的指示灯L10就亮了。
3.如何打通
这里可以看到蜂鸣器的N_BUZZ和继电器的N_RELAY被连在了一个ULN2003上,这是个啥玩意呢??
查找百度我们可以知道:
这里并看不出什么东西,但是看他的具体电路图:
我们得知中间那个三角形带一个圆圈的是一个非门,非门的逻辑就是:
输入为高,输出就为低
那么为了给蜂鸣器上电,我们就得给N_BUZZ置低,那么IN7就得置高,同时那就是Q7置高,中间还隔了M74HC573M1R,把他打通请参考
(13条消息) 蓝桥杯单片机备战(一)从点亮LED_R_ichun的博客-优快云博客
至此,我们就知道了如何打通这一路电路,接下来是代码实现
4.代码实现
#include "reg52.h"
sbit HC138_A = P2^5; //定义用符号HC138_A来表示P2.5引脚,如果你愿意也可以起P25一类的名字,只要下面程序中也随之更改就行了。
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;
void Delay(unsigned int t)//延迟函数
{
while(t--);
while(t--);
}
void ULN2003Init()//M74HC573M1R上电连通ULN2003
{
HC138_C = 1;
HC138_B = 0;
HC138_A = 1;
//74HC128三八译码器选通了Y5,也就是Y5置0了
//再通过或非门,此时Y5C置1,M74HC573M1R上电连通ULN2003
}
void main(){
while(1)
{
ULN2003Init();
P0 = 0x40; //0100 0000 打通蜂鸣器
Delay(60000);
P0 = 0x00;//0000 0000响一会在安静
Delay(60000);
P0 = 0x10; //0001 0000 打通继电器
Delay(60000);
P0 = 0x00;//0000 0000点亮指示灯一会再熄灭
Delay(60000);
}
}
参考资料:M74HC573M1R打通相关: