#include "reg51.h"
#include <intrins.h>
typedef unsigned char u8;
typedef double u16;
sbit SRCLK= P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
u8 code ledwei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 code ledduan1[]={0x02,0x22,0x22,0xAA,0xAF,0xAA,0xAA,0xFA,0xAA,0xAA,0xAF,0xAA,0x22,0x22,0x02,0x00,
0x80,0x80,0xA0,0xAF,0xAA,0xAA,0xAA,0xFF,0xAA,0xAA,0xAA,0xAF,0xA0,0x80,0x80,0x00};
u8 code ledduan2[]={0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFC,0x04,0x04,0x04,0x04,0x04,0xFC,0x00,0x00,
0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00};
void delay(u16 j)
{
while(j--);
}
void hc595(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{ u8 i;
//SRCLK=1;
//RCLK=1;
for(i=0;i<8;i++)
{ SER=dat1>>7;
dat1 <<=1;
SRCLK=0;
_nop_();
_nop_();
SRCLK=1;
}
for(i=0;i<8;i++)
{ SER=dat2>>7;
dat2 <<=1;
SRCLK=0;
_nop_();
_nop_();
SRCLK=1;
}
for(i=0;i<8;i++)
{ SER=dat3>>7;
dat3 <<=1;
SRCLK=0;
_nop_();
_nop_();
SRCLK=1;
}
for(i=0;i<8;i++)
{ SER=dat4>>7;
dat4 <<=1;
SRCLK=0;
_nop_();
_nop_();
SRCLK=1;
}
RCLK=0;
_nop_();
_nop_();
RCLK=1;
}
void main()
{ u8 k,l;
while(1)
{
for(k=0;k<16;k++)
{
hc595(~ledwei[k+16],~ledwei[k],ledduan1[k+16],ledduan1[k]);
delay(10);
}
for(l=0;l<16;l++)
{ hc595(~ledwei[l+16],~ledwei[l],ledduan2[l+16],ledduan2[l]);
delay(10);
}
}
}
|