显示原理:

74HC595(串转并)模块

OE使能,0有效
VCC串型

代码:
void WriteByte(unsigned char Byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SER=Byte&(0x80>>i);
SCK=1;//上升沿移位
SCK=0;
}
RCK=1;
RCK=0;
}
消影过程:
void ShowColumn(unsigned char Column,Data)
{
WriteByte(Data);
P0=~(0x80>>Column);
Delay(1);//消影
P0=0xFF;
}
完整代码:
#include <REGX52.H>
sbit RCK=P3^5;
sbit SCK=P3^6;
sbit SER=P3^4;
void Delay(unsigned int xms)
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
unsigned char Animation[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0x08,0x08,0x08,0xFF,0x00,0x0E,
0x15,0x15,0x15,0x08,0x00,0x7E,0x01,
0x02,0x00,0x7E,0x01,0x02,0x00,0x0E,
0x11,0x11,0x0E,0x00,0x7D,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void WriteByte(unsigned char Byte)
{
unsigned char i;
for(i=0;i<8;i++)
{
SER=Byte&(0x80>>i);
SCK=1;//上升沿移位
SCK=0;
}
RCK=1;
RCK=0;
}
void ShowColumn(unsigned char Column,Data)
{
WriteByte(Data);
P0=~(0x80>>Column);
Delay(1);//消影
P0=0xFF;
}
void main()
{
unsigned char i,offset=0,count=0;
SCK=0;
RCK=0;
while(1)
{
for(i=0;i<8;i++)
{
ShowColumn(i,Animation[i+offset]);
}
count++;
if(count>10)
{
count=0;
offset++;
if(offset>=32)
{
offset=0;
}
}
}
}