CT107D蓝桥杯单片机学习笔记-外设关闭、LED亮灭控制

332 阅读1分钟

由于开发板上电后蜂鸣器会鸣叫,继电器会干扰系统的正常运行,所以首先我们要关闭蜂鸣器和继电器。 Y4、Y5被74HC138译码器进行控制. 74HC138译码器的原理为:

P27 P26 P27 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 0 0 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 1 0 1
0 1 0 1 1 1 1 1 0 1 1
0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 1 1 0 1 1 1 1
1 0 1 1 1 0 1 1 1 1 1
1 1 0 1 0 1 1 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1

要让Y5制1,就要使得高三位P2.7、P2.6、P2.5改成为101:

//关闭蜂鸣器、继电器(关闭外设)
void cls_buzz(void)
{
	P2 = (P2&0x1F|0xA0); //打开锁存器,需要高三位P2.7、P2.6、P2.5改成为101,最后的结果是1011 1111
	P0 = 0x00; //P0^6 = 0;蜂鸣器关闭以及P0^4 = 0;继电器关闭
	P2 &= 0x1F; //关闭锁存器 0001 1111
}

接着就是LED的亮灭。 要让Y4制1,就要使得高三位P2.7、P2.6、P2.5改成为100:

void main(void)
{
    cls_buzz();
    while(1)
    {
        P2 = ((P2&0x1f)|0x80); //打开锁存器,高三位为100,1001 1111
	P0 = 0xff;  //LED 关 1111 1111
	P2 &= 0x1f;
        
        P2 = ((P2&0x1f)|0x80); //高三位为100,1001 1111
	P0 = 0x00;  //LED 开 0000 0000
	P2 &= 0x1f;
    }
}