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

📄 main.c

📁 基于smartarm平台的lpc2200开发板源码
💻 C
字号:
/****************************************************************************
* 文 件 名:SPIDISP.C
* 功    能:使用硬件SPI接口输出控制LED显示。(硬件:74HC595输出控制LED显示)
* 说    明:将SmartARM2200开发板上的J5上SPI1信号和LED子板的SPI接口相连接
****************************************************************************/
#include  "config.h" 

#define   HC595_CS       1<<25             //  P0.25 为片选线

uint8 const DISP_TAB[16] = { //	  0	   1     2    3    4    5    6    7    8    9    
	                             0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,
                             //	  A    b      C    d    E      F
	                             0x88, 0x83, 0xC6, 0xA1,0x86, 0x8E};
uint8 rcv_data;	
                   		
	                   		
/****************************************************************************
* 名    称:DelayNS()
* 功    能:长软件延时
* 入口参数:dly		延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{  
    uint32  i;
    for(; dly>0; dly--) 
    {
        for(i=0; i<5000; i++);
    }

}

/****************************************************************************
* 名    称:MSpiInit()
* 功    能:初始化SPI接口,设置为主机。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  MSpiInit(void)
{  
	PINSEL1 = (PINSEL1 & ~0x3fc) | 0x2a8;
    S1PCCR = 0x52;		            // 设置SPI时钟分频
 	S1PCR  = (0 << 3) |				// CPHA = 0, 数据在SCK 的第一个时钟沿采样
 			 (1 << 4) |				// CPOL = 1, SCK 为低有效
 			 (1 << 5) |				// MSTR = 1, SPI 处于主模式
 			 (0 << 6) |				// LSBF = 0, SPI 数据传输MSB (位7)在先
 			 (0 << 7);				// SPIE = 0, SPI 中断被禁止
}

/****************************************************************************
* 名    称:MSendData()
* 功    能:向SPI总线发送数据,并接收从机发回的数据。
* 入口参数:data        待发送的数据
* 出口参数:返回值为接收到的数据
****************************************************************************/
uint8  MSendData(uint8 data)
{  
    IO0CLR = HC595_CS;			    // 片选
    S1PDR = data;
    while( 0==(S1PSR&0x80) );		// 等待SPIF置位,即等待数据发送完毕
    IO0SET = HC595_CS;
    return(S1PDR);
}
                   		
/****************************************************************************
* 名称:main()
* 功能:使用硬件SPI接口输出DISP_TAB数组的数据,控制LED显示。  
****************************************************************************/
int  main(void)
{  
    uint8  i; 

    IO0DIR = HC595_CS;
    
    MSpiInit();						            // 初始化SPI接口
    while(1)	
    {  
        for(i=0; i<16; i++) 
        {  
            rcv_data = MSendData(DISP_TAB[i]);	//  发送显示数据
            DelayNS(10);		
        }
    }
    return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -