数码管模块踩坑
坑 1:数码管十位分解缺少取模保护导致显示空白
第十三届国赛 · 发现者:左岚
现象
被显示的值为 100 时,数码管十位熄灭或显示异常,但个位和百位正常。
原因
十位只用了除法,没有对结果取模,当值为 100 时 100 / 10 = 10,而解码表中索引 10 对应空白字符:
// 错误写法:缺少 %10,值为 100 时十位索引为 10(空白)
Seg_Buf[6] = Shidu / 10;
Seg_Buf[7] = Shidu % 10;
解决方法
十位及以上的位分解一律加 % 10:
// 正确写法
Seg_Buf[6] = Shidu / 10 % 10;
Seg_Buf[7] = Shidu % 10;
举一反三
- 只要被显示的值可能达到 10 的整次幂(如 100、1000),高位就必须取模
- 三位数标准拆法:
百位 = n / 100,十位 = n / 10 % 10,个位 = n % 10 - 显示前加钳位或断言,确保值在预期范围内,能提前暴露此类问题