在 TM1621D 中,每个字节对应一个 Com 的输出,每一位代表一个 Seg 的亮灭状态。例如:
若 Com0 对应 8 个 Seg,则字节 0x05 表示 Com0 的 Seg 状态为:0b00000101(即第 0、2 位为 1,其余为 0);
同理,0xff 表示所有 Seg 都点亮(0b11111111)。
因此,数组中的每个字节代表一个 Com 的 Seg 控制信息,而不是单独的 Seg 或 Com 地址。
五、是否自动递增 Seg 地址?
在 TM1621D 中,Seg 地址是通过数据字节顺序自动递增的,也就是说,写入的第一个字节对应 Com0 的 Seg 状态,第二个字节对应 Com1,依此类推。
例如,若您有 4 个 Com(Com0~Com3),那么您需要提供 4 个字节的数据,分别对应 Com0、Com1、Com2、Com3 的 Seg 状态。
因此,在 WriteAllData 函数中,数据数组的顺序决定了 Com 的排列顺序,Seg 地址是隐含在数据顺序中的,无需额外指定。
六、总结
TM1621D 的写入数据是按 Com 顺序 逐个写入的,每个字节对应一个 Com 的 Seg 状态;
数组 Smg 中的每个字节包含该 Com 对应的所有 Seg 的亮灭状态;
在 WriteAllData(0x0a, Smg, 6); 中,Smg 前 6 个字节被写入,分别对应 6 个 Com 的 Seg 状态;
Seg 地址是通过数据顺序自动递增的,无需显式指定;
数组中 不包含 Com 地址本身,而是通过数据顺序隐含地确定 Com 的位置。