网上有一个求助,要求:
输入 4 位二进制码 (0~15),输出为 BCD 码,BCD 码用数码管显示。
题目链接:点击查看。
常识:
十进制数是绝大多数人常用的数字。
但是在数字电子技术、计算机技术中,却常用二进制代码来表示数字。
表示数字的二进制代码,有许多种不同的形式。
表示数字最常见的二进制码,是 8421 码。
用四位二进制的代码,表示一位十进制数字,称为 BCD 码。
BCD 码也有许多形式,最常见的是 8421BCD 码。
用 8421 码可以方便的进行加减乘除运算,而不需要进行什么转换。
运算的结果,通常还是 8421 码。
用 8421BCD 码,则便于显示十进制数。
把计算的结果(8421 码)以十进制显示出来,就需要做一个转换。
这就是把 8421 码转换成 8421BCD 码。
它们的对应关系如下表所示。
----------+-------------------------
| 二 进 制 码
十进制数 +----------+--------------
| 8421 码 | 8421BCD 码
----------+----------+--------------
0 | 0000 | 0000 0000
1 | 0001 | 0000 0001
2 | 0010 | 0000 0010
3 | 0011 | 0000 0011
4 | 0100 | 0000 0100
5 | 0101 | 0000 0101
6 | 0110 | 0000 0110
7 | 0111 | 0000 0111
8 | 1000 | 0000 1000
9 | 1001 | 0000 1001
10 | 1010 | 0001 0000
11 | 1011 | 0001 0001
12 | 1100 | 0001 0010
13 | 1101 | 0001 0011
14 | 1110 | 0001 0100
15 | 1111 | 0001 0101
----------+----------+--------------
可以看出:
4 位 8421 码 对应的 8421BCD 码 是 8 位的二进制码。
0 ~ 9 的 8421 码 和 8421BCD 码 的关系,非常简单,几乎没有什么变化。
10~15 的 8421 码,加上 6,才能变成 8421BCD 码。
这就是说,要进行转换,关键是要判断 4 位 8421 码 是否大于 9,大于就加 6,否则就不加。
这个过程称为【十进制调整】。
十进制调整的真值表、卡诺图、逻辑表达式,推导如下:
真值表
----------+-----------+-----------
十进 | 8421 码 | 转换方法
制数 |A3 A2 A1 A0| F
----------+-----------+-----------
0 | 0 0 0 0 |
1 | 0 0 0 1 | 不
2 | 0 0 1 0 | 用
3 | 0 0 1 1 | 变
4 | 0 1 0 0 | 换
5 | 0 1 0 1 | ,
6 | 0 1 1 0 | 或
7 | 0 1 1 1 | 加
8 | 1 0 0 0 | 零
9 | 1 0 0 1 |
- - - - - + - - - - - + - - - - -
10 | 1 0 1 0 |
11 | 1 0 1 1 | 需
12 | 1 1 0 0 | 要
13 | 1 1 0 1 | 加
14 | 1 1 1 0 | 六
15 | 1 1 1 1 |
----------+-----------+----------
卡诺图
\ A1A0
A3A2 \ 0 0 0 1 1 1 1 0
+---+---+---+---+
0 0 | | | | |
+---+---+---+---+
0 1 | | | | |
+---+---+---+---+
1 1 | 1 | 1 | 1 | 1 |
+---+---+---+---+
1 0 | | | 1 | 1 |
+---+---+---+---+
逻辑表达式:
F = A3·A2 + A3·A1.
电路设计:
设计这样的转换电路,需要使用一个加法器芯片,可以选用 74LS283。
还需要两个与门、一个或门。以及显示电路的器件。
话不多说,直接上图。
电路原理介绍:
74LS283 是 4 位的加法器,功能如下:
C4S3S2S1S0 = A3A2A1A0 + B3B2B1B0 + C0。
其中:A3A2A1A0 和 B3B2B1B0 是两个加数;
C0 是 来自低位的进位。
C4S3S2S1S0 是 5 位的和。
74LS283 相加的过程也可用下面的竖式来说明:
A3 A2 A1 A0
+ B3 B2 B1 B0
+ C0
-----------
C4 S3 S2 S1 S0
针对本题目,可将:
4 位 8421 码当做一个加数 A3A2A1A0;
0 或 6,当做另一个加数 B3B2B1B0。
究竟是加 0 还是加 6,是由两个与门、一个或门来判断的。
判断电路输出的 0、1,送到 B2 B1,即可形成 0000 或 0110。
74LS283 输出的 S3S2S1S0 就是个位数的 8421BCD 码;
由 C4 输出的,就是十位数的 8421BCD 码。
之后,再用七段码译码器芯片 (74LS48) 和共阴数码管来显示。
电路使用方法:
在图中的左边有 4 个拨动开关,用于输入 8421 码。
操作者设定了 4 位二进制码后,本电路就立即显示出等值的十进制数。
图中输入的是:1101,显示就就是十进制数:1 3 。
用硬件来实现十进制调整,是比较 “古老” 的方法。
用单片机驱动数码管,就可以显示十进制数。
如果想要吧单片机内部二进制 (8421) 码,变换到 8421BCD 码,只需执行一条指令:
DA A,
即可完成十进制调整。
--本文完--