我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 105|回复: 8

[技术讨论] 51驱动四个数码管,如何做到开始显示***0,然后递增,目前只能0000开始的递增

[复制链接]
  • TA的每日心情
    开心
    昨天 08:55
  • 签到天数: 77 天

    [LV.6]常住居民II

    7

    主题

    790

    回帖

    901

    积分

    二级逆天

    积分
    901

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2024-7-11 09:13:20 | 显示全部楼层 |阅读模式


    #include <reg51.h>


    #include <intrins.h>    //延时需要的头文件
    void Delay1000ms(void)        //@12.000MHz延时函数
    {
            unsigned char data i, j, k;

            _nop_();
            i = 8;
            j = 154;
            k = 122;
            do
            {
                    do
                    {
                            while (--k);
                    } while (--j);
            } while (--i);
    }


    int a,b,c;              
    int shi=0,bai=0,qian=0;     //十位、百位、千位默认显示数组的第一个元素0,    /*如果把第一个元素换成0XFF不显示,那进位后原本显示0的就不显示了,这里没找到好办法*/
    int G[10] = {0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//定义的数组显示0-9,10个数,


    void main()
    {
            for(a=0; a<=9; a++)
               {
                            for(b=0; b<=9; b++)
                         {               
                                             for(c=0; c<=9; c++)
                                                {       
                                                             P3 = G[c];
                                                             P2 = G[shi];
                                                             P1 = G[bai];
                                                             P0 = G[qian];
                                                              Delay1000ms();
                                                             }
                                             shi++;            //个位显示一轮后十位+1显示
                                             if(shi == 10)     //判断十位是否加到9了,如果是则清零
                                                     {
                                                      shi = 0;
                                                     }
                                            }         
                                            bai++;             //十位显示一轮后百位+1显示
                                            if(bai == 10)      //判断百位是否加到9了,如果是则清零
                                                    {
                                                     bai = 0;
                                                    }
               }
               qian++;                 //百位显示一轮后千位+1显示
               if(qian == 10)          //判断千位是否加到9了,如果是则清零
                       {
                              qian = 0;
                       }
    }

    显示效果


    这是程序选择的显示0000-9999,不希望上电就显示0000,应该上电显示个位0,其余不显示然后每秒递增
    朋友们请问如何做到***0~**10~*100-1000~9999,*表示还没有进位的就不显示。。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:55
  • 签到天数: 77 天

    [LV.6]常住居民II

    7

    主题

    790

    回帖

    901

    积分

    二级逆天

    积分
    901

    终身成就奖特殊贡献奖原创先锋奖

     楼主| 发表于 2024-7-11 09:16:29 | 显示全部楼层
    占个楼,如果在数组里添加0XFF,那么进位时如何避免显示到这个0XFF呢
    重新建一个数组的话,什么时机来显示这个呢
    回复

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 99 天

    [LV.6]常住居民II

    2

    主题

    8524

    回帖

    9833

    积分

    二级逆天

    积分
    9833

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2024-7-15 08:13:25 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 99 天

    [LV.6]常住居民II

    2

    主题

    8524

    回帖

    9833

    积分

    二级逆天

    积分
    9833

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2024-7-15 08:13:30 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 99 天

    [LV.6]常住居民II

    2

    主题

    8524

    回帖

    9833

    积分

    二级逆天

    积分
    9833

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2024-7-15 08:13:35 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 99 天

    [LV.6]常住居民II

    2

    主题

    8524

    回帖

    9833

    积分

    二级逆天

    积分
    9833

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2024-7-29 08:18:53 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 99 天

    [LV.6]常住居民II

    2

    主题

    8524

    回帖

    9833

    积分

    二级逆天

    积分
    9833

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2024-7-29 08:18:58 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    半小时前
  • 签到天数: 99 天

    [LV.6]常住居民II

    2

    主题

    8524

    回帖

    9833

    积分

    二级逆天

    积分
    9833

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2024-7-29 08:19:05 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    119

    回帖

    40

    积分

    一级逆天

    积分
    40

    终身成就奖

    发表于 6 天前 | 显示全部楼层
    //从最高为开始,遇到0不显示,遇到非0退出循环
                for (j=3; j>=1; j--)
                {
                    if (buf[j] == 0)
                        LedBuff[j] = 0xFF;
                    else
                        break;
                }
                //将剩余的有效数字位如实转换
                for ( ; j>=0; j--)  //for()起始未对j操作,j即保持上个循环结束时的值
                {
                    LedBuff[j] = LedChar[buf[j]];
                }

    网上找的,供参考
    回复

    使用道具 举报

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

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表