记得原来用汇编的时候: 数码管要显示从0--F的16个数. 于是就定义一个字符表: display_table: db 81h,0e7h,92h,0c2h,0e4h ...... ; 0 1 2 3 4 ...... 这样定义,改一下板,得每个数重新去对.一般一次还不能完全成功.很麻烦. 后来用C,也沿用了这个办法.当然一样麻烦. 再后来,觉得C里面的宏定义大有**可作: 于是
#define SEG_8A BIT4 #define SEG_8B BIT5 #define SEG_8C BIT6 #define SEG_8D BIT3 #define SEG_8E BIT2 #define SEG_8F BIT0 #define SEG_8G BIT1
#define WORD_0 (SEG_8A+SEG_8B+SEG_8C+SEG_8D+SEG_8E+SEG_8F) #define WORD_1 (SEG_8B+SEG_8C) #define WORD_2 (SEG_8A+SEG_8B+SEG_8D+SEG_8E+SEG_8G) #define WORD_3 (SEG_8A+SEG_8B+SEG_8C+SEG_8D+SEG_8G) #define WORD_4 (SEG_8B+SEG_8C+SEG_8F+SEG_8G) #define WORD_5 (SEG_8A+SEG_8C+SEG_8D+SEG_8F+SEG_8G) ... ... .... code bin08 DISP_code[] = { WORD_0, WORD_1, WORD_2, WORD_3, ...... }; 如果是共阳数码管显示: #define WORD_0 ~(SEG_8A+SEG_8B+SEG_8C+SEG_8D+SEG_8E+SEG_8F) #define WORD_1 ~(SEG_8B+SEG_8C) #define WORD_2 ~(SEG_8A+SEG_8B+SEG_8D+SEG_8E+SEG_8G) #define WORD_3 ~(SEG_8A+SEG_8B+SEG_8C+SEG_8D+SEG_8G) #define WORD_4 ~(SEG_8B+SEG_8C+SEG_8F+SEG_8G) #define WORD_5 ~(SEG_8A+SEG_8C+SEG_8D+SEG_8F+SEG_8G) ... ... .... 如果要做成共阳与共阴通用,那就加条件编译进行选择就行. 按这种做法,硬件随你改,软件只要把前面的段定义改改就行了. 呵呵 这种做法有人用没,如果你觉得不错的话就顶顶.免得沉了.
|