标题: 为什么在while循环前面直接对P1赋值数码管就不能正常显示呢这样temp=0xfe;P1=temp;... [打印本页]

作者: 挥挥手点点头    时间: 2016-1-25 13:28
标题: 为什么在while循环前面直接对P1赋值数码管就不能正常显示呢这样temp=0xfe;P1=temp;...
/*******************************************************************/
/*                                                         
利用动态扫描方法在六位数码管上显示出稳定的654321.
时钟频率为11.0592M
*/
/*********************************************************/
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={  
0x06,0x5b,0x4f,
0x66,0x6d,0x7d};
void delay(uint exs)
{
    uint x,y;
    for(x=exs;x>0;x--)
        for(y=110;y>0;y--);
}
void main()
{
    uint i,j;
    while(1)
    {
        uchar temp;
        j=5;
        P1=0xfe;
        P0=table[j];
        delay(1);
        P0=0x00;
        for(i=5;i>0;i--)
        {
          temp=_crol_(temp,1);
          P1=temp;
          P0=table[--j];
          delay(1);
          P0=0x00;
        }   



    }
}



作者: 暗光    时间: 2016-1-25 20:20
可能是太快了,你在while循环一次循环结束的时候加个延时,延时大约200ms或者更长,很可能一次的时间还没有显示够视觉停留的就执行下一个显示了
作者: init    时间: 2016-1-27 15:02
在while前给值得话,数码管就只会亮一次
作者: 四师哥    时间: 2016-1-27 20:42
你没给temp赋值,如果p1写在while前面,它就一直是0,所以p1=0,就不能正常显示了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1