//以下程序,是显示内容直接切换
#include<reg51.h>
#include<intrins.h>
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
#define LKZ P0
unsigned char code TAB[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char code XS[16][8]=
{
{0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00},//0
{0x00,0x00,0x21,0x7F,0x01,0x00,0x00,0x00},//1
{0x00,0x21,0x43,0x45,0x49,0x31,0x00,0x00},//2
{0x00,0x42,0x41,0x51,0x69,0x46,0x00,0x00},//3
{0x00,0x0C,0x14,0x24,0x7F,0x04,0x00,0x00},//4
{0x00,0x72,0x51,0x51,0x51,0x4E,0x00,0x00},//5
{0x00,0x1E,0x29,0x49,0x49,0x06,0x00,0x00},//6
{0x00,0x40,0x40,0x4F,0x50,0x60,0x00,0x00},//7
{0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00},//8
{0x00,0x30,0x49,0x49,0x4A,0x3C,0x00,0x00},//9
{0x00,0x01,0x1F,0xE4,0x3C,0x07,0x01,0x00},//A
{0x00,0x81,0xFF,0x91,0x91,0x6e,0x00,0x00},//B
{0x00,0x7E,0x81,0x81,0x81,0xc2,0x00,0x00},//C
{0x00,0x81,0xFF,0x81,0x81,0x7e,0x00,0x00},//D
{0x00,0x81,0xFF,0x91,0xb9,0xc3,0x00,0x00},//E
{0x00,0x81,0xFF,0x91,0xb8,0xc0,0x00,0x00}//F
};
void delay(unsigned int time)
{
unsigned int j;
for(time;time>0;time--)
for(j=0;j<20;j++);
}
void XP74HC595(unsigned char dat)
{
unsigned char i;
SRCLK=0;
RCLK=0;
for (i=0;i<8;i++)
{
SER=dat>>7;
dat<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void main ()
{
unsigned char i,j,k;
LKZ=0xff;
XP74HC595(0x00);
while (1)
{
for (i=0;i<16;i++)
{
for (j=0;j<100;j++)
{
for (k=0;k<8;k++)
{
XP74HC595(XS[i][k]);
LKZ=~TAB[k];
delay(3);
LKZ=0xff;
XP74HC595(0x00);
delay(3);
}
}
}
}
}
|