📄 max7219.c
字号:
//========================================================================
//MAX7219.c开始
//=========================================================================
//============================================================
//日期:2007.03.03
//作者:张丰盛
//审核:张丰盛
//============================================================
//============================================================
extern unsigned int *P_IOB_Data;
extern unsigned int *P_IOA_Data;
#define PORT 1 //1为IOA,0为IOB
#define Set_MAX7219_DIN 0x0001
#define Clear_MAX7219_DIN 0xfffe
#define Set_MAX7219_CLK 0x0002
#define Clear_MAX7219_CLK 0xfffc
#define Set_MAX7219_LOAD 0x0004
#define Clear_MAX7219_LOAD 0xfffb
//============================================================
//============================================================
//函数名称:void drive_MAX7219(unsigned int addr,unsigned int data)
//函数功能:将数据送给MAX7219
//输入参数:addr为要显示数据的地址,data为相应位要显示的数据
//输出参数:无
//日期:2007.03.03
//============================================================
#if PORT //MAX7219接在IOA口
void drive_MAX7219(unsigned int addr,unsigned int data)
{
unsigned int i,j,ioa,ADS;
ioa=*P_IOA_Data; //LOAD=0
ioa=ioa&Clear_MAX7219_LOAD;
*P_IOA_Data=ioa;
i=0;
while(i<16)
{
if(i<8)
ADS=addr; //送地址
else
ADS=data; //送数据
ADS=ADS<<8;
for(j=8;j>0;j--)
{
ioa=*P_IOA_Data; //DIN端数据处理
if(ADS&0x8000)
ioa=ioa|Set_MAX7219_DIN;
else
ioa=ioa&Clear_MAX7219_DIN;
*P_IOA_Data=ioa;
ADS=ADS<<1;
ioa=*P_IOA_Data; //CLK=1
ioa=ioa|Set_MAX7219_CLK;
*P_IOA_Data=ioa;
ioa=*P_IOA_Data; //CLK=0
ioa=ioa&Clear_MAX7219_CLK;
*P_IOA_Data=ioa;
}
i=i+8;
}
ioa=*P_IOA_Data; //LOAD=1
ioa=ioa|Set_MAX7219_LOAD;
*P_IOA_Data=ioa;
}
#else //MAX7219接在IOB口
void drive_MAX7219(unsigned int addr,unsigned int data)
{
unsigned int i,j,iob,ADS;
iob=*P_IOB_Data; //LOAD=0
iob=iob&Clear_MAX7219_LOAD;
*P_IOB_Data=iob;
i=0;
while(i<16)
{
if(i<8)
ADS=addr; //送地址
else
ADS=data; //送数据
ADS=ADS<<8;
for(j=8;j>0;j--)
{
iob=*P_IOB_Data; //DIN端数据处理
if(ADS&0x8000)
iob=iob|Set_MAX7219_DIN;
else
iob=iob&Clear_MAX7219_DIN;
*P_IOB_Data=iob;
ADS=ADS<<1;
iob=*P_IOB_Data; //CLK=1
iob=iob|Set_MAX7219_CLK;
*P_IOB_Data=iob;
iob=*P_IOB_Data; //CLK=0
iob=iob&Clear_MAX7219_CLK;
*P_IOB_Data=iob;
}
i=i+8;
}
iob=*P_IOB_Data; //LOAD=1
iob=iob|Set_MAX7219_LOAD;
*P_IOB_Data=iob;
}
#endif
//============================================================
//=============================================================================
//MAX7219.c结束
//=============================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -