您的当前位置:首页正文

51单片机数码管0到F动态显示

来源:华拓网
#include

#define uchar unsigned char

#define uint unsigned int

sbit du=P2^6;

sbit we=P2^7;

uchar num;

uchar code

table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delays(uint);

void main()

{

we=1;//打开U2锁存器

P0=0xc0;//送入位选信号

we=0;

while(1)

{

du=1;

P0=table[0];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfe;

we=0;

delays(500);

du=1;

P0=table[1];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfd;

we=0;

delays(500);

du=1;

P0=table[2];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfb;

we=0;

delays(500);

du=1;

P0=table[3];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xf7;

we=0;

delays(500);

du=1;

P0=table[4];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xef;

we=0;

delays(500);

du=1;

P0=table[5];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xdf;

we=0;

delays(500);

du=1;

P0=table[6];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfe;

we=0;

delays(500);

du=1;

P0=table[7];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选

锁存器造成混乱

we=1;

P0=0xfd;

we=0;

delays(500);

du=1;

P0=table[8];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfb;

we=0;

delays(500);

du=1;

P0=table[9];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xf7;

we=0;

delays(500);

du=1;

P0=table[10];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xef;

we=0;

delays(500);

du=1;

P0=table[11];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xdf;

we=0;

delays(500);

du=1;

P0=table[12];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfe;

we=0;

delays(500);

du=1;

P0=table[13];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfd;

we=0;

delays(500);

du=1;

P0=table[14];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xfb;

we=0;

delays(500);

du=1;

P0=table[15];

du=0;

P0=0xff;//送位选数据前关闭所有显示,防止打开位选锁存时原来段选数据通过位选锁存器造成混乱

we=1;

P0=0xf7;

we=0;

delays(500);

}

}

void delays(uint xs)

{

uint i,j;

for(i=xs;i>0;i--)

for(j=110;j>0;j--);//延时x秒

}

因篇幅问题不能全部显示,请点此查看更多更全内容