蓝桥杯—单片机组—CT107D—IAP15F2K61S2

1、控制蜂鸣器

蓝桥杯—单片机组—CT107D—IAP15F2K61S2_第1张图片

Y5C通过一个锁存器,在P0口对应位输出,可以看到第七位对应BUZZ蓝桥杯—单片机组—CT107D—IAP15F2K61S2_第2张图片 

而Y5C又由Y5与WR(默认通过跳线帽接地)通过或非门得来,蓝桥杯—单片机组—CT107D—IAP15F2K61S2_第3张图片 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:

蓝桥杯—单片机组—CT107D—IAP15F2K61S2_第4张图片

LED的控制操作:

void LED(u8 s)
{
	P0 = ~s;//因为是共阳接法,所以要取反
	P2 = 0x80;
	_nop_();
	P2 = 0;
}


数码管: 

蓝桥杯—单片机组—CT107D—IAP15F2K61S2_第5张图片

 位码,也就是控制显示位置:

void Nixie_W(u8 s)  //位选
{
	P0 = s;  //注意位码不能取反,否则显示位置恰好相反
	P2 = 0xc0;
	_nop_();
	P2 = 0;
}

段码,控制数码管的相应段亮灭:

void Nixie_D(u8 s)  //段选
{
	P0 = ~s;
	P2 = 0xe0;
	_nop_();
	P2 = 0;
}

你可能感兴趣的:(单片机,蓝桥杯,嵌入式硬件)