标题: 数码管如何高位灭0啊? [打印本页]

作者: 信仰b    时间: 2016-4-3 20:24
标题: 数码管如何高位灭0啊?
最近在啃51里的程序,用中断写了数码管的动态显示程序,但显示1它会显示000001,请问前辈们如何做到高位灭0,大概思路是检查最高位,为0则输出高电平并检查下一个高位以此下去,但程序不会写的(c语言)
作者: lern01    时间: 2017-10-8 15:32
                for(j=5; j>=1; j--)
                {
                        if(buf[j])
                                break;       
                        else
                                LedBuff[j] = 0xFF;
                }
                for(; j>=0; j--)
                        LedBuff[j] = LedChar[buf[j]];

作者: lern01    时间: 2017-10-8 15:32
                for(j=5; j>=1; j--)                 {                         if(buf[j])                                 break;                                 else                                 LedBuff[j] = 0xFF;                 }                 for(; j>=0; j--)                         LedBuff[j] = LedChar[buf[j]];        
作者: 依然是你    时间: 2017-10-8 16:09
LED_Disp_Buf[0]=(long)Weight_Shi%1000000/100000;
                                                if(LED_Disp_Buf[0]==0x00) {LED_Disp_Buf[0]=10;}
                                                LED_Disp_Buf[1]=(long)Weight_Shi%100000/10000;
                                                if((LED_Disp_Buf[0]==10)&&(LED_Disp_Buf[1]==0)) {LED_Disp_Buf[1]=10;}
                                                LED_Disp_Buf[2]=(long)Weight_Shi%10000/1000;
                                                if((LED_Disp_Buf[1]==10)&&(LED_Disp_Buf[2]==0)) {LED_Disp_Buf[2]=10;}
                                                LED_Disp_Buf[3]=(long)Weight_Shi%1000/100;
                                                if((LED_Disp_Buf[2]==10)&&(LED_Disp_Buf[3]==0)) {LED_Disp_Buf[3]=10;}
                                                LED_Disp_Buf[4]=(long)Weight_Shi%100/10;
                                                if((LED_Disp_Buf[3]==10)&&(LED_Disp_Buf[4]==0)) {LED_Disp_Buf[4]=10;}
                                                LED_Disp_Buf[5]=(long)Weight_Shi%10;
作者: zxv024    时间: 2017-10-8 16:14
不是很明白你的意思,是不是输出0xff时,数码管不显示。
作者: zl2168    时间: 2017-10-9 15:49
先从最高位开始,检测到0就暗显示。然后,若上一位0暗显示了,本位检测到0就再暗显示,直至末位。若上一位未0暗显示,就不需检测后位0暗显示了。
作者: 个驱蚊扣给    时间: 2017-10-9 16:26
void sc(uchar bai, uchar shi, uchar ge)
{
        bai = tmp/100;
        shi = tmp%100/10;
        ge = tmp%10;
        if(tmp ==0)
                while(1)
                {
                P22 = 0;
                P23 = 0;
                P15 = 0;
                        if(tmp != 0)
                                break;
                }
        Number(ge);
        P22 = 0;
        P23 = 0;
        P15 = 1;
        Delay_ms(10);
                P22 = 0;
                P23 = 0;
                P15 = 0;
               
        Number(shi);
        P22 = 0;
        P23 = 1;
        P15 = 0;
        Delay_ms(10);
                P22 = 0;
                P23 = 0;
                P15 = 0;
       
        Number(bai);
        P23 = 0;
        P22 = 1;
        P15 = 0;
        Delay_ms(10);
                P22 = 0;
                P23 = 0;
                P15 = 0;
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1