国信长天这块开发板和我们常见的普中A2开发板有所不同,下面将会讲解如何用蓝桥杯开发板点灯。
目录
一、锁存器
1、什么是锁存器:
锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。——摘自百度百科
下图即为蓝桥杯开发板使用的M74HC573M1R锁存器(以下统称锁存器)
通俗的讲,当锁存器“被触发”时,各输入通道(上图P00~P07)和输出通道(上图Q1~Q8)导通;当锁存器“不被触发”时各输出道被锁死。当输出通道锁死时,输出通道会保持锁死瞬间的电平;当输出通道不被锁死时,其电平与输入通道相同。
2、锁存器怎么用
上图锁存器看着有很多引脚,但是不要慌,M74HC573M1R锁存器在使用上大致可以分为三个部分,即橙黄色的控制部分,红色的输入部分,蓝色的输出部分。我们仅仅通过橙黄色控制部分这一根线就可以控制这个锁存器的打通与锁定。
对于M74HC573M1R锁存器,当控制部分(图中橙黄色部分)高电平时锁存器打通,低电平时锁存器锁定。
在打通状态下:
任意输入通道(红色部分,P00、P01......P07)高电平,对应输出通道(蓝色部分,Q1~Q8)也高电平,同样的任意输入通道低电平,对应输出通道也是低电平(P00对应Q1,P01对应Q2以此类推)
在锁定状态下:
如果M74HC573M1R锁存器在由打通状态转换为锁定状态时任意输出通道为高电平,则该通道将被锁死在高电平,不再受输入通道影响,除非该锁存器再次被打通。
同样的,如果M74HC573M1R锁存器在由打通状态转换为锁定状态时任意输出通道为低电平,则该通道将被锁死在低电平,不再受输入通道影响,除非该锁存器再次被打通。
实际上锁存器的所谓的打通状态不是真正的打通,但在应用中理解为打通即可,可以搜索锁存器原理图进行了解。
二、三八译码器
1、什么是三八译码器
下图为蓝桥杯开发板中的74HC138译码器,俗称三八译码器。
所谓译码,即为把二进制数据(自左侧P25、P26、P27输入)转译成十进制数据(从右侧Y0~Y7输出),以此达到用单片机的3路引脚来控制8路的目的,节约了引脚资源。
2、三八译码器怎么用
使用时可将上图红色框内通道认为是三位二进制码的输入通道,蓝色部分为0~7八个十进制数的输出通道。输出以低电平输出(即Y6输出时,Y6为低电平,其余为高电平)
其中输入通道高第一位为C,高第二位为B,最低位为A。
其中Y0~Y7对应十进制0~7。
三八译码器有一个称为真值表的对照表格(列出了赋予ABC各种电平时输出通道的所有输出情况),但在实际使用中我更喜欢用直接将二进制换算成十进制的方法。即如果想让Y6输出通道输出低电平可认为想让输出通道输出十进制数字6,十进制6转化为三位二进制即为110,对于这个三位二进制,高第一位为1,高第二位为1,最低位为0,将这三个值依次对应到CBA这三个输入通道(令P27高电平,P26高电平,P25低电平)即可让输出通道的Y6输出低电平。
三、锁存器和三八译码器的协调工作
1、或非门
在知道锁存器和三八译码器是如何在蓝桥杯开发板中协调工作的之前,需要先知道一个逻辑门“或非门。
下图为蓝桥杯开发板中的或非门:
”
该门电路只有当8(Y6)和9(WR)全为低电平时10(Y6C)才可以输出高电平,本文知道或非门如何工作即可,关于门电路详情可以查阅相关资料。
2、三八译码器和或非门
在蓝桥杯开发板中,默认WR时接地的,即低电平,所以只要Y4,Y5,Y6或Y7为低电平,则Y4C,Y5C,Y6C和Y7C就分别可以输出高电平,此时这四个或非门可以认为是一个非门。
总结一下,对于这个结构,我们可以认为:
当三八译码器CBA分别为111时Y7C输出高电平;
当三八译码器CBA分别为110时Y6C输出高电平;
当三八译码器CBA分别为101时Y5C输出高电平;
当三八译码器CBA分别为100时Y4C输出高电平;
3,三八译码器和或非门和锁存器
下面以三八译码器->Y4或非门->Y4锁存器->LED灯为例:
观察电路图我们可以看到这样一条控制路:
(P25+P26+P27)--控制-->Y4--控制-->与非门--控制-->Y4C--控制-->锁存器--控制-->LED
由此我们在逻辑上可以通过控制P25、P26、P27间接的控制锁存器的打通与锁定,由上文我们可以知道,当P27,P26,P25分别时100时三八译码器Y4输出,间接使Y4末端锁存器打通。如果此时我们对P00~P01进行控制,就相当于可以直接控制LED灯。通过观察电路图,这八个LED是共阳的,也就是说P00~P07哪个为低电平,对应的哪个LED亮。
四、点灯
1、点亮一颗LED灯
直接上代码
#include <STC15F2K60S2.H>
void main()
{
//↓分别使P27,P26,P25电平为:高低低,保持其余位不变。最终打通Y4末端锁存器
P2 = (P2&0x1f) | 0x80;
//↓使P0端口除最低位(P00)为低外其余都为高
P0 = 0xfe;
while(1)
{
}
}
2、关闭不需要的外设
这样我们会发现,虽然第一个LED亮起来了,但是蜂鸣器确一直在鸣叫,继电器旁边的LED也再发光,这是因为这两个设备在上电时是默认打开的,我们需要通过与打开LED类似的方式将其关闭
#include <STC15F2K60S2.H>
void main()
{
//选中Y5末端锁存器
P2 = (P2&0x1f) | 0xa0;
//0xAF=1010 1111;将P0的高第二位和高低四位置0,其他不变,关闭蜂鸣器和继电器
P0 &= 0xaf;
while(1)
{
}
}
将这两个组合起来,即可关闭蜂鸣器和继电器并且点亮LED
#include <STC15F2K60S2.H>
void main()
{
P2 = (P2&0x1f) | 0xa0;//选中Y5末端锁存器
P0 &= 0xaf;//0xAF=1010 1111;将P0的高第二位和高低四位置0,其他不变,关闭蜂鸣器和继电器
P2 = (P2&0x1f) | 0x80;//选中Y4末端锁存器
P0 = 0xfe;//将最低位置0,点亮第一个LED
while(1)
{
}
}