我将先分块解释代码,完整的代码在文章最后。
首先,我们将写设置573锁存器的代码,这将用来选通你接下来打算控制LED灯、继电器与蜂鸣器、数码管的位选和数码管的段选。
void InitHC138(unsigned int channel)
{
switch(channel)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
case 0:
P2=(P2&0x1f)|0x00;
break;
}
}
其中,4表示选通LED灯的通道,5表示选通继电器和蜂鸣器的通道,6表示选通数码管位选的通道,7表示选通数码管段选的通道,0表示关闭所有通道。
然后,选好通道之后,就可以来对P0口赋值了,来控制相应的外设。
void Relay()
{
InitHC138(5);
P0=0x00;
}
这里,我选通继电器和蜂鸣器的通道后,对P0口赋值0x00,表示关掉蜂鸣器和继电器。如果你想更加理解怎样赋值控制它们,来看下面的原理图。