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

📄 main.c

📁 LPC2132的液晶显示日历(RTC) 带按键修改
💻 C
📖 第 1 页 / 共 3 页
字号:
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 6  : 
		{
			GUI_PutNumberQF (88,16,(uint32)r[6]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 7  : 
		{
			GUI_PutNumberQF (96,16,(uint32)r[7]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 8  : 
		{
			GUI_PutXQQF     (72,32,(uint32)r[8]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 9  : 
		{
			GUI_PutNumberQF (32,48,(uint32)r[9]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 10 : 
		{
			GUI_PutNumberQF (40,48,(uint32)r[10]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 11 : 
		{
			GUI_PutNumberQF (56,48,(uint32)r[11]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 12 : 
		{
			GUI_PutNumberQF (64,48,(uint32)r[12]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (80,48,(uint32)r[13]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		case 13 : 
		{
			GUI_PutNumberQF (80,48,(uint32)r[13]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (88,48,(uint32)r[14]);			
			break;
		}
		default : 
		{
			GUI_PutNumberQF (88,48,(uint32)r[14]);
			GUI_PutNumber (8 ,16,(uint32)r[0]);
			GUI_PutNumber (16,16,(uint32)r[1]);
			GUI_PutNumber (24,16,(uint32)r[2]);
			GUI_PutNumber (32,16,(uint32)r[3]);
			GUI_PutNumber (56,16,(uint32)r[4]);
			GUI_PutNumber (64,16,(uint32)r[5]);
			GUI_PutNumber (88,16,(uint32)r[6]);
			GUI_PutNumber (96,16,(uint32)r[7]);
			GUI_PutXQ     (72,32,(uint32)r[8]);
			GUI_PutNumber (32,48,(uint32)r[9]);
			GUI_PutNumber (40,48,(uint32)r[10]);
			GUI_PutNumber (56,48,(uint32)r[11]);
			GUI_PutNumber (64,48,(uint32)r[12]);
			GUI_PutNumber (80,48,(uint32)r[13]);			
			break;
		}
	}
	
	
}




/*******************************************************************************************************
**函数名称:RTCReset()
**函数功能:重新设置实时时钟
**入口参数:无
**出口参数:无
********************************************************************************************************
*/


 void RTCReset (void)
{
	//int a=0;
	uint32 datas;
	uint32 times;
	uint32 bak;

	
//	extern	int r[]={2,0,0,8,0,7,2,7,0,0,8,3,0,0,0};

	
	times = CTIME0;			// 读取完整的时钟寄存器
	datas = CTIME1;
	
	bak = (datas >> 16) & 0xfff;	// 获取 年
	r[0] = bak / 1000;
	bak = bak % 1000;
	r[1] = bak / 100;
	bak = bak % 100;
	r[2] = bak / 10;
	r[3] = bak % 10;

	bak = (datas >> 8) & 0x0f;		// 获取 月
	r[4] = bak / 10;
	r[5] = bak % 10;

	bak = datas & 0x1f;				// 获取 日
	r[6] = bak / 10;
	r[7] = bak % 10;

	bak = (times >> 24) & 0x07;		// 获取 星期
	r[8] = bak;

	bak = (times >> 16) & 0x1f;		// 获取 小时
	r[9] = bak / 10;
	r[10] = bak % 10;

	bak = (times >> 8) & 0x3f;		// 获取 分钟
	r[11] = bak / 10;
	r[12] = bak % 10;

	bak = times & 0x3f;				// 获取 秒钟
	r[13]= bak / 10;
	r[14]= bak % 10;
	
	
	while((IO0PIN&MAKESURE))
	{	
	  	DelayNS(1);
		display(i);
		if((IO0PIN&MOVE)==0)
		{
			DelayNS(1);
			if((IO0PIN&MOVE)==0)
			{
				
				i++;
				protect();
				display(i);
			}
			
		}
		if((IO0PIN&ADDONE)==0)
		{
			DelayNS(1);
			if((IO0PIN&ADDONE)==0)
			{
				r[i]+=1;
				protect();
				display(i); 
			}
			
		}
		
     
	}
	
	
	
	year=r[0]*1000+r[1]*100+r[2]*10+r[3];
	month=r[4]*10+r[5];
	dom=r[6]*10+r[7];
	dow=r[8];
	hour=r[9]*10+r[10];
	min=r[11]*10+r[12];
	sec=r[13]*10+r[14];
	
	
	YEAR  = year;
	MONTH = month;
	DOM   = dom;
	DOW   = dow;
	HOUR  = hour;
	MIN   = min;
	SEC   = sec;
	
//	CIIR = 0x01;	// 设置秒值的增量产生1次中断
	CCR  = 0x01;	// 启动RTC
	}  




/*
*******************************************************************************************************
** 函数名称 :RTCInit()
** 函数功能 :初始化实时时钟
** 入口参数 :无
** 出口参数 :无
*******************************************************************************************************
*/


void RTCInit (void)
{
	PREINT = Fpclk / 32768 - 1;	// 设置基准时钟分频器
	PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
	
	CCR   = 0x00;	// 禁止时间计数器
	
/*	
	year=r[0]*1000+r[1]*100+r[2]*10+r[3];
	month=r[4]*10+r[5];
	dom=r[6]*10+r[7];
	dow=r[8];
	hour=r[9]*10+r[10];
	min=r[11]*10+r[12];
	sec=r[13]*10+r[14];
	
*/
	
	
	YEAR  = year;
	MONTH = month;
	DOM   = dom;
	DOW   = dow;
	HOUR  = hour;
	MIN   = min;
	SEC   = sec;
	
//	CIIR = 0x01;	// 设置秒值的增量产生1次中断
	CCR  = 0x01;	// 启动RTC
	

}



/*
*******************************************************************************************************
** 函数名称 :main()
** 函数功能 :读取实时时钟的值,通过液晶显示。
*******************************************************************************************************
*/
int main (void)
{

	GUI_Initialize();       // 初始化LCM
    GUI_SetColor(1, 0);     // 设置前景色和背景色
	RTCInit();              //RTC初始化
	while (1)
	{	
//		RTCInit();  
//		CCR  = 0x01;	// 启动RTC
//		while (0 == (ILR & 0x01));	// 等待RTC增量中断
//		ILR = 0x01;					// 清除中断标志
		SendTimeRtc();
		
		
		if((TIMERESET&IO0PIN) == 0)
		{
			CCR   = 0x00;	// 禁止时间计数器
			RTCReset();
		}
		
	}
	
	return 0;
}
/***********************************************************************************************************
***
***
***
************************************************************************************************************/

⌨️ 快捷键说明

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