找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6658|回复: 6
打印 上一主题 下一主题
收起左侧

数码管如何高位灭0啊?

[复制链接]
跳转到指定楼层
楼主
ID:112090 发表于 2016-4-3 20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在啃51里的程序,用中断写了数码管的动态显示程序,但显示1它会显示000001,请问前辈们如何做到高位灭0,大概思路是检查最高位,为0则输出高电平并检查下一个高位以此下去,但程序不会写的(c语言)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:160658 发表于 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]];
回复

使用道具 举报

板凳
ID:160658 发表于 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]];        
回复

使用道具 举报

地板
ID:170270 发表于 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;
回复

使用道具 举报

5#
ID:237812 发表于 2017-10-8 16:14 | 只看该作者
不是很明白你的意思,是不是输出0xff时,数码管不显示。
回复

使用道具 举报

6#
ID:111634 发表于 2017-10-9 15:49 | 只看该作者
先从最高位开始,检测到0就暗显示。然后,若上一位0暗显示了,本位检测到0就再暗显示,直至末位。若上一位未0暗显示,就不需检测后位0暗显示了。
回复

使用道具 举报

7#
ID:238046 发表于 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;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表