/*數(shù)碼管動態(tài)顯示,延時0.5s數(shù)碼管1到8顯示一個口形流水燈,跑4圈,停下顯示口,如此循環(huán)。
程序在實驗板上通過。
*/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uint aa;
uchar z;
void delayms(uint xms)
{
uint i;
uchar j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
while(1)
{
for(z=0;z<4;z++)
{
dula=1; //1
P0=0x01; //送段選數(shù)據(jù)
dula=0;
P0=0xff; //送位選數(shù)據(jù)前關閉所有顯示,防止打開位選鎖存器時
wela=1; //原來段選數(shù)據(jù)通過位選鎖存器造成混亂
P0=0xfe; //送位選數(shù)據(jù)
wela=0;
delayms(500); //延時
dula=1; //2
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(500);
dula=1; //3
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(500);
dula=1; //4
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(500);
dula=1; //5
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(500);
dula=1; //6
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(500);
dula=1; //7
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xbf;
wela=0;
delayms(500);
dula=1; //8
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(500);
dula=1;
P0=0x02;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(500);
dula=1;
P0=0x04;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(500);
dula=1;
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(500);
dula=1; //7
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xbf;
wela=0;
delayms(500);
dula=1; //6
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(500);
dula=1; //5
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(500);
dula=1; //4
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(500);
dula=1; //3
P0=0x8;
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(500);
dula=1; //2
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(500);
dula=1; //1
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(500);
dula=1; //1
P0=0x10;
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(500);
dula=1; //1
P0=0x20;
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(500);
}
for(aa=0;aa<200;aa++)
{
dula=1; //1
P0=0x01; //送段選數(shù)據(jù)
dula=0;
P0=0xff; //送位選數(shù)據(jù)前關閉所有顯示,防止打開位選鎖存器時
wela=1; //原來段選數(shù)據(jù)通過位選鎖存器造成混亂
P0=0xfe; //送位選數(shù)據(jù)
wela=0;
delayms(5); //延時
dula=1; //2
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(5);
dula=1; //3
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(5);
dula=1; //4
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(5);
dula=1; //5
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(5);
dula=1; //6
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(5);
dula=1; //7
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0xbf;
wela=0;
delayms(5);
dula=1; //8
P0=0x01;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(5);
dula=1;
P0=0x02;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(5);
dula=1;
P0=0x04;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(5);
dula=1;
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0x7f;
wela=0;
delayms(5);
dula=1; //7
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xbf;
wela=0;
delayms(5);
dula=1; //6
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delayms(5);
dula=1; //5
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delayms(5);
dula=1; //4
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delayms(5);
dula=1; //3
P0=0x8;
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(5);
dula=1; //2
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delayms(5);
dula=1; //1
P0=0x08;
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(5);
dula=1; //1
P0=0x10;
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(5);
dula=1; //1
P0=0x20;
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delayms(5);
}
}
}
|