图1 七段数码管的显示单元 图2
1 共阴极 图2
2 共阳极 a b c d e f g h Gnd +5v a b c d e f g h 七段式数码管就是使用七段点亮的线段来拼成常见的数字和某些字母
再加上右下角的小数点
实际上一个显示单元包含了 8 根控制信号线
如上图所示,a,b,c,d,e,f,g,h 对应 8 根控制信号线
一般数码管有 8 个如图1 所示的显示单元,称为七段八位数码管
由此引入段码和位码的概念
段码(seg):在本文中段码对应单独的显示单元
或者说段码代表显示单元上显示的具体数值或符号
位码(sel):在本文中位码对应 8 个显示单元
或者说位码代表相应位置上的显示单元被选通
为什么数码管需要位码呢
因为数码管利用视觉暂留效应让人们觉得每一位上的数字一直保持着发亮
其实各个位上的显示单元是按照顺序交替亮灭的,只是频率比较高,看起来就像是一直亮着的
而位码就是用来按位循环扫描的
段码与显示内容又是怎样对应的呢
这就要说到显示原理了
每一个显示单元中可以被控制亮灭的线段其实是LED 发光二极管
他们以共阴极或者共阳极的方式接入
a b c d e f g d clk rst Data[31:0] Tu rn_off[7:0] Seg[7:0] Sel[2:0] 如果想显示数字 0,图 1 中的线段 a,b,c,d,e,f 应当点亮,g,h 应该熄灭
共阴极接入方式的话,输入端接高电平 LED 才会亮
abcdefgh 对应的电平状态是 11111100
编码时顺序反过来 a 对应最低位,h 对应最高位
所以在共阴极接入方式下,显示数字 0 对应的段码是 00111111,即 0x 3f; 在共阳极接入方式下,显示数字 0 对应的段码是 11000000,即 0x c0; 图 2
2 中的 a