技术文档

单片机bcd码 啥是 BCD码?

小编 2025-07-31 技术文档 23 0

啥是 BCD码?

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

BCD 码分为多种,今天鱼鹰介绍最常用的 8421 BCD码。

进制

高四位

低四位

BCD码

4

5

十六进制

4

5

十进制

6

9

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

代码表示如下:

不管你使用哪种方式,

最终写入的二进制都是一样的 ,没有任何区别。不过因为是 BCD 码格式,当写入的值为立即数时,建议使用十六进制,这样看起来更直观一些。

从这个例子中我们其实也可以看出一点规律,那就是所谓的 BCD 码就是把十六进制的写法直接认为是十进制的值

实际上也确实如此。

BCD 码中,使用4个位(二进制位)来表示一个十进制的值,范围 0~9。

也就是说,本来十六进制 4 个位可以表示0~15,但因为十进制的范围是 0~9,所以这四个位的范围也因此被限制住了。

同时在一个字节中,高四位代表十进制的十位,低四位代表十进制的个位

了解这一点,你就知道该如何把十进制转化成BCD码的形式进行存储,又该如何将 BCD 码转化为十进制了。

还是以存储秒寄存器(BCD码存储)为例:

通过以上两个宏,我们就可以在0 ~ 99 范围内随意转化,当需要更大范围时,理解原理,修改起来也不就是那么麻烦了。

详解数码管显示控制

数码管种类繁多,按外观来划分,可以分为七段数码管、米字型数码管、点阵块等。图8-5所示为各种不同形状的数码管。

图8-5 各种不同形状的数码管

LED数码管结构与工作原理

单片机系统中常用的是七段数码管,它由8个发光二极管(以下简称字段)构成,如图8-6(a)图所示(注:由于小数点字段不常用,所以一般称为七段),通过不同的组合可以显示数字0~9、字符A~F、H、L、P、U、符号“-”及小数点“.”。

根据发光二极管物理连接的不同,七段数码管可以分为共阴极和共阳极两种结构。共阴极型数码管如图8-6(b)所示,所有字段的阴极均连接低电平,因此在使用共阴极数码时,需要在相应字段上加高电平,才会使其发光。共阳极数码管如图8-6(c)所示,所有字段的阳极均连接高电平,在使用时,需要在相应字段上加低电平。

图8-6 7段数码管结构

LED数码管字型编码

在单片机与数码管组成的应用系统中,一般将单片机的一个并口与数码管的8个段控制引脚连接,且按照口线位的顺序由低到高与a、b、c、d、e、f、g、h连接,这样,若要显示不同字符,只需应用单片机的口线输出相应的控制的电平就可以实现。向口线送的数据就是LED的字型编码。共阴和共阳的字型编码如表8-2所示。

表8-2 共阴和共阳的字型编码表

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态显式和动态显式两类。

LED数码管静态显示

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口线进行驱动,或者使用如BCD码、二–十进位解码器解码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O口较多,如驱动5个数码管静态显示则需要5×8=40根I/O口线来驱动,而1个89S51单片机可用的I/O口线才32个。

2位共阳极数码管的静态显示电路如图8-7所示。

图8-7 2位共阳极数码管的静态显示电路原理图

显示数字12的C51程序如下:

LED数码管动态显示

数码管动态显示是单片机中应用最为广泛的显示方式,动态驱动是将所有数码管的8个同名端“a,b,c,d,e,f,g,h”连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制。

当单片机输出字形码时,所有数码管都接收到相同的字形码,究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制。通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示,不会有闪烁感,动态显示的效果和静态显示相同,并且能够节省大量的I/O口线,降低功耗。

2位共阳极数码管动态显示电路如图8-8所示。

显示数字12的C51程序如下:

图8-8 2位共阳极数码管动态显示电路原理图

相关问答

单片机 指令DA解释?

BCD码转换指令;比如说:81D+91D=172D而:81H+91H=112H这里为了将81H+91H结果与81D+91D一致,经过DA有:DA(112H)=112H+60H=172H虽然一个是16...

单片机 中两个字节存放的16位二进制怎么准确转换为 BCD码 ?

BINBCD:MOVB,#100(100作为除数送入B中)DIVAB(十六进制数除以100)MOVR3,A(百位数送r3,余数放入B中)...BINBCD:MOVB,...

单片机 填空求助1.MCS-51系列单片机为()位单片机.2.8051单片...

[最佳回答]1.MCS-51系列单片机为(8)位单片机.2.8051单片机有两种复位方式,既上电复位和手动复位.复位后SP=(07H),PC=(0000H),PSW=(00H),P0=(F...

单片机 中调整指令:DA A是什么意思?

BCD码转换指令;比如说:81D+91D=172D而:81H+91H=112H这里为了将81H+91H结果与81D+91D一致,经过DA有:DA(112H)=112H+60H=172H虽然一个是16...

单片机 实验二进制到 BCD 转换?

这个问题影响到电路的具体设计,因为你需要一个除法器,关于除法器的设计自行去搜索,最简单的是原码加减交叉除法器。有了除法器,下面开始转换。一,16位二...

单片机 数字钟毕业中期检查表中的一个问题 - 沈禾欣子 的回答...

你问什么问题??淮安信息职5261业技术学院综合毕业实践说明4102书(论文1653)2009-2010学年系专业摘要:数字电子时钟电路设计系统,以AT89C51单片机为...

51 单片机 用C语言怎么样把八位二进制转换成十进制?

//*********************************************************************///函数名称:voidHtod(ulongL)...

七段显示译 器是指什么样的电路?

使用这个译码器电路,主要是针对输出4位16进制BCD码的元器件,如4位计数器、单片机4位输出等等;因为输出才4位,为了与的七段数码管显示字符的笔画相对应,所以...

诸位资深人士 有谁能回答一下吗!江西测温健康 闸机支持各地...

[回答]什么是三码手机?就是三无产品,也就是山寨机。什么是五码手机?就是有点牌子,但是很少听到时,比山寨机好一点。这些机子看运气好坏,有的好,有的差。...

单片机 中psw与rs0rs1是什么关系啊?

[回答]rs0(1bit)rs1(1bit)各是PSW(8bit)中的一位,PSW是51单片机类似功能寄存器(1)Cy(PSW.7)PSW.7是Cy即C,源于最近一次算术指令或逻辑指令继续执行时软硬...

猜你喜欢