【蓝桥杯单片机】1.1 LED 流水灯

目录

序言

一、总体介绍

二、硬件部分

1. 74HC138译码器

(1)原理图

(2)功能

(3)真值表

(4)使用

1>引脚重映射

2>锁存器的选择(通道Y)

2. SN74HC02DRG4四路二输入或非门

  (1)原理图

(2)功能 

3. 74HC573锁存器

(1)原理图

(2)功能

(3)使用

三、点灯

四、流水灯

五、代码纯享版


序言

LED是学习每种单片机的第一个项目,也是象征着一个新的学习阶段的开始。LED学习是单片机入门的第一步,它为你后续学习更复杂的单片机应用奠定了基础。通过掌握LED的学习,你将能够更好地理解单片机的工作原理,并且能够应用于更广泛的领域,如显示、指示灯、信号传输等。

对于一个模块来说,我们需要学习其原理图及使用方法。

一、总体介绍

LED(Light Emitting Diode)作为一种常见的光电器件,在51单片机学习中有着广泛的应用。通过学习LED,你可以了解到单片机控制外部设备的基本原理,以及如何使用软件控制硬件。LED的学习是入门单片机编程的一个重要步骤,它可以帮助你建立起对于数字信号输出、IO口控制以及基本电路连接的理解。

如下部分为LED模块部分:

二、硬件部分

1. 74HC138译码器

(1)原理图

(2)功能

74HC138是一种3-8译码器,常用于将三线地址码转换为八线输出。其原理基本如下:

  1. 输入端:74HC138有三个输入端,通常标记为A0、A1和A2,用于输入三位的二进制地址码。这三个输入端可以组合成八种不同的二进制组合,从000到111。

  2. 译码输出:根据输入的地址码,74HC138将其中一个输出端变为低电平(0),其他输出端为高电平(1)。具体哪一个输出端变为低电平取决于输入的地址码。例如,输入地址码为001,则输出Y1为低电平,其余输出端为高电平。

  3. 使能端:除了输入端外,74HC138还有一个使能端,通常标记为E。当使能端为低电平(0)时,译码器才会工作;当使能端为高电平(1)时,译码器将处于失能状态,所有输出端都将保持高电平。

  4. 选通端:在一些应用中,可能需要多个译码器连接在一起,为了区分它们的工作状态,有时会使用选通端,通常标记为G或G1。当选通端为低电平时,译码器工作正常;当选通端为高电平时,译码器将处于失能状态,与使能端类似。(在此学习过程中只需了解)

综上所述,74HC138译码器的原理是根据输入的三位二进制地址码,选择对应的输出端,并将其置为低电平,实现对八个输出端的选择性控制。

(3)真值表

(此处选择我们Y4,Y5,Y6,Y7通道来解释)

例如第一行:A2、A1、A0组成的二进制数为100,即十进制数4,因此选择通道4

例如第二行:A2、A1、A0组成的二进制数为101,即十进制数5,因此选择通道5

例如第三行:A2、A1、A0组成的二进制数为110,即十进制数6,因此选择通道6

例如第四行:A2、A1、A0组成的二进制数为111,即十进制数7,因此选择通道7

#选择了通道(锁存器),即对应的引脚输出低电平(0),其余引脚输出高电平(1)

原因后文会有解释

(4)使用

首先,我们通过代码选择通道(锁存器)时,需要注意的是:我们配置的仅仅是P25、P26、P27三个引脚的值,因此不要改变其他引脚的值以免有不必要的错误。

我们配置的是IO口是P2。

1>引脚重映射

因此,我们先重新映射一下引脚。

sbit HC138_A2=P2^7;    //重新定义HC138_A2连接P27引脚
sbit HC138_A1=P2^6;    //重新定义HC138_A1连接P26引脚
sbit HC138_A0=P2^5;    //重新定义HC138_A0连接P25引脚

1.'sbit'是在 Keil C51 编译器中用来定义单片机的特殊功能寄存器位(Special Function Register Bit)的关键字。它通常用于单片机的寄存器位操作。

