1、控制蜂鸣器
Y5C通过一个锁存器,在P0口对应位输出,可以看到第七位对应BUZZ
而Y5C又由Y5与WR(默认通过跳线帽接地)通过或非门得来, P2口的高3位通过38译码器来控制Yx(x表示0~7)输出,所以,相应控制代码如下:
u8 bdata port;
sbit buzeer = port^6;
void Buzeer(u8 s)
{
buzeer = s;
P0 = port;
P2 = 0xa0; //P2=0xa0,表示其高3位为101(也就是十进制的5)因此控制Y5口
_nop_();
P2 = 0;
}
同理,控制继电器操作类似:
u8 bdata port;
sbit relay = port^4;
void Relay(u8 s)
{
relay = s;
P0 = port;
P2 = 0xa0;
_nop_();
P2 = 0;
}
LED:
LED的控制操作:
void LED(u8 s)
{
P0 = ~s;//因为是共阳接法,所以要取反
P2 = 0x80;
_nop_();
P2 = 0;
}
数码管:
位码,也就是控制显示位置:
void Nixie_W(u8 s) //位选
{
P0 = s; //注意位码不能取反,否则显示位置恰好相反
P2 = 0xc0;
_nop_();
P2 = 0;
}
段码,控制数码管的相应段亮灭:
void Nixie_D(u8 s) //段选
{
P0 = ~s;
P2 = 0xe0;
_nop_();
P2 = 0;
}