一.M74HC573M1R锁存器
从图中我们可以看到这个器件的命脉“OE”和“LE”分别接地和Y7C。通过控制Y7C那就可以控制LE状态。但Y7C又被一个名为74HC02的器件控制着。Y7又被74HC138控制。因此,如果我们想要对数码管进行相关操作,必须掌握这几个器件的工作原理。
首先要明白它是由锁存器构成的,而锁存器有两种,分别是RS锁存器和D锁存器。
这种D锁存器EN=0时,输出状态不变(锁住),EN=1时,输出随输入状态改变而改变。D=0,Q=0;D=1,Q=1。
该锁存器是由8个D锁存器构成,LE(使能)为高时,Q输出将随数据(D)输入而变,当LE为低时,输出将锁存在已建立的数据电平上。(该锁存器常通过改变LE实现锁存器的功能,OE接地)
Y4C为1便LE为1.
二、74HC02
采用一种或非门电路,由于上图中看到WR和Y7共同控制Y7C,WR接地,始终为低电平,而此器件要求输入的2个都为1时,输出的电平为0,即Y7和Y7C的电平是相反的。我们想要控制Y7C,我们只用给Y7相反电平即可。
三、74HC138
Y7它们又被74HC138控制。这里控制A,B,C三个引脚便可以对其进行数据编写。记住下表即可。(位于比赛板的P2口的高三位)
四、总结
void _74HC138_Init(unsigned char x)
{
switch(x)
{
case 4:P2 = (P2 & 0x1f) | 0x80;break;//LED灯
case 5:P2 = (P2 & 0x1f) | 0xA0;break;//继电器,蜂鸣器
case 6:P2 = (P2 & 0x1f) | 0xC0;break;//控制数码管的位选
case 7:P2 = (P2 & 0x1f) | 0xE0;break;//数码管的段选
}
}
此函数用来实现对74HC138进行操作来控制并执行所需功能,这里我们必须再使用某功能时,将对应的锁打开,即调用这个函数。