8个数码管动态显示高位为0时怎么清除?

2020-02-08 09:13发布

显示有8个数码管 比如现在 显示的是 12345678  但是如果是 显示 00000001的话 我只需要他显示 一个 1  其他的 0 就全部熄灭
  如果是  00000010 的话  我只要他显示  10 其他的 0 也全部熄灭   

请求 这种算法 怎么实现  ?   谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
not_at_all
2020-02-09 13:55
4楼  jj3055  给的程序处理方式太麻烦了

void LED_del_0(void)
{
unsigned char a,b,c;
a=(LED_data[4]+LED_data[3]);
b=(LED_data[4]+LED_data[3]+LED_data[2]);
c=(LED_data[4]+LED_data[3]+LED_data[2]+LED_data[1]);
CLI();
if(LED_data[4]==0) LED_data[4]=10;
if(a==0) LED_data[3]=10;
if(b==0) LED_data[2]=10;
if(c==0) LED_data[1]=10;
SEI();
}
用下面的精简一点,无论多少个数位,几句话就搞定
void LED_del_0(void)
{
unsigned char n;
for(n=4;n>1;n--)    //显示5位数,从高位开始判断,最低位的0不管
{
   if(LED_data[n]==0)  LED_data[n]=10;   //不知道上面的10代表什么,反正LED不显示就是了
   else                        break;       遇到大于0的,退出循环
}

一周热门 更多>