#include <reg52.h>
#include <intrins.h>
sbit Max7221CS = P3^1;
sbit Max7221DIN = P3^0;
sbit Max7221CLK = P3^2;
unsigned char DisplayBuffer[8]={0,1,2,3,4,5,6,7};//ÏÔʾÊýÖµ
/********************************************************************
7221Ó¦Óú¯Êý¿ªÊ¼
*********************************************************************/
void WriteMax7221(unsigned char Address,unsigned char Data)
{
unsigned char i;
Max7221CS = 0;
for (i=0;i<8;i++)
{
Max7221CLK = 0;
Max7221DIN = (Address&(0x80>>i)) ? 1:0;
_nop_();
_nop_();
Max7221CLK = 1;
_nop_();
_nop_();
}
for (i=0;i<8;i++)
{
Max7221CLK = 0;
Max7221DIN = (Data&(0x80>>i)) ? 1:0;
_nop_();
_nop_();
Max7221CLK = 1;
_nop_();
_nop_();
}
Max7221CS = 1;
}
void InitialMax7221(void)
{
WriteMax7221(0x0A,0x07); //ÁÁ¶ÈµØÖ·0AH,0x00~0x0F,0x0F×îÁÁ
WriteMax7221(0x0B,0x07); //ɨÃèLED¸öÊýµØÖ·0BH,0x00~0x07,×î¶àɨÃè8¸öÊýÂë¹Ü
WriteMax7221(0x0C,0x01); //¹¤×÷ģʽµØÖ·0x0C. 0x00:ShutDown;0x01:Normal
WriteMax7221(0x09,0xFF); //±àÂëģʽµØÖ·0x09. 0x00~0xFF:ÄÄһλΪ1£¬ÄÄһλ¾ÍÖ§³Ö±àÂë
}
void Max7221Display(unsigned char *buffer)
{
unsigned char i;
for(i=0;i<8;i++)
{
WriteMax7221(i+1,*(buffer+i));
}
}
/********************************************************************
7221Ó¦Óú¯Êý½áÊø
*********************************************************************/
/********************************************************************
Ö÷º¯Êý
*********************************************************************/
main()
{
InitialMax7221();
Max7221Display(&DisplayBuffer[0]);
while(1);
}