目录
序言
LED是学习每种单片机的第一个项目,也是象征着一个新的学习阶段的开始。LED学习是单片机入门的第一步,它为你后续学习更复杂的单片机应用奠定了基础。通过掌握LED的学习,你将能够更好地理解单片机的工作原理,并且能够应用于更广泛的领域,如显示、指示灯、信号传输等。
对于一个模块来说,我们需要学习其原理图及使用方法。
一、总体介绍
LED(Light Emitting Diode)作为一种常见的光电器件,在51单片机学习中有着广泛的应用。通过学习LED,你可以了解到单片机控制外部设备的基本原理,以及如何使用软件控制硬件。LED的学习是入门单片机编程的一个重要步骤,它可以帮助你建立起对于数字信号输出、IO口控制以及基本电路连接的理解。
如下部分为LED模块部分:
二、硬件部分
1. 74HC138译码器
(1)原理图
(2)功能
74HC138是一种3-8译码器,常用于将三线地址码转换为八线输出。其原理基本如下:
输入端:74HC138有三个输入端,通常标记为A0、A1和A2,用于输入三位的二进制地址码。这三个输入端可以组合成八种不同的二进制组合,从000到111。
译码输出:根据输入的地址码,74HC138将其中一个输出端变为低电平(0),其他输出端为高电平(1)。具体哪一个输出端变为低电平取决于输入的地址码。例如,输入地址码为001,则输出Y1为低电平,其余输出端为高电平。
使能端:除了输入端外,74HC138还有一个使能端,通常标记为E。当使能端为低电平(0)时,译码器才会工作;当使能端为高电平(1)时,译码器将处于失能状态,所有输出端都将保持高电平。
选通端:在一些应用中,可能需要多个译码器连接在一起,为了区分它们的工作状态,有时会使用选通端,通常标记为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锁存器常用于以下几个方面:
数据存储:573锁存器可以将输入的数据在时钟信号的作用下暂时存储起来,以便后续处理或输出。
数据输出控制:当时钟信号到来时,锁存器会将存储的数据输出,实现对数据输出的控制。这对于确保数据在特定时刻得到正确输出非常重要。
并行数据传输:573锁存器通常具有多个并行输入和输出引脚,可以实现并行数据的传输,适用于需要处理多个数据信号的场合。
时序控制:通过控制时钟信号的频率和时序,可以精确地控制数据存储和输出的时间,确保系统的稳定性和可靠性。
总的来说,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();
}
}
以上为个人的理解与代码,精彩内容持续呈现中~~~