找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 917|回复: 9
打印 上一主题 下一主题
收起左侧

有关编码译码的问题 八位二进制数范围00000000-11111111

[复制链接]
跳转到指定楼层
楼主
ID:944932 发表于 2021-12-30 22:59 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
八位二进制数范围00000000-11111111,应该通过哪些编码器,译码器,二进制转8421BCD码在数码管显示出来,单一块74147好像数据范围不够啊
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2021-12-31 09:58 | 只看该作者
可在百科上搜索Double dabble

在计算机科学中,Double Dabble 算法用于将二进制数转换为二进制编码的十进制 (BCD) 表示法。 它也被称为 shift-and-add-3 算法,可以使用计算机硬件中的少量门来实现,但以高延迟为代价。

算法
该算法的操作如下:

假设要转换的原始数字存储在 n 位宽的寄存器中。预留足够宽的暂存空间以容纳原始数字及其 BCD 表示; n + 4×ceil(n/3) 位就足够了。存储每个十进制数字最多需要 4 位二进制。

然后将暂存空间划分为 BCD 数字(左侧)和原始寄存器(右侧)。例如,如果要转换的原始数字为 8 位宽,则暂存空间将按如下方式分区:

百位  十位   个位    原件
0010  0100  0011  11110011
上图显示了原始寄存器中 243(10) 的二进制表示,以及左侧 243 的 BCD 表示。

暂存空间初始化为全零,然后将要转换的值复制到右侧的“原始寄存器”空间中。

0000 0000 0000 11110011
然后该算法迭代 n 次。在每次迭代中,任何至少为 5(二进制为 0101)的 BCD 数字都会增加 3(0011);然后整个暂存空间左移一位。增量确保值 5,增加并左移,变为 16 (10000),从而正确“进位”到下一个 BCD 数字。

本质上,该算法的运行方式是每次迭代将左侧的 BCD 值加倍,并根据原始位模式添加 1 或 0。向左移动可同时完成两项任务。如果任何数字为 5 或以上,则添加 3 以确保该值以 10 为基数“进位”。

对值 243(10) 执行的双重涉猎算法如下所示:

百位 十位  个位
0000 0000 0000 11110011 初始化
0000 0000 0001 11100110 左移
0000 0000 0011 11001100 左移
0000 0000 0111 10011000 左移
0000 0000 1010 10011000 将 3 添加到个位数,因为它是 7
0000 0001 0101 00110000 左移
0000 0001 1000 00110000 将 3 添加到个位数,因为它是 5
0000 0011 0000 01100000 左移
0000 0110 0000 11000000 左移
0000 1001 0000 11000000 将 3 添加到十位数,因为它是 6
0001 0010 0001 10000000 左移
0010 0100 0011 00000000 左移
   2     4     3
        BCD
回复

使用道具 举报

板凳
ID:824490 发表于 2021-12-31 15:47 | 只看该作者
要把8位2进制转为12位的2进制,再每4位通过译码器驱动数码管。难点在于“8位2进制转为12位的2进制”
回复

使用道具 举报

地板
ID:883242 发表于 2021-12-31 15:59 | 只看该作者
你的要求随便找个CPLD就能做了。
回复

使用道具 举报

5#
ID:824490 发表于 2021-12-31 16:25 | 只看该作者
Hephaestus 发表于 2021-12-31 15:59
你的要求随便找个CPLD就能做了。

能用CPLD,还不如用MCU。。成本低好多。

楼主想要纯数字电路来搭一个电路的,这几天发了好多贴呢
回复

使用道具 举报

6#
ID:94031 发表于 2021-12-31 16:26 | 只看该作者
74147只负责把二进制码转为BCD码,要完成00000000-11111111数码管显示,一个74147只完成个位二进制码转BCD码,要加一个74147完成十位二进制码转BCD码。
回复

使用道具 举报

7#
ID:883242 发表于 2021-12-31 21:51 | 只看该作者
xuyaqi 发表于 2021-12-31 16:26
74147只负责把二进制码转为BCD码,要完成00000000-11111111数码管显示,一个74147只完成个位二进制码转BCD ...

11111111又不是BCD码,楼主要求明显是要把八位二进制输入显示成0~255,这个用74LS147是无论如何都不能完成的。
回复

使用道具 举报

8#
ID:94031 发表于 2022-1-1 10:05 | 只看该作者
Hephaestus 发表于 2021-12-31 21:51
11111111又不是BCD码,楼主要求明显是要把八位二进制输入显示成0~255,这个用74LS147是无论如何都不能完 ...

我已经说了“74147只负责把二进制码转为BCD码”要显示肯定要加其他元件,我只是回答楼主“单一块74147好像数据范围不够啊”。
回复

使用道具 举报

9#
ID:944932 发表于 2022-1-1 16:35 来自手机 | 只看该作者
名字不是重点 发表于 2021-12-31 16:25
能用CPLD,还不如用MCU。。成本低好多。

楼主想要纯数字电路来搭一个电路的,这几天发了好多贴呢[em31 ...

这51能完成的事儿当然能完成啊,但是要求就是不用任何MCU纯电路搭建
回复

使用道具 举报

10#
ID:944932 发表于 2022-1-1 16:57 来自手机 | 只看该作者
angmall 发表于 2021-12-31 09:58
可在百科上搜索Double dabble

在计算机科学中,Double Dabble 算法用于将二进制数转换为二进制编码的十 ...

大哥牛啊,我去试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表