C语言求助,这个函数能有简单点的写法吗?想蒙住了.  求指点.
目的是用在单片机数码管显示,高位清零,本来的代码能用,但是一个数如果是980,转换后是00000980,就想把高位是零的消掉.这是很笨的办法.所以请教高手能否简化写法.
uint32 定义为 无符号32位整数.


void BCDDataConversion(uint32 Bign)
{


    if (0<=Bign<10){//
    ledcache[7]= leddatacl[Bign%10];    
    ledcache[6]= 0x00;
    ledcache[5]= 0x00;
    ledcache[4]= 0x00;
    ledcache[3]= 0x00;
    ledcache[2]= 0x00;
    ledcache[1]= 0x00;
    ledcache[0]= 0x00;
    }
    else if (10<=Bign<100){
    ledcache[7]= leddatacl[Bign%10];    
    ledcache[6]= leddatacl[Bign/10%10];
    ledcache[5]= 0x00;
    ledcache[4]= 0x00;
    ledcache[3]= 0x00;
    ledcache[2]= 0x00;
    ledcache[1]= 0x00;
    ledcache[0]= 0x00;
    } else if (100<=Bign<1000){
    ledcache[7]= leddatacl[Bign%10];    
    ledcache[6]= leddatacl[Bign/10%10];
    ledcache[5]= leddatacl[Bign/100%10];
    ledcache[4]= 0x00;
    ledcache[3]= 0x00;
    ledcache[2]= 0x00;
    ledcache[1]= 0x00;
    ledcache[0]= 0x00;
    }else if (1000<=Bign<10000){
    ledcache[7]= leddatacl[Bign%10];        
    ledcache[6]= leddatacl[Bign/10%10];
    ledcache[5]= leddatacl[Bign/100%10];
    ledcache[4]= leddatacl[Bign/1000%10];
    ledcache[3]= 0x00;
    ledcache[2]= 0x00;
    ledcache[1]= 0x00;
    ledcache[0]= 0x00;
    }else if (10000<=Bign<100000){
    ledcache[7]= leddatacl[Bign%10];        
    ledcache[6]= leddatacl[Bign/10%10];
    ledcache[5]= leddatacl[Bign/100%10];
    ledcache[4]= leddatacl[Bign/1000%10];
    ledcache[3]= leddatacl[Bign/10000%10];
    ledcache[2]= 0x00;
    ledcache[1]= 0x00;
    ledcache[0]= 0x00;
    }else if (100000<=Bign<1000000){
    ledcache[7]= leddatacl[Bign%10];    
    ledcache[6]= leddatacl[Bign/10%10];
    ledcache[5]= leddatacl[Bign/100%10];
    ledcache[4]= leddatacl[Bign/1000%10];
    ledcache[3]= leddatacl[Bign/10000%10];
    ledcache[2]= leddatacl[Bign/100000%10];
    ledcache[1]= 0x00;
    ledcache[0]= 0x00;
    }else if (1000000<=Bign<10000000){
    ledcache[7]= leddatacl[Bign%10];    
    ledcache[6]= leddatacl[Bign/10%10];
    ledcache[5]= leddatacl[Bign/100%10];
    ledcache[4]= leddatacl[Bign/1000%10];
    ledcache[3]= leddatacl[Bign/10000%10];
    ledcache[2]= leddatacl[Bign/100000%10];
    ledcache[1]= leddatacl[Bign/1000000%10];
    ledcache[0]= leddatacl[Bign/10000000%10];
    ledcache[0]= 0x00;
    }else if (10000000<=Bign<100000000){
    ledcache[7]= leddatacl[Bign%10];        
    ledcache[6]= leddatacl[Bign/10%10];
    ledcache[5]= leddatacl[Bign/100%10];
    ledcache[4]= leddatacl[Bign/1000%10];
    ledcache[3]= leddatacl[Bign/10000%10];
    ledcache[2]= leddatacl[Bign/100000%10];
    ledcache[1]= leddatacl[Bign/1000000%10];
    ledcache[0]= leddatacl[Bign/10000000%10];
    }    
    else Bign=0;
}


这个函数能有简单点的写法吗?想蒙住了.  求指点.

补上开发板图片
IMG_20121107_004248_0.jpg
来自 科创茶话
2012-11-7 01:17:19
1楼
还真购烂的和我有得一拼  


你试试这样把判断机制写到刷显示哪  

a=1;

if  ( ledcache[i]==0)
{
a=0;
}
i++//i--
if(a==0)
{
刷显示
}


if(i>n)
{
a=1;
i=x;
}
折叠评论
加载评论中,请稍候...
折叠评论
nihao_x(作者)
2楼
回 1楼(hx) 的帖子
你说的办法我试过了, 我就是想在显示的时候简单处理,按照时序来.   数据最好是先就判断并处理好.
折叠评论
加载评论中,请稍候...
折叠评论
3楼
Re:C语言求助,这个函数能有简单点的写法吗?想蒙住了.&amp;nbsp;&amp;nbsp;求指点.
路过, 心有余而力不足.....
折叠评论
加载评论中,请稍候...
折叠评论
4楼
Re:C语言求助,这个函数能有简单点的写法吗?想蒙住了.求指点.
仅供参考,很久没碰过c语言了
void BCDDataConversion(uint32 Bign)
{
    int i=7;
    while(bign)
    {
        ledcache[i--]=bign%10;
        bign/=10;
    }
    while(i+1)
    {
        ledcache[i--]=0x00;
    }
}
折叠评论
加载评论中,请稍候...
折叠评论
5楼
Re:C语言求助,这个函数能有简单点的写法吗?想蒙住了.&amp;nbsp;&amp;nbsp;求指点.
先不说函数,你这显示屏我怎么看着像核弹用的?[s:257]
折叠评论
加载评论中,请稍候...
折叠评论
6楼
看来我也属于心有余而力不足的那类人了[s:271]....
折叠评论
加载评论中,请稍候...
折叠评论
2012-11-08 13:39:56
nihao_x(作者)
7楼
回 5楼(七叶枫) 的帖子
哈哈, 没那么恐怖咯,这个是车间环境监控显示的.  显示温度,  产品数量,时间,等
折叠评论
加载评论中,请稍候...
折叠评论
8楼
int fenli(int date  int *fl)  //date 要分离的数,*fl分离后的位置,开始位为data最低位
{
  int i;
  i=0;
  while(date)                //123
    {
        *fl=date%10;    //3        2    1
        date/=10;            //12    1    0
        fl++;    
        i++;            //1        2    3
    }
    return i;
}
我用的分离小于65535的数,分离后的数放到数组里,i是数组的有效位数
折叠评论
加载评论中,请稍候...
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png