* Processor: AT89C51
* Compiler: Keil for 8051
*/
#include <reg51.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit MOSIO=P0^0;
sbit R_CLK=P0^2;
sbit S_CLK=P0^1;
void HC595senddata(uchar BTO)
{
uchar i;
for(i=0;i<8;i++)
{
MOSIO=BTO>>7;
BTO<<=1;
S_CLK=0;
S_CLK=1;
}
R_CLK=0;
R_CLK=1;
R_CLK=0;
}
void delayms(unsigned int i)
{
unsigned char k;
while(i--)
for(k=0;k<120;k++);//120次空操作
}
void main(void)
{
unsigned char code led[]={0xff,0xe7,0xc7,0xe7,0xe7,0xe7,0xe7,//1
0xff,0x87,0xf3,0xc7,0x9f,0x9f,0x9f,//2
0xff,0x87,0xf3,0xc7,0xf3,0xf3,0xf3,//3
0xff,0xf3,0xe3,0xd3,0xb3,0xf3,0xf3,//4
0xff,0x87,0xbf,0x87,0xf3,0xf3,0x87};//5
unsigned char w,i,j,k,m;
while(1)
{
for(k=0;k<32;k++)//K循环32次
{
for(m=0;m<100;m++)
{
m=0x01;
j=k;
for(i=0;i<8;i++)
{
P0=w;
HC595senddata(led[j]);
delayms(2);
HC595senddata(0xff);
w<<1;
j++;
if(j>31)j=j-32;
}
}
}
}
}
|