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

📄 main.c

📁 嵌入式应用很好的资料哦
💻 C
📖 第 1 页 / 共 3 页
字号:
			PR1(LCD_X,LCD_Y,0x24);
		
			PR11(CTAB_8_16[i],0xc0);    // 写入左部字模数据
			i++;
		
			a = LCD_X + 0x20;	   // 修正地址
			LCD_X = a;
			a = (a >> 8);
			LCD_Y = LCD_Y + a;
		}      	
	}
	/*  写入8*8点阵数据  */	
	if(n == 3)
	{
		i = CODE * 8;

		for(m=0;m<8;m++)
		{
			PR1(LCD_X,LCD_Y,0x24);
		
			PR11(CTAB_8_8[i],0xc0);    // 写入左部字模数据
			i++;
		
			a = LCD_X + 0x20;	   // 修正地址
			LCD_X = a;
			a = (a >> 8);
			LCD_Y = LCD_Y + a;
		}      	
	}
}
/*
*********************************************************************************************************
** 函数名称 :Kaiji_Dis_()
** 函数功能 :开机显示子程序**            
** 入口参数 : 
** 出口参数 :无
*********************************************************************************************************
*/
void Kaiji_Dis(void)
{
	uint8 i;
	//uint8 b;
	//uint8 x,y;
	//uint16 a;				  
	
	//uint8 addr_year

	//Calendar Calendar = {2007,01,01,1,12,00,00,25};
	//uint8 Addr_L;

	PR1(0x00,0x0a,0x24);       // 设置操作地址
	PR12(0xb0);                // 设置自动写方式
	for(i=0;i<20;i++)
		PR13(0xff);
	PR12(0xb2);

	PR1(0x80,0x15,0x24);       // 设置操作地址
	PR12(0xb0);
	for(i=0;i<18;i++)
		PR13(0xff);
	PR12(0xb2); 

	PR1(0xa0,0x15,0x24);       // 设置操作地址
	PR12(0xb0);
	for(i=0;i<20;i++)
		PR13(0xff);
	PR12(0xb2);                // 设置自动写结束指令

	//a = Calendar.year;
	//a = 

//	WRI_CC(0,0,12,1);//好  从第0行开始
//	WRI_CC(1,0,13,1);//人
//	WRI_CC(2,0,14,1);//一
//	WRI_CC(3,0,15,1);//生
//	WRI_CC(4,0,16,1);//平
//	WRI_CC(5,0,17,1);//安  第15行结束
	
	WRI_CC(4,18,2,1);//2   年月日从第18行开始
	WRI_CC(5,18,0,1);//0
	WRI_CC(6,18,0,1);//0
	WRI_CC(7,18,7,1);//7
	WRI_CC(8,18,5,2);//年
 	WRI_CC(10,18,1,1);//1
	WRI_CC(11,18,6,2);//月
	WRI_CC(13,18,1,1);//1
	WRI_CC(14,18,7,2);//日	第33行结束。

	WRI_CC(6,43,1,1);//1
	WRI_CC(7,43,2,1);//2
	WRI_CC(8,43,10,1);//:
	WRI_CC(9,43,0,1);//0
	WRI_CC(10,43,0,1);//0
	WRI_CC(11,43,10,1);//:
	WRI_CC(12,43,0,1);//0
	WRI_CC(13,43,0,1);//0

	WRI_CC(4,73,8,2);//星
	WRI_CC(6,73,9,2);//期
	WRI_CC(8,73,11,2);//一
	WRI_CC(11,73,2,1);//2
	WRI_CC(12,73,5,1);//5
	WRI_CC(13,73,10,2);//℃




	WRI_CC(0,112,0,2);//操  从107行开始
	WRI_CC(2,112,1,2);//作

	WRI_CC(14,112,2,2);//通
	WRI_CC(16,112,3,2);//讯
	WRI_CC(18,112,4,2);//录	第127行结束(总共128行)
}
/*
*********************************************************************************************************
** 函数名称 :
** 函数功能 :按键处理子程序**            
** 入口参数 : 
** 出口参数 :无
*********************************************************************************************************
*/
void Key_Menu(void)	
{ WRI_CC(0,90,0,2);}
void Key_Up(void)	   
{ WRI_CC(2,90,0,2);}	 
void Key_Back(void)	
{ WRI_CC(4,90,0,2);}
void Key_Phone(void)	
{ WRI_CC(6,90,0,2);}
void Key_Dn(void)	
{ WRI_CC(8,90,0,2);}
void Key_Hangup(void)	
{ WRI_CC(10,90,0,2);}

void Key_1(void)	 
{ WRI_CC(0,74,1,1);}
void Key_2(void)	 
{ WRI_CC(1,74,2,1);}
void Key_3(void)	  
{ WRI_CC(2,74,3,1);}
void Key_4(void)	    
{ WRI_CC(3,74,4,1);}
void Key_5(void)	   
{ WRI_CC(4,74,5,1);}
void Key_6(void)	   
{ WRI_CC(5,74,6,1);}
void Key_7(void)	
{ WRI_CC(6,74,7,1);}
void Key_8(void)	
{ WRI_CC(7,74,8,1);}
void Key_9(void)	
{ WRI_CC(8,74,9,1);}
void Key_F1(void)	
{ WRI_CC(9,74,1,1);}
void Key_0(void)	
{ WRI_CC(10,74,0,1);}
void Key_F3(void)	
{ WRI_CC(11,74,2,1);}
/*
*********************************************************************************************************
** 函数名称 :Key_Scan()
** 函数功能 :6*3按键扫描子程序**            行按键(KEY_A~KEY_F)占用P0.26~P0.31六个IO口,设置为输出,
**            列按键(KEY_1~KEY_3)占用P1.19,P1.20,P1.21三个IO口.设置为输入
** 入口参数 : 
** 出口参数 :无
*********************************************************************************************************
*/		  
void Key_Scan(void)
{
	uint8 scan_value;

	IO0DIR = 0x84F00000 | BEEP | 1;// P0.20~P0.23,P0.26,P0.31六个IO口,设置为输出
	IO1DIR = 0x00000000; 	   // P1.19,P1.20,P1.21设置为输入
	
	IO0CLR = 0x84F00000;
	IO0SET = 0x84F00000;	   // 行扫描,输出高电平
	
	if((IO1PIN & 0x00380000 ) != 0x00000000) 
	{
		DelayNS(1);            // 如果有按键按下,调用延时去抖
		IO0CLR = 0x84F00000;
	    IO0SET = 0x84F00000;   // 再次进行行扫描,输出高电平
		if((IO1PIN & 0x00380000 ) != 0x00000000) 
		{
			// 确实有按键按下
			IO0CLR = 0x84F00000;
			IO0SET = KEY_A;    
			scan_value = (IO1PIN >> 19) & 0x07;
			if(scan_value != 0x00)
			{
				switch(scan_value)
				{
					case 1 :   Key_Menu();	 break ;
					case 2 :   Key_Up();	 break ;
					case 4 :   Key_Back();	 break ;

				}
			}
			//***********************************
			IO0CLR = 0x84F00000;
			IO0SET = KEY_B;    
			scan_value = (IO1PIN >> 19) & 0x07;
			if(scan_value != 0x00)
			{
				switch(scan_value)
				{
					case 1 :   Key_Phone();	 break ;
					case 2 :   Key_Dn();	 break ;
					case 4 :   Key_Hangup(); break ;
				}
			}
			//***********************************
			IO0CLR = 0x84F00000;
			IO0SET = KEY_C;    
			scan_value = (IO1PIN >> 19) & 0x07;
			if(scan_value != 0x00)
			{
				switch(scan_value)
				{
					case 1 :   Key_1();		 break ;
					case 2 :   Key_2();		 break ;
					case 4 :   Key_3();		 break ;
				}
			}
			//***********************************
			IO0CLR = 0x84F00000;
			IO0SET = KEY_D;    
			scan_value = (IO1PIN >> 19) & 0x07;
			if(scan_value != 0x00)
			{
				switch(scan_value)
				{
					case 1 :   Key_4();		 break ;
					case 2 :   Key_5();		 break ;
					case 4 :   Key_6();		 break ;
				}
			}
			//***********************************
			IO0CLR = 0x84F00000;
			IO0SET = KEY_E;    
			scan_value = (IO1PIN >> 19) & 0x07;
			if(scan_value != 0x00)
			{
				switch(scan_value)
				{
					case 1 :   Key_7();		 break ;
					case 2 :   Key_8();		 break ;
					case 4 :   Key_9();		 break ;
				}
			}
			//***********************************
			IO0CLR = 0x84F00000;
			IO0SET = 0x80000000; //(KEY_F)   
			scan_value = (IO1PIN >> 19) & 0x07;
			if(scan_value != 0x00)
			{
				switch(scan_value)
				{
					case 1 :   Key_F1();	 break ;
					case 2 :   Key_0();		 break ;
					case 4 :   Key_F3();	 break ;
				}
			}
		}
	} 
}
/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :实现数字时钟功能
** 调试说明 :需将跳线JP10~JP19短接。
*********************************************************************************************************
*/
int main (void)				 
{ 
    //uint32 k; 
        
    //k = PINSEL2;
	//k = 0x00000000;            // 设置管脚连接GPIO
	//PINSEL2 = k;
	
	PINSEL0 = 0x00000000;  
	/***********************************/
	IO0DIR = BEEP | 1;         // P0.0 is set output
	IO0SET = BEEP;
	/***********************************/	


   	/* LCD is inited */
	INI();
   	CLEAR();
   	
	IRQEnable();               // IRQ中断使能
	RTCInit();
   	/* 定时器0初始化 */
	T0TC   = 0;			       /* 定时器设置为0								*/
	T0PR   = 0;			       /* 时钟不分频								*/
	T0MCR  = 0x03;		       /* 设置T0MR0匹配后复位T0TC,并产生中断标志	*/
	T0MR0  = Fpclk / 25;	       /* 0.5秒钟定时								*/
	T0TCR  = 0x01;		       /* 启动定时器	     						*/

	VIC_Init();

	Kaiji_Dis();

	Dis_Page = 26;

	while(1)
   	{
  		 
	   Key_Scan();
	   
	   //IO0SET = 1;
	   //DelayNS(2);
	   //IO0CLR = 1;	
	   //DelayNS(2);
		
    }
    return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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