2.使用sbit可以帮助程序员将特殊功能寄存器位映射到一个特定的变量,从而方便对这个寄存器位进行读取或写入操作。

可以理解为定义了一个新量来代替原先定义(原先定义不变),从而更加直观看出我们所需用的量是什么意思。

2>锁存器的选择(通道Y)
void SelectHC573()//定义函数名称
{
    HC138_A2=1;   //P2^7引脚输出高电平1
    HC138_A1=0;   //P2^6引脚输出高电平0
    HC138_A0=0;   //P2^5引脚输出高电平0
}

其他锁存器的选择与之一样即可。

2. SN74HC02DRG4四路二输入或非门

  (1)原理图

(2)功能 

   

如图所示,其内部为四个或非门。WR引脚输入高电平,此时若Y4通道输出低电平,则Y4C输出高电平,使其对于的锁存器开始工作,反之锁存器不工作 。

这也是为什么HC138译码器选择输出通道时,要将通道输出低电平(上文的问题)。

总的来说,74HC02是一个常用的数字逻辑芯片,其主要功能是执行 NOR 逻辑运算。

3. 74HC573锁存器

(1)原理图

(此为Y4连接的锁存器)

(2)功能

具体来说,蓝桥杯单片机竞赛中的573锁存器常用于以下几个方面:

  1. 数据存储:573锁存器可以将输入的数据在时钟信号的作用下暂时存储起来,以便后续处理或输出。

  2. 数据输出控制:当时钟信号到来时,锁存器会将存储的数据输出,实现对数据输出的控制。这对于确保数据在特定时刻得到正确输出非常重要。

  3. 并行数据传输:573锁存器通常具有多个并行输入和输出引脚,可以实现并行数据的传输,适用于需要处理多个数据信号的场合。

  4. 时序控制:通过控制时钟信号的频率和时序,可以精确地控制数据存储和输出的时间,确保系统的稳定性和可靠性。

总的来说,573锁存器在蓝桥杯单片机竞赛中扮演着重要的角色,帮助设计者实现复杂的数字电路功能,同时确保数据的准确存储和输出,从而提高系统的性能和可靠性。

(3)使用

通过对P0引脚的赋值来控制,D段输入=Q段输出,反之则不行,这也是我们在此学习过程中使用锁存器最主要的功能。

例如,我们使Q1输出高电平,其余输出低电平:

P0=0x01;   //0000 0001

三、点灯

如图:若想使发光二极管(LED)发光,需使Q端输出低电平 。

若使L1发光:

#include <STC15F2K60S2.H>  //引入头文件

sbit HC138_A2=P2^7;    //重新定义HC138_A2连接P27引脚
sbit HC138_A1=P2^6;    //重新定义HC138_A1连接P26引脚
sbit HC138_A0=P2^5;    //重新定义HC138_A0连接P25引脚

void SelectHC573(void)//定义函数名称
{
    HC138_A2=1;   //P2^7引脚输出高电平1
    HC138_A1=0;   //P2^6引脚输出高电平0
    HC138_A0=0;   //P2^5引脚输出高电平0
}

void main(void)
{
    while(1)
    {
         P0=0xfe;  //1111 1110
    }
}

四、流水灯

此处举一个例子:使L1~L8依次点亮再依次熄灭:

void LED_Control(void)
{
    char i;             //定义变量
    for(i=0;i<=8;i++)
    {
        P0=(0xff<<i);   //左移i位,右位补0
    }
    for(i=0;i<=8;i++)
    {
        P0=~(0xff<<i);  //左移i位,右位补0 的 反操作 
    }
}

总结:以上对于锁存器的选择以及锁存器的配置的写法过于冗杂,后续会更新写法。

五、代码纯享版

LED流水灯:

#include <STC15F2K60S2.H>  //引入头文件

sbit HC138_A2=P2^7;    //重新定义HC138_A2连接P27引脚
sbit HC138_A1=P2^6;    //重新定义HC138_A1连接P26引脚
sbit HC138_A0=P2^5;    //重新定义HC138_A0连接P25引脚

