组合逻辑电路(二)(译码器和编码器)

目录

译码器

简单逻辑门译码器

二进制译码器

2线-4线译码器

3线-8线译码器 

二-十进制译码器

4线-10线译码器  

七段显示译码器

编码器

二进制普通编码器 

二-十进制普通编码器(8421BCD码编码器)

优先编码器(Priority Encoder)


译码器

将输入的代码译为特定对象(如逻辑电平),用于检测特定数字状态的组合逻辑电路

译码

利用译码表将具有特定含义的文字、符号和数码等信号译成控制信号

使能端(控制端):用于选通或禁止译码器工作的控制信号输入端,有高电平使能和低电平使能之分

译码器的逻辑功能就是将输入的代码翻译成另外一种特定代码输出

根据输入输出代码的不同,可以设计成各种不同类型的译码器

常见的中规模集成译码器有二进制译码器、二-十进制译码器和七段显示译码器等几类

译码器如有3个输入端8个输出端,称为3线-8线译码器

如有4个输入端10个输出端,称为4线-10线译码器

简单逻辑门译码器

一个与(或)逻辑门就是最简单的译码器,可用于检测特定的二进制数值

二进制译码器

二进制译码器的输入是一组二进制代码,输出是一组高、低电平信号

若译码器有n个输入端,则最多有2^n个输出端,这种译码器被称为n线-2^n线译码器 

2线-4线译码器

2线-4线译码器:

2线-4线译码器真值表
输入输出
\bar{S}AB\bar{F_{3}}\bar{F_{2}}\bar{F_{1}}\bar{F_{0}}
1××1111
0001110
0011101
0101011
0110111

3线-8线译码器 

74LS138即3线-8线译码器,有3个二进制代码输入端A2、A1、A0,8个译码器输出端\bar{Y_{0}}\sim \bar{Y_{7}},低电平有效,3个使能输入端S_{1}\overline{S_{2}}\overline{S_{3}},其中S_{1}高电平有效,\overline{S_{2}}\overline{S_{3}}都为低电平有效

3线-8线译码器:

74LS138的真值表
输入输出
S_{1}\overline{S_{2}}+\overline{S_{3}}A_{2}A_{1}A_{0}\bar{Y_{0}}\bar{Y_{1}}\bar{Y_{2}}\bar{Y_{3}}\bar{Y_{4}}\bar{Y_{5}}\bar{Y_{6}}\bar{Y_{7}}
×1×××11111111
0××××11111111
1000001111111
1000110111111
1001011011111
1001111101111
1010011110111
1010111111011
1011011111101
1011111111110

S_{1}=0\overline{S_{2}}+\overline{S_{3}}=1\overline{S_{2}}\overline{S_{3}}中至少有一个1)时,译码器被禁止,即译码器不工作,\bar{Y_{0}}\sim \bar{Y_{7}}输出都为高电平

只有S_{1}\overline{S_{2}}\overline{S_{3}}都为1时才工作,即S_{1}=1S_{2}=0S_{3}=0

S_{1}=1时,同时\overline{S_{2}}+\overline{S_{3}}=0\overline{S_{2}}=\overline{S_{3}}=0)时,译码器被选通处于工作状态,此时,由A2、A1、A0输入的二进制代码组合并确定\bar{Y_{0}}\sim \bar{Y_{7}}的译码输出

74LS138的输出端逻辑表达式为

\bar{Y_{0}}=\overline{\bar{A_{2}}\bar{A_{1}}\bar{A_{0}}}=\bar{m_{0}}        \bar{Y_{1}}=\overline{\bar{A_{2}}\bar{A_{1}}A_{0}}=\bar{m_{1}}

\bar{Y_{2}}=\overline{\bar{A_{2}}A_{1}\bar{A_{0}}}=\bar{m_{2}}        \bar{Y_{3}}=\overline{\bar{A_{2}}A_{1}A_{0}}=\bar{m_{3}}

