嵌入式硬件入门——74HC138译码器(三个IO实现8选1)

74HC138是常用的数字芯片,是一种3入8出译码器

74HC138简介

74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。

74HC138是一种译码器,译码是编码的逆过程,在编码时,每一种二进制代码,都赋予了特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器。

74HC138的编码是000-111(八种),它们分别代表一种信号,要实现这些编码,只需要3根输入信号线;而74HC138这些编码所代表的含义,就是在8个输出中引脚中选出一个特殊的引脚,使其电平与其他7个不同,比如输出为01111111是输入为000的译码。所以,编码(被编的码)指的是有顺序规律,但没特殊含义的一种码;而译码(被译的码)指的是真正起作用的码。打个比方,ASCII码是一种编码,它的范围是0-127,光看这些码,我们无法得到任何有用的信息,但是,对他们进行译码后所得到的数据,我们就能轻易认出,比如ASCII编码97对应字符a,’a’就是译码。
译码的例子还有很多,比如学号的译码就是学生身份信息,身份证的译码就是个人的信息等等。

74HC138功能

74HC138的功能在上一节已经提到,即将3位二进制(A0,A1和A2),译码成8种输出状态,并且一共有8个输出I/O,这8位输出的特点是:互斥(同时只有一位有效)、低有效(低电平表示有效,表示选中)。简单来说74HC138实现了用3根线选择8根线(8选1)的功能

74HC138管脚定义及说明

  1. 管脚定义
    管脚主要分为:输入(A0、A1和A2)、输出(Y0-Y7)、使能(E1-E3)、电源(VDD)和(GND)。
    在这里插入图片描述

  2. 管脚说明
    下表是74HC138所有管脚的功能说明
    在这里插入图片描述

  3. 逻辑图
    74HC138的逻辑图可以形象地展示其逻辑功能,只有当E1=0,E2=0,E3=1时,芯片才能被使能,不然芯片不会有任何有效输出。
    在这里插入图片描述

74HC138真值表

真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效。
H代表高电平,L代表低电平,X代表随机电平(可高可低)

第4行为例,当芯片处于使能状态(E1=L,E2=L,E3=H)时,A0-A2全为L,此时Y0被选中,输出L(低电平为有效电平),而其他输出管脚都为H。
在这里插入图片描述

74HC138应用举例

  1. 简单应用——实现跑马灯
    请添加图片描述

  2. 实现数码管片选
    请添加图片描述

74HC138内部构造

数电(数字电子技术)基础的同学,可能还会对74HC138芯片的内部构造比较感兴趣。
在这里插入图片描述
芯片中包含的逻辑门包括:

  1. 非门
    在这里插入图片描述将输入的信号取反后输出,输入0则输出1,输入1则输出0。

  2. 非与门
    在这里插入图片描述先将两个输入信号取反(功能和非门相同),然后再将取反后的信号相与,1与1为1,0与任何数都为0。

  3. 与非门
    在这里插入图片描述相与,再取反

以下是基于74HC138译码器的实验C语言程序: ```c #include<reg52.h> sbit led=P2^0; //定义LED引脚 sbit s0=P1^0; //定义S0引脚 sbit s1=P1^1; //定义S1引脚 sbit s2=P1^2; //定义S2引脚 void main() { while(1) { s0=s1=s2=1; //将S0、S1、S2引脚都置为高电平 P0=0x00; //将P0口输出0 led=0; //LED亮 DelayMs(1000); //延时1秒 s0=0; //将S0引脚置为低电平 P0=0xFF; //将P0口输出FF led=1; //LED灭 DelayMs(1000); //延时1秒 s0=1; //将S0引脚置为高电平 s1=0; //将S1引脚置为低电平 P0=0xAA; //将P0口输出AA led=0; //LED亮 DelayMs(1000); //延时1秒 s1=1; //将S1引脚置为高电平 s2=0; //将S2引脚置为低电平 P0=0x55; //将P0口输出55 led=1; //LED灭 DelayMs(1000); //延时1秒 s0=0; //将S0引脚置为低电平 s1=0; //将S1引脚置为低电平 s2=0; //将S2引脚置为低电平 P0=0xFF; //将P0口输出FF led=0; //LED亮 DelayMs(1000); //延时1秒 } } void DelayMs(unsigned int ms) //延时函数 { unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<114;j++); } ``` 以上程序实现的功能是:通过74HC138译码器控制LED的亮灭。程序中通过改变S0、S1、S2三个引脚的电平来74HC138译码器的输出口,然后通过P0口输出控制LED的亮灭。 实验步骤如下: 1. 将74HC138译码器的S0、S1、S2三个引脚分别连接到P1.0、P1.1、P1.2三个引脚; 2. 将74HC138译码器的Y0、Y1、Y2、Y3四个输出口分别连接到LED的正极; 3. 将LED的负极连接到单片机的GND引脚; 4. 将单片机的P0口连接到74HC138译码器的A0、A1、A2三个引脚。 通过上述实验可以深入了解74HC138译码器的工作原理及其应用。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辉_Super

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值