蓝桥杯单片机-LED

 一、74HC138译码器

P27、P26、P25输出0、0、0,Y0为0;P27、P26、P25输出0、0、1,Y1为0;

P27、P26、P25输出0、1、0,Y2为0;P27、P26、P25输出0、1、1,Y3为0,剩下的以此类推

二、74HC573锁存器 

当OE为0,LE为1时D1~D8是什么Q1~Q8就是什么。OE已经接地,为0,我们只需让LE为1即可。

三、74HC02或非门

若想让输出Y4C为1,只需让Y4,WR(默认为0)都为0,两者相或为0,再非一下就为1。

若想让输出Y4C为0,只需让Y4,WR其中一个为0,两者相或为1,再非一下就为0。

四、代码实现

整体思路:首先让P27 = 1,P25 = 0,P26 = 0,即可让Y4输出0;然后Y4和WR与非为1;接着即可控制P0实现功能。

#include "reg52.h"

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

void Delay(unsigned int t)
{
	while(t--);
	while(t--);
}

void LED()
{
	char i;
	HC138_C = 1;
	HC138_B = 0;
	HC138_A = 0;
	for(i = 1;i <= 3;i++)
	{
		P0 = 0x00;
		Delay(60000);
		Delay(60000);
		P0 = 0xff;
		Delay(60000);
		Delay(60000);
	}
	for(i = 1;i <= 8;i++)
	{
	 	P0 = 0xff << i;
		Delay(60000);
		Delay(60000);
	}
	for(i = 1;i <= 8;i++)
	{
	 	P0 = ~(0xff << i);
		Delay(60000);
		Delay(60000);	
	}

//	下面两个for循环为流水灯的程序,题目并未要求,我自己加的
//	for(i = 0;i < 7;i++)
//	{
//	 	P0 = ~(0x01 << i);
//		Delay(60000);
//		Delay(60000);
//	}
//	for(i = 7;i >= 0;i--)
//	{
//	 	P0 = ~(0x01 << i);
//		Delay(60000);
//		Delay(60000);
//	}
}

void main()
{
 	while(1)
	{
		LED();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值