shi-zhai

使用芯片为IAP15F2K61S2,外设原理图与蓝桥杯官方原理图相同

74LS138译码器

三八译码器,三个输入控制八路互斥低电平有效输出。即使用3个IO可以控制8个输出IO口,数出端口为低电平有效。使用138译码器有利于对外设进行扩展。

1、真值表

令E3~1为100时,138译码器使能

将A2看做高位,A0看做低位,有A2~0组成的3位2进制码正好对应0~8。当配置好A2~0时,对应的输出端Y口,将发出低电平,其余Y口将保持高电平。

eg:A2~0为011时,对应的Y3口将输出低电平,其余输出端为高电平。

2、配置

在蓝桥杯15单片机上,使能端E1、E2、E3默认使能,分别为接高、低、低电平。如果为进行使能,输出端口Y0~7全为高电平。

使用时,只需要更改地址输入A2、A1、A0即可对8个IO口进行控制。

74HC573锁存器

8路3态输出的非反转透明锁存器。

1、真值表

 

使能端OE为低电平时,573锁存器使能。

当LE为低电平时,数据会被锁存;为高电平时,输出端口电平与输入端口电平相同,即透明。

 2、配置使能端

138译码器的Y4输出口接一或非门(另一端接低电平,不影响输出)到573锁存器的LE输入端。当Y4=0时,锁存器输出与输入相同,

即配置138译码器输出为Y4=0时,可直接控制P0组IO口控制LED 灯。

流水灯控制

将138译码器配置好后,可以直接控制P0端口进行流水控制,此处不进行赘述。

实例:

代码流水效果:LED全亮全灭3次,LED灯由1到8逐个点亮,再从1到8逐个熄灭,重复进行

注意:该程序流水时,蜂鸣器会响。可通过关闭蜂鸣器外设解决,也可通过程序配置令蜂鸣器不工作。 

#include "STC15F2K60S2.h"

#define uint unsigned int
#define uchar unsigned char

sbit HC138_C = P2^5;
sbit HC138_B = P2^6;
sbit HC138_A = P2^7;

uchar i=0;

void delay(uint t)
{
    uint x = 0;
    uchar y = 0;
    for(x=t;x>0;x--)
        for(y=114;y>0;y--);
}    
void HC138_Init()//138译码器配置
{
    HC138_A = 1;
    HC138_B = 0;
    HC138_C = 0;//输出为Y4=0,使得锁存器透明,输出与输入相同
}

void main()
{
    HC138_Init();
    while(1)
    {
        for(i=0;i<3;i++)//全亮全灭3次
        {
            P0=0x00;
            delay(5000);
            P0=0xff;
            delay(5000);
        }
        for(i=0;i<8;i++)//依次点亮
        {
            P0=0xff<<i;
            delay(5000);
        }
        for(i=0;i<8;i++)//依次熄灭
        {
            P0=~(0xff<<i);
            delay(5000);
        }
    }
}

 

 

总结:

LED灯被573锁存器控制,而573锁存器是否锁存取决于138译码器输出是否为Y4=0。

 

分类:

技术点:

相关文章: