📄 led.c
字号:
//*******************************************************************************
//文件名称:led.c
//文件功能:点亮数码管 串行
//*******************************************************************************
//===============================================================================
//定义各个引脚
// IOB7 ----------- SCK
// IOB6 ----------- CS/LOAD
// IOB5 ----------- DIN
//===============================================================================
#define SCK_HEX 0x8000 // P_IOB15_DATA
#define CS_HEX 0x4000 // P_IOB14_DATA
#define SDA_HEX 0x2000 // P_IOB13_DATA
//===============================================================================
// 宏函数
//===============================================================================
#define SETB_SCK() *P_IOB_DATA|=SCK_HEX
#define CLR_SCK() *P_IOB_DATA&=~SCK_HEX
#define SETB_SDA() *P_IOB_DATA|=SDA_HEX
#define CLR_SDA() *P_IOB_DATA&=~SDA_HEX
#define SETB_CS() *P_IOB_DATA|=CS_HEX
#define CLR_CS() *P_IOB_DATA&=~CS_HEX
#define ClearWatchdog (volatile unsigned int *)0x7012 //定义ClearWatchdog指针,
//使其指向0x7012的地址单元
volatile unsigned int *P_IOB_DATA =(unsigned int*)(0x7005);
volatile unsigned int *P_IOB_DIR =(unsigned int*)(0x7007);
volatile unsigned int *P_IOB_ATTRIB = (unsigned int*)(0x7008);
//===========================================================================
//函数预定义
//============================================================================
void InitIO_7219();
void SendData_7219(unsigned int order,unsigned int data);
void senddata_7219(unsigned int data);
void Light_Led(int m,int n);
//============================================================================
//函数名称:void Light_Led(int m,int n)
//函数功能:点亮数码管 串行
//参数说明: m 位选 n 显示的数据
//============================================================================
void Light_Led(int m,int n)
{ int j,k;
unsigned int i=0;
InitIO_7219();
SendData_7219(0x0c,0x01); // 使其7219工作正常模式
SendData_7219(0x0b,0x07); // 配置scan limit模式,使其8个管子都工作
SendData_7219(0x0a,0x03); // 设置亮度为 1/2 亮
SendData_7219(0x09,0xff); // 使8个管子都用编码方式
SendData_7219(m,n);
}
//=========================================================================
//函数名称:void InitIO_7219(void)
//函数功能: 对操作7219的IO口做配置
//==========================================================================
void InitIO_7219(void)
{
*P_IOB_DIR = *P_IOB_DIR | SCK_HEX;
*P_IOB_ATTRIB=*P_IOB_ATTRIB | SCK_HEX;
*P_IOB_DATA=*P_IOB_DATA | SCK_HEX;
*P_IOB_DIR|=SDA_HEX;
*P_IOB_ATTRIB|=SDA_HEX;
*P_IOB_DATA|=SDA_HEX;
*P_IOB_DIR|=CS_HEX;
*P_IOB_ATTRIB|=CS_HEX;
*P_IOB_DATA|=CS_HEX;
}
//=======================================================================
//函数名称: void SendData_7219(unsigned int order,unsigned int data)
//函数功能: 送数据给7219的函数
//参数说明: order 是命令字 data 是数据
//=======================================================================
void SendData_7219(unsigned int order,unsigned int data)
{
unsigned int rtemp=0,dtemp;
dtemp=data;
dtemp&=0x00ff;
rtemp=order;
rtemp<<=4;
rtemp<<=4;
rtemp|=dtemp;
senddata_7219(rtemp);
}
void senddata_7219(unsigned int data)
{
unsigned int i;
// 将CS拉低
CLR_CS();
for(i=0;i<16;i++)
{
CLR_SCK();
if(data&0x8000)
SETB_SDA();
else
CLR_SDA();
SETB_SCK();
data<<=1;
}
SETB_CS();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -