📄 max7221.h
字号:
#ifndef Max7221_C51_DEFINE_2003_8_31_ZY_YKB_1
#define Max7221_C51_DEFINE_2003_8_31_ZY_YKB_1
#define word unsigned int
#define byte unsigned char
//========管脚定义==========================
sbit Clk = P0^2;
sbit CS = P0^1;
sbit Din = P0^0;
//==========================================
void Delaylms(word delay)
{
word i,j;
for(i=0;i<delay;i++)
for(j=0;j<120;j++);
}
//==========================================
void WriteMax7221(byte Address,byte DisplayData)
{
byte i;
CS=0;
for(i=0;i<8;i++)
{
Clk = 0;
Din = (Address&(0x80>>i))? 1:0;
_nop_();
_nop_();
Clk=1;
_nop_();
_nop_();
}
for(i=0;i<8;i++)
{
Clk = 0;
Din = (DisplayData&(0x80>>i))? 1:0;
_nop_();
_nop_();
Clk=1;
_nop_();
_nop_();
}
CS=1;
}
byte code FreeDecodeTab[]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70, // 0--7
0x7F,0x7B,0x77,0x1F,0x4E,0x3D,0x4F,0x47,0x80}; // 8--f
byte code FreeDecodeTabPoints[]={0xFE,0xB0,0xED,0xF9,0xB3,0xDB,0xDF,0xF0,
0xFF,0xFB,0xF7,0x9F,0xCE,0xBD,0xCF,0xC7};
byte BitsData[9]={11,5,6,7,8,1,2,3,4}; //软件处理,0无效,从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,哪一位就支持编码
//WriteMax7221(0x09,0x00); //自由编码
}
void Set_Max7221(word bits,word num) // 设置7221的显示,
{
WriteMax7221(BitsData[bits],num);
}
void Normal_Clear_Max7221() //清除所有显示正常模式
{
byte i=1;
for(i=1;i<9;i++)Set_Max7221(i,15);
}
void Free_Clear_Max7221() //清除所有显示自由编码模式
{
byte i=1;
for(i=1;i<9;i++)Set_Max7221(i,0x00);
}
/*
main()
{
InitialMax7221();
while(1)
{
WriteMax7221(1,1);
WriteMax7221(2,2);
WriteMax7221(3,3);
WriteMax7221(4,4);
WriteMax7221(5,5);
WriteMax7221(6,6);
WriteMax7221(7,7);
WriteMax7221(8,8);//显示12345678
}
}
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -