【蓝桥杯单片机组模块】1、硬件基础知识与蜂鸣器模块

不积跬步无以至千里,不积小流无以成江海。


理论

1、74HC573

这块板子也主要靠它和74HC138撑起外设的门面,138数电常讲,这里不再提及。
573可能有点陌生,其实也没啥,记住一点它是个锁存器,存状态的器件就行了。
非得深入了解的话,戳这里吧。

如果程序中使用完573后,记得及时的禁止使能!最好这样写

P2 = P2 & 0x1F;

2、ULN2003

这个可得好好说说,感觉挺好使的。
主要记住几个参数,

它是个驱动芯片,可以驱动诸如继电器和电机此类感性负载

输出端可达500mA/50V.

感性负载的缘故,输出端具有的二极管学名续流二极管。

9脚即COM口,是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。所以最好接上VCC!

另外一个ULN2003是一个非门电路!!

更多信息,戳这里。

3、IO控制原理

干说的话,有点不直观,先来看看怎么驱动蜂鸣器吧。
板载蜂鸣器为有源蜂鸣器,只要两端有压差就会响!

【蓝桥杯单片机组模块】1、硬件基础知识与蜂鸣器模块_第1张图片

也就是说我们让 N_BUZZ是低电平就OK了,再顺藤摸瓜找到N_BUZZ通往何处。

那岂不是so easy的事,,
【蓝桥杯单片机组模块】1、硬件基础知识与蜂鸣器模块_第2张图片

使用我们前面提到的ULN2003驱动的,记住它是非门。想要OUT7=0,那么只能IN7=1了,IN7对应到锁存器573,不改变状态,再对应到IO口就是P06了,也就是我们让 P0^6=1就行了! 这时候蜂鸣器就会响了。

确实是这样的,但是别忘了573上面的LE,是需要使能的。也就是Y5C=1即可,再根据上面的思顺藤摸瓜就来到了74HC02这个或非门
【蓝桥杯单片机组模块】1、硬件基础知识与蜂鸣器模块_第3张图片

WR是J13上的,当我们是IO编程的时候,J13的2、3脚是相连的。
【蓝桥杯单片机组模块】1、硬件基础知识与蜂鸣器模块_第4张图片

3脚GND,也即是说WR是接地的。那么此时的74HC02就是个非门了。

我们想要Y5C=1,那么Y5=0即可,Y5又是38译码器的输出,Y5等于0就是38译码器选中对应的引脚,因为它是低电平输出(数电有讲吧。。。)。也即是让CBA=101,CBA又分别对应P2口的765。那么一切就理清楚了。

只需要让P2 = (P2&0x1F|0xA0)即可。

实验

#include 

sbit Buzz=P0^6;

void main()
{

	P2 = ((P2&0x1F)|0xA0); 
	Buzz = 1;	
	P2 = P2 & 0x1F;
	while(1);
}

蜂鸣器确实响了吧,当然可以试试Buzz赋值0.。。。

关于继电器,它和蜂鸣器一样都是Y5C所在寄存器使能控制,只需改变相应的IO口,就可以实现控制继电器,直接上代码。

#include 

sbit Buzz = P0^6;
sbit Relay = P0^4;

void main()
{

	P2 = ((P2&0x1F)|0xA0); //使能573
	Buzz = 0;	//关闭蜂鸣器
	Relay = 0; //关闭继电器
	P2 = P2 & 0x1F;	//禁止573
	while(1);
}

LED灯不过是换成了Y4C,对应选中Y4就可以操作LED了,上代码。

#include 

sbit Buzz = P0^6;
sbit Relay = P0^4;

void main()
{

	P2 = ((P2&0x1F)|0xA0); //使能573
	Buzz = 0;	//关闭蜂鸣器
	Relay = 0; //关闭继电器
	P2 = P2 & 0x1F;	//禁止573
	
	P2 = ((P2&0x1F)|0x80);
	P0 = 0x00; //点亮所有LED
	P2 = P2 & 0x1F;
	while(1);
}

小结

后期当不用到LED、继电器和蜂鸣器的时候,记得直接关闭,乱响的话很容易影响心情的!

void CloseFucker()
{
	P2 = (P2 & 0x1F) | 0x80;//关闭LED
	P0 = 0xFF;
	P2 = 0x00;
	
	P2 = (P2 & 0x1F) | 0xA0;//关闭蜂鸣器继电器
	P0 = P0 & 0xAF;
	P2 = 0x00;
}

你可能感兴趣的:(#,蓝桥杯之单片机组)