一、配置74HC595
#include <REGX52.H>
#include "delay.h"
sbit RCK = P3^5;//配置引脚
sbit SCR = P3^6;
sbit SER = P3^4;
void Delay(unsigned int xms) //@11.0592MHz
{
unsigned char i, j;
while (xms--)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void _74HC595_WriteByte(unsigned char Byte)
{
unsigned char i;
for (i= 0; i < 8; i++)
{
SER=Byte&(0x80>>i);
SCR=1;
SCR=0;
}
RCK=1;
RCK=0;
}
void MatrixLED_ShowColumn(unsigned char Column,unsigned char Data)
{
_74HC595_WriteByte(Data);
P0 = ~(0x80>>Column);
Delay(1);
P0 = 0xff;
}
unsigned char Animation[]={0x00,0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,0x00,//笑脸
0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x00};//测试代码
unsigned int j,Offset=0,Count=0;
void main()
{
SER=0;
RCK=0;
while(1)
{
for (j = 0; j < 8; j++)
{
MatrixLED_ShowColumn(j,Animation[j+Offset]);
}
Count++;
if (Count>10)
{
Count=0;
Offset++;
if (Offset>sizeof(Animation)-7) //-7的原因是我这块单片机会出现乱码
{
Offset=0;
}
}
}
}