void SelectHC573(void)//定义函数名称
{
    HC138_A2=1;   //P2^7引脚输出高电平1
    HC138_A1=0;   //P2^6引脚输出高电平0
    HC138_A0=0;   //P2^5引脚输出高电平0
}

void LED_Control(void)
{
    char i;             //定义变量
    for(i=0;i<=8;i++)
    {
        P0=(0xff<<i);   //左移i位,右位补0
    }
    for(i=0;i<=8;i++)
    {
        P0=~(0xff<<i);  //左移i位,右位补0 的 反操作 
    }
}


void main(void)
{
    SelectHC573();
    while(1)
    {
        LED_Control();
    }
}

以上为个人的理解与代码,精彩内容持续呈现中~~~  

  • 40
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 广告流水灯电路是一种常见的电子显示器件,通过利用计数器和译码器的组合可以实现流水灯效果。在这个课程设计中,我们将学习如何使用这两个电子元件来制作一个简单的广告流水灯电路。 首先,我们需要一个4位的二进制计数器。这个计数器可以通过一个外部的时钟信号来驱动,并在每个时钟脉冲上加1。当计数器达到最大值时,它将重新从0开始计数。 接下来,我们需要一个译码器来将计数器的输出转换为驱动LED灯的信号。在广告流水灯电路中,我们需要8个LED灯,因此我们选择一个3-8译码器。这个译码器具有3个输入引脚和8个输出引脚。根据计数器的输出值,译码器会将对应的输出引脚置高电平,从而点亮相应的LED灯。 我们可以将译码器的输出与LED灯连接,从而在每个计数器的时钟脉冲下,不同的LED灯会依次点亮,实现广告流水灯的效果。 当译码器达到最大输出时,我们希望回到最初的状态,这时我们可以利用译码器的另外一个输出引脚来将计数器复位为0,从而继续循环显示广告流水灯。 在课程设计中,我们还可以为广告流水灯电路添加一些特色功能,例如调整流水速度或改变LED灯的亮灭模式。这些功能可以通过调整计数器的时钟频率或增加其他逻辑电路来实现。 通过实践课程设计,我们能够理解计数器和译码器在电子电路中的应用,并掌握广告流水灯电路的制作方法。这将为我们今后的电子设计和工程项目打下坚实的基础。 ### 回答2: 广告流水灯电路是一种常见的电子设计实验,通过利用计数器和译码器的组合来实现。计数器用于产生计时信号,译码器则将计数器的输出解码为对应的LED灯的控制信号。 首先,需要选择适当的计数器和译码器芯片,例如常用的74LS90计数器和74LS47译码器。74LS90是一个四位二进制计数器,它可以产生从0到9的十个计数器输出。74LS47是一个BCD-7段译码器,用于将四位二进制计数器输出转换为对应的7段LED灯的控制信号。 将74LS90的输出引脚Q0、Q1、Q2和Q3连接到74LS47的A、B、C和D输入端。将74LS47的7位输出端a、b、c、d、e、f和g连接到对应的7段LED灯。此时,当74LS90计数器从0开始计数时,74LS47会根据计数器的输出进行解码,并产生控制信号来点亮对应的LED灯。 为了实现流水灯效果,可以通过添加一个时钟信号来驱动74LS90计数器的工作。可以使用一个555定时器芯片产生一个稳定的方波信号作为时钟信号。将555定时器的输出连接到74LS90计数器的时钟输入端CLK。通过调整555定时器的工作频率,可以控制流水灯的速度。 为了进一步增强流水灯效果,还可以在每个LED灯的引脚上添加一个电阻,用于控制灯的亮度。亦可以选择扩展译码器和计数器的位数,增加更多的LED灯,以实现更多变化的流水灯效果。 总之,利用计数器和译码器组合可以实现广告流水灯电路设计。这种设计简单且易于理解,是电路设计课程中常见的实验。通过调整时钟频率和添加亮度控制等元素,可以定制不同效果的广告流水灯电路。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值