如何简化C程序

[复制链接]
1501|3
 楼主| qhtflsw 发表于 2016-6-23 13:38 | 显示全部楼层 |阅读模式
例: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上想办法。

cuya 发表于 2016-6-23 23:09 | 显示全部楼层
另外,先说明,LCD的段位不是对称的,专门做成底层类似数码管SEG全在同一位置那样驱动也不行。在单纯的C语言上能简化吗?先不要从LCD上想办法。


你最好是把显示做成一个驱动,没有不行的道理。
void display(char, char)

不能做成一个驱动, 4个驱动函数也行:
void Display1(char)
void Display2(char)
...
void Display4(char)
xwj 发表于 2016-6-25 12:36 | 显示全部楼层
呵呵,楼主不会用数组、循环吗?

不要直接否定哦,说不行那时因为你没有开动脑筋去归纳、汇总。
muou009 发表于 2016-7-26 22:35 | 显示全部楼层
可以写一个函数一个seg一个seg那样扫的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

168

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部