蓝桥杯单片机比赛学习:1、led点亮原理

这篇博客介绍了蓝桥杯单片机比赛中点亮LED灯的过程,涉及HC573锁存器、74HC138译码器和或非门的操作。作者通过详细步骤解释了如何通过控制IO口、锁存器和译码器使得LED灯按照1s间隔闪烁,同时提供了相应的C语言代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此教程是鄙人蓝桥杯单片机的学习过程总结,可能会有错误,请指出批评。蓝桥杯单片机学习最重要的是将整个单片机模块化,比如,我们可以将它分为LED、蜂鸣器、继电器、数码管、按键、AD/DA、555定时器、光敏电阻、ds28b20温度传感器、超声波传感器等。

点亮LED的原理: 

以往我们点亮LED灯都是直接操作IO口就可以,但是在蓝桥杯比赛的板子上则不可以使用这种方法。要点亮LED要操作HC573锁存器、74HC138译码器、或非门和IO口。学过数电的朋友都知道锁存器、译码器、或非门、与非门、异或、同或、2进制和16进制等数字电路知识。没学过的也不要担心,这里我们只要学会怎么使用就好。

一般的,我们点亮LED只需要操作IO口(高/低),但是蓝桥的板子却不同。如上图,P00~07和Q1~Q7之间存在一个573锁存器 ,要使P00~07和Q1~Q7连接起来就得使573锁存器上的LE为高电平1(也就是Y4C为高电平1),当LE为高电平1时,573锁存器导通。若想LED1点亮就是使P00为低电平0,LED2点亮就是使P01为低电平0,以此类推。那么如何让Y4C为高电平1呢?如下图

 上图为四个或非门,通过上述分析我们想让Y4C为高电平1,那么就必须使Y4和WR同时为低电平0,其他三个同理。如下图,一般的我们比赛中都是IO模式,所以WR就接GND(低电平0),下左图是原理图,下右图为实物图,所以我们的WR就默认接低电平0,那么Y4如何为低电平0呢?如下

 要想使Y4为低电平就必须了解下面的74HC138译码器如图1。要使Y4为低电平0就必须选中Y4,那么如何选中Y4这个引脚呢?就必须通过操作P27、P25、P26分别为1、0、0(二进制就是4的意思),可能会有人不知道P27、P25、P26为什么为1、0、0。由下面图2可以清晰地看出。以上就是点亮LED的整个过程,整个过程很繁琐但是理解起来很容易。

图1

 

图2

代码实现: 

8个LED灯按1s时间闪烁

#include "stc15f2k60s2.h"
#include "intrins.h"

sbit HC138_A=P2^5;				/* 此处使用sbit位定义来定义引脚,不能在代码中直接操作P2^5/P2^6/P2^7 */
sbit HC138_B=P2^6;	
sbit HC138_C=P2^7;

void Delay1000ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 46;
	j = 153;
	k = 245;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void led(void)
{
	HC138_A=0;
	HC138_B=0;
	HC138_C=1;//Y4C打开

	P0=0x00;	//打开LED灯
	Delay1000ms();
	P0=0xff;	//关闭LED灯
	Delay1000ms();
}
void main(void)
{
	while(1)
	{
		led();
	}
}

后续模块更新中。。。 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Do My Best

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值