找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1496|回复: 8
收起左侧

怎么让单片机数码管实现第一位开始走0~9,1s后第二位再开始亮?

[复制链接]
ID:1023177 发表于 2022-5-2 17:46 | 显示全部楼层 |阅读模式
电路图见附件  新人刚接触单片机 在网上找的资料都跟这个代码嵌套不进去 求大神帮助
代码如下
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define out  P0
sbit sm1=P3^0;
sbit sm2=P3^1;
void delayms(uint);


void main(void)
{
uchar i;
while(1)
        {
        for(i=0;i<10;i++)
                {out=i;
                 sm1=1;
                 sm2=1;
                 delayms(800);
                }
               
        }


}


void delayms(uint j)
{
uchar i;
for(;j>0;j--)
          {i=250;
            while(--i);
            i=249;
            while(--i);
           }
}

1651484597(1).png
回复

使用道具 举报

ID:332444 发表于 2022-5-2 18:59 | 显示全部楼层
这是很简单的事判断第一位显示到9则控制第二位开始
回复

使用道具 举报

ID:332444 发表于 2022-5-2 20:34 | 显示全部楼层
待审核通过到我帖子里面有刚写好荔枝
回复

使用道具 举报

ID:1012627 发表于 2022-5-2 23:21 来自触屏版 | 显示全部楼层
要给定时器装入一个初值,循环多少次是1s,搜一下就有了
回复

使用道具 举报

ID:278457 发表于 2022-5-3 02:27 | 显示全部楼层
你的数码管的数组表呢?先去学一下教程!你一点基础都没有啊
回复

使用道具 举报

ID:332444 发表于 2022-5-3 07:12 | 显示全部楼层
回复

使用道具 举报

ID:979299 发表于 2022-5-3 11:53 | 显示全部楼层
你的数码管的数组表呢?先去学一下教程!你一点基础都没有啊

这个不用数组,你说奇怪不
回复

使用道具 举报

ID:979299 发表于 2022-5-3 15:35 | 显示全部楼层
其他都不用动,就在主函数里面复制一份改一下
void main(void)
{
        uchar i;
        while(1)
    {
        for(i=0;i<10;i++)
        {
                        out=i;
            delayms(800);
                        sm1=0;                                 
                        sm2=1;
                }
               
                 for(i=0;i<10;i++)
        {
                        out=i;
            delayms(800);
                        sm1=1;                                 
                        sm2=0;
                }
        }
                       
                
}
回复

使用道具 举报

ID:213173 发表于 2022-5-4 09:47 | 显示全部楼层
第一位开始走0~9,10s第二位才开始亮。
  1. #include "reg51.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define out  P0
  5. sbit sm1=P3^0;
  6. sbit sm2=P3^1;
  7. void delayms(uint);


  8. void main(void)
  9. {
  10.         uchar i,j;
  11.         bit k;
  12.         while(1)
  13.         {
  14.                 if(++i>=200)
  15.                 {
  16.                         i=0;
  17.                         j=++j%100;
  18.                 }
  19.                 sm1=0;
  20.                 sm2=0;
  21.                 if(k)
  22.                 {
  23.                         out=j/10;
  24.                         if(j<10)sm1=0;
  25.                         else sm1=1;
  26.                 }
  27.                 else
  28.                 {
  29.                         out=j%10;
  30.                         sm2=1;
  31.                 }
  32.                 k=~k;
  33.                 delayms(5);
  34.         }
  35. }


  36. void delayms(uint j)
  37. {
  38.         uchar i;
  39.         for(;j>0;j--)
  40.         {i=250;
  41.                 while(--i);
  42.                 i=249;
  43.                 while(--i);
  44.         }
  45. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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