找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 1852 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-5-2 17:46

正文摘要:

电路图见附件  新人刚接触单片机 在网上找的资料都跟这个代码嵌套不进去 求大神帮助 代码如下 #include "reg51.h" #define uchar unsigned char #define uint unsigned int #define out &nb ...

回复

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. }
复制代码
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:979299 发表于 2022-5-3 11:53
你的数码管的数组表呢?先去学一下教程!你一点基础都没有啊

这个不用数组,你说奇怪不
ID:332444 发表于 2022-5-3 07:12
ID:278457 发表于 2022-5-3 02:27
你的数码管的数组表呢?先去学一下教程!你一点基础都没有啊
ID:1012627 发表于 2022-5-2 23:21
要给定时器装入一个初值,循环多少次是1s,搜一下就有了
ID:332444 发表于 2022-5-2 20:34
待审核通过到我帖子里面有刚写好荔枝
ID:332444 发表于 2022-5-2 18:59
这是很简单的事判断第一位显示到9则控制第二位开始

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

Powered by 单片机教程网

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