求一个led程序单排16个灯的接p0,p2口 旋转屏的
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/02 06:04:47
求一个led程序单排16个灯的接p0,p2口 旋转屏的
求一个led程序单排16个灯的接p0,p2口 旋转屏的
求一个led程序单排16个灯的接p0,p2口 旋转屏的
你是想做旋转时钟的吗?我这两天刚写的一个!我也是新手!图片是我自己在宿舍做的旋转LED!
可能程序写的不是太好!你大概的看看吧!
旋转的速度大小问题,你可以改变延时来控制数字处于正中间!
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int //宏定义
uchar code Data_0[]=
{
//0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0xF8,0x1F,0x0C,0x30,0x04,0x20,
0x04,0x20,0x04,0x20,0x0C,0x30,0xF8,0x1F,0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_1[]=
{ //1
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0xF8,0x3F,
0xFC,0x3F,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_2[]=
{
//2
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x20,0x38,0x30,0x0C,0x38,0x04,0x2C,
0x04,0x26,0x0C,0x23,0xF8,0x21,0xF0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_3[]=
{
//3
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x18,0x18,0x0C,0x30,0x84,0x20,
0x84,0x20,0xCC,0x31,0x78,0x1F,0x30,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_4[]=
{
//4
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x80,0x07,0xC0,0x05,0x70,0x04,0x18,0x24,
0xFC,0x3F,0xFE,0x3F,0x00,0x24,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_5[]=
{
//5
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x08,0xFC,0x18,0xC4,0x30,0x44,0x20,
0x44,0x20,0xC4,0x30,0x84,0x1F,0x04,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_6[]=
{
//6
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0xF8,0x1F,0x8C,0x30,0x44,0x20,
0x44,0x20,0xCC,0x30,0x98,0x1F,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_7[]=
{
//7
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x0C,0x00,0x0C,0x3C,0x0C,0x3F,
0xCC,0x03,0xEC,0x00,0x3C,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_8[]=
{
//8
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0E,0x78,0x1F,0xCC,0x31,0x84,0x20,
0x84,0x20,0xCC,0x31,0x78,0x1F,0x30,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_9[]=
{
//9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x08,0xF8,0x19,0x0C,0x33,0x04,0x22,
0x04,0x22,0x0C,0x33,0xF8,0x1F,0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar code Data_A[]=
{
//:
0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uint a;
uchar i;
uchar tt,shi,fen,miao;
uchar shi1,shi2;
uchar fen1;fen2;
uchar miao1,miao2;
uchar iflag,idexflag;
void DelayUs(uint N)
{
uint x;
for(x=0; x<=N;x++);
}
void init()
{
shi=20;
fen=9;
miao=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timeshow(uchar m);
void miaoshow();
void fenshow();
void shishow();
void Ashow();
void main()
{
init();
while(1)
{
;
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
iflag++;
if(iflag==1)
{
iflag=0;
shishow();
Ashow();
fenshow();
Ashow();
miaoshow();
DelayUs(4000);
}
if(tt==15)
{
tt=0;
miao++;
if(miao>=60)
{
miao=0;
fen++;
if(fen>=60)
{
fen=0;
shi++;
if(shi>=24)
{
shi=0;
}
}
}
}
}
void Ashow()
{
timeshow(10);
}
void shishow()
{
uchar m,n;
m=shi/10;
n=shi%10;
timeshow(m);
timeshow(n);
}
void fenshow()
{
uchar m,n;
m=fen/10;
n=fen%10;
timeshow(m);
timeshow(n);
}
void miaoshow()
{
uchar m,n;
m=miao/10;
n=miao%10;
timeshow(m);
timeshow(n);
}
void timeshow(uchar m)
{
if(m==0)
{
for(i=0;i<16;i++)
{
P0=~Data_0[i*2];
P2=~Data_0[i*2+1];
DelayUs(20);
}
}
if(m==1)
{
for(i=0;i<16;i++)
{
P0=~Data_1[i*2];
P2=~Data_1[i*2+1];
DelayUs(20);
}
}
if(m==2)
{
for(i=0;i<16;i++)
{
P0=~Data_2[i*2];
P2=~Data_2[i*2+1];
DelayUs(20);
}
}
if(m==3)
{
for(i=0;i<16;i++)
{
P0=~Data_3[i*2];
P2=~Data_3[i*2+1];
DelayUs(20);
}
}
if(m==4)
{
for(i=0;i<16;i++)
{
P0=~Data_4[i*2];
P2=~Data_4[i*2+1];
DelayUs(20);
}
}
if(m==5)
{
for(i=0;i<16;i++)
{
P0=~Data_5[i*2];
P2=~Data_5[i*2+1];
DelayUs(20);
}
}
if(m==6)
{
for(i=0;i<16;i++)
{
P0=~Data_6[i*2];
P2=~Data_6[i*2+1];
DelayUs(20);
}
}
if(m==7)
{
for(i=0;i<16;i++)
{
P0=~Data_7[i*2];
P2=~Data_7[i*2+1];
DelayUs(20);
}
}
if(m==8)
{
for(i=0;i<16;i++)
{
P0=~Data_8[i*2];
P2=~Data_8[i*2+1];
DelayUs(20);
}
}
if(m==9)
{
for(i=0;i<16;i++)
{
P0=~Data_9[i*2];
P2=~Data_9[i*2+1];
DelayUs(20);
}
}
if(m==10)
{
for(i=0;i<16;i++)
{
P0=~Data_A[i*2];
P2=~Data_A[i*2+1];
DelayUs(20);
}
}
}