经常看到一些工程师或网友在编写数码管程序时,花费很多时间在制作那个数字的对照表,甚至
有什么数码管笔段生成器的软件出现,其实数码管定义很简单,只要知道那个7段的定义,不需要
半秒钟,笔段对照比较就知道生产,也不需要什么数码管比段生成器
方法如下:
/*
a
---
f| g |b
---
e| |c
---
d
*/
#define Sega 0x01
#define Segb 0x02
#define Segc 0x40
#define Segd 0x20
#define Sege 0x10
#define Segf 0x04
#define Segg 0x08
#define Num0 (Sega + Segb + Segc + Segd + Sege + Segf )
#define Num1 ( Segb + Segc )
#define Num2 (Sega + Segb + Segd + Sege + Segg)
#define Num3 (Sega + Segb + Segc + Segd + Segg)
#define Num4 ( Segb + Segc + Segf + Segg)
#define Num5 (Sega + Segc + Segd + Segf + Segg)
#define Num6 (Sega + Segc + Segd + Sege + Segf + Segg)
#define Num7 (Sega + Segb + Segc )
#define Num8 (Sega + Segb + Segc + Segd + Sege + Segf + Segg)
#define Num9 (Sega + Segb + Segc + Segd + Segf + Segg)
#define Numblk (0 )
INT8U Num_code[11] = {Num0,Num1,Num2,Num3,Num4,Num5,Num6,Num7,Num8,Num9,Numblk};
如果以后比段的位置发生变化了,修改seg的定义,在编译就好了
这个方法无论从代码可读性,维护难易程度来来说,都是十分理想的;
|