找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
电路图见附件  新人刚接触单片机 在网上找的资料都跟这个代码嵌套不进去 求大神帮助
代码如下
#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 (108.68 KB, 下载次数: 16)

1651484597(1).png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2022-5-2 18:59 | 只看该作者
这是很简单的事判断第一位显示到9则控制第二位开始
回复

使用道具 举报

板凳
ID:332444 发表于 2022-5-2 20:34 | 只看该作者
待审核通过到我帖子里面有刚写好荔枝
回复

使用道具 举报

地板
ID:1012627 发表于 2022-5-2 23:21 来自手机 | 只看该作者
要给定时器装入一个初值,循环多少次是1s,搜一下就有了
回复

使用道具 举报

5#
ID:278457 发表于 2022-5-3 02:27 | 只看该作者
你的数码管的数组表呢?先去学一下教程!你一点基础都没有啊
回复

使用道具 举报

6#
ID:332444 发表于 2022-5-3 07:12 | 只看该作者
回复

使用道具 举报

7#
ID:979299 发表于 2022-5-3 11:53 | 只看该作者
你的数码管的数组表呢?先去学一下教程!你一点基础都没有啊

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

使用道具 举报

8#
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;
                }
        }
                       
                
}
回复

使用道具 举报

9#
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 单片机教程网

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