⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 这是AD公司的一款DDS芯片的驱动程序
💻 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 + -