0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是BCD码

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-09-07 09:10 次阅读

在使用RTC外设时,我们常常会接触 BCD码的概念,同时鱼鹰在介绍 USB协议版本时也说了 BCD码,那么什么是 BCD码? BCD 码分为多种,今天鱼鹰介绍最常用的 8421 BCD码。

进制 高四位 低四位
BCD码 4 5
十六进制 4 5
十进制 6 9

假如我们需要设置 RTC时钟的秒值为 45 秒,因为一般芯片会使用 BCD码进行存储,所以我们需要存储到芯片寄存器的值就是 0x45,注意这是十六进制表示,如果你写入寄存器时用十进制表示,那么就是 69。 代码表示如下:

//假设 REG_SEC 为秒寄存器 REG_SEC = 0x45;  // 十六进制写入寄存器
REG_SEC = 69;  // 十进制写入寄存器
不管你使用哪种方式,最终写入的二进制都是一样的,没有任何区别。不过因为是 BCD码格式,当写入的值为立即数时,建议使用十六进制,这样看起来更直观一些。 从这个例子中我们其实也可以看出一点规律,那就是所谓的 BCD 码就是把十六进制的写法直接认为是十进制的值。 实际上也确实如此。 BCD 码中,使用4个位(二进制位)来表示一个十进制的值,范围 0~9。 也就是说,本来十六进制 4 个位可以表示0~15,但因为十进制的范围是 0~9,所以这四个位的范围也因此被限制住了。 同时在一个字节中,高四位代表十进制的十位,低四位代表十进制的个位。 了解这一点,你就知道该如何把十进制转化成BCD码的形式进行存储,又该如何将 BCD码转化为十进制了。 还是以存储秒寄存器(BCD码存储)为例:

// BCD 码 转 十进制#define BCD_TO_DECIMAL(x)   ((((x) & 0xf0) >> 4) * 10 + ((x) & 0x0f))
// 十进制 转 BCD 码#define DECIMAL_TO_BCD(x)   ((((x) / 10) << 4) + ((x) % 10))

// 以十进制形式写入秒寄存器,最终将以 BCD 码存储REG_SEC = DECIMAL_TO_BCD(45); // 设置为 45 秒 
// 读取秒寄存器中的 BCD 码,并转化为十进制值,方便处理second = BCD_TO_DECIMAL(REG_SEC);
通过以上两个宏,我们就可以在0 ~ 99 范围内随意转化,当需要更大范围时,理解原理,修改起来也不就是那么麻烦了。
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1730

    浏览量

    131424
  • RTC
    RTC
    +关注

    关注

    2

    文章

    535

    浏览量

    66415
  • BCD码
    +关注

    关注

    1

    文章

    52

    浏览量

    18288

原文标题:啥是 BDC 码?

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    BCD输出静态显示电路图

    BCD输出静态显示电路图如下图所示。CD4511是BCD七段共阴译码/驱动IC; 4511是4线-7段锁存/译码/驱动电路,能将BCD
    发表于 07-31 11:33 8060次阅读
    <b class='flag-5'>BCD</b><b class='flag-5'>码</b>输出静态显示电路图

    什么是BCD、8421、余三、格雷

    用四位二进制代码来表示一位十进制数,称为二--十进制编码,简称BCD(Binary Coded Decimal)。根据代码的每一位是否有权值BCD可分为有权
    发表于 11-03 17:36

    关于BCD转换的问题

    if((TIME[SetPlace]&0x0f)>9)//换成BCD。{TIME[SetPlace]=TIME[SetPlace]+6;}BCD代码。Binary-Coded
    发表于 03-08 11:59

    如何改变计数值为压缩BCD

    @C51单片机题目如下问:如何改变计数值为压缩BCD,使发光二极管显示压缩BCD?(注:压缩型BCD
    发表于 12-08 07:03

    DS1302的BCD相关资料推荐

    储存在DS1302中的数据是BCD以4位二进制数来表示一位十进制数如0010 0011 的BCD就是230100 1010由于第二位为10,就不合法表示为16进制就更明显了如0x1
    发表于 01-19 06:51

    什么是BCD

    文章目录什么是BCD ?什么是BCD ?在日常生产生活中用的最多的数字是十进制数字,而单片机系统的所有数据本质上都是二进制的,所以聪明的前辈们就给我们创造了
    发表于 01-20 08:08

    BCD交流调压电路

    BCD交流调压电路
    发表于 02-18 22:04 1014次阅读
    <b class='flag-5'>BCD</b><b class='flag-5'>码</b>交流调压电路

    BCD模拟转换器电路图

    BCD模拟转换器电路图
    发表于 03-25 08:58 2383次阅读
    <b class='flag-5'>BCD</b><b class='flag-5'>码</b>模拟转换器电路图

    多路BCD并行BCD变换器电路图

    多路BCD并行BCD变换器电路图
    发表于 03-25 09:01 1024次阅读
    多路<b class='flag-5'>BCD</b><b class='flag-5'>码</b>并行<b class='flag-5'>BCD</b><b class='flag-5'>码</b>变换器电路图

    bcd加法器

    BCD(Binary-Coded Decimal‎)亦称二进十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。
    发表于 11-23 18:07 1.2w次阅读
    <b class='flag-5'>bcd</b><b class='flag-5'>码</b>加法器

    bcd是什么_bcd的编码方式是什么

    BCD亦称二进十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD
    发表于 11-24 08:48 4.2w次阅读
    <b class='flag-5'>bcd</b><b class='flag-5'>码</b>是什么_<b class='flag-5'>bcd</b><b class='flag-5'>码</b>的编码方式是什么

    余3至8421BCD的转换_8421BCD转换成余3

    二进制编码的十进制数,简称BCD。这种方法是用4位二进制的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。由8421加3后形成的余3
    的头像 发表于 03-02 09:38 19.3w次阅读
    余3<b class='flag-5'>码</b>至8421<b class='flag-5'>BCD</b><b class='flag-5'>码</b>的转换_8421<b class='flag-5'>BCD</b><b class='flag-5'>码</b>转换成余3<b class='flag-5'>码</b>

    8421bcd运算规则

    BCD的运算规则:BCD是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD
    的头像 发表于 03-02 09:53 5.6w次阅读
    8421<b class='flag-5'>bcd</b><b class='flag-5'>码</b>运算规则

    8421BCD转换成5421BCD

    5421BCD,是二—十进制代码(BCD)的一种;二—十进制代码(BCD)的一种;5421
    的头像 发表于 03-02 13:48 8w次阅读
    8421<b class='flag-5'>BCD</b><b class='flag-5'>码</b>转换成5421<b class='flag-5'>BCD</b><b class='flag-5'>码</b>

    使用流水灯显示压缩BCD

    @C51单片机题目如下问:如何改变计数值为压缩BCD,使发光二极管显示压缩BCD?(注:压缩型BCD
    发表于 11-25 17:36 11次下载
    使用流水灯显示压缩<b class='flag-5'>BCD</b><b class='flag-5'>码</b>