#include<reg51.h>
#include<intrins.h>
#define saomiao P1
sbit DS=P3^0;
sbit CLK=P3^1;
sbit ST=P3^2;
sbit OE=P3^3;
delay(int);
void WR_74HC595(unsigned char);
void OUT_74HC595(void);
int repeat=30;
char code seg[]={
{0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x03,0xE0,0x7F,0xFF,0x7F,0xFF,0x00,0x80,0x7F,0xFF,
0x7F,0xFF,0x77,0xFF,0x77,0xE0,0x77,0xFF,0x77,0xFF,0x6B,0xFF,0x1D,0x80,0xFE,0xFF},
{0xFF,0xF6,0xFB,0xF6,0xF7,0xF6,0x37,0xC0,0xFF,0xF6,0xFF,0xF6,0xF0,0xF6,0x17,0x80,
0xF7,0xF6,0xF7,0xF6,0x77,0xF7,0x77,0xF7,0xB7,0xF7,0xEB,0xFF,0x1D,0x80,0xFF,0xFF},
{0xFB,0xFF,0x7B,0xC0,0xFB,0xEF,0xC0,0xF7,0xFD,0xF3,0xF5,0xED,0xF6,0xDE,0x00,0xBF,
0xF7,0xFF,0x77,0xC0,0xC7,0xFB,0xF0,0xFB,0xF5,0xFB,0xF7,0xFB,0x37,0x80,0xF7,0xFF},
{0xFF,0xFF,0xFF,0xFF,0x01,0xC0,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,
0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x00,0x80,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFB,0xFF,0x17,0x80,0xF7,0xFE,0xFF,0xFE,0xFF,0xC0,0xF0,0xDE,0xF7,0xDE,
0xF7,0xDE,0x77,0xDF,0x77,0xDF,0xB7,0xEB,0xD7,0xF7,0xEB,0xFF,0x1D,0x80,0xFF,0xFF},
{0xBF,0xFF,0xDF,0xFF,0xEF,0xFF,0x01,0xC0,0xFD,0xDF,0xFD,0xDF,0x1D,0xDC,0xDD,0xDD,
0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0x1D,0xDC,0xDD,0xDD,0xFD,0xDF,0xFD,0xD7,0xFD,0xEF},
{0xFF,0xF5,0xFF,0xED,0xFF,0xFD,0x03,0x80,0xFB,0xFD,0xFB,0xFD,0xFB,0xDD,0x83,0xDD,
0xBB,0xDD,0xBB,0xEB,0xBB,0xEB,0xBB,0xB7,0xAB,0xB3,0xDD,0xAD,0xFD,0x9E,0x7E,0xBF},
{0xFF,0xFD,0xFF,0xFD,0xFF,0xFD,0x80,0xFD,0x77,0xC0,0xF7,0xDD,0xF7,0xDD,0xF7,0xDD,0xF7,
0xDD,0xF7,0xDE,0xF7,0xDE,0x87,0xDE,0x70,0xDF,0x7D,0xDF,0xBF,0xEB,0xDF,0xF7}
};
main()
{
int i;
int m;
int j;
OE=0;
while(1)
{
for(m=0;m<repeat;m++)
{for(i=0;i<16;i++)
{saomiao=i;
WR_595(seg[2*i+1+32*j]);
WR_595(seg[2*i+32*j]);
OUT_595();
delay(2);
WR_595(0xff);
WR_595(0xff);
OUT_595();
}
}
j++;
if(j==8)j=0;
}
}
delay(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void WR_74HC595(unsigned char a)
{unsigned char b,da;
for(b=0;b<8;b++)
{da=a&0x80;
if(da==0) DS=0;
if(da!=0) DS=1;
a<<=1;
CLK=0;
_nop_();
_nop_();
_nop_();
CLK=1;
}
}
void OUT_74HC595()
{ST=0;
_nop_();
_nop_();
_nop_();
ST=1;
}
|