#include <REGX52.H>
#include "delay.h"
#define MXTRIX_LED_PORT P0
sbit RCK=P3^5;//RCLK,高电平将数据搬到引脚
sbit SRCLK=P3^6;//SRCLK,给高电平进一个 bit 数据
sbit SER=P3^4;//SER,数据进入的地方
//将字节数据写入引脚
void _74HC595_WriteByte(unsigned char byte)
{
unsigned char i=0;
for(;i<8;++i)
{
SER=(byte>>(7-i))&0X01;//高位先进 SER,取出高位
SRCLK=1;//进数据
SRCLK=0;//重新置为 0
}
RCK=1;//将数据送入 IO 口
RCK=0;
}
void MatrixLED_ShowColumn(unsigned char Column,unsigned char Data)
{
_74HC595_WriteByte(Data);//把数据放进来,填充引脚
MXTRIX_LED_PORT=~(0x80>>Column);//选择哪一列 LED,P0 中引脚只要是低电平,就有
机会亮,高电平肯定不亮
delay_ms(1);//延时
MXTRIX_LED_PORT=0XFF;//位清零
}
void main()
{
SRCLK=0;//初始是高电平,需要先置 0