【蓝桥杯——单片机学习笔记】一.蜂鸣器和继电器的控制(STC15F2K60S2)

一.原理图

【蓝桥杯——单片机学习笔记】一.蜂鸣器和继电器的控制(STC15F2K60S2)_第1张图片

二.原理图分析

如上图,74HC138是一个3-8译码器,三个输入端分别与单片机的P2.7、P2.6和P2.5相连,四个输出端(输出低电平有效)分别作为74HC02四个或非门的输入端。或非门U25B的输出端Y5C与M74HC573锁存器的锁存使能输入端LE(输入高电平有效)。锁存器的输入端分别与P0.0~P0.7相连,输出端分别与ULN2003驱动芯片的输入端相连(ULN2003可看作一个非门)。而驱动芯片的OUT5端接到继电器的一个输入端,用于控制继电器开关,OUT7端接到蜂鸣器的一端,用于控制蜂鸣器的开关。

控制逻辑
(1).当P2.7、P2.6、P2.5分别为1、0、1时,即对应的输出端Y5输出低电平。
(2).由于跳线帽连接了J13中的WR和GND,即WR为低电平。因此或非门B的输出端Y5C即为高电平,使能锁存器。
(3).此时如果令P0.4为低电平,经过锁存器和驱动芯片,OUT5输出即为高电平,由原理图可知,此时电磁继电器未吸合,指示的LED灯关闭,反之则打开;
(4).如果令P0.6为低电平,经过锁存器和驱动芯片,OUT7输出即为高电平,由原理图可知,蜂鸣器两端均为高电平,蜂鸣器关闭,反之则打开。

电路设计分析
1.74HC138译码器的使用是为了防止占用过多I/O口,用三个I/O即可控制8个输出,而此开发板实际只用了其中的4个输出口。
2.74HC02或非门的使用只是对译码器的输出电平进行取反操作。
3.74HC573锁存器用于锁住输出。使能芯片后改变P0口的高低电平,然后失能芯片,此时输出结果由锁存器保存,P0口的改变将不再对其产生影响。
4.ULN2003驱动芯片主要用于输出大电流驱动电机。所以实际上,此处对蜂鸣器和继电器并无特殊影响。(因为蜂鸣器和继电器所需的电流不需要很大)

三.代码

#include "stc15.h"
sbit buzzer=P0^6;	//蜂鸣器
sbit relay=P0^4;	//继电器

void main()
{
	P2=(P2&0X1f)|0xa0;buzzer=0;P2&=0x1f;//关闭蜂鸣器
	P2=(P2&0X1f)|0xa0;relay=1; P2&=0x1f;//继电器吸合,指示灯打开
	while(1)
	{
	// ……
	}
}

Tips:
1.代码中所用到的P2=(P2&0X1f)|0xa0以及P2&=0x1f是为了保证只改变 P2.7、P2.6和P2.5,而不影响其他I/O口。
2.如果不想让蜂鸣器响,可以拔掉蜂鸣器旁的跳线帽。

你可能感兴趣的:(STC15学习笔记)