蓝桥杯_LED模块

一 前言

还有四十多天将要进行蓝桥杯的比赛,接下来一个多月我将进行我的知识点的复习,争取在蓝桥杯提交一个满意的答卷

二 锁存器M74HC753M1R

在我这一年并没有进行在csdn上发布任何文章,这一年我学了stm32、51,还有部分理论知识数电模电,我发现曾经学单片机的时候,并没有学到锁存器这个东西,只是简单的将外设和单片机对应的引脚相连,锁存器简直就是闪烁着人类智慧的光芒。

1 RS锁存器

这个锁存器是所有锁存器的基础,我们先了解这个东西

有个印象就行,最后我们要学的是标题的这个东西,是由这个RS锁存器推过来的,他所对应的真值表是:

只需要记住R和S不可以同时为1

2 D锁存器

这个锁存器只是在后面接一个RS锁存器,其实这上面的两个锁存器并不太重要,了解即可~

3 M74HC753M1R(蓝桥杯官方提供的板子的锁存器)

左侧这个东西就是锁存器,具体原理先不说,只需要知道就是要看Y4C这个东西决定着这个LED流水灯的锁存器开不开,那么什么东西呢,也就是接下来要说的译码器

三 译码器 74HC138

在蓝桥杯官方提供的原理图中,译码器长这样:

只有让G1是高电平或G2是低电平,这个译码器才能有效。

根据图,我就告诉你结论是什么,决定着Y几的,就是P27、P26、P25引脚对应的数值,直接记结论,这个很重要,记住Y几对应的是什么:

译码器
P27P26P25
LEDY4100
数码管-位Y6110
数码管-段Y7111
外设Y5101

四 代码模板

我们需要建立相关模块,过程暂不写

五相关代码

1 dsp_init.c

我们的目的是要让灯去亮,那么为了减少其他外设的影响,所以我们需要将其他的外设(例如:蜂鸣器)关闭,则需建立dsp_init目的是减少外设的影响

#include "dsp_init.h"
#include <STC15F2K60S2.H>

//关闭外设的初始化函数
//将LED、蜂鸣器和继电器全部关闭
void Cls_Peripheral(void)
{
	P0 = 0xFF;				
	P2 = P2 & 0x1F | 0x80;		//0x80选通Y4,将数据透传过去,将LED关闭
	P2 &= 0x1F;				//将锁存器关闭
	
	P0 = 0;
	P2 = P2 & 0x1F | 0xA0;		//0xA0选通Y5,将外设(蜂鸣器)处理掉
	P2 &= 0x1F;				//将锁存器关闭	
	
}

以上这个代码可以背下来,比较常用,尤其是要记住:0x80是选通Y4(LED),0xA0选通Y5(外设),其中在关闭外设的时候要将P0赋值成0

2 dsp_led.c

通过观察这个原理图:

我们发现只有让P01等透传过去0才可以将灯点亮,记住,在写led的底层函数的时候要加个取反~,背下来

#include "dsp_led.h"
#include "STC15F2K60S2.H"


void Led_Disp(unsigned char ucLed)
{
	P0 = ~ucLed;		//将输入数据取反,1为亮,0为灭		
	P2 = P2 & 0x1F | 0x80;		//0x80选通Y4,将数据透传过去,将LED关闭
	P2 &= 0x1F;				//将锁存器关闭
	
}

3 mian.c

这个函数没有那么的严格,因题目和想法不同最后实现的代码也不一样,可以多尝试写一写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值