#include <REGX52.H>
#include "delay.h"
sbit RCK=P3^5; //RCLK
sbit SCK=P3^6; //SRCLK
sbit SER=P3^4; //SER
#define MATRIX_LED_POPT P0 //¶¨ÒåP0Ϊһ¸ö¿ª¹Ø·½±ãÀí½â
void _74HC595_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 matrixLED_showcolumn(unsigned char Column,Data)//columnΪÐèÒªÔÚµãÕóÆÁÖеãÁÁµÄÁÐÊý
{ //dataΪÁÐÖÐÏÔʾµÄÊý¾Ý
_74HC595_writebyte(Data);
MATRIX_LED_POPT=~(0x80>>Column);
delay(1);
MATRIX_LED_POPT=0xFF;
}
void main()
{
SCK=0;
RCK=0;
while(1)
{
matrixLED_showcolumn(0,0x3C);
matrixLED_showcolumn(1,0x42);
matrixLED_showcolumn(2,0xA9);
matrixLED_showcolumn(3,0x91);
matrixLED_showcolumn(4,0x91);
matrixLED_showcolumn(5,0xA9);
matrixLED_showcolumn(6,0x42);
matrixLED_showcolumn(7,0x3C);
}
}
实现的效果图
此处用到了一毫秒的延迟函数,可用软件自行生成。实现的方法主要是74HC595,将存入的数据,将每一位传入到寄存器中,再由其统一传入到点阵LED屏,后进行显示。