例:LCD上有四个8,即四个DIG要写程序显示0-9,先用DEFINE宏定义定义好每一个SEG怎么显示0-9,那么就有四十个DEFINE。怎么简化程序,貌似宏定义不能像数组那样【0】。【1】……【9】 
如: 
#define LCD_DIG1_DisP_0()    {……} 
…… 
#define LCD_DIG1_DisP_9()    {……} 
 
#define LCD_DIG2_DisP_0()    {……} 
…… 
#define LCD_DIG2_DisP_9()    {……} 
 
#define LCD_DIG3_DisP_0()    {……} 
…… 
#define LCD_DIG3_DisP_9()    {……} 
 
#define LCD_DIG4_DisP_0()    {……} 
…… 
#define LCD_DIG4_DisP_9()    {……} 
 
 
调用上 
 
void Disp_Dig1(unsigned char Num)//转化为单个数字在LCD显示 
{ 
        switch(Num) 
        { 
                case  0:LCD_DIG1_DisP_0() break; 
                case  1:LCD_DIG1_DisP_1() break; 
                case  2:LCD_DIG1_DisP_2() break; 
                case  3:LCD_DIG1_DisP_3() break; 
                case  4:LCD_DIG1_DisP_4() break; 
                case  5:LCD_DIG1_DisP_5() break; 
                case  6:LCD_DIG1_DisP_6() break; 
                case  7:LCD_DIG1_DisP_7() break; 
                case  8:LCD_DIG1_DisP_8() break; 
                case  9:LCD_DIG1_DisP_9() break; 
                default:break; 
        } 
} 
 
void Disp_Dig2(unsigned char Num)//转化为单个数字在LCD显示 
{ 
        switch(Num) 
        { 
                case  0:LCD_DIG2_DisP_0() break; 
                case  1:LCD_DIG2_DisP_1() break; 
                case  2:LCD_DIG2_DisP_2() break; 
                case  3:LCD_DIG2_DisP_3() break; 
                case  4:LCD_DIG2_DisP_4() break; 
                case  5:LCD_DIG2_DisP_5() break; 
                case  6:LCD_DIG2_DisP_6() break; 
                case  7:LCD_DIG2_DisP_7() break; 
                case  8:LCD_DIG2_DisP_8() break; 
                case  9:LCD_DIG2_DisP_9() break; 
                default:break; 
        } 
} 
 
…… 
 
调用直接Disp_Dig1(1);Disp_Dig1(2);等等。。 
 
不过如果大量的话,这样很麻烦。如何从C语言本身上简化? 
 
另外,先说明,LCD的段位不是对称的,专门做成底层类似数码管SEG全在同一位置那样驱动也不行。在单纯的C语言上能简化吗?先不要从LCD上想办法。 
 
 |   
     
  
 |