带小数点数码管的显示

带小数点数码管的显示

在这里插入图片描述
数码管的示意图如上,通过点亮a-g七个led来拼成对应的数字或字符,数码管有共阳极(底电平亮)和共阴极(高电平亮),以上图的数字2为例:

共阳极(0亮1灭): DP G F E D C B A

                         1  0  1  0  0  1   0  0         = 0xA4

共阴极(1亮0灭): DP G F E D C B A

                         0  1 0 1  1  0  1   1           = 0x5B

全部定义:

在这里插入图片描述
码表:

共阴接法,不带小数点。数码管段选码表:

Unsigned char code distab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}

共阴接法,带小数点数。码管段选码表:

Unsigned char code distab[16]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1}


共阳接法,无小数点。数码管段选码表:
unsigned char code distab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}

共阳接法,有小数点。数码管段选码表:

unsigned char code distab[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e}

### 共阳极数码管表及其小数点显示 对于共阳极数码管,其工作原理是当某个选线被拉低时,相应的LED会点亮。因此,在设计编表时,每一位代表一个特定的(a-g),而这些位的状态决定了哪些会被激活以形成所需字符。 针对小数点的小型共阳极数码管,可以采用如下编方案: | 符号 | a | b | c | d | e | f | g | dp | |------|----|----|----|----|----|----|----|----| | 0 | L | L | L | L | L | H | L | X | | 1 | H | L | H | H | H | H | H | X | | ... | ...|... |... |... |... |... |... |... | | F | L | L | H | L | L | L | L | X | 其中,“dp”表示小数点位置。“X”意味着该位可高电平也可低电平,具体取决于是否要使能小数点[^1]。 为了在共阳极数码管上正确地显示小数点的数据,可以在原有基础上加上一个小数点控制信号。例如,如果原始数据为`{0xC0, 0xF9, ...,}`对应于无小数点情况下的‘0’至其他字符,则可以通过按位与操作符(`&`)将所有可能影响正常显示的最高有效位清除掉,并附加额外一位用于指示小数点状态。即对于需要开启小数点的情况,应使用如下的十六进制数值序列[^5]: ```cpp const uint8_t code_with_dp[] = { (0xC0 & 0x7F), // '0' (0xF9 & 0x7F), ... }; ``` 这里使用的掩`0x7F`确保了即使原值中含有高位设置为'1'也不会干扰实际显示效果,同时允许自由设定最低位作为小数点标志。 #### 实现细节 考虑到硬件层面的操作,通常会在程序中定义两个数组:一个是标准字符集对应的字模库;另一个则是相同字符但在最后加入了小数点版本。这样做的好处是可以简化逻辑判断过程并提高代可读性和维护性。 ```cpp // 不含小数点的标准字符映射 uint8_t seg_code_without_dp[] = { /* 数据省略 */ }; // 含有小数点的特殊字符映射 uint8_t seg_code_with_dp[] = { /* 对应上面每个元素做相应修改后的结果*/ }; ``` 通过这种方式,可以根据需求灵活切换不同模式下数码管的表现形式。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rgb2gray

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值