\bar{Y_{4}}=\overline{A_{2}\bar{A_{1}}\bar{A_{0}}}=\bar{m_{4}}        \bar{Y_{5}}=\overline{A_{2}\bar{A_{1}}A_{0}}=\bar{m_{5}}

\bar{Y_{6}}=\overline{A_{2}A_{1}\bar{A_{0}}}=\bar{m_{6}}        \bar{Y_{7}}=\overline{A_{2}A_{1}A_{0}}=\bar{m_{7}}

74LS138由于输出为低电平有效,因此,它的8个输出\bar{Y_{0}}\sim \bar{Y_{7}}是对应输入变量A2A1A0的最小项非\bar{m_{0}}\sim \bar{m_{7}}

二-十进制译码器

将输入的BCD吗的十个代码翻译成十个对应信号输出的逻辑电路,称为二-十进制译码器

也称4线-10线译码器

4线-10线译码器  

4线-10线译码器 :

图中A3、A2、A1、A0为输入端,\bar{F_{0}}\sim \bar{F_{9}}为输出端,输出低电平0有效

4线-10线译码器74LS42的真值表
序号输入输出
A_{3}A_{2}A_{1}A_{0}\bar{F_{0}}\bar{F_{1}}\bar{F_{2}}\bar{F_{3}}\bar{F_{4}}\bar{F_{5}}\bar{F_{6}}\bar{F_{7}}\bar{F_{8}}\bar{F_{9}}
000000111111111
100011011111111
200101101111111
300111110111111
401001111011111
501011111101111
601101111110111
701111111111011
810001111111101
910011111111110

七段显示译码器

在数字测量仪表或其他数字设备中,常常将测量或运算结果用数字、文字或符号显示出来

因此,显示译码器和显示器是数字设备不可缺少的组成部分
目前常见的字符显示器主要为液晶显示器(liquid crystal display,LCD)、发光二极管(light emitting diode,LED)组成的数码管和点阵显示器

七段数码管(又称LED数码显示器)是由7段条形发光二极管排列组合而成,7个发光段分别对应a,b,c,d,e,f,g

按内部的连接方式,七段数码管分为共阳极和共阴极两种类型

数码显示器:

共阴极:

LED使用时公共端阴极通常接地,a,b,c,d,e,f,g为高电平时点亮对应的发光段

共阳级:

共阳极LED使用时公共端阳极通常接+5V电源,a,b,c,d,e,f,g为低电平时点亮对应的发光段

若要使用共阴极数码管来显示某字形,则需要由输出高电平有效的译码器去驱动各发光段

而共阳极数码管则需要由输出低电平有效的译码器去驱动各发光段


共阴极接阳极

共阳极接阴极

对应的字母表示的灯管亮相应显示0~9十个数字

例如对于显示0

共阳极接法需要

a,b,c,d,e,f,g七个输入端接收

0,0,0,0,0,0,1

共阴极接法需要

a,b,c,d,e,f,g七个输入端接收

1,1,1,1,1,1,0

编码器

编码是译码的逆过程,将某种特定信息用文字、符号和数码等来表示的过程称为编码,实现编码功能的电路称为编码器

编码器把输入的每一个有效信号(高、低电平)编成一组对应的代码输出

在数字系统中,通常是将信息编成若干位二进制代码或二-十进制代码

编成二进制代码的编码器称为二进制编码器,而对十进制数进行编码的编码器称为二-十进制编码器

从逻辑功能的特点可将编码器分成普通编码器和优先编码器

普通编码器在任何时刻,输入信号中只能有1位信号有效,不允许同时有多位输入信号有效,否则输出将出现错误状态

优先编码器工作时允许有多位输入信号同时有效,按设定的优先权排队,任一时刻,优先编码器只对输入信号中优先权最高的一个编码

二进制普通编码器 

将N=2^n个输入信号转换成n位二进制代码输出的逻辑电路,称为二进制编码器

编码器的输出代码可以是原码形式,也可以是反码形式,原码是指等值十进制数对应的二进制代码,而各位原码取反则称为反码

