普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3892|回复: 1

数码管的显示问题

 关闭 [复制链接]

1

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2017-10-19 20:28:14 | 显示全部楼层 |阅读模式
  #include <reg51.h>
  #include <intrins.h>
  #define wei P2
  #define xian P0
  typedef unsigned int u1;
   typedef unsigned int u2;
    u1 code leds[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
   void delay (u1 i)//延迟函数
   {
while (i--);
   }
   void dong () //数码管显示0-7
   {
u1 i;
  
for (i=0;i<8;i++)
{
switch (i)
{ case (0):wei=0x00;break;
      case (1):wei=0x01;break;
  case (2):wei=0x02;break;
  case (3):wei=0x03;break;
     case (4):wei=0x04;break;
  case (5):wei=0x05;break;
     case (6):wei=0x06;break;
    case (7):wei=0x07;break;
}
    xian=leds[i];
    delay (10000) ;
    xian=0x00;
}
}
void xia () //数码管显示7-0
  {
   u1 k;
for (k=7;k>=0;k--)
{
switch (k)
{ case (0):wei=0x00;break;
      case (1):wei=0x01;break;
  case (2):wei=0x02;break;
  case (3):wei=0x03;break;
     case (4):wei=0x04;break;
  case (5):wei=0x05;break;
     case (6):wei=0x06;break;
    case (7):wei=0x07;break;
}
    xian=leds[k];
    delay (10000);
    xian=0x00;
    }
}
   
  void main ()
  {
      u2 i ;
  for (i=0;i<12;i++)
  {
  dong();
  xia ();
  }
  }//为啥不能连续显示、0-7然后再显示7-0 第二次不能显示了 ,为甚吗?

回复

使用道具 举报

8

主题

76

帖子

295

积分

中级会员

Rank: 3Rank: 3

积分
295
发表于 2017-10-19 21:37:49 | 显示全部楼层
你把unsigen int 宏定义成u1和u2不会报警吗?你最好还是定义成u8,u16,u32什么的,因为后面学32的时候,库函数已经帮你定义好了这几个宏,你都不用定义了直接u32,u16的写了。不过你这个位选的处理做的还不错,我特么还每次都用LA,LB,LC定义三个管脚。至于你这个不能循环显示的原因是主函数里面你没有把显示程序放在while循环里面,你改改看。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-27 09:14 , Processed in 0.083815 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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