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

📄 main.c

📁 LPC2300硬件系统外设驱动源代码库
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			zhmj
** Modified date:		2006-12-30
** Version:
** Descriptions:		SSP实验,74HC595驱动流水灯。
**                              请用户在SmartARM2300工控开发平台的JP1上,使用跳线器将SSEL,MOSI,SCLK,MISO分别
**                               和和P1.21、P1.24、P1.20、P1.23短接
********************************************************************************************************/
#include  	"config.h" 

#define 	SSPCR1_SSE		1 << 1		// SSP使能
/*********************************************************************************************************
** 函数名称:SSP_Init
** 函数功能:将SSP控制器设置为主机。
** 入口参数:无
** 出口参数:无
**********************************************************************************************************/
void  SSP_Init(void)
{
	PCONP |= (1 << 21);			    	// 在外设功率控制寄存器里使能SSP外设,默认情况下,该外设已被使能。
	
	/* 初始化P1.20、P1.21、P1.23、P1.24为SSP接口引脚,不用另外的IO口作从机选择线,直接用SSEL1完成片选595的功能。*/
	PINSEL3 = 0;
	PINSEL3 |= (0x03 << 8)|(0x03 << 10)|(0x03 << 14)|(0x03 << 16);    
/* 初始化SSP的通讯方式,设置数据长度为8bit,帧格式为SSP,SCK 为低有效,数据在SCK 的第一个时钟沿采样,设置SSP串行时钟通信速率为默认值。 */
    SSP0CR0  |= 0x00000047;
    SSP0CPSR = 0x02;			    		// 设置SSP从Pclk获得的分频值,主模式下有效, 最小值为0x02。
    SSP0CR1  = SSPCR1_SSE;		   		// 设置SSP为主机模式,不使用回写模式,并使能。
}

/*********************************************************************************************************
* 函数名称:SSP_SendData
* 函数功能:SSP接口向SSP总线发送数据。
* 入口参数:data        待发送的数据
* 出口参数:返回值为读取的数据
*********************************************************************************************************/
uint8  SSP_SendData(uint8 data)
{  
    SSP0DR = data;
    while( (SSP0SR & 0x01) == 0 );	    	// 等待TFE置位,即发送FIFO空   
    return(SSP0DR);
}

/********************************************************************************************************
** 函数名称:DelayNS
** 函数功能:长软件延时
** 入口参数:dly		延时参数,值越大,延时越久。
** 出口参数:无
********************************************************************************************************/
void  DelayNS(uint32  dly)
{  
    uint32  i;
    for(; dly>0; dly--) 
        for(i=0; i<50000; i++);
}

/********************************************************************************************************
** 函数名称:main
** 函数功能:使用硬件SSP,74HC595驱动控制8盏LED动态显示。  
** 入口参数:无
** 出口参数:无
** 调试说明:需将JP1上的SSEL,MOSI,SCLK,MISO和P1.21、P1.24、P1.20、P1.23短接
********************************************************************************************************/    
int main (void)
{  	
    uint32 i = 0;
 	volatile	uint32 RcvDat = 0;
    /* 流水灯花样,低电平点亮,注意调用时候用了取反操作 */
	const uint32 LED_TBL[] = {
	0x00, 0xFF,										// 全部熄灭后,再全部点亮
	0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,	// 依次逐个点亮
	0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF,	// 依次逐个叠加
	0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01,	// 依次逐个递减
	0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81,	// 两个靠拢后分开
	0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81	// 从两边叠加后递减
	};

    SSP_Init();			                		// 初始化SSP接口
    while(1)	
    { 
      for(i = 0;i < 42;i++)
	  {   
	    DelayNS(20);					// 延时,使显示的字符保持一段时间   
	    RcvDat = SSP_SendData(LED_TBL[i]);			// 发送显示数据
	  } 
    }
    //return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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