二-十进制普通编码器(8421BCD码编码器)

用4位二进制代码对1位十进制数码0~9进行编码的电路,称为二-十进制编码器

优先编码器(Priority Encoder)

区别于普通编码器,优先编码器允许在多个输入端同时输入有效信号,根据规定好的优先顺序,对其中优先级别最高的有效输入信号进行编码

这种编码器广泛应用于计算机系统中的中断请求和数字控制的排队逻辑电路中

常见的中规模集成优先编码器有8线-3线优先编码器和10线-4线BCD优先编码器两种

优先编码器 74LS148 真值表
输入输出
\bar{S}\bar{I_{0}}\bar{I_{1}}\bar{I_{2}}\bar{I_{3}}\bar{I_{4}}\bar{I_{5}}\bar{I_{6}}\bar{I_{7}}\bar{F_{0}}\bar{F_{1}}\bar{F_{2}}\bar{F_{S}}\bar{F}_{EX}
1××××××××11111
01111111111101
0×××××××000010
0××××××0100110
0×××××01101010
0××××011101110
0×××0111110010
0××01111110110
0×011111111010
00111111111110

\bar{S}是选通输入端,当\bar{S}=1时,无论有没有编码输入,\bar{F_{0}}\bar{F_{1}}\bar{F_{2}}=111,没有有效编码信号输出,只有\bar{S}=0时,编码器才能正常工作

\bar{F_{S}}是选通输出端,只有\bar{S}=0,且\bar{I_{0}}\sim \bar{I_{7}}全部为高电平(没有有效编码信号输入),\bar{F_{S}}才为0,因此\bar{F_{S}}=0表示电路虽然处于工作状态,但没有有效编码信号输入

\bar{F}_{EX}称为扩展端,用以扩展编码器的功能,只要\bar{I_{0}}\sim \bar{I_{7}}中有任何一个为低电平,且\bar{S}=0,则\bar{F}_{EX}=0,因此,\bar{F}_{EX}=0表示电路处于工作状态,而且有有效编码信号输入

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是常见的七段显示译码器代码,使用的是常见的阳极七段显示器: ```C //定义7段数码管COM口连接的芯片引脚 #define DIG_COM1 2 #define DIG_COM2 3 #define DIG_COM3 4 #define DIG_COM4 5 //定义7段数码管A~G连接的芯片引脚 #define SEG_A 6 #define SEG_B 7 #define SEG_C 8 #define SEG_D 9 #define SEG_E 10 #define SEG_F 11 #define SEG_G 12 //定义数码管编码表 //阳极七段显示器编码表 //0~9 const unsigned char SEG_NUM[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F }; //A~F const unsigned char SEG_ALP[] = { 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71 }; //定义函数:数码管显示 void dispNum(unsigned char num, unsigned char point) { static unsigned char dig = 1; //关闭所有数码管 digitalWrite(DIG_COM1, HIGH); digitalWrite(DIG_COM2, HIGH); digitalWrite(DIG_COM3, HIGH); digitalWrite(DIG_COM4, HIGH); //设置显示数字 switch (dig) { case 1: digitalWrite(DIG_COM1, LOW); break; case 2: digitalWrite(DIG_COM2, LOW); break; case 3: digitalWrite(DIG_COM3, LOW); break; case 4: digitalWrite(DIG_COM4, LOW); break; default: break; } //显示数字 if (num <= 9) { //显示数字0~9 PORTB = SEG_NUM[num] | (point << 7); } else if (num >= 'A' && num <= 'F') { //显示字母A~F PORTB = SEG_ALP[num - 'A'] | (point << 7); } else { //显示其他字符 PORTB = 0x00 | (point << 7); } //更新数码管 dig++; if (dig > 4) { dig = 1; } } ``` 这段代码演示了如何使用 Arduino 控制七段显示器,其中定义了数码管 COM 口和 A~G 口的连接引脚,以及显示数字和字母的编码表。函数 `dispNum()` 可以根据输入的数字或字母,在数码管上实现显示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星与星熙.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值