基础的LED灯和数码管同时点亮的问题

2019-03-24 19:17发布

如题,我在练习的时候遇到了一个可能比较基本的问题:不通过定时器,只写一个delay函数来实现LED灯的闪烁和数码管的点亮。 我自己用这种方式写的(8个LED闪烁,点亮2个数码管),无法实现上述功能。LED能闪烁,但是两位数码管中的第一位不能稳定显示,第一位数码管是在闪烁,和LED灯的闪烁频率差不多一致。如果只点亮一个数码管,在下面的程序中删掉一个点亮数码管的程序后,剩下的1个数码管能够正常点亮(不闪烁),如果增加点亮数码管的数量至6个,前5个数码管是闪烁着显示的,频率与LED灯差不多,最后一个数码管正常显示。 我想问问产生这种现象的原因是什么,还有如何只用一个delay函数,不用定时器,来完成这样的功能。    #include<reg52.h> sbit dula=P2^6; sbit wela=P2^7;   void delay(unsigned int z) //延时程序 { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }    void main() { P1=0x00; while(1)  { dula=1; P0=0x3f; dula=0; P0=0xff;       //点亮第一个数码管,显示0 wela=1; P0=0xfe;  wela=0; delay(1);   dula=1; P0=0x3f;  dula=0; P0=0xff; wela=1;             //点亮第二个数码管,显示0 P0=0xfd; wela=0; delay(1);   delay(100);       //LED灯闪烁 P1=~P1;  }  } 用的是共阴极数码管,郭天祥教程的板子。我自己分析了这个程序,按理说应该两个数码管都是闪烁的状态,但是板子上的结果是第一个闪烁,第二个稳定显示..... [ 本帖最后由 qrswll 于 2012-4-8 16:40 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。