刚开始本人学单片机的时候,也有点疑惑。明明是学习单片机,为什么不是直接去学习单片机怎么工作的,而是去学习这些东西根本不属于单片机自身的东西呢?
学着学着才明白——先通过学习一些外设的芯片,让单片机去进行控制。之后再慢慢的去学单片机的工作原理(单片机原理)。这样循序渐进,步步为营, 放能理解的更透彻,学习起来更有兴趣。试想,只给你一块单片机芯片,之后就扔过来一本单片机原理的书,你只是看书,没能实践去操作,那是多么无聊、消极的事情啊!
废话不多说,直接上正文……
为什么我们要学习这三个芯片?因为它在许多开发板上十分常用!主要用于单片机 I/O 口的扩展。怎么这么说,相信过不了多久就会明白了!
先来看第一个芯片——74HC138
74HC138,即138译码器:
芯片资料所说,它是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列,等等一系列专业复杂的术语……这些我们先不看,我们直接找到我们所需要的东西(先明白怎么去控制它)!
先来看芯片原理图:
以上便是138译码器的原理图。其中,在芯片第4、5引脚处,标识符G2A和G2B上面有一横杠,这个意思是代表此端口输出低电平有效(可见,4、5引脚连接的是GND),而第6引脚连接的VCC。
74HC138译码器可接受3位二进制加权地址输入(A,B和C),并当使能时,提供8个互斥的低有效输出(Y0~Y7)。74HC138特有3个使能输入端:两个低电平有效(G2A、G2B)和一个高有效(G1)。除非G2A和G2B置低且G1置高,否则74HC138将保持所有输出为高。
其真值表如下所示(可通过芯片手册进行查阅):
如图表下的注解所示:H—高电平,L—低电平,X—任意电平,G2(—)是代表G1A和G2B之和(其实看原理图便知,G2A和G2B是一起控制的)。
通过真值表,我们知道正确的控制方式为,G1给高电平,G2给低电平。于是,通过控制ABC三者输入的值(二进制),控制Y0-Y7的输出值(二进制)。
例如,ABC = 000,Y0-Y7 = 0111 1111 ; ABC = 101,Y0~Y7 = 1111 1011。
有一点请注意:
前面说到,138译码器是提供8个互斥(Y0-Y7,8个脚互不影响)的低电平输出,但是输出来除了被ABC地址选中的那一个,其他的都是1,这是因为芯片内部的每个输出端口前,都接有一个与非门,于是输出端电平反相了。
下面附上74HC138译码器的逻辑图:
在每一个输出端口前面,可以看到都存在一个与非门电路(简单的数电知识),我们可以在逻辑图中对ABC赋值,再去查看Y0~Y7的输出,再与真值表核对一下。
到此为止,可能已经能看出来,138译码器的功能之一了:如原理图所示,使得P2.5P2.6P2.7三个引脚,控制了8个输出!但是大家会问到,每次输出都会是7个高电平,1个低电平。这样的输出会有什么意义呢?是的,所以在下一篇的博文里,将介绍下一款芯片。
未完待续……