微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 数码管显示,亮的数码管却逐次增加,求探讨。

数码管显示,亮的数码管却逐次增加,求探讨。

时间:10-02 整理:3721RD 点击:

  1. /*******  digital tube*********/
  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #define uchar unsigned char

  5. sbit LE1 = P2^6;  //定义段选
  6. sbit LE2 = P2^7;  //定义位选

  7. uchar num[]={0x6d,0x5b,0x3f,0x06,0x4f,0x06,0x66};

  8. void delay()
  9. {
  10.         int j,k;
  11.         for(j=0;j<3;j++)
  12.         for(k=0;k<30000;k++);
  13. }

  14. int main()
  15. {
  16.         while(1)
  17.         {
  18.                 uchar i;
  19.                
  20.                 for(i=0;i<7;i++)
  21.                 {
  22. /******关门************/
  23.                         LE1=0;
  24.                         LE2=0;
  25. /********段选*******************/
  26.                         P0= num[i];
  27.                         
  28.                         LE1=1;
  29.                         LE1=0;
  30.         /*******位选*******/               
  31.                         P0=0xfe;
  32.       P0=_irol_ (P0,  7);     //如何只让 0 左移呢?
  33.                         
  34.                         LE2=1;
  35.                         LE2=0;
  36.                         
  37.                         delay();
  38.                 }
  39.         }
  40. }

复制代码

如上述代码,如何只让 0 左移 i  个位,其他的位置仍为 1?

我用这个 炮出来显示的数没有错,但是 亮 的数码管 却逐次增加了。
求 探讨

sorry,,,,第三十六行 为
      P0=_irol_ (P0,  i);
但是情况依旧如上所述

算了。没人回答我,我还是用数组吧

解决啦,哈哈哈哈哈哈哈,是因为int 和  char 的类型不同占用的地址位不一样的原因

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top