一、元器件介绍:
二、相关芯片介绍
1.四大芯片
译码器(74HC138)、锁存器(74HC573)、或非门(74HC02)、驱动芯片(ULN2003)
2.了解
①:因单片机IO口的驱动能力有限,不足以驱动蜂鸣器、继电器中的线圈,所以需要驱动芯片来增加驱动能力。②:因板子上外设多,IO数量不够,需要通过”译码器-锁存器“结构,让数据控制口P0分时控制外设。(74HC138、74HC573、74HC02)
3.电路分析及芯片详解
①:ULN2003
内部为非门加上二极管(起保护作用),想让蜂鸣器响,就要给N BUZZ端0,即ULN2003中的7给1,即Q6输出为1,再看74HC573芯片。
②:74HC573
LE有类似门锁的功能,LE=1时,P0口的数据可以送到输出端,LE=0时,数据不能流过。因此,想要Q6=1,需要让P06=1且Y5C=1,Y5C连接的是74HC02(或非门)
③:74HC02:
因为J13中我们选择的是2和3相连的IO模式,所以WR=0,因此,想要Y5C输出为1,Y5就要等于0,Y5连接的是74HC138译码器。
④:74HC138译码器
由真值表得,P2的765三个口选择哪个,哪个输出端就为0。
三、继电器
继电器与蜂鸣器的分析一样,N-RELAY端=0时,K1与3相连,L10亮,开始工作。N-RELAY=1时,继电器不吸合,电路处于悬空状态。
四、程序
①:程序控制顺序
P0输出→打开锁存器(P27 P26 P25输出控制)→关闭锁存器(让控制外设的数据稳定){原则:在打开锁存器之前,需要保持P0数据的稳定;在关闭锁存器之后,才可以操作P0改变数据。}
②.代码
#include <STC15F2K60S2.H>
#include <intrins.h>
unsigned char buzzer_ctrl; //定义全局变量,控制蜂鸣器
unsigned char relay_ctrl; //定义全局变量,控制蜂鸣器
void vSystem_Init(void)
{
buzzer_ctrl=0; //通过对变量的赋值,控制开还是关。0是关,1是开
relay_ctrl=1;
P0=(buzzer_ctrl<<6)|(relay_ctrl<<4);
P2=0xa0; //打开锁存器,控制ULN2003输出
P2=0; //关闭锁存器,让74HC573输出保持稳定
}
void main()
{
vSystem_Init();
while(1);
}