逻辑门电路
首先我们需要先了解三个最基础的门电路,可以说我们一切的电子产品的基石就是这哥仨,它们就与,或,非。
与门和或门有两个输入端,一个输出端;非门有一个输入端一个输出端。
在我们数字电路中,使用逻辑'1'和逻辑'0'来表示高电平和低电平,也就是两种状态,这也是计算机中普遍(之前苏联搞过三进制计算机)用的是二进制,因为我们的电路只有高低电平两种状态,我们可以使用高电平来表示二进制里的1,低电平表示二进制里的0。
那么知道了我们的电子元件工作状态分为逻辑0和逻辑1之后我们再回过头看看上面哥仨,它们的工作状态又是怎么样的呢。
先来看看与门,我下面的演示使用的是proteus,不仅可以画原理图还可以直接仿真运行,缺点就是需要破解以及操作很反人类,所以我基本不用,这里需要演示一下电路图才用一用。
与门一共有两个输入端,每个端口的工作状态是两种,因此对应着的有2^2种不同的情况,也就是上面四种,我们可以发现只有第一种情况输出的是逻辑1,其他都是逻辑0。这是因为只有当两个输入都为逻辑1时,与门的输出才会为1,否则都是0。
接下来看看或门。
或门可以说是和与门相反,只有当两个输入端都为逻辑0时输出才会0,其他情况都会是逻辑1。
接下来看看非门,非门只有一个输入端,因此只有两种情况,从它的名字我们也可以猜出,它的功能就是将输入端的信号反过来。
除了这仨之外还有两个门电路比较常见,不过这俩是由上面三个组合而来的,分别是与非门和或非门,也就是在与门和或门的输出端再加个非门。在符号表示上面就是在与门和或门的输出的地方加个小圆圈。
看得出来与非门的输出结果和与门的结果是相反的,或非门和或门的结果也是相反的。
上面各个门电路的不同输入对应的输出的表格叫做真值表,下面以与门的真值表来举例。
真值表要求包含所有的输入情况,以及每种输入情况只能有一种输出情况。
刚接触数字电路的小伙伴可能会说,难道我要把这五种门电路的真值表都背下来嘛。实际上是不需要的,我们只需要理解性记忆即可,就记住与门是两个输入都需要为逻辑1,输出才为1,或门是只要一个输入为逻辑1,输出就为1,非门就是翻转输入。剩下的与非和或非就是与门+非门和或门+非门。
组合逻辑电路
逻辑电路可以分为两种,一种是可以存储数据的,另一种是不能存储数据的。
不能存储数据的是组合逻辑电路,它的输出值只取决于当前的输入值。
LED数码管
数码管由多个LED发光二极管组成。
我们知道,LED发光二极管需要让其正向导通才会亮,因此要让这个数码管亮起来就需要让它内部的LED正向导通。
首先我们需要确认的是手上的数码管是共阳极还是共阴极。共阳极的意思就是数码管内所有LED的阳极都是固定接在一起,并且阳极给的是高电平,如果要让LED亮,只需要在特定的管脚接入低电平即可。
如果是共阴极,那么就代表着数码管内所有LED的阴极都是固定接在一起,并且阴极给的是低电平,如果要让LED亮,我们就给高电平。
低电平的驱动能力要强于高电平,因此一般来说共阳极的数码管用的比较多。
译码器
如果我们要驱动一个数码管的话,需要7个管脚(具体情况具体分析,上面举例的数码管是7管脚的)。如果我们使用单片机去驱动的话对应GPIO口有些浪费,那么有没有什么办法能省一些引脚呢?答案是译码器。
如果是使用二进制去表示8个数,只需要三个bit,因此我们省管脚的思路就在这里了,我们只需要三个管脚就可以去表示八个数,跟上面直接使用七个管脚相比省了一半还多。
译码器的原理就是将我们输入端的二进制翻译成十进制,比如上图,左边输入的逻辑电平是101,翻译成十进制就是5,因此右侧输出端的五号引脚就输出了低电平,其余为高电平,同理,如果我们要右侧7号引脚输出低电平,则只需要控制左侧的输入为111即可。
左侧下面三个管脚是使能信号,E1~3都需要高电平,译码器才会工作,由于E2和E3在输入端加了个小圆圈,是取非的意思,因此要使能译码器就是给E1逻辑1,给E2和E3逻辑0即可。
时序逻辑电路
可以存储数据的是时序逻辑电路,它的输出值不仅取决于当前的输入状态,还取决于存储单元中的值。
最经典的时序逻辑电路是触发器,触发器可以存储一个bit的二值信号。
触发器又分为电位触发方式触发器和边沿触发方式触发器。
我就不画了(protues不好用,而且我懒),直接从百度拿图了。
电位触发方式触发器
边沿触发方式触发器
不同去记这些触发器是如何构成的,感兴趣的小伙伴可以去研究研究它们是如何存储数据的,剩下我们就记住几个时序逻辑电路,就是能认出啥啥元器件是时序逻辑电路还是组合逻辑电路就行。
常见的时序逻辑电路有寄存器,移位器,计数器等。
其实很好分辨的,能存数据的就是时序逻辑电路,存不了数据的就是组合逻辑电路。