一位十进制加减法计算器(电路+连线)|数电课设

本文最后更新于:2021年6月14日 晚上

概览:一位十进制加减法计算器的设计思路,Multisim仿真以及最后的实物联接。

设计要求

设计一个一位数的十进制的加减法计算器,能够显示输入的数值以及最终的计算结果。

电路框图

提供器件

1
2
3
4
5
6
7
8
9
10
11
12
13
一片 74LS04  ---- 六输入反相器
一片 74LS08 ---- 二输入四与门
三片 74LS47 ---- BCD-7段数码管译码器
一片 74LS54 ---- 与或非门
两片 74LS86 ---- 二输入四异或门
两片 74LS283 ---- 四位超前进位加法器

四个 共阳极数码管 ---- 显示数字
十个 5.1千欧电阻
五个 300欧电阻
三个 四位拨码开关
一个 四节电池盒
一块 面包板

加法运算思路

两个一位十进制的数相加一共有 0 - 18 这十九种结果。

输入方式的话只能够选择通过四位拨码开关调整输入,即输入的 0-9 都是二进制代码表示的。

实验要求要显示输入的数字,直接可以 四位拨码开关 直接连接 74LS47 芯片,这个芯片直接连接 共阳极数码管 就可以显示我们输入的每一个数字。

加法要通过 74LS283 这个芯片求得结果,如果直接把输入的两个数接到 74LS283 的两个四输入端口处的话,计算的结果直接就是 0 - 18 的二进制BCD码,但是与之对应的共阳极数码管就会显示出现问题。

要求其中的一个数码管 不显示 或者显示 1 ,另一个数码管要显示 0 - 9 之间的数。那么设计电路就要根据两数加和的结果对应的二进制码以及数码管显示数字对应的二进制码之间的关系进行设计。

以下是两者对应的关系:

设第二个数码管的四个二进制码使用字母D、C、B、A来进行表示,而两数加和结果的四个二进制码使用S3、S2、S1、S0来表示,进位使用C0来表示。

那么 0-9 之间的数两者之间的转换方式就是 : DCBA = S3S2S1S0 + 0000

剩余 10-18 之间的数两者之间的转换方式是 : DCBA = S3S2S1S0 + 0110

第一个数码管是否显示使用字母A进行表示,A=1代表显示,A=0代表不显示。

从上面的关系表中可以推倒得出 A = S3·S2 + S3·S1 + C0即当S3、S2都为1,或者S3、S1都为1或者进位的结果C0为1时,第一个数码管需要显示1,其余情况不显示。

为了便于实现电路,可将计算出的A值带入到上面数字的计算公式。因此结果如下:

那么 0-9 之间的数两者之间的转换方式就是 : DCBA = S3S2S1S0 + 0AA0。此时A=0

剩余 10-18 之间的数两者之间的转换方式是 : DCBA = S3S2S1S0 + 0AA0。此时A=1

共阳极数码管的特殊显示

注意我的数码管是顺时针旋转90度放置的,在Multisim上进行测试,得到了上图的结果.

加法电路图

一位十进制加法计算器

图中U2、U3是两个输入的数字的显示器,U9组合U8是最后的结果显示。

两个四位拨码开关来控制输入的数字,并直接显示输入的数字。

关于上面控制U9数码管显示的电路连接,是因为给定的器件不能够直接连接,所以变换公式后进行连接。

做到后面发现因为芯片数量的限制,为完成整个电路图,最好使用74LS54芯片。

减法运算思路

两个一位十进制数的加法运算结果是 -9 ~ 9 这19种结果。

输入方式依旧是通过四位拨码开关调整输入,即输入的 0-9 都是二进制代码表示的。

但是减法运算与加法运算有一些不同,减法运算是通过补码进行计算的,且最终的计算结果也是补码的形式。也就是说涉及两个过程,一是从原码到补码的运算过程,二是从补码到原码的运算过程。

原码到补码

通过四位拨码开关调整输入的结果就是原码,原码到补码的运算是 原码数值位取反,然后加1。由于数字是0-9之间,9占据了四位二进制码,而且输入的上限也是4位,就不再考虑符号位的事情。

那么两个数A、B的相减的计算公式就是 A - B = A + B反 + 1.

则利用已经有的芯片,上述公式中B反可以通过输入B的每一位与1进行异或操作取得反码加1可以通过74LS283芯片的进位输入端C0来设置实现。(虽然提供了反相器,但是只有六个,加上后面的取反操作根本不够使用,同时为了电路设计,使用异或是唯一的选择。)

补码到原码

从补码到原码,依旧可以采用数值为取反,然后加1。取反操作同样是采用与1异或的操作,加1同样通过74LS283芯片的进位输入端C0来设置实现。

设计电路就要根据结果即进位输出和补码以及数码管显示数字对应的二进制码之间的关系进行设计。

从上图可以看出进行减法操作时,当进位输出C4的结果为0时,第一个数码管要显示负号

分析从74LS283的运算结果到数码管输出需要的结果,0-9时无需变化,而-1 - -9时则需要从补码转换到原码,即需要数值为取反再加1

因为取反操作可以通过与1做异或进行操作,而且为了方便电路设计,这里的异或操作可以和进位输出端C4的取反进行异或。一举两得。加1通过进位输入端C0进行,即C0端连接第一个74LS283的进位输出端的取反。

减法电路图

此电路图是在上面加法电路图的基础上进行修改的。只是删去了加法电路的实现部分,此外增加开关S3,它的开关拨为1时表示进行减法操作,同时提供 1给被减数进行异或求反的操作

加减法合并电路图

加减法的控制是通过开关进行的,组合时要求加法电路和减法电路互相不干扰。

  1. 第二个数减法时要转化成补码,加法时不变,所以需要通过74LS86芯片进行异或,与1异或取反,与0异或不变。可以将74LS86芯片的异或门的一端引脚接加减法开关。
  2. 第一个全加器做加法运算时进位输入C0无任何值,而减法运算时需要通过C0端进行加1操作。
  3. 加法电路中用到的74LS54芯片在加法时应当不起任何作用。
  4. 第二个全加器做加法运算时进位输入C0无任何值,而做减法运算时通过第一个74LS283的结果为负数时,第二处的74LS86芯片应当异或门起作用。
  5. 对于加法来说的第二个74LS283芯片的加0110的操作对减法无效。且第二个74LS283芯片的C0输入加法时一直无效。
  6. 显示第一个结果的共阳极数码在加法和减法时应当显示对应的值。

以上这一部分融合的时候都是要考虑的。通过控制加减法的开关来影响上述大部分的操作。

不太会排版,所以非常难看,但是功能全部实现了。

最后连线的实物结果

连线已经非常努力了😭,从开设设计到最后的实物图连接完成,再到最后的debug阶段,直到最后的成功显示,花了大概三天时间,真的有些累。

文件下载

2021-06-14链接更新

蓝奏云: https://colourso.lanzoux.com/iGKNMgs8oof
密码:1qyq

链接:https://pan.baidu.com/s/1IRlDbNgECDnkBz-H9i5JLA
提取码:jwue
复制这段内容后打开百度网盘手机App,操作更方便哦

内含Multisim电路仿真图以及实际连线时会用到的芯片引脚图。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!