一、从左到右小灯依次亮代码
#include<reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit led1=P0^0;//二极管该端为低电平小灯亮
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit led5=P0^4;
sbit led6=P0^5;
sbit led7=P0^6;
sbit led8=P0^7;
void delay(unsigned int i)
{
while(i--);
}
void main(void)
{
ENLED = 0; //U3、U4两片74HC138总使能,低电平有效
ADDR3 = 1; //使能U4使之正常输出
ADDR2 = 1; //经U4的Y1输出开启三极管Q11
ADDR1 = 1;
ADDR0 = 0;
while(1)
{
led8=0;//小灯亮
delay(2000);
led8=1;//小灯灭
delay(2000);
led7=0;
delay(2000);
led7=1;
delay(2000);
led6=0;
delay(2000);
led6=1;
delay(2000);
led5=0;
delay(2000);
led5=1;
delay(2000);
led4=0;
delay(2000);
led4=1;
delay(2000);
led3=0;
delay(2000);
led3=1;
delay(2000);
led2=0;
delay(2000);
led2=1;
delay(2000);
led1=0;
delay(2000);
led1=1;
delay(2000);
}
}
二、变量设置原理
1.ENLED:低电平有效
2.ADDR3:高电平有效,当ENLED为0,ADDR3为1时74HC138工作
3.
ADDR0 | ADDR1 | ADDR | 有效输出端 |
0 | 0 | 0 | Y0' |
0 | 0 | 1 | Y1' |
0 | 1 | 0 | Y2' |
0 | 1 | 1 | Y3' |
1 | 0 | 0 | Y4' |
1 | 0 | 1 | Y5' |
1 | 1 | 0 | Y6' |
1 | 1 | 1 | Y7 |