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

📄 system.c

📁 基于凌阳单片机数字电子钟的C语言源代码 基于凌阳单片机数字电子钟的C语言源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
	LCD501_Bitmap(54,33,(unsigned int*)encoding_maohao);        //冒号
    clockhourshi=shownhour/10;
    clockhourge=shownhour%10;
    clockminshi=shownmin/10;
    clockminge=shownmin%10;
    switch(keynow)
    {
    	case 0:
    		if(int2hz==0)
    		{
    			LCD501_PutChar(46,35,number[clockhourge]);       //显示小时的个位
    			LCD501_PutChar(38,35,number[clockhourshi]);      //显示时的十位
   			}
    		else
    		{
   				LCD501_PutChar(46,35,' ');                        //显示小时的个位
    			LCD501_PutChar(38,35,' ');                        //显示时的十位
    		} 
    		LCD501_PutChar(73,35,number[clockminge]);             //显示分钟的个位
    		LCD501_PutChar(65,35,number[clockminshi]);            //显示小时的十位
    		break;
    	case 2:
    		if(int2hz==0)
    		{
    			LCD501_PutChar(73,35,number[clockminge]);         //显示分钟的个位
    		    LCD501_PutChar(65,35,number[clockminshi]);        //显示小时的十位
    		}
    		else
    		{
    			LCD501_PutChar(73,35,' ');             
    		    LCD501_PutChar(65,35,' '); 
    		} 
    		LCD501_PutChar(46,35,number[clockhourge]);      	  //显示小时的个位
    		LCD501_PutChar(38,35,number[clockhourshi]);           //显示时的十位
    }
}
//===============================================================//
//语法格式:naoclockshow2(shownhour,shownmin)
//实现功能:显示闹钟调整界面
//参数    :无
//返回值  :无
//==============================================================//
void naoclockshow2(shownhour,shownmin)                          //显示闹钟调整界面
{
	int clockhourshi=0;
    int clockhourge=0;
    int clockminshi=0;
    int clockminge=0;
	LCD501_Bitmap(37,20,(unsigned int*)encoding_nao);           //闹
	LCD501_Bitmap(49,20,(unsigned int*)encoding_zhong);         //钟
	LCD501_Bitmap(61,20,(unsigned int*)encoding_she);           //设
	LCD501_Bitmap(73,20,(unsigned int*)encoding_zhi);           //置
	LCD501_Bitmap(54,33,(unsigned int*)encoding_maohao);        //冒号
    clockhourshi=shownhour/10;
    clockhourge=shownhour%10;
    clockminshi=shownmin/10;
    clockminge=shownmin%10;
    LCD501_PutChar(46,35,number[clockhourge]);                  //显示小时的个位
    LCD501_PutChar(38,35,number[clockhourshi]);                 //显示时的十位
    LCD501_PutChar(73,35,number[clockminge]);                   //显示分钟的个位
    LCD501_PutChar(65,35,number[clockminshi]);                  //显示小时的十位
}
//==============================================================//
//语法格式: void setclock()
//实现功能:设置闹钟时间
//参数    :无
//返回值  :无
//=============================================================//
void setclock()                                                //设置闹钟子函数
{ 
	int k = 0;
	LCD501_ClrScreen(0);                                       //清屏
	keyflag4 = 1;
	while(keyflag4==1)
	{   
	    keyscan();                                             //键盘扫描
	    if(keyvalue==0)        
	    	 naoclockshow1(nhour,nmin,k);                      //无键按下显示闪烁的界面  
	    else 
	    naoclockshow2(nhour,nmin);                             //有键按下显示不闪烁的界面
	    *P_Watchdog_Clear = 0x0001;
	    switch(keyvalue)
	  	{
	  		case 0x0001:                                       //如果键1按下则退出循环                                       //或者指向下一个要调整的单元
				if(k==0x0002)
			    {
			    	keyflag4 = 0;
			        LCD501_ClrScreen(0);                       // 退出循环,清屏
			    }
			    else
			    {
			        k = k+2;
			    }
            	break;
			case 0x0002:                                       //键2按下则进行加调整          
	  			switch(k)
	  	    	{	
	  	    		case 0:  
	  	        		if(nhour==23)
	  	          			nhour = 0;
	  	          		else
	  	          			nhour = ++nhour;                   //闹钟小时加1
						break;
	  	        	case 2: 
						if(nmin==59)
	  	          			nmin = 0;
	  	          		else
	  	          			nmin = ++nmin;                     //闹钟分加1
						break;
	  	    	}
	  	    break;
			case 0x0004:                                       //键3按下则进行减
				switch(k)
	  	    	{	
	  	    		case 0:
						if(nhour==0)
	  	          			nhour = 23;
	  	          		else
	  	          			nhour = --nhour;                   //闹钟小时减1
					break;
					case 2: 
	  	        		if(nmin==0)
	  	          			nmin = 59;  
	  	          		else
	  	          			nmin = --nmin;                      //闹钟分减1
	  	          	break;
	  	    	}
	  	    break;  	  
		}
	}
}
//==============================================================//
//语法格式:void showsecond() 
//实现功能:显示秒表功能界面
//参数    :无
//返回值  :无
//=============================================================//
void showsecond()                                              //秒表显示界面
{
    LCD501_Bitmap(20,18,(unsigned int*)encoding_maohao);       //显示冒号
    LCD501_Bitmap(48,18,(unsigned int*)encoding_maohao);
    showsec(mmsec);                                            //显示毫秒
    showmin(mbsec);                                            //显示秒
    showhour(mbmin);                                           //显示分
}     
//==============================================================//
//语法格式  void setsecond()
//实现功能:设置秒表的功能
//参数    :无
//返回值  :无
//=============================================================//	
void setsecond()                                               //设置秒表子函数
{
	int intflag = 0;
	keyflag5 = 1;
	LCD501_ClrScreen(0);                                       //清屏进入秒表界面
   	LCD501_Bitmap(23,40,(unsigned int*)encoding_miao);
	LCD501_Bitmap(45,40,(unsigned int*)encoding_biao);         //显示秒表汉字 
	while(keyflag5==1)
	{
		LCD501_Bitmap(90,10,(unsigned int*)BMP_Cartoon[mapcounter2]);
		                                                      //显示凌阳标志旋转界面
		showsecond();
		keyscan();                                            //按键扫描
		switch(keyvalue)
		{
			case 1:
				keyflag5 = 0;
			    LCD501_ClrScreen(0);                          //退出秒表界面,清屏。
			break;
			case 2:
				switch(intflag)
			    {
			    	case 1:	
			    		intflag = 0; 
			    		*P_INT_Ctrl=*P_INT_Ctrl_New & 0xffef;
			    	break;                                   //关闭1KHZ中断
			       	case 0:
			       		intflag = 1;
			       		*P_INT_Ctrl_New=*P_INT_Ctrl_New | 0x0010;
			        break;                                   //打开1KHZ中断
			    }
			break;
	        case 4:                                          //如果此时秒表处于暂停状态则清零                 
	        	if(intflag==0)
	            {
	            	mbmin = 0;
	                mbsec = 0;
	                mmsec = 0;
	             }
	             else
	              	*P_Watchdog_Clear = 0x0001;
			break;
		}
	}
}
//===============================================================//
//语法格式: void miaobiao() 
//实现功能:秒表运行修正
//参数    :无
//返回值  :无
//==============================================================//	
void miaobiao()                                                 //秒表运行修正子函数,由1kHZ中断实现
{
	if(mbnum==10)
	{
		mbnum = 0;
		mmsec = ++mmsec;
	}
	if(mapcounter1==300)                                       //显示SUNPLUS旋转界面
	{
		mapcounter1=0;
		mapcounter2=mapcounter2++;
		if(mapcounter2==40)
			mapcounter2=0;
	}
	if(mmsec==102)
	{
		mmsec = 0;
		mbsec = ++mbsec;
	}
	if(mbsec==60)
	{
		mbsec = 0;
		mbmin = ++mbmin;
	}
	if(mbmin==99)
	{
		mbmin = 0;
	}

}
//===============================================================//
//语法格式: void shownaozhongset() 
//实现功能:显示闹钟设置界面
//参数    :无
//返回值  :无
//==============================================================//
void shownaozhong_set() //
{
	LCD501_Bitmap(28,10,(unsigned int*)encoding_nao);           //闹
	LCD501_Bitmap(40,10,(unsigned int*)encoding_zhong);         //钟
	LCD501_Bitmap(52,10,(unsigned int*)encoding_shi);           //时
	LCD501_Bitmap(64,10,(unsigned int*)encoding_jian);          //间
	LCD501_Bitmap(76,10,(unsigned int*)encoding_she);           //设
	LCD501_Bitmap(88,10,(unsigned int*)encoding_zhi);           //置
	LCD501_Bitmap(28,30,(unsigned int*)encoding_nao);           //闹
	LCD501_Bitmap(40,30,(unsigned int*)encoding_zhong);         //钟
	LCD501_Bitmap(52,30,(unsigned int*)encoding_ling);          //铃
	LCD501_Bitmap(64,30,(unsigned int*)encoding_sheng);         //声
	LCD501_Bitmap(76,30,(unsigned int*)encoding_she);           //设
	LCD501_Bitmap(88,30,(unsigned int*)encoding_zhi);           //置
	LCD501_Bitmap(28,50,(unsigned int*)encoding_fan);           //返
	LCD501_Bitmap(40,50,(unsigned int*)encoding_hui);           //回
}
//===============================================================//
//语法格式: void set_ring() 
//实现功能:按键选择闹钟的时间设置或者是铃声设置
//参数    :无
//返回值  :无
//==============================================================//
void set_ring()
{
	int i = 0;
	keyflag6 = 1;
	LCD501_ClrScreen(0);
    while(keyflag6==1)
	{
		shownaozhong_set();                                     //闹钟设置界面
		LCD501_Bitmap(14,clockset[i],(unsigned int*)encoding_mouse);
		                  										//光标
		keyscan();
		switch(keyvalue)
		{
			case 1:
				switch(i)
			    {
			    	case 0:
                		setclock();                     		//调用闹钟时间设置界面
					break;
			      	case 1:                         			//调用铃声选择
			      		ring_choice();
					break;
			      	case 2:
			      		keyflag6=0;
			      	 	LCD501_ClrScreen(0);
			      	 break;
				}
			    break;
			case 2:                         					//光标下移
				LCD501_Bitmap(14,clockset[i],(unsigned int*)encoding_empty);
			    if(i==2)
			    	i = 0;
			    else
			    	i = ++i;
				break; 
			case 4:                                             //光标上移
				LCD501_Bitmap(14,clockset[i],(unsigned int*)encoding_empty);
			    if(i==0)
			    	i = 2;
			    else
			   		i = --i;
			break;
		}
			      
	}
}
//===============================================================//
//语法格式: void showringmap() 
//实现功能:进入铃声选择界面
//参数    :无
//返回值  :无
//==============================================================//
void showringmap() 
{
	LCD501_Bitmap(45,10,(unsigned int*)encoding_ling);          //铃声1
	LCD501_Bitmap(57,10,(unsigned int*)encoding_sheng);
	LCD501_Bitmap(69,10,(unsigned int*)encoding_1);
	LCD501_Bitmap(45,30,(unsigned int*)encoding_ling);          //铃声2
	LCD501_Bitmap(57,30,(unsigned int*)encoding_sheng);
	LCD501_Bitmap(69,30,(unsigned int*)encoding_2);
}
//===============================================================//
//语法格式: ring_choice() 
//实现功能:铃声选择
//参数    :无
//返回值  :无
//==============================================================//
void ring_choice()
{
	int i = 0;
	keyflag7 = 1;
	LCD501_ClrScreen(0);
    while(keyflag7==1)
	{
		showringmap(); 
		LCD501_Bitmap(23,clockset[i],(unsigned int*)encoding_mouse);
		keyscan();
		switch(keyvalue)
		{
			case 1:
			      { 
			      	keyflag7 = 0;
			      	LCD501_ClrScreen(0);                        //退出循环清屏
			      	if(i==0)
						ringflag = 0;                           //选中铃声1
			      	else 
			      	    ringflag = 1;                           //选中铃声2
			      }
			      break;
			case 2:
			     {
			     switch(i)                                      //切换光标的位置
			             {	
			        	 	case 0: 
								LCD501_Bitmap(23,clockset[i],(unsigned int*)encoding_empty);
			        	 		i = 1;
							break;
			            	case 1:
								LCD501_Bitmap(23,clockset[i],(unsigned int*)encoding_empty);
			               		i = 0;
			               	break;
			             }
			             }
			             break;
			case 4:
				if(i==0)
					PlayRespond(17);
				else
				    PlayRespond(18);	 
		  		break;
		}
	}
}
//=========================================================================//
//system.c end
//=========================================================================//
			         

      

⌨️ 快捷键说明

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