求一个led程序单排16个灯的接p0,p2口 旋转屏的

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 03:00:19
求一个led程序单排16个灯的接p0,p2口 旋转屏的

求一个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);

  } 

 }

}