蓝桥杯单片机复习01 LED灯的控制

LED复习

  • 我们首先找到LED的原理图,如下

 

我们看到这些LED二极管有一端都接到了vcc(高电平)说明这些LED是共阳极的,那如果我们想让这些LED亮,就需要把这些LED的另一端置低电平

可是我们又看到了M74HC573锁存器,原理如下

  • 八路3态输出的非反转透明锁存器。
  • 当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

 我们可以从上面的信息知道当Y4C为高电平时,我们可以改变P0口的值并随之改变Q1_Q7的值,反之573锁存器就会锁住Q1~Q7的值。

  •     我们再看第二幅图,找一下到底是何方神圣可以改变Y4C的值

我们可以看到74HC02或非门改变Y4C的值

或非门工作原理,详见https://baike.baidu.com/item/%E6%88%96%E9%9D%9E%E9%97%A8/5766427

或运算:

1  或  1   = 1

1  或  0   = 1

0  或  0   = 0

非运算:

1的非=0

0的非=1

因为J13跳冒短接的2和3所以WR为低电平

所以当Y4为低电平时,Y4C才能是高电平

  • 74HC138译码器

 

三八译码器,三个输入控制八路互斥的低有效输出。
    C  B  A
    1   0  0:   Y4
    1   0  1:   Y5
    1   1  0:   Y6
    1   1  1:   Y7

到这里我相信你看懂了。

我们现在就开始写代码了。

附上流水灯代码

#include <reg52.h>

void CH138Select(unsigned char channel);    //锁存器模式选择
void LED_Display();                         //LED灯显示
void Init_System();                         //初始化系统,把蜂鸣器和继电器关闭
void Delay(unsigned int t);                 //延时函数
void main (){
	Init_System();
	while (1){
		
		LED_Display();
	}
}

void CH138Select(unsigned char channel){
	switch(channel){
		case 4:
		P2=(P2 & 0X1F)|0X80;       
			break;
		case 5:
		P2=(P2 & 0X1F)|0XA0;
			break;
		case 6:
		P2=(P2 & 0X1F)|0XC0;
			break;
		case 7:
		P2=(P2 & 0X1F)|0XE0;
			break;	
		
	}
}

void LED_Display(){
	int i;
	CH138Select(4);
	for(i=0;i<8;i++){
		P0=~(0x01<<i);
		Delay(60000);
		Delay(60000);
	}
}

void Init_System(){
	CH138Select(5);
	P0=0x00;
	CH138Select(4);
	P0=0XFF;
}
void Delay(unsigned int t){
	while (t--);
	while (t--);
}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锡城筱凯

你的鼓励是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值