蓝桥杯单片机比赛LED灯模块

文章讲述了在编程前如何解读原理图,重点介绍了74HC138译码器用于节省IO口资源,74LS02或非门的工作原理,以及M74HC573M1R锁存器在控制LED灯中的作用。通过示例程序展示了如何启用锁存器并控制P0口的LED灯,强调了正确操作流程的重要性。

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

首先我们在写程序之前要看懂原理图,要操作的模块是受哪部分的IO口控制的,然后在根据原理图控制的IO口来写程序。

原理图

在看原理图时我们要观察需要操作的模块受哪些信号线控制,在这个过程中我们就要了解一些芯片的作用。

74HC138译码器:简单来说它的功能就是通过3个IO口的高低电平来控制8个IO口,这样大大节省了单片机的IO口资源。例如:P25==1、P26==1、P27==0表示的二进制数是011 转化为 十进制数就是3,控制的也就是Y3口,以此类推,就可以实现控制八个IO口。

74LS02 或非门:当A、B均为低电平时,Y为高电平“1”;A、B中有一个为高电平或二者均为高电平时,Y为低电平“0”。

M74HC573M1R锁存器:锁存器也是为了节省IO口资源,观察原理图我们不难发现八个LED灯是连接在573锁存器上的,锁存器的另一端是连接在单片机的八个P0口上的,既然这样为什么不直接将LED灯连接在单片机IO口上呢?

        其实这时我们操作P0口是不可以控制LED灯的,因为连接LED灯573锁存器没有启用。只有将Y4C口置高,但是Y4C又受Y4控制,Y4又受P25、P26、P27控制,这样我们才打开了控制LED灯的573锁存器,这时才可以通过P0口操作LED灯。

下面我们就可以通过以上的电路逻辑来书写程序。

#include <STC15F2K60S2.H>

void Delayms(unsigned int ms);      //函数声明

void main(void)
{
    //初始化
    P2=0X80;    //100 00000     100二进制转换十进制为4,也就是将Y4置高,打开LED灯573锁存器
    P0=0X00;    //关闭所有LED灯
    while(1)
    {
        P00=0;
        P01=1;
        P02=0;
        P03=1;
        P04=0;
        P05=1;
        P06=0;
        P07=1;   //在操作P0口是也可以进行整体的赋值  例如:P0=0X01 就是打开第一个LED灯
    }
}
//添加延时函数就可以实现流水灯了
void Delayms(unsigned int ms)       //延时函数
{
    unsigned int i,j;
    for(i=0;i<ms;i++)
        for(j=845;j>0;j--);
}

以上就是我对LED灯模块的全部理解,如有不对之处,还希望大家留